From b782859eb7ca6d1eaa327a3a0c48eb2e14a5994b Mon Sep 17 00:00:00 2001 From: M M Arif Date: Sun, 3 Aug 2025 12:17:34 +0500 Subject: [PATCH] Prefill account details when updating existing account --- .../mian/gitnex/activities/LoginActivity.java | 89 ++++++++++++++++--- .../org/mian/gitnex/helpers/AlertDialogs.java | 4 +- app/src/main/res/values/strings.xml | 3 +- 3 files changed, 83 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java index 73fc00f8..bc91bae2 100644 --- a/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java +++ b/app/src/main/java/org/mian/gitnex/activities/LoginActivity.java @@ -74,6 +74,8 @@ public class LoginActivity extends BaseActivity { if (mode == null) { mode = "login"; btnText = R.string.btnLogin; + } else if (mode.equals("update_account")) { + btnText = R.string.update_account; } else { btnText = R.string.addNewAccountText; } @@ -81,6 +83,68 @@ public class LoginActivity extends BaseActivity { if (mode.equals("new_account")) { activityLoginBinding.loginButton.setText(btnText); activityLoginBinding.restoreFromBackup.setVisibility(View.GONE); + } else if (mode.equals("update_account")) { + activityLoginBinding.loginButton.setText(btnText); + activityLoginBinding.restoreFromBackup.setVisibility(View.GONE); + + int accountId = tinyDB.getInt("currentActiveAccountId", -1); + if (accountId != -1) { + UserAccountsApi userAccountsApi = BaseApi.getInstance(ctx, UserAccountsApi.class); + + if (userAccountsApi != null) { + + UserAccount account = userAccountsApi.getAccountById(accountId); + if (account != null) { + + // Prefill provider + selectedProvider = account.getProvider(); + if (selectedProvider.equals("gitea")) { + activityLoginBinding.providerSpinner.setText( + getResources().getStringArray(R.array.provider_options)[0], + false); + } else if (selectedProvider.equals("forgejo")) { + activityLoginBinding.providerSpinner.setText( + getResources().getStringArray(R.array.provider_options)[1], + false); + } else { + activityLoginBinding.providerSpinner.setText( + getResources().getStringArray(R.array.provider_options)[2], + false); + } + + // Prefill instance URL + String url = account.getInstanceUrl(); + try { + URI uri = new URI(url); + String cleanUrl = uri.getHost(); + int port = uri.getPort(); + if (port != -1) { + cleanUrl += ":" + port; + } + activityLoginBinding.instanceUrl.setText(cleanUrl); + } catch (Exception e) { + if (url.endsWith("/api/v1/")) { + url = url.substring(0, url.length() - "/api/v1/".length()); + } + activityLoginBinding.instanceUrl.setText(url); + } + + // Prefill protocol + try { + URI uri = new URI(url); + String scheme = uri.getScheme(); + selectedProtocol = + scheme != null && scheme.equalsIgnoreCase("http") + ? Protocol.HTTP.toString() + : Protocol.HTTPS.toString(); + activityLoginBinding.httpsSpinner.setText(selectedProtocol); + } catch (Exception e) { + selectedProtocol = Protocol.HTTPS.toString(); + activityLoginBinding.httpsSpinner.setText(selectedProtocol); + } + } + } + } } else { activityLoginBinding.loginButton.setText(btnText); activityLoginBinding.restoreFromBackup.setVisibility(View.VISIBLE); @@ -98,11 +162,17 @@ public class LoginActivity extends BaseActivity { ArrayAdapter.createFromResource( this, R.array.provider_options, R.layout.list_spinner_items); - activityLoginBinding.instanceUrl.setText(getIntent().getStringExtra("instanceUrl")); + String instanceUrlExtra = getIntent().getStringExtra("instanceUrl"); String scheme = getIntent().getStringExtra("scheme"); - if (scheme != null && scheme.equals("http")) { - activityLoginBinding.httpsSpinner.setText(Protocol.HTTP.toString()); - selectedProtocol = Protocol.HTTP.toString(); + if (instanceUrlExtra != null && !instanceUrlExtra.isEmpty()) { + activityLoginBinding.instanceUrl.setText(instanceUrlExtra); + if (scheme != null && scheme.equals("http")) { + activityLoginBinding.httpsSpinner.setText(Protocol.HTTP.toString()); + selectedProtocol = Protocol.HTTP.toString(); + } else { + activityLoginBinding.httpsSpinner.setText(Protocol.HTTPS.toString()); + selectedProtocol = Protocol.HTTPS.toString(); + } } else { activityLoginBinding.httpsSpinner.setText(Protocol.HTTPS.toString()); selectedProtocol = Protocol.HTTPS.toString(); @@ -125,12 +195,11 @@ public class LoginActivity extends BaseActivity { activityLoginBinding.providerSpinner.setSelection(0); activityLoginBinding.providerSpinner.setText(adapterProviders.getItem(0), false); activityLoginBinding.providerSpinner.setOnItemClickListener( - (parent, view, position, id) -> { - selectedProvider = - position == 0 - ? "gitea" - : position == 1 || position == 2 ? "forgejo" : "infer"; - }); + (parent, view, position, id) -> + selectedProvider = + position == 0 + ? "gitea" + : position == 1 || position == 2 ? "forgejo" : "infer"); if (AppUtil.hasNetworkConnection(ctx)) { enableProcessButton(); diff --git a/app/src/main/java/org/mian/gitnex/helpers/AlertDialogs.java b/app/src/main/java/org/mian/gitnex/helpers/AlertDialogs.java index 853d9b82..a9733515 100644 --- a/app/src/main/java/org/mian/gitnex/helpers/AlertDialogs.java +++ b/app/src/main/java/org/mian/gitnex/helpers/AlertDialogs.java @@ -34,10 +34,10 @@ public class AlertDialogs { .setCancelable(true) .setNeutralButton(R.string.cancelButton, null) .setPositiveButton( - R.string.addNewAccountText, + R.string.update_account, (dialog, which) -> { Intent intent = new Intent(context, LoginActivity.class); - intent.putExtra("mode", "new_account"); + intent.putExtra("mode", "update_account"); context.startActivity(intent); }) .show(); diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f5471073..8680b1eb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -302,7 +302,7 @@ Select a branch for release Authorization Error - It seems that the Access Token is revoked OR you are not allowed to see these contents.\n\nIn case of revoked Token, please add the account again + It seems that the Access Token is revoked OR you are not allowed to see these contents.\n\nIn case of revoked Token, please update the account. Do you really want to delete this label? @@ -728,6 +728,7 @@ Are you sure you want to remove this account from the app?\n\nThis will remove all the data related to this account on the app only. New Account Add Account + Update Account Account already exists in the app Account added successfully Switched to account : %1$s@%2$s