diff --git a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java index 919251874..8b260baa6 100644 --- a/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java +++ b/app/src/main/java/fr/free/nrw/commons/auth/LoginActivity.java @@ -115,7 +115,10 @@ public class LoginActivity extends AccountAuthenticatorActivity { private LoginTextWatcher textWatcher = new LoginTextWatcher(); private CompositeDisposable compositeDisposable = new CompositeDisposable(); private Call loginToken; - + final String saveProgressDailog="ProgressDailog_state"; + final String saveErrorMessage ="errorMessage"; + final String saveUsername="username"; + final String savePassword="password"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -455,4 +458,40 @@ public class LoginActivity extends AccountAuthenticatorActivity { Intent intent = new Intent(context, LoginActivity.class); context.startActivity(intent); } + + @Override + protected void onSaveInstanceState(Bundle outState) { + // if progressDialog is visible during the configuration change then store state as true else false so that + // we maintain visiblity of progressDailog after configuration change + if(progressDialog!=null&&progressDialog.isShowing()) { + outState.putBoolean(saveProgressDailog,true); + } else { + outState.putBoolean(saveProgressDailog,false); + } + outState.putString(saveErrorMessage,errorMessage.getText().toString()); //Save the errorMessage + outState.putString(saveUsername,getUsername()); // Save the username + outState.putString(savePassword,getPassword()); // Save thte password + } + private String getUsername() { + return usernameEdit.getText().toString(); + } + private String getPassword(){ + return passwordEdit.getText().toString(); + } + + @Override + protected void onRestoreInstanceState(final Bundle savedInstanceState) { + super.onRestoreInstanceState(savedInstanceState); + usernameEdit.setText(savedInstanceState.getString(saveUsername)); + passwordEdit.setText(savedInstanceState.getString(savePassword)); + if(savedInstanceState.getBoolean(saveProgressDailog)) { + performLogin(); + } + String errorMessage=savedInstanceState.getString(saveErrorMessage); + if(sessionManager.isUserLoggedIn()) { + showMessage(R.string.login_success, R.color.primaryDarkColor); + } else { + showMessage(errorMessage, R.color.secondaryDarkColor); + } + } }