From 69bd33a4284becca7779bd1000528aa502c2921a Mon Sep 17 00:00:00 2001
From: Shinokuni <shinokuni@openserver.fr>
Date: Wed, 29 Jan 2020 22:44:22 +0100
Subject: [PATCH] Fix account url which wasn't updated in retrofit when its
 text field value was, in account creation activity

---
 .../readrops/app/activities/MainActivity.java |  2 ++
 .../readropslibrary/services/API.java         | 21 +++++++++++++++----
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/app/src/main/java/com/readrops/app/activities/MainActivity.java b/app/src/main/java/com/readrops/app/activities/MainActivity.java
index cd5e2fc9..a4049539 100644
--- a/app/src/main/java/com/readrops/app/activities/MainActivity.java
+++ b/app/src/main/java/com/readrops/app/activities/MainActivity.java
@@ -54,6 +54,7 @@ import org.jetbrains.annotations.NotNull;
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -526,6 +527,7 @@ public class MainActivity extends AppCompatActivity implements SwipeRefreshLayou
                     adapter.clearData();
 
                     if (!viewModel.isAccountLocal()) {
+                        getAccountCredentials(Collections.singletonList(newAccount));
                         refreshLayout.setRefreshing(true);
                         onRefresh();
                     }
diff --git a/readropslibrary/src/main/java/com/readrops/readropslibrary/services/API.java b/readropslibrary/src/main/java/com/readrops/readropslibrary/services/API.java
index 952662d2..50941998 100644
--- a/readropslibrary/src/main/java/com/readrops/readropslibrary/services/API.java
+++ b/readropslibrary/src/main/java/com/readrops/readropslibrary/services/API.java
@@ -18,12 +18,19 @@ public abstract class API<T> {
     protected static final int MAX_ITEMS = 5000;
 
     protected T api;
+    private Retrofit retrofit;
+
+    private Class<T> clazz;
+    private String endPoint;
 
     public API(Credentials credentials, @NonNull Class<T> clazz, @NonNull String endPoint) {
-        api = createAPI(credentials, clazz, endPoint);
+        this.clazz = clazz;
+        this.endPoint = endPoint;
+
+        api = createAPI(credentials);
     }
 
-    protected Retrofit getConfiguredRetrofitInstance(@NonNull String endPoint) {
+    protected Retrofit getConfiguredRetrofitInstance() {
         return new Retrofit.Builder()
                 .baseUrl(HttpManager.getInstance().getCredentials().getUrl() + endPoint)
                 .addConverterFactory(GsonConverterFactory.create())
@@ -32,14 +39,20 @@ public abstract class API<T> {
                 .build();
     }
 
-    private T createAPI(@NonNull Credentials credentials, @NonNull Class<T> clazz, @NonNull String endPoint) {
+    private T createAPI(@NonNull Credentials credentials) {
         HttpManager.getInstance().setCredentials(credentials);
-        Retrofit retrofit = getConfiguredRetrofitInstance(endPoint);
+        retrofit = getConfiguredRetrofitInstance();
 
         return retrofit.create(clazz);
     }
 
     public void setCredentials(@NonNull Credentials credentials) {
         HttpManager.getInstance().setCredentials(credentials);
+
+        retrofit = retrofit.newBuilder()
+                .baseUrl(credentials.getUrl() + endPoint)
+                .build();
+
+        api = retrofit.create(clazz);
     }
 }