Fix credentials update

Signed-off-by: Mario Danic <mario@lovelyhq.com>
This commit is contained in:
Mario Danic 2018-12-11 12:23:18 +01:00
parent d59403bc97
commit 5000b3e9de
2 changed files with 52 additions and 59 deletions

View File

@ -460,11 +460,6 @@ public class SettingsController extends BaseController {
messageText.setText(getResources().getString(R.string.nc_settings_account_updated)); messageText.setText(getResources().getString(R.string.nc_settings_account_updated));
messageView.setVisibility(View.VISIBLE); messageView.setVisibility(View.VISIBLE);
break; break;
case WRONG_ACCOUNT:
messageText.setTextColor(getResources().getColor(R.color.nc_darkRed));
messageText.setText(getResources().getString(R.string.nc_settings_wrong_account));
messageView.setVisibility(View.VISIBLE);
break;
case SERVER_WITHOUT_TALK: case SERVER_WITHOUT_TALK:
messageText.setTextColor(getResources().getColor(R.color.nc_darkRed)); messageText.setTextColor(getResources().getColor(R.color.nc_darkRed));
messageText.setText(getResources().getString(R.string.nc_settings_wrong_account)); messageText.setText(getResources().getString(R.string.nc_settings_wrong_account));

View File

@ -325,69 +325,67 @@ public class WebViewLoginController extends BaseController {
UserEntity currentUser = userUtils.getCurrentUser(); UserEntity currentUser = userUtils.getCurrentUser();
ApplicationWideMessageHolder.MessageType messageType = null; ApplicationWideMessageHolder.MessageType messageType = null;
if (currentUser != null && isPasswordUpdate &&
!currentUser.getUsername().equals(loginData.getUsername())) { if (!isPasswordUpdate && userUtils.getIfUserWithUsernameAndServer(loginData.getUsername(), baseUrl)) {
messageType = ApplicationWideMessageHolder.MessageType.ACCOUNT_UPDATED_NOT_ADDED;
}
if (userUtils.checkIfUserIsScheduledForDeletion(loginData.getUsername(), baseUrl)) {
ApplicationWideMessageHolder.getInstance().setMessageType( ApplicationWideMessageHolder.getInstance().setMessageType(
ApplicationWideMessageHolder.MessageType.WRONG_ACCOUNT); ApplicationWideMessageHolder.MessageType.ACCOUNT_SCHEDULED_FOR_DELETION);
getRouter().popToRoot();
} else {
if (!isPasswordUpdate && userUtils.getIfUserWithUsernameAndServer(loginData.getUsername(), baseUrl)) { if (!isPasswordUpdate) {
messageType = ApplicationWideMessageHolder.MessageType.ACCOUNT_UPDATED_NOT_ADDED;
}
if (userUtils.checkIfUserIsScheduledForDeletion(loginData.getUsername(), baseUrl)) {
ApplicationWideMessageHolder.getInstance().setMessageType(
ApplicationWideMessageHolder.MessageType.ACCOUNT_SCHEDULED_FOR_DELETION);
getRouter().popToRoot(); getRouter().popToRoot();
} else {
getRouter().popCurrentController();
}
}
ApplicationWideMessageHolder.MessageType finalMessageType = messageType;
cookieManager.getCookieStore().removeAll();
if (!isPasswordUpdate && finalMessageType == null) {
Bundle bundle = new Bundle();
bundle.putString(BundleKeys.KEY_USERNAME, loginData.getUsername());
bundle.putString(BundleKeys.KEY_TOKEN, loginData.getToken());
bundle.putString(BundleKeys.KEY_BASE_URL, loginData.getServerUrl());
String protocol = "";
if (baseUrl.startsWith("http://")) {
protocol = "http://";
} else if (baseUrl.startsWith("https://")) {
protocol = "https://";
} }
ApplicationWideMessageHolder.MessageType finalMessageType = messageType; if (!TextUtils.isEmpty(protocol)) {
cookieManager.getCookieStore().removeAll(); bundle.putString(BundleKeys.KEY_ORIGINAL_PROTOCOL, protocol);
}
if (!isPasswordUpdate && finalMessageType == null) { getRouter().pushController(RouterTransaction.with(new AccountVerificationController
Bundle bundle = new Bundle(); (bundle)).pushChangeHandler(new HorizontalChangeHandler())
bundle.putString(BundleKeys.KEY_USERNAME, loginData.getUsername()); .popChangeHandler(new HorizontalChangeHandler()));
bundle.putString(BundleKeys.KEY_TOKEN, loginData.getToken()); } else {
bundle.putString(BundleKeys.KEY_BASE_URL, loginData.getServerUrl()); if (isPasswordUpdate) {
String protocol = ""; if (currentUser != null) {
userQueryDisposable = userUtils.createOrUpdateUser(null, loginData.getToken(),
if (baseUrl.startsWith("http://")) { null, null, null, true,
protocol = "http://"; null, currentUser.getId(), null, appPreferences.getTemporaryClientCertAlias(), null)
} else if (baseUrl.startsWith("https://")) { .subscribeOn(Schedulers.newThread())
protocol = "https://"; .observeOn(AndroidSchedulers.mainThread())
.subscribe(userEntity -> {
if (finalMessageType != null) {
ApplicationWideMessageHolder.getInstance().setMessageType(finalMessageType);
}
getRouter().popCurrentController();
}, throwable -> dispose(),
this::dispose);
} }
if (!TextUtils.isEmpty(protocol)) {
bundle.putString(BundleKeys.KEY_ORIGINAL_PROTOCOL, protocol);
}
getRouter().pushController(RouterTransaction.with(new AccountVerificationController
(bundle)).pushChangeHandler(new HorizontalChangeHandler())
.popChangeHandler(new HorizontalChangeHandler()));
} else { } else {
if (isPasswordUpdate) { if (finalMessageType != null) {
if (currentUser != null) { ApplicationWideMessageHolder.getInstance().setMessageType(finalMessageType);
userQueryDisposable = userUtils.createOrUpdateUser(null, loginData.getToken(),
null, null, null, true,
null, currentUser.getId(), null, appPreferences.getTemporaryClientCertAlias(), null)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(userEntity -> {
if (finalMessageType != null) {
ApplicationWideMessageHolder.getInstance().setMessageType(finalMessageType);
}
getRouter().popCurrentController();
}, throwable -> dispose(),
this::dispose);
}
} else {
if (finalMessageType != null) {
ApplicationWideMessageHolder.getInstance().setMessageType(finalMessageType);
}
getRouter().popToRoot();
} }
getRouter().popToRoot();
} }
} }
} }