From e514c243169c8511b4737b508df8f71b87fa0c51 Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Thu, 23 Aug 2018 12:26:27 +0200 Subject: [PATCH] Back to regular inject :( Signed-off-by: Mario Danic --- .../talk/controllers/CallController.java | 4 +- .../CallNotificationController.java | 5 +- .../talk/controllers/ChatController.java | 4 +- .../talk/controllers/ContactsController.java | 5 +- .../ConversationsListController.java | 3 +- .../talk/controllers/SettingsController.java | 5 +- .../bottomsheet/OperationsMenuController.java | 6 +- .../talk/dagger/modules/RestModule.java | 20 ++--- .../talk/jobs/AccountRemovalWorker.java | 7 +- .../talk/jobs/CapabilitiesWorker.java | 4 +- .../talk/jobs/NotificationWorker.java | 3 +- .../MentionAutocompletePresenter.java | 11 +-- .../com/nextcloud/talk/utils/PushUtils.java | 3 +- .../singletons/ApplicationWideApiHolder.java | 84 ------------------- 14 files changed, 26 insertions(+), 138 deletions(-) delete mode 100644 app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideApiHolder.java diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java index 9ed5fcfb3..9bf31642e 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallController.java @@ -80,7 +80,6 @@ import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.glide.GlideApp; import com.nextcloud.talk.utils.preferences.AppPreferences; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; import com.nextcloud.talk.webrtc.MagicAudioManager; import com.nextcloud.talk.webrtc.MagicPeerConnectionWrapper; @@ -182,6 +181,7 @@ public class CallController extends BaseController { @BindView(R.id.conversationRelativeLayoutView) RelativeLayout conversationView; + @Inject NcApi ncApi; @Inject EventBus eventBus; @@ -299,8 +299,6 @@ public class CallController extends BaseController { .setRepeatMode(PulseAnimation.REVERSE); - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(conversationUser.getId(), baseUrl); - if (isVoiceOnlyCall) { callControlEnableSpeaker.setVisibility(View.VISIBLE); } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java index b1206f7ee..d1487dc07 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java @@ -76,7 +76,6 @@ import com.nextcloud.talk.utils.MagicFlipView; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.glide.GlideApp; import com.nextcloud.talk.utils.preferences.AppPreferences; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import com.nextcloud.talk.utils.singletons.AvatarStatusCodeHolder; import org.greenrobot.eventbus.EventBus; @@ -103,7 +102,8 @@ public class CallNotificationController extends BaseController { private static final String TAG = "CallNotificationController"; - private NcApi ncApi; + @Inject + NcApi ncApi; @Inject AppPreferences appPreferences; @@ -297,7 +297,6 @@ public class CallNotificationController extends BaseController { if (handler == null) { handler = new Handler(); - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(userBeingCalled.getId(), null); } if (currentConversation == null) { diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java index 0e526f79a..46174b540 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.java @@ -83,7 +83,6 @@ import com.nextcloud.talk.utils.NotificationUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.glide.GlideApp; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; import com.otaliastudios.autocomplete.Autocomplete; import com.otaliastudios.autocomplete.AutocompleteCallback; @@ -124,6 +123,7 @@ import retrofit2.Response; public class ChatController extends BaseController implements MessagesListAdapter.OnLoadMoreListener, MessagesListAdapter.Formatter, MessagesListAdapter.OnMessageLongClickListener, MessageHolders.ContentChecker { private static final String TAG = "ChatController"; + @Inject NcApi ncApi; @Inject UserUtils userUtils; @@ -296,8 +296,6 @@ public class ChatController extends BaseController implements MessagesListAdapte sendHiTextView.setText(String.format(getResources().getString(R.string.nc_chat_empty), getResources() .getString(R.string.nc_hello))); - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(conversationUser.getId(), baseUrl); - if (adapter == null) { loadingProgressBar.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java index 99f41b116..735c5fa75 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ContactsController.java @@ -68,7 +68,6 @@ import com.nextcloud.talk.models.json.sharees.ShareesOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -129,7 +128,8 @@ public class ContactsController extends BaseController implements SearchView.OnQ @BindView(R.id.fast_scroller) FastScroller fastScroller; - private NcApi ncApi; + @Inject + NcApi ncApi; private String credentials; private UserEntity currentUser; private Disposable contactsQueryDisposable; @@ -208,7 +208,6 @@ public class ContactsController extends BaseController implements SearchView.OnQ currentUser = userUtils.getCurrentUser(); if (currentUser != null) { - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(currentUser.getId(), null); credentials = ApiUtils.getCredentials(currentUser.getUserId(), currentUser.getToken()); } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java index cf968b455..15db5dc79 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/ConversationsListController.java @@ -67,7 +67,6 @@ import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.KeyboardUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import org.apache.commons.lang3.builder.CompareToBuilder; import org.greenrobot.eventbus.EventBus; @@ -107,6 +106,7 @@ public class ConversationsListController extends BaseController implements Searc @Inject EventBus eventBus; + @Inject NcApi ncApi; @BindView(R.id.recycler_view) @@ -155,7 +155,6 @@ public class ConversationsListController extends BaseController implements Searc currentUser = userUtils.getCurrentUser(); if (currentUser != null) { - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(currentUser.getId(), null); credentials = ApiUtils.getCredentials(currentUser.getUserId(), currentUser.getToken()); } diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java index 91837dc00..0d1cccc9d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java @@ -59,7 +59,6 @@ import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.glide.GlideApp; import com.nextcloud.talk.utils.preferences.AppPreferences; import com.nextcloud.talk.utils.preferences.MagicUserInputModule; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; import com.yarolegovich.mp.MaterialChoicePreference; import com.yarolegovich.mp.MaterialEditTextPreference; @@ -161,7 +160,8 @@ public class SettingsController extends BaseController { @Inject AppPreferences appPreferences; - private NcApi ncApi; + @Inject + NcApi ncApi; @Inject UserUtils userUtils; @@ -183,7 +183,6 @@ public class SettingsController extends BaseController { private void getCurrentUser() { currentUser = userUtils.getCurrentUser(); credentials = ApiUtils.getCredentials(currentUser.getUserId(), currentUser.getToken()); - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(currentUser.getId(), null); } @Override diff --git a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java index a4ba65f28..cf53a6b82 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java @@ -56,11 +56,10 @@ import com.nextcloud.talk.models.json.participants.AddParticipantOverall; import com.nextcloud.talk.models.json.rooms.Conversation; import com.nextcloud.talk.models.json.rooms.RoomOverall; import com.nextcloud.talk.utils.ApiUtils; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; -import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; import com.nextcloud.talk.utils.DisplayUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; +import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder; import org.greenrobot.eventbus.EventBus; import org.parceler.Parcels; @@ -96,6 +95,7 @@ public class OperationsMenuController extends BaseController { @BindView(R.id.web_button) Button webButton; + @Inject NcApi ncApi; @Inject @@ -156,8 +156,6 @@ public class OperationsMenuController extends BaseController { super.onViewBound(view); NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this); - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(userUtils.getCurrentUser().getId - (), null); processOperation(); } diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java index 945c3a52d..de8884874 100644 --- a/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java +++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/RestModule.java @@ -37,7 +37,6 @@ import com.nextcloud.talk.utils.ssl.MagicKeyManager; import com.nextcloud.talk.utils.ssl.MagicTrustManager; import com.nextcloud.talk.utils.ssl.SSLSocketFactoryCompat; -import java.io.File; import java.io.IOException; import java.net.CookieManager; import java.net.InetSocketAddress; @@ -47,7 +46,6 @@ import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; -import java.util.Random; import java.util.concurrent.TimeUnit; import javax.inject.Singleton; @@ -77,6 +75,7 @@ public class RestModule { private static final String TAG = "RestModule"; + @Singleton @Provides NcApi provideNcApi(Retrofit retrofit) { return retrofit.create(NcApi.class); @@ -102,6 +101,7 @@ public class RestModule { } } + @Singleton @Provides Retrofit provideRetrofit(OkHttpClient httpClient) { Retrofit.Builder retrofitBuilder = new Retrofit.Builder() @@ -152,25 +152,18 @@ public class RestModule { return new SSLSocketFactoryCompat(keyManager, magicTrustManager); } + @Singleton @Provides CookieManager provideCookieManager() { return new CookieManager(); } + @Singleton @Provides - Cache provideCache(UserUtils userUtils) { + Cache provideCache() { int cacheSize = 128 * 1024 * 1024; // 128 MB - String userId = ""; - if (userUtils.getCurrentUser() != null) { - userId = Long.toString(userUtils.getCurrentUser().getId()); - } else { - Random r = new Random( System.currentTimeMillis() ); - userId = "nc-temp-" + (10000 + r.nextInt(20000)); - } - - return new Cache(new File(NextcloudTalkApplication.getSharedApplication().getCacheDir() + "/" + - userId), cacheSize); + return new Cache(NextcloudTalkApplication.getSharedApplication().getCacheDir(), cacheSize); } @Singleton @@ -182,6 +175,7 @@ public class RestModule { return dispatcher; } + @Singleton @Provides OkHttpClient provideHttpClient(Proxy proxy, AppPreferences appPreferences, MagicTrustManager magicTrustManager, diff --git a/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java index ae06dbb4c..84eaaea5f 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/AccountRemovalWorker.java @@ -37,7 +37,6 @@ import com.nextcloud.talk.models.json.generic.GenericOverall; import com.nextcloud.talk.models.json.push.PushConfigurationState; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.database.user.UserUtils; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import java.io.IOException; import java.util.HashMap; @@ -66,6 +65,7 @@ public class AccountRemovalWorker extends Worker { @Inject OkHttpClient okHttpClient; + @Inject NcApi ncApi; @NonNull @@ -83,7 +83,6 @@ public class AccountRemovalWorker extends Worker { PushConfigurationState.class); PushConfigurationState finalPushConfigurationState = pushConfigurationState; - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(userEntity.getId(), null); credentials = ApiUtils.getCredentials(userEntity.getUserId(), userEntity.getToken()); String finalCredentials = credentials; @@ -107,7 +106,7 @@ public class AccountRemovalWorker extends Worker { ncApi.unregisterDeviceForNotificationsWithProxy (finalCredentials, ApiUtils.getUrlPushProxy(), queryMap) - .blockingSubscribe(new Observer() { + .subscribe(new Observer() { @Override public void onSubscribe(Disposable d) { @@ -116,8 +115,6 @@ public class AccountRemovalWorker extends Worker { @Override public void onNext(Void aVoid) { - ApplicationWideApiHolder.getInstance().removeNcApiInstanceForAccountId(userEntity.getId()); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String groupName = String.format(getApplicationContext().getResources() .getString(R.string diff --git a/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java index 4f093bdca..93e337574 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/CapabilitiesWorker.java @@ -32,7 +32,6 @@ import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import org.greenrobot.eventbus.EventBus; @@ -66,6 +65,7 @@ public class CapabilitiesWorker extends Worker { @Inject OkHttpClient okHttpClient; + @Inject NcApi ncApi; private void updateUser(CapabilitiesOverall capabilitiesOverall, UserEntity internalUserEntity) { @@ -124,8 +124,6 @@ public class CapabilitiesWorker extends Worker { for (Object userEntityObject : userEntityObjectList) { UserEntity internalUserEntity = (UserEntity) userEntityObject; - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(internalUserEntity.getId(), null); - ncApi.getCapabilities(ApiUtils.getCredentials(internalUserEntity.getUsername(), internalUserEntity.getToken()), ApiUtils.getUrlForCapabilities(internalUserEntity.getBaseUrl())) .retry(3) diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java index 71ce12cae..2dd572dc5 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java @@ -60,7 +60,6 @@ import com.nextcloud.talk.utils.PushUtils; import com.nextcloud.talk.utils.bundle.BundleKeys; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import com.nextcloud.talk.utils.singletons.ApplicationWideCurrentRoomHolder; import com.nextcloud.talk.utils.singletons.ApplicationWideStateHolder; @@ -94,6 +93,7 @@ public class NotificationWorker extends Worker { @Inject AppPreferences appPreferences; + @Inject NcApi ncApi; private DecryptedPushMessage decryptedPushMessage; @@ -392,7 +392,6 @@ public class NotificationWorker extends Worker { decryptedPushMessage = LoganSquare.parse(new String(decryptedSubject), DecryptedPushMessage.class); - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(signatureVerification.getUserEntity().getId(), null); credentials = ApiUtils.getCredentials(signatureVerification.getUserEntity().getUserId(), signatureVerification.getUserEntity().getToken()); diff --git a/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java b/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java index f90939c69..94f3119f8 100644 --- a/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java +++ b/app/src/main/java/com/nextcloud/talk/presenters/MentionAutocompletePresenter.java @@ -34,7 +34,6 @@ import com.nextcloud.talk.models.json.mention.Mention; import com.nextcloud.talk.models.json.mention.MentionOverall; import com.nextcloud.talk.utils.ApiUtils; import com.nextcloud.talk.utils.database.user.UserUtils; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import com.otaliastudios.autocomplete.RecyclerViewPresenter; import java.util.ArrayList; @@ -52,7 +51,8 @@ import io.reactivex.schedulers.Schedulers; @AutoInjector(NextcloudTalkApplication.class) public class MentionAutocompletePresenter extends RecyclerViewPresenter implements FlexibleAdapter.OnItemClickListener { - private NcApi ncApi; + @Inject + NcApi ncApi; private UserEntity currentUser; @Inject @@ -69,7 +69,7 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter super(context); this.context = context; NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this); - setupNcApi(); + currentUser = userUtils.getCurrentUser(); } public MentionAutocompletePresenter(Context context, String roomToken) { @@ -77,12 +77,7 @@ public class MentionAutocompletePresenter extends RecyclerViewPresenter this.roomToken = roomToken; this.context = context; NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this); - setupNcApi(); - } - - private void setupNcApi() { currentUser = userUtils.getCurrentUser(); - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(currentUser.getId(), null); } @Override diff --git a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java index 172e57260..21c097564 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java +++ b/app/src/main/java/com/nextcloud/talk/utils/PushUtils.java @@ -36,7 +36,6 @@ import com.nextcloud.talk.models.json.push.PushConfigurationState; import com.nextcloud.talk.models.json.push.PushRegistrationOverall; import com.nextcloud.talk.utils.database.user.UserUtils; import com.nextcloud.talk.utils.preferences.AppPreferences; -import com.nextcloud.talk.utils.singletons.ApplicationWideApiHolder; import org.greenrobot.eventbus.EventBus; @@ -82,6 +81,7 @@ public class PushUtils { @Inject EventBus eventBus; + @Inject NcApi ncApi; private File keysFile; @@ -260,7 +260,6 @@ public class PushUtils { queryMap.put("devicePublicKey", publicKey); queryMap.put("proxyServer", proxyServer); - ncApi = ApplicationWideApiHolder.getInstance().getNcApiInstanceForAccountId(userEntity.getId(), null); credentials = ApiUtils.getCredentials(userEntity.getUserId(), userEntity.getToken()); String finalCredentials = credentials; diff --git a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideApiHolder.java b/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideApiHolder.java deleted file mode 100644 index 900d0be30..000000000 --- a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideApiHolder.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Nextcloud Talk application - * - * @author Mario Danic - * Copyright (C) 2017-2018 Mario Danic - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package com.nextcloud.talk.utils.singletons; - -import android.annotation.SuppressLint; -import android.support.annotation.Nullable; -import android.text.TextUtils; - -import com.nextcloud.talk.api.NcApi; -import com.nextcloud.talk.application.NextcloudTalkApplication; -import com.nextcloud.talk.models.database.UserEntity; -import com.nextcloud.talk.utils.database.user.UserUtils; - -import java.util.HashMap; -import java.util.Map; - -import javax.inject.Inject; - -import autodagger.AutoInjector; -import retrofit2.Retrofit; - -@AutoInjector(NextcloudTalkApplication.class) -public class ApplicationWideApiHolder { - private static final String TAG = "ApplicationWideApiHolder"; - - @SuppressLint("UseSparseArrays") - private Map ncApiHashMap; - - @Inject - UserUtils userUtils; - - @Inject - Retrofit retrofit; - - private static final ApplicationWideApiHolder holder = new ApplicationWideApiHolder(); - - public static ApplicationWideApiHolder getInstance() { - return holder; - } - - @SuppressLint("UseSparseArrays") - public NcApi getNcApiInstanceForAccountId(long accountId, @Nullable String baseUrl) { - NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this); - - if (ncApiHashMap == null) { - ncApiHashMap = new HashMap<>(); - } - - if (!ncApiHashMap.containsKey(accountId)) { - UserEntity userAccount = userUtils.getUserWithId(accountId); - if (userAccount == null || (userAccount.getId() == -1 && !TextUtils.isEmpty(baseUrl))) { - retrofit = retrofit.newBuilder().baseUrl(baseUrl).build(); - return retrofit.create(NcApi.class); - } else { - retrofit = retrofit.newBuilder().baseUrl(userAccount.getBaseUrl() + "/").build(); - ncApiHashMap.put(accountId, retrofit.create(NcApi.class)); - } - } - - return ncApiHashMap.get(accountId); - } - - public void removeNcApiInstanceForAccountId(long accountId) { - ncApiHashMap.remove(accountId); - } -}