From 2b7a575add5cb62302bff6694bf52b0439416170 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Fri, 16 Feb 2024 18:43:31 +0600 Subject: [PATCH 1/6] chore: move from Continuous Deployment to Continuous Delivery flow --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b26a8452..6a80a424 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,3 +25,4 @@ publish: stage: publish script: - ./gradlew :lib:publish + when: manual \ No newline at end of file -- GitLab From b2b8ccd34acf8f0503614e70358b0a94064333c2 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Fri, 16 Feb 2024 19:02:02 +0600 Subject: [PATCH 2/6] feat: add local account support issue: https://gitlab.e.foundation/e/backlog/-/issues/775 --- lib/build.gradle | 4 +-- .../android/sso/AccountImporter.java | 18 +++++++++++- .../com/nextcloud/android/sso/Constants.java | 2 ++ .../sso/helper/SingleAccountHelper.java | 28 +++++++++++++++++++ 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/lib/build.gradle b/lib/build.gradle index 9aa9ed7e..ab1d59fa 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -18,8 +18,8 @@ group = 'foundation.e.lib' def versionMajor = 1 def versionMinor = 0 -def versionPatch = 5 -def releasePatch = "alpha" +def versionPatch = 8 +def releasePatch = "beta" def libName = "Android-SingleSignOn" diff --git a/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java b/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java index d00c96f3..2f1dc462 100644 --- a/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java +++ b/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java @@ -422,7 +422,7 @@ public class AccountImporter { } } - protected static String getPrefKeyForAccount(String accountName) { + public static String getPrefKeyForAccount(String accountName) { return PREF_ACCOUNT_STRING + accountName; } @@ -434,4 +434,20 @@ public class AccountImporter { public static void setSharedPreferences(SharedPreferences sharedPreferences) { AccountImporter.SHARED_PREFERENCES = sharedPreferences; } + + @NonNull + public static SingleSignOnAccount pickLocalAccount(@NonNull Context context) { + String accountName = Constants.LOCAL_ACCOUNT_NAME; + SingleSignOnAccount ssoAccount = new SingleSignOnAccount(accountName, accountName, "", "", Constants.LOCAL_ACCOUNT_TYPE); + + SharedPreferences mPrefs = getSharedPreferences(context); + String prefKey = getPrefKeyForAccount(accountName); + try { + mPrefs.edit().putString(prefKey, SingleSignOnAccount.toString(ssoAccount)).apply(); + } catch (IOException e) { + Log.e(TAG, "pickLocalAccount failed", e); + } + + return ssoAccount; + } } diff --git a/lib/src/main/java/com/nextcloud/android/sso/Constants.java b/lib/src/main/java/com/nextcloud/android/sso/Constants.java index ff3aa3a7..349d0a4d 100644 --- a/lib/src/main/java/com/nextcloud/android/sso/Constants.java +++ b/lib/src/main/java/com/nextcloud/android/sso/Constants.java @@ -38,4 +38,6 @@ public class Constants { public static final String EXCEPTION_HTTP_REQUEST_FAILED = "CE_5"; public static final String EXCEPTION_ACCOUNT_ACCESS_DECLINED = "CE_6"; + public static final String LOCAL_ACCOUNT_NAME = "Local"; + public static final String LOCAL_ACCOUNT_TYPE = "eos.android-sso.account.local"; } diff --git a/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java b/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java index 8d669786..e3178b6b 100644 --- a/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java +++ b/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java @@ -24,17 +24,25 @@ import android.app.Activity; import android.content.Context; import android.content.SharedPreferences; +import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import com.nextcloud.android.sso.AccountImporter; +import com.nextcloud.android.sso.Constants; import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException; import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountPermissionNotGrantedException; import com.nextcloud.android.sso.exceptions.NextcloudFilesAppNotSupportedException; import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException; import com.nextcloud.android.sso.model.SingleSignOnAccount; +import java.io.IOException; + +import trikita.log.Log; + public final class SingleAccountHelper { + private static final String TAG = SingleAccountHelper.class.getCanonicalName(); + private static final String PREF_CURRENT_ACCOUNT_STRING = "PREF_CURRENT_ACCOUNT_STRING"; private SingleAccountHelper() { @@ -93,4 +101,24 @@ public final class SingleAccountHelper { .unregisterOnSharedPreferenceChangeListener(listener); } + + public static boolean isLocalAccount(@NonNull SingleSignOnAccount account) { + return account.type.equals(Constants.LOCAL_ACCOUNT_TYPE); + } + + public static boolean isLocalAccount(@NonNull Context context, @NonNull final String accountName) + throws NextcloudFilesAppAccountNotFoundException { + SharedPreferences mPrefs = AccountImporter.getSharedPreferences(context); + String prefKey = AccountImporter.getPrefKeyForAccount(accountName); + + if (mPrefs.contains(prefKey)) { + try { + SingleSignOnAccount account = SingleSignOnAccount.fromString(mPrefs.getString(prefKey, null)); + return account.type.equals(Constants.LOCAL_ACCOUNT_TYPE); + } catch (ClassNotFoundException | IOException e) { + Log.e(TAG, "[isLocalAccount(context, accountName)]", e); + } + } + throw new NextcloudFilesAppAccountNotFoundException(); + } } -- GitLab From 1f5e795fa3b0223a2e8d5d6c41e7c8be77415cb0 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Sat, 2 Mar 2024 12:14:57 +0600 Subject: [PATCH 3/6] chore: move to v1.0.8-release --- lib/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/build.gradle b/lib/build.gradle index ab1d59fa..67a353c1 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -19,7 +19,7 @@ group = 'foundation.e.lib' def versionMajor = 1 def versionMinor = 0 def versionPatch = 8 -def releasePatch = "beta" +def releasePatch = "release" def libName = "Android-SingleSignOn" -- GitLab From 14083125f1cf518e5fb9877d823a61d0ef1bcc7d Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 4 Mar 2024 06:33:15 +0000 Subject: [PATCH 4/6] chore: add final modifier according to review --- .../nextcloud/android/sso/helper/SingleAccountHelper.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java b/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java index e3178b6b..1fedd61a 100644 --- a/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java +++ b/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java @@ -108,12 +108,12 @@ public final class SingleAccountHelper { public static boolean isLocalAccount(@NonNull Context context, @NonNull final String accountName) throws NextcloudFilesAppAccountNotFoundException { - SharedPreferences mPrefs = AccountImporter.getSharedPreferences(context); - String prefKey = AccountImporter.getPrefKeyForAccount(accountName); + final SharedPreferences mPrefs = AccountImporter.getSharedPreferences(context); + final String prefKey = AccountImporter.getPrefKeyForAccount(accountName); if (mPrefs.contains(prefKey)) { try { - SingleSignOnAccount account = SingleSignOnAccount.fromString(mPrefs.getString(prefKey, null)); + final SingleSignOnAccount account = SingleSignOnAccount.fromString(mPrefs.getString(prefKey, null)); return account.type.equals(Constants.LOCAL_ACCOUNT_TYPE); } catch (ClassNotFoundException | IOException e) { Log.e(TAG, "[isLocalAccount(context, accountName)]", e); -- GitLab From eba1829ae09fb220c3da320e1527db0401ef1133 Mon Sep 17 00:00:00 2001 From: Sayantan Roychowdhury Date: Mon, 4 Mar 2024 06:34:06 +0000 Subject: [PATCH 5/6] chore: add final modifier according to review --- .../java/com/nextcloud/android/sso/AccountImporter.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java b/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java index 2f1dc462..59c19b9d 100644 --- a/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java +++ b/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java @@ -437,11 +437,11 @@ public class AccountImporter { @NonNull public static SingleSignOnAccount pickLocalAccount(@NonNull Context context) { - String accountName = Constants.LOCAL_ACCOUNT_NAME; - SingleSignOnAccount ssoAccount = new SingleSignOnAccount(accountName, accountName, "", "", Constants.LOCAL_ACCOUNT_TYPE); + final String accountName = Constants.LOCAL_ACCOUNT_NAME; + final SingleSignOnAccount ssoAccount = new SingleSignOnAccount(accountName, accountName, "", "", Constants.LOCAL_ACCOUNT_TYPE); - SharedPreferences mPrefs = getSharedPreferences(context); - String prefKey = getPrefKeyForAccount(accountName); + final SharedPreferences mPrefs = getSharedPreferences(context); + final String prefKey = getPrefKeyForAccount(accountName); try { mPrefs.edit().putString(prefKey, SingleSignOnAccount.toString(ssoAccount)).apply(); } catch (IOException e) { -- GitLab From 7614dd1a9661273de0ad7a4c2425bab85d04dde2 Mon Sep 17 00:00:00 2001 From: Fahim Salam Chowdhury Date: Mon, 4 Mar 2024 14:20:33 +0600 Subject: [PATCH 6/6] chore: refactor according to review --- .gitlab-ci.yml | 2 +- .../nextcloud/android/sso/AccountImporter.java | 6 +++--- .../android/sso/helper/SingleAccountHelper.java | 17 +++++++++++------ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 6a80a424..ceff9bba 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -25,4 +25,4 @@ publish: stage: publish script: - ./gradlew :lib:publish - when: manual \ No newline at end of file + when: manual diff --git a/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java b/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java index 59c19b9d..76f646d6 100644 --- a/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java +++ b/lib/src/main/java/com/nextcloud/android/sso/AccountImporter.java @@ -440,10 +440,10 @@ public class AccountImporter { final String accountName = Constants.LOCAL_ACCOUNT_NAME; final SingleSignOnAccount ssoAccount = new SingleSignOnAccount(accountName, accountName, "", "", Constants.LOCAL_ACCOUNT_TYPE); - final SharedPreferences mPrefs = getSharedPreferences(context); - final String prefKey = getPrefKeyForAccount(accountName); + final SharedPreferences preferences = getSharedPreferences(context); + final String preferenceKey = getPrefKeyForAccount(accountName); try { - mPrefs.edit().putString(prefKey, SingleSignOnAccount.toString(ssoAccount)).apply(); + preferences.edit().putString(preferenceKey, SingleSignOnAccount.toString(ssoAccount)).apply(); } catch (IOException e) { Log.e(TAG, "pickLocalAccount failed", e); } diff --git a/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java b/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java index 1fedd61a..721ebcf1 100644 --- a/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java +++ b/lib/src/main/java/com/nextcloud/android/sso/helper/SingleAccountHelper.java @@ -41,7 +41,7 @@ import trikita.log.Log; public final class SingleAccountHelper { - private static final String TAG = SingleAccountHelper.class.getCanonicalName(); + private static final String TAG = SingleAccountHelper.class.getSimpleName(); private static final String PREF_CURRENT_ACCOUNT_STRING = "PREF_CURRENT_ACCOUNT_STRING"; @@ -106,14 +106,19 @@ public final class SingleAccountHelper { return account.type.equals(Constants.LOCAL_ACCOUNT_TYPE); } - public static boolean isLocalAccount(@NonNull Context context, @NonNull final String accountName) + public static boolean isLocalAccount(@NonNull Context context, @NonNull String accountName) throws NextcloudFilesAppAccountNotFoundException { - final SharedPreferences mPrefs = AccountImporter.getSharedPreferences(context); - final String prefKey = AccountImporter.getPrefKeyForAccount(accountName); + final SharedPreferences preferences = AccountImporter.getSharedPreferences(context); + final String preferenceKey = AccountImporter.getPrefKeyForAccount(accountName); - if (mPrefs.contains(prefKey)) { + if (preferences.contains(preferenceKey)) { try { - final SingleSignOnAccount account = SingleSignOnAccount.fromString(mPrefs.getString(prefKey, null)); + final SingleSignOnAccount account = SingleSignOnAccount.fromString(preferences.getString(preferenceKey, null)); + + if (account == null) { + throw new NextcloudFilesAppAccountNotFoundException(); + } + return account.type.equals(Constants.LOCAL_ACCOUNT_TYPE); } catch (ClassNotFoundException | IOException e) { Log.e(TAG, "[isLocalAccount(context, accountName)]", e); -- GitLab