99 */
1010package com .nextcloud .android .sso ;
1111
12- import static android .app .Activity .RESULT_CANCELED ;
13- import static android .app .Activity .RESULT_OK ;
14- import static com .nextcloud .android .sso .Constants .NEXTCLOUD_FILES_ACCOUNT ;
15- import static com .nextcloud .android .sso .Constants .NEXTCLOUD_SSO ;
16- import static com .nextcloud .android .sso .Constants .NEXTCLOUD_SSO_EXCEPTION ;
17- import static com .nextcloud .android .sso .Constants .SSO_SHARED_PREFERENCE ;
18-
1912import android .Manifest ;
2013import android .accounts .Account ;
2114import android .accounts .AccountManager ;
3124import android .util .Log ;
3225import android .widget .Toast ;
3326
34- import androidx .core .app .ActivityCompat ;
35- import androidx .core .content .ContextCompat ;
36- import androidx .fragment .app .Fragment ;
37-
3827import com .nextcloud .android .sso .exceptions .AccountImportCancelledException ;
3928import com .nextcloud .android .sso .exceptions .AndroidGetAccountsPermissionNotGranted ;
4029import com .nextcloud .android .sso .exceptions .NextcloudFilesAppAccountNotFoundException ;
4332import com .nextcloud .android .sso .exceptions .NextcloudFilesAppNotSupportedException ;
4433import com .nextcloud .android .sso .exceptions .SSOException ;
4534import com .nextcloud .android .sso .exceptions .UnknownErrorException ;
46- import com .nextcloud .android .sso .model .FilesAppType ;
4735import com .nextcloud .android .sso .model .SingleSignOnAccount ;
4836import com .nextcloud .android .sso .ui .UiExceptionManager ;
4937
5038import java .io .IOException ;
5139import java .util .ArrayList ;
52- import java .util .Arrays ;
5340import java .util .List ;
5441
42+ import androidx .core .app .ActivityCompat ;
43+ import androidx .core .content .ContextCompat ;
44+ import androidx .fragment .app .Fragment ;
5545import io .reactivex .annotations .NonNull ;
5646import io .reactivex .annotations .Nullable ;
5747
48+ import static android .app .Activity .RESULT_CANCELED ;
49+ import static android .app .Activity .RESULT_OK ;
50+ import static com .nextcloud .android .sso .Constants .NEXTCLOUD_FILES_ACCOUNT ;
51+ import static com .nextcloud .android .sso .Constants .NEXTCLOUD_SSO ;
52+ import static com .nextcloud .android .sso .Constants .NEXTCLOUD_SSO_EXCEPTION ;
53+ import static com .nextcloud .android .sso .Constants .SSO_SHARED_PREFERENCE ;
54+
5855public class AccountImporter {
5956
6057 private static final String TAG = AccountImporter .class .getCanonicalName ();
@@ -67,8 +64,6 @@ public class AccountImporter {
6764
6865 private static SharedPreferences SHARED_PREFERENCES ;
6966
70- private static final String [] ACCOUNT_TYPES = Arrays .stream (FilesAppType .values ()).map (a -> a .accountType ).toArray (String []::new );
71-
7267 public static boolean accountsToImportAvailable (Context context ) {
7368 return findAccounts (context ).size () > 0 ;
7469 }
@@ -78,7 +73,7 @@ public static void pickNewAccount(Activity activity) throws NextcloudFilesAppNot
7873 checkAndroidAccountPermissions (activity );
7974
8075 if (appInstalledOrNot (activity )) {
81- Intent intent = AccountManager .newChooseAccountIntent (null , null , ACCOUNT_TYPES ,
76+ Intent intent = AccountManager .newChooseAccountIntent (null , null , FilesAppTypeRegistry . getInstance (). getAccountTypes (),
8277 true , null , AUTH_TOKEN_SSO , null , null );
8378 activity .startActivityForResult (intent , CHOOSE_ACCOUNT_SSO );
8479 } else {
@@ -91,7 +86,7 @@ public static void pickNewAccount(Fragment fragment) throws NextcloudFilesAppNot
9186 checkAndroidAccountPermissions (fragment .getContext ());
9287
9388 if (appInstalledOrNot (fragment .requireContext ())) {
94- Intent intent = AccountManager .newChooseAccountIntent (null , null , ACCOUNT_TYPES ,
89+ Intent intent = AccountManager .newChooseAccountIntent (null , null , FilesAppTypeRegistry . getInstance (). getAccountTypes () ,
9590 true , null , AUTH_TOKEN_SSO , null , null );
9691 fragment .startActivityForResult (intent , CHOOSE_ACCOUNT_SSO );
9792 } else {
@@ -123,7 +118,7 @@ private static void checkAndroidAccountPermissions(Context context) throws Andro
123118 private static boolean appInstalledOrNot (Context context ) {
124119 boolean returnValue = false ;
125120 PackageManager pm = context .getPackageManager ();
126- for (final var appType : FilesAppType . values ()) {
121+ for (final var appType : FilesAppTypeRegistry . getInstance (). getTypes ()) {
127122 try {
128123 pm .getPackageInfo (appType .packageId , PackageManager .GET_ACTIVITIES );
129124 returnValue = true ;
@@ -142,7 +137,7 @@ public static List<Account> findAccounts(final Context context) {
142137
143138 List <Account > accountsAvailable = new ArrayList <>();
144139 for (final Account account : accounts ) {
145- for (String accountType : ACCOUNT_TYPES ) {
140+ for (String accountType : FilesAppTypeRegistry . getInstance (). getAccountTypes () ) {
146141 if (accountType .equals (account .type )) {
147142 accountsAvailable .add (account );
148143 }
@@ -370,7 +365,7 @@ private static Intent buildRequestAuthTokenIntent(Context context, Intent intent
370365 throw new NextcloudFilesAppAccountPermissionNotGrantedException (context );
371366 }
372367
373- String componentName = FilesAppType .findByAccountType (account .type ).packageId ;
368+ String componentName = FilesAppTypeRegistry . getInstance () .findByAccountType (account .type ).packageId ;
374369
375370 Intent authIntent = new Intent ();
376371 authIntent .setComponent (new ComponentName (componentName ,
0 commit comments