Fix update account credentials flow
This commit is contained in:
parent
01e55ff78f
commit
b7be85221b
@ -17,6 +17,7 @@ import com.readrops.app.utils.SharedPreferencesManager;
|
||||
import com.readrops.app.utils.Utils;
|
||||
import com.readrops.app.viewmodels.AccountViewModel;
|
||||
|
||||
import io.reactivex.Completable;
|
||||
import io.reactivex.CompletableObserver;
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
@ -74,35 +75,13 @@ public class AddAccountActivity extends AppCompatActivity {
|
||||
accountToEdit.setLogin(login);
|
||||
accountToEdit.setPassword(password);
|
||||
|
||||
viewModel.update(accountToEdit)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new CompletableObserver() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
binding.addAccountLoading.setVisibility(View.VISIBLE);
|
||||
binding.addAccountValidate.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
binding.addAccountLoading.setVisibility(View.GONE);
|
||||
binding.addAccountValidate.setEnabled(true);
|
||||
|
||||
Utils.showSnackbar(binding.addAccountRoot, e.getMessage());
|
||||
}
|
||||
});
|
||||
updateAccount();
|
||||
} else {
|
||||
Account account = new Account(url, name, accountType);
|
||||
account.setLogin(login);
|
||||
account.setPassword(password);
|
||||
|
||||
viewModel.login(account)
|
||||
viewModel.login(account, true)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new SingleObserver<Boolean>() {
|
||||
@ -199,4 +178,45 @@ public class AddAccountActivity extends AppCompatActivity {
|
||||
binding.addAccountLogin.setText(SharedPreferencesManager.readString(this, accountToEdit.getLoginKey()));
|
||||
binding.addAccountPassword.setText(SharedPreferencesManager.readString(this, accountToEdit.getPasswordKey()));
|
||||
}
|
||||
|
||||
private void updateAccount() {
|
||||
viewModel.login(accountToEdit, false)
|
||||
.doOnError(throwable -> Utils.showSnackbar(binding.addAccountRoot, throwable.getMessage()))
|
||||
.flatMapCompletable(b -> {
|
||||
if (b) {
|
||||
saveLoginPassword(accountToEdit);
|
||||
return viewModel.update(accountToEdit);
|
||||
} else {
|
||||
runOnUiThread(() -> {
|
||||
binding.addAccountLoading.setVisibility(View.GONE);
|
||||
binding.addAccountValidate.setEnabled(true);
|
||||
Utils.showSnackbar(binding.addAccountRoot, getString(R.string.login_failed));
|
||||
});
|
||||
|
||||
return Completable.never();
|
||||
}
|
||||
})
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new CompletableObserver() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
binding.addAccountLoading.setVisibility(View.VISIBLE);
|
||||
binding.addAccountValidate.setEnabled(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onComplete() {
|
||||
finish();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
binding.addAccountLoading.setVisibility(View.GONE);
|
||||
binding.addAccountValidate.setEnabled(true);
|
||||
|
||||
Utils.showSnackbar(binding.addAccountRoot, e.getMessage());
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ public abstract class ARepository {
|
||||
this.database = Database.getInstance(application);
|
||||
}
|
||||
|
||||
public abstract Single<Boolean> login(Account account);
|
||||
public abstract Single<Boolean> login(Account account, boolean insert);
|
||||
|
||||
public abstract Observable<Feed> sync(List<Feed> feeds, Account account);
|
||||
|
||||
|
@ -46,7 +46,7 @@ public class LocalFeedRepository extends ARepository {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Single<Boolean> login(Account account) {
|
||||
public Single<Boolean> login(Account account, boolean insert) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@ public class NextNewsRepository extends ARepository {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Single<Boolean> login(Account account) {
|
||||
public Single<Boolean> login(Account account, boolean insert) {
|
||||
return Single.create(emitter -> {
|
||||
NextNewsAPI newsAPI = new NextNewsAPI();
|
||||
NextNewsUser user = newsAPI.login(account.toCredentials());
|
||||
@ -54,7 +54,8 @@ public class NextNewsRepository extends ARepository {
|
||||
account.setDisplayedName(user.getDisplayName());
|
||||
account.setCurrentAccount(true);
|
||||
|
||||
account.setId((int) database.accountDao().insert(account));
|
||||
if (insert)
|
||||
account.setId((int) database.accountDao().insert(account));
|
||||
emitter.onSuccess(true);
|
||||
} else
|
||||
emitter.onSuccess(false);
|
||||
|
@ -25,8 +25,8 @@ public class AccountViewModel extends AndroidViewModel {
|
||||
database = Database.getInstance(application);
|
||||
}
|
||||
|
||||
public Single<Boolean> login(Account account) {
|
||||
return repository.login(account);
|
||||
public Single<Boolean> login(Account account, boolean insert) {
|
||||
return repository.login(account, insert);
|
||||
}
|
||||
|
||||
public Single<Long> insert(Account account) {
|
||||
|
@ -72,5 +72,6 @@
|
||||
<string name="credentials">Identifiants</string>
|
||||
<string name="filter_newest">Du plus récent au plus ancien</string>
|
||||
<string name="filter_oldest">Du plus ancien au plus récent</string>
|
||||
<string name="login_failed">La connexion a échoué. Veuillez vérifier vos identifiants</string>
|
||||
|
||||
</resources>
|
@ -78,4 +78,5 @@
|
||||
<string name="credentials">Credentials</string>
|
||||
<string name="filter_newest">Newest to oldest</string>
|
||||
<string name="filter_oldest">Oldest to newsest</string>
|
||||
<string name="login_failed">Login failed. Please check your credentials</string>
|
||||
</resources>
|
||||
|
Loading…
x
Reference in New Issue
Block a user