Fix email login loop (can login with email again) (#629)

Merge branch 'master' into fix-email-logins

# Conflicts:
#	app/src/main/java/org/mian/gitnex/activities/LoginActivity.java

cleanup

Fix emails logins loop

Co-authored-by: M M Arif <mmarif@swatian.com>
Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/629
This commit is contained in:
M M Arif 2020-08-06 17:31:31 +02:00
parent b4b7981722
commit 7c40c049d4
5 changed files with 35 additions and 37 deletions

View File

@ -20,6 +20,7 @@ import com.tooltip.Tooltip;
import org.mian.gitnex.R; import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.database.api.UserAccountsApi; import org.mian.gitnex.database.api.UserAccountsApi;
import org.mian.gitnex.database.models.UserAccount;
import org.mian.gitnex.helpers.AppUtil; import org.mian.gitnex.helpers.AppUtil;
import org.mian.gitnex.helpers.NetworkObserver; import org.mian.gitnex.helpers.NetworkObserver;
import org.mian.gitnex.helpers.PathsHelper; import org.mian.gitnex.helpers.PathsHelper;
@ -210,14 +211,6 @@ public class LoginActivity extends BaseActivity {
} }
if(loginUid.contains("@")) {
Toasty.warning(ctx, getResources().getString(R.string.userInvalidUserName));
enableProcessButton();
return;
}
if(loginPass.equals("")) { if(loginPass.equals("")) {
Toasty.error(ctx, getResources().getString(R.string.emptyFieldPassword)); Toasty.error(ctx, getResources().getString(R.string.emptyFieldPassword));
@ -383,12 +376,18 @@ public class LoginActivity extends BaseActivity {
String accountName = userDetails.getUsername() + "@" + instanceUrl; String accountName = userDetails.getUsername() + "@" + instanceUrl;
UserAccountsApi userAccountsApi = new UserAccountsApi(ctx); UserAccountsApi userAccountsApi = new UserAccountsApi(ctx);
int checkAccount = userAccountsApi.getCount(accountName); int checkAccount = userAccountsApi.getCount(accountName);
long accountId;
if(checkAccount == 0) { if(checkAccount == 0) {
userAccountsApi.insertNewAccount(accountName, instanceUrl, userDetails.getUsername(), loginToken, "");
accountId = userAccountsApi.insertNewAccount(accountName, instanceUrl, userDetails.getUsername(), loginToken, "");
tinyDB.putInt("currentActiveAccountId", (int) accountId);
} }
else { else {
userAccountsApi.updateTokenByAccountName(accountName, loginToken); userAccountsApi.updateTokenByAccountName(accountName, loginToken);
UserAccount data = userAccountsApi.getAccountData(accountName);
tinyDB.putInt("currentActiveAccountId", data.getAccountId());
} }
enableProcessButton(); enableProcessButton();
@ -567,13 +566,18 @@ public class LoginActivity extends BaseActivity {
String accountName = userDetails.getUsername() + "@" + instanceUrl; String accountName = userDetails.getUsername() + "@" + instanceUrl;
UserAccountsApi userAccountsApi = new UserAccountsApi(ctx); UserAccountsApi userAccountsApi = new UserAccountsApi(ctx);
int checkAccount = userAccountsApi.getCount(accountName); int checkAccount = userAccountsApi.getCount(accountName);
long accountId;
if(checkAccount == 0) { if(checkAccount == 0) {
userAccountsApi
.insertNewAccount(accountName, instanceUrl, userDetails.getUsername(), newToken.getSha1(), ""); accountId = userAccountsApi.insertNewAccount(accountName, instanceUrl, userDetails.getUsername(), newToken.getSha1(), "");
tinyDB.putInt("currentActiveAccountId", (int) accountId);
} }
else { else {
userAccountsApi.updateTokenByAccountName(accountName, newToken.getSha1()); userAccountsApi.updateTokenByAccountName(accountName, newToken.getSha1());
UserAccount data = userAccountsApi.getAccountData(accountName);
tinyDB.putInt("currentActiveAccountId", data.getAccountId());
} }
startActivity(new Intent(LoginActivity.this, MainActivity.class)); startActivity(new Intent(LoginActivity.this, MainActivity.class));

View File

@ -27,8 +27,6 @@ import com.google.android.material.navigation.NavigationView;
import org.mian.gitnex.R; import org.mian.gitnex.R;
import org.mian.gitnex.clients.PicassoService; import org.mian.gitnex.clients.PicassoService;
import org.mian.gitnex.clients.RetrofitClient; import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.database.api.UserAccountsApi;
import org.mian.gitnex.database.models.UserAccount;
import org.mian.gitnex.fragments.AboutFragment; import org.mian.gitnex.fragments.AboutFragment;
import org.mian.gitnex.fragments.AdministrationFragment; import org.mian.gitnex.fragments.AdministrationFragment;
import org.mian.gitnex.fragments.BottomSheetDraftsFragment; import org.mian.gitnex.fragments.BottomSheetDraftsFragment;
@ -123,8 +121,9 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
return; return;
} }
String accountName = loginUid + "@" + instanceUrl; if(tinyDb.getInt("currentActiveAccountId") <= 0) {
getAccountData(accountName); AlertDialogs.forceLogoutDialog(ctx, getResources().getString(R.string.forceLogoutDialogHeader), getResources().getString(R.string.forceLogoutDialogDescription), getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
}
Toolbar toolbar = findViewById(R.id.toolbar); Toolbar toolbar = findViewById(R.id.toolbar);
toolbarTitle = toolbar.findViewById(R.id.toolbar_title); toolbarTitle = toolbar.findViewById(R.id.toolbar_title);
@ -448,20 +447,6 @@ public class MainActivity extends BaseActivity implements NavigationView.OnNavig
} }
public void getAccountData(String accountName) {
UserAccountsApi accountData = new UserAccountsApi(ctx);
UserAccount data = accountData.getAccountData(accountName);
if(data != null) {
TinyDB tinyDb = new TinyDB(ctx.getApplicationContext());
tinyDb.putInt("currentActiveAccountId", data.getAccountId());
}
else {
AlertDialogs.forceLogoutDialog(ctx, getResources().getString(R.string.forceLogoutDialogHeader), getResources().getString(R.string.forceLogoutDialogDescription), getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
}
}
@Override @Override
public void onBackPressed() { public void onBackPressed() {

View File

@ -3,7 +3,6 @@ package org.mian.gitnex.adapters;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -76,8 +75,6 @@ public class UserAccountsAdapter extends RecyclerView.Adapter<UserAccountsAdapte
UserAccountsApi userAccountsApi = new UserAccountsApi(mCtx); UserAccountsApi userAccountsApi = new UserAccountsApi(mCtx);
UserAccount userAccount = userAccountsApi.getAccountData(accountNameSwitch); UserAccount userAccount = userAccountsApi.getAccountData(accountNameSwitch);
Log.e("userAccount", userAccount.getInstanceUrl());
if(tinyDB.getInt("currentActiveAccountId") != userAccount.getAccountId()) { if(tinyDB.getInt("currentActiveAccountId") != userAccount.getAccountId()) {
String url = UrlBuilder.fromString(userAccount.getInstanceUrl()) String url = UrlBuilder.fromString(userAccount.getInstanceUrl())

View File

@ -18,6 +18,7 @@ public class UserAccountsApi {
private static UserAccountsDao userAccountsDao; private static UserAccountsDao userAccountsDao;
private static UserAccount userAccount; private static UserAccount userAccount;
private static Integer checkAccount; private static Integer checkAccount;
private static long accountId;
public UserAccountsApi(Context context) { public UserAccountsApi(Context context) {
@ -26,7 +27,7 @@ public class UserAccountsApi {
userAccountsDao = db.userAccountsDao(); userAccountsDao = db.userAccountsDao();
} }
public void insertNewAccount(String accountName, String instanceUrl, String userName, String token, String serverVersion) { public long insertNewAccount(String accountName, String instanceUrl, String userName, String token, String serverVersion) {
UserAccount userAccount = new UserAccount(); UserAccount userAccount = new UserAccount();
userAccount.setAccountName(accountName); userAccount.setAccountName(accountName);
@ -35,12 +36,23 @@ public class UserAccountsApi {
userAccount.setToken(token); userAccount.setToken(token);
userAccount.setServerVersion(serverVersion); userAccount.setServerVersion(serverVersion);
insertNewAccountAsync(userAccount); return insertNewAccountAsync(userAccount);
} }
private static void insertNewAccountAsync(final UserAccount userAccount) { private static long insertNewAccountAsync(final UserAccount userAccount) {
new Thread(() -> userAccountsDao.newAccount(userAccount)).start(); try {
Thread thread = new Thread(() -> accountId = userAccountsDao.newAccount(userAccount));
thread.start();
thread.join();
}
catch(InterruptedException e) {
Log.e(StaticGlobalVariables.userAccountsRepository, e.toString());
}
return accountId;
} }
public static void updateServerVersion(final String serverVersion, final int accountId) { public static void updateServerVersion(final String serverVersion, final int accountId) {

View File

@ -15,7 +15,7 @@ import java.util.List;
public interface UserAccountsDao { public interface UserAccountsDao {
@Insert @Insert
void newAccount(UserAccount userAccounts); long newAccount(UserAccount userAccounts);
@Query("SELECT * FROM UserAccounts ORDER BY accountId ASC") @Query("SELECT * FROM UserAccounts ORDER BY accountId ASC")
LiveData<List<UserAccount>> fetchAllAccounts(); LiveData<List<UserAccount>> fetchAllAccounts();