Fix account url which wasn't updated in retrofit when its text field value was, in account creation activity

This commit is contained in:
Shinokuni 2020-01-29 22:44:22 +01:00
parent 7ed5876285
commit 69bd33a428
2 changed files with 19 additions and 4 deletions
app/src/main/java/com/readrops/app/activities
readropslibrary/src/main/java/com/readrops/readropslibrary/services

@ -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();
}

@ -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);
}
}