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 cf7aa3a91..a20cf350d 100644 --- a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java +++ b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java @@ -161,8 +161,7 @@ public class SettingsController extends BaseController { @Inject AppPreferences appPreferences; - @Inject - NcApi ncApi; + private NcApi ncApi; @Inject UserUtils userUtils; @@ -170,7 +169,8 @@ public class SettingsController extends BaseController { @Inject CookieManager cookieManager; - private UserEntity userEntity; + private UserEntity currentUser; + private String credentials; private OnPreferenceValueChangedListener proxyTypeChangeListener; private OnPreferenceValueChangedListener proxyCredentialsChangeListener; @@ -183,13 +183,18 @@ public class SettingsController extends BaseController { return inflater.inflate(R.layout.controller_settings, container, false); } + private void getCurrentUser() { + currentUser = userUtils.getCurrentUser(); + credentials = ApiUtils.getCredentials(currentUser.getUserId(), currentUser.getToken()); + } + @Override protected void onViewBound(@NonNull View view) { super.onViewBound(view); NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this); - userEntity = userUtils.getCurrentUser(); + getCurrentUser(); appPreferences.registerProxyTypeListener(proxyTypeChangeListener = new ProxyTypeChangeListener()); appPreferences.registerProxyCredentialsListener(proxyCredentialsChangeListener = new @@ -273,7 +278,7 @@ public class SettingsController extends BaseController { URI uri; try { - uri = new URI(userEntity.getBaseUrl()); + uri = new URI(currentUser.getBaseUrl()); host = uri.getHost(); port = uri.getPort(); } catch (URISyntaxException e) { @@ -297,9 +302,9 @@ public class SettingsController extends BaseController { } - userUtils.createOrUpdateUser(null, null, null, null, null, null, null, userEntity.getId(), + userUtils.createOrUpdateUser(null, null, null, null, null, null, null, currentUser.getId(), null, alias); - }, new String[]{"RSA", "EC"}, null, finalHost, finalPort, userEntity.getClientCertificate + }, new String[]{"RSA", "EC"}, null, finalHost, finalPort, currentUser.getClientCertificate ())); } @@ -312,9 +317,9 @@ public class SettingsController extends BaseController { } dispose(null); - userEntity = userUtils.getCurrentUser(); + getCurrentUser(); - if (!TextUtils.isEmpty(userEntity.getClientCertificate())) { + if (!TextUtils.isEmpty(currentUser.getClientCertificate())) { certificateSetup.setTitle(R.string.nc_client_cert_change); } else { certificateSetup.setTitle(R.string.nc_client_cert_setup); @@ -360,26 +365,25 @@ public class SettingsController extends BaseController { hideProxyCredentials(); } - if (userEntity != null) { + if (currentUser != null) { - baseUrlTextView.setText(userEntity.getBaseUrl()); + baseUrlTextView.setText(currentUser.getBaseUrl()); reauthorizeButton.addPreferenceClickListener(view14 -> { getParentController().getRouter().pushController(RouterTransaction.with( - new WebViewLoginController(userEntity.getBaseUrl(), true)) + new WebViewLoginController(currentUser.getBaseUrl(), true)) .pushChangeHandler(new VerticalChangeHandler()) .popChangeHandler(new VerticalChangeHandler())); }); - if (userEntity.getDisplayName() != null) { - displayNameTextView.setText(userEntity.getDisplayName()); + if (currentUser.getDisplayName() != null) { + displayNameTextView.setText(currentUser.getDisplayName()); } loadAvatarImage(); - profileQueryDisposable = ncApi.getUserProfile(ApiUtils.getCredentials(userEntity.getUsername(), - userEntity.getToken()), - ApiUtils.getUrlForUserProfile(userEntity.getBaseUrl())) + profileQueryDisposable = ncApi.getUserProfile(credentials, + ApiUtils.getUrlForUserProfile(currentUser.getBaseUrl())) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(userProfileOverall -> { @@ -396,12 +400,12 @@ public class SettingsController extends BaseController { } - if ((!TextUtils.isEmpty(displayName) && !displayName.equals(userEntity.getDisplayName()))) { + if ((!TextUtils.isEmpty(displayName) && !displayName.equals(currentUser.getDisplayName()))) { dbQueryDisposable = userUtils.createOrUpdateUser(null, null, null, displayName, null, null, - null, userEntity.getId(), null, null) + null, currentUser.getId(), null, null) .subscribeOn(Schedulers.newThread()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(userEntityResult -> { @@ -419,7 +423,7 @@ public class SettingsController extends BaseController { removeAccountButton.addPreferenceClickListener(view1 -> { cookieManager.getCookieStore().removeAll(); - boolean otherUserExists = userUtils.scheduleUserForDeletionWithId(userEntity.getId()); + boolean otherUserExists = userUtils.scheduleUserForDeletionWithId(currentUser.getId()); OneTimeWorkRequest accountRemovalWork = new OneTimeWorkRequest.Builder(AccountRemovalWorker.class).build(); WorkManager.getInstance().enqueue(accountRemovalWork); @@ -505,13 +509,13 @@ public class SettingsController extends BaseController { private void loadAvatarImage() { String avatarId; - if (!TextUtils.isEmpty(userEntity.getUserId())) { - avatarId = userEntity.getUserId(); + if (!TextUtils.isEmpty(currentUser.getUserId())) { + avatarId = currentUser.getUserId(); } else { - avatarId = userEntity.getUsername(); + avatarId = currentUser.getUsername(); } - GlideUrl glideUrl = new GlideUrl(ApiUtils.getUrlForAvatarWithName(userEntity.getBaseUrl(), + GlideUrl glideUrl = new GlideUrl(ApiUtils.getUrlForAvatarWithName(currentUser.getBaseUrl(), avatarId, R.dimen.avatar_size_big), new LazyHeaders.Builder() .setHeader("Accept", "image/*") .setHeader("User-Agent", ApiUtils.getUserAgent())