Przeglądaj źródła

Merge pull request #3749 from nextcloud/ezaquarii/refactor-legacy-migration-prefs

Move legacy free pref to AppPreferences
Andy Scherzinger 6 lat temu
rodzic
commit
d427d3f0ff

+ 4 - 4
src/gplay/java/com/owncloud/android/utils/PushUtils.java

@@ -381,8 +381,8 @@ public final class PushUtils {
 
     private static void migratePushKeys() {
         Context context = MainApp.getAppContext();
-
-        if (!PreferenceManager.getKeysMigration(context)) {
+        AppPreferences preferences = PreferenceManager.fromContext(context);
+        if (!preferences.isKeysMigrationEnabled()) {
             String oldKeyPath = MainApp.getStoragePath() + File.separator + MainApp.getDataFolder()
                     + File.separator + "nc-keypair";
             File oldPrivateKeyFile = new File(oldKeyPath, "push_key.priv");
@@ -394,7 +394,7 @@ public final class PushUtils {
 
             if ((privateKeyFile.exists() && publicKeyFile.exists()) ||
                     (!oldPrivateKeyFile.exists() && !oldPublicKeyFile.exists())) {
-                PreferenceManager.setKeysMigration(context, true);
+                preferences.setKeysMigrationEnabled(true);
             } else {
                 if (oldPrivateKeyFile.exists()) {
                     FileStorageUtils.moveFile(oldPrivateKeyFile, privateKeyFile);
@@ -405,7 +405,7 @@ public final class PushUtils {
                 }
 
                 if (privateKeyFile.exists() && publicKeyFile.exists()) {
-                    PreferenceManager.setKeysMigration(context, true);
+                    preferences.setKeysMigrationEnabled(true);
                 }
             }
         }

+ 21 - 0
src/main/java/com/nextcloud/client/preferences/AppPreferences.java

@@ -205,6 +205,27 @@ public interface AppPreferences {
     FileSortOrder getSortOrderByType(FileSortOrder.Type type, FileSortOrder defaultOrder);
     FileSortOrder getSortOrderByType(FileSortOrder.Type type);
 
+
+    /**
+     * Gets the legacy cleaning flag last set.
+     *
+     * @return ascending order     the legacy cleaning flag, default is false
+     */
+    boolean isLegacyClean();
+
+    /**
+     * Saves the legacy cleaning flag which the user has set last.
+     *
+     * @param legacyClean flag if it is a legacy cleaning
+     */
+    void setLegacyClean(boolean legacyClean);
+
+    boolean isKeysMigrationEnabled();
+    void setKeysMigrationEnabled(boolean enabled);
+
+    boolean isStoragePathFixEnabled();
+    void setStoragePathFixEnabled(boolean enabled);
+
     boolean isShowDetailedTimestampEnabled();
     void setShowDetailedTimestampEnabled(boolean showDetailedTimestamp);
 

+ 76 - 89
src/main/java/com/nextcloud/client/preferences/PreferenceManager.java

@@ -72,9 +72,14 @@ public final class PreferenceManager implements AppPreferences {
     public static AppPreferences fromContext(Context context) {
         Context appContext = context.getApplicationContext();
         SharedPreferences prefs = getDefaultSharedPreferences(appContext);
+
         return new PreferenceManager(appContext, prefs);
     }
 
+    public static SharedPreferences getDefaultSharedPreferences(Context context) {
+        return android.preference.PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
+    }
+
     PreferenceManager(Context appContext, SharedPreferences preferences) {
         this.context = appContext;
         this.preferences = preferences;
@@ -191,6 +196,7 @@ public final class PreferenceManager implements AppPreferences {
         };
     }
 
+    @Override
     public boolean isFingerprintUnlockEnabled() {
         return preferences.getBoolean(SettingsActivity.PREFERENCE_USE_FINGERPRINT, false);
     }
@@ -243,72 +249,34 @@ public final class PreferenceManager implements AppPreferences {
         dataProvider.storeOrUpdateKeyValue(account.name, PREF__FOLDER_SORT_ORDER + "_" + type, sortOrder.name);
     }
 
-    /**
-     * Get preference value for a folder.
-     * If folder is not set itself, it finds an ancestor that is set.
-     *
-     * @param context Context object.
-     * @param preferenceName Name of the preference to lookup.
-     * @param folder Folder.
-     * @param defaultValue Fallback value in case no ancestor is set.
-     * @return Preference value
-     */
-    public static String getFolderPreference(Context context, String preferenceName, OCFile folder,
-                                             String defaultValue) {
-        Account account = AccountUtils.getCurrentOwnCloudAccount(context);
-
-        if (account == null) {
-            return defaultValue;
-        }
-
-        ArbitraryDataProvider dataProvider = new ArbitraryDataProvider(context.getContentResolver());
-        FileDataStorageManager storageManager = new FileDataStorageManager(account, context.getContentResolver());
-
-        String value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, folder));
-        while (folder != null && value.isEmpty()) {
-            folder = storageManager.getFileById(folder.getParentId());
-            value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, folder));
-        }
-        return value.isEmpty() ? defaultValue : value;
+    @Override
+    public boolean isLegacyClean() {
+        return preferences.getBoolean(PREF__LEGACY_CLEAN, false);
     }
 
-    /**
-     * Set preference value for a folder.
-     *
-     * @param context Context object.
-     * @param preferenceName Name of the preference to set.
-     * @param folder Folder.
-     * @param value Preference value to set.
-     */
-    public static void setFolderPreference(Context context, String preferenceName, OCFile folder, String value) {
-        Account account = AccountUtils.getCurrentOwnCloudAccount(context);
-        ArbitraryDataProvider dataProvider = new ArbitraryDataProvider(context.getContentResolver());
-        dataProvider.storeOrUpdateKeyValue(account.name, getKeyFromFolder(preferenceName, folder), value);
+    @Override
+    public void setLegacyClean(boolean isLegacyClean) {
+        preferences.edit().putBoolean(PREF__LEGACY_CLEAN, isLegacyClean).apply();
     }
 
-    private static String getKeyFromFolder(String preferenceName, OCFile folder) {
-        final String folderIdString = String.valueOf(folder != null ? folder.getFileId() :
-                FileDataStorageManager.ROOT_PARENT_ID);
-
-        return preferenceName + "_" + folderIdString;
+    @Override
+    public boolean isKeysMigrationEnabled() {
+        return preferences.getBoolean(PREF__KEYS_MIGRATION, false);
     }
 
-    /**
-     * Gets the legacy cleaning flag last set.
-     *
-     * @param context Caller {@link Context}, used to access to shared preferences manager.
-     * @return ascending order     the legacy cleaning flag, default is false
-     */
-    public static boolean getLegacyClean(Context context) {
-        return getDefaultSharedPreferences(context).getBoolean(PREF__LEGACY_CLEAN, false);
+    @Override
+    public void setKeysMigrationEnabled(boolean keysMigration) {
+        preferences.edit().putBoolean(PREF__KEYS_MIGRATION, keysMigration).apply();
     }
 
-    public static boolean getKeysMigration(Context context) {
-        return getDefaultSharedPreferences(context).getBoolean(PREF__KEYS_MIGRATION, false);
+    @Override
+    public boolean isStoragePathFixEnabled() {
+        return preferences.getBoolean(PREF__FIX_STORAGE_PATH, false);
     }
 
-    public static boolean getStoragePathFix(Context context) {
-        return getDefaultSharedPreferences(context).getBoolean(PREF__FIX_STORAGE_PATH, false);
+    @Override
+    public void setStoragePathFixEnabled(boolean storagePathFixEnabled) {
+        preferences.edit().putBoolean(PREF__FIX_STORAGE_PATH, storagePathFixEnabled).apply();
     }
 
     @Override
@@ -341,24 +309,6 @@ public final class PreferenceManager implements AppPreferences {
         preferences.edit().putBoolean(PREF__AUTO_UPLOAD_INIT, autoUploadInit).apply();
     }
 
-    /**
-     * Saves the legacy cleaning flag which the user has set last.
-     *
-     * @param context     Caller {@link Context}, used to access to shared preferences manager.
-     * @param legacyClean flag if it is a legacy cleaning
-     */
-    public static void setLegacyClean(Context context, boolean legacyClean) {
-        saveBooleanPreference(context, PREF__LEGACY_CLEAN, legacyClean);
-    }
-
-    public static void setKeysMigration(Context context, boolean keysMigration) {
-        saveBooleanPreference(context, PREF__KEYS_MIGRATION, keysMigration);
-    }
-
-    public static void setStoragePathFix(Context context, boolean storagePathFix) {
-        saveBooleanPreference(context, PREF__FIX_STORAGE_PATH, storagePathFix);
-    }
-
     @Override
     public int getUploaderBehaviour() {
         return preferences.getInt(AUTO_PREF__UPLOADER_BEHAVIOR, 1);
@@ -399,10 +349,12 @@ public final class PreferenceManager implements AppPreferences {
         preferences.edit().putInt(AUTO_PREF__LAST_SEEN_VERSION_CODE, versionCode).apply();
     }
 
+    @Override
     public long getLockTimestamp() {
         return preferences.getLong(PREF__LOCK_TIMESTAMP, 0);
     }
 
+    @Override
     public void setLockTimestamp(long timestamp) {
         preferences.edit().putLong(PREF__LOCK_TIMESTAMP, timestamp).apply();
     }
@@ -427,21 +379,6 @@ public final class PreferenceManager implements AppPreferences {
         preferences.edit().putBoolean(PREF__SHOW_MEDIA_SCAN_NOTIFICATIONS, value).apply();
     }
 
-    private static void saveBooleanPreference(Context context, String key, boolean value) {
-        SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit();
-        appPreferences.putBoolean(key, value).apply();
-    }
-
-    private static void saveStringPreferenceNow(Context context, String key, String value) {
-        SharedPreferences.Editor appPreferences = getDefaultSharedPreferences(context.getApplicationContext()).edit();
-        appPreferences.putString(key, value);
-        appPreferences.apply();
-    }
-
-    public static SharedPreferences getDefaultSharedPreferences(Context context) {
-        return android.preference.PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
-    }
-
     @Override
     public void removeLegacyPreferences() {
         preferences.edit()
@@ -464,4 +401,54 @@ public final class PreferenceManager implements AppPreferences {
     public void clear() {
         preferences.edit().clear().apply();
     }
+
+    /**
+     * Get preference value for a folder.
+     * If folder is not set itself, it finds an ancestor that is set.
+     *
+     * @param context Context object.
+     * @param preferenceName Name of the preference to lookup.
+     * @param folder Folder.
+     * @param defaultValue Fallback value in case no ancestor is set.
+     * @return Preference value
+     */
+    private static String getFolderPreference(Context context, String preferenceName, OCFile folder,
+                                              String defaultValue) {
+        Account account = AccountUtils.getCurrentOwnCloudAccount(context);
+
+        if (account == null) {
+            return defaultValue;
+        }
+
+        ArbitraryDataProvider dataProvider = new ArbitraryDataProvider(context.getContentResolver());
+        FileDataStorageManager storageManager = new FileDataStorageManager(account, context.getContentResolver());
+
+        String value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, folder));
+        while (folder != null && value.isEmpty()) {
+            folder = storageManager.getFileById(folder.getParentId());
+            value = dataProvider.getValue(account.name, getKeyFromFolder(preferenceName, folder));
+        }
+        return value.isEmpty() ? defaultValue : value;
+    }
+
+    /**
+     * Set preference value for a folder.
+     *
+     * @param context Context object.
+     * @param preferenceName Name of the preference to set.
+     * @param folder Folder.
+     * @param value Preference value to set.
+     */
+    private static void setFolderPreference(Context context, String preferenceName, OCFile folder, String value) {
+        Account account = AccountUtils.getCurrentOwnCloudAccount(context);
+        ArbitraryDataProvider dataProvider = new ArbitraryDataProvider(context.getContentResolver());
+        dataProvider.storeOrUpdateKeyValue(account.name, getKeyFromFolder(preferenceName, folder), value);
+    }
+
+    private static String getKeyFromFolder(String preferenceName, OCFile folder) {
+        final String folderIdString = String.valueOf(folder != null ? folder.getFileId() :
+            FileDataStorageManager.ROOT_PARENT_ID);
+
+        return preferenceName + "_" + folderIdString;
+    }
 }

+ 15 - 11
src/main/java/com/owncloud/android/MainApp.java

@@ -243,7 +243,7 @@ public class MainApp extends MultiDexApplication {
 
     @SuppressLint("ApplySharedPref") // commit is done on purpose to write immediately
     private void fixStoragePath() {
-        if (!PreferenceManager.getStoragePathFix(this)) {
+        if (!preferences.isStoragePathFixEnabled()) {
             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                 StoragePoint[] storagePoints = DataStorageProvider.getInstance().getAvailableStoragePoints();
                 String storagePath = sharedPreferences.getString(SettingsActivity.PreferenceKeys.STORAGE_PATH, "");
@@ -280,10 +280,10 @@ public class MainApp extends MultiDexApplication {
 
                         }
                     }
-                    PreferenceManager.setStoragePathFix(this, true);
+                    preferences.setStoragePathFixEnabled(true);
                 } else {
                     sharedPreferences.edit().remove(PreferenceManager.PREF__KEYS_MIGRATION).commit();
-                    PreferenceManager.setStoragePathFix(this, true);
+                    preferences.setStoragePathFixEnabled(true);
                 }
             } else {
                 if (TextUtils.isEmpty(storagePath)) {
@@ -291,7 +291,7 @@ public class MainApp extends MultiDexApplication {
                                               Environment.getExternalStorageDirectory().getAbsolutePath()).commit();
                 }
                 sharedPreferences.edit().remove(PreferenceManager.PREF__KEYS_MIGRATION).commit();
-                PreferenceManager.setStoragePathFix(this, true);
+                preferences.setStoragePathFixEnabled(true);
             }
         }
     }
@@ -543,7 +543,7 @@ public class MainApp extends MultiDexApplication {
         AppPreferences preferences = PreferenceManager.fromContext(context);
         if (!preferences.isAutoUploadPathsUpdateEnabled()) {
             SyncedFolderProvider syncedFolderProvider =
-                    new SyncedFolderProvider(MainApp.getAppContext().getContentResolver());
+                    new SyncedFolderProvider(MainApp.getAppContext().getContentResolver(), preferences);
             syncedFolderProvider.updateAutoUploadPaths(mContext);
         }
     }
@@ -557,7 +557,7 @@ public class MainApp extends MultiDexApplication {
             Log_OC.i(TAG, "Migrate synced_folders records for image/video split");
             ContentResolver contentResolver = context.getContentResolver();
 
-            SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver);
+            SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver, preferences);
 
             final List<MediaFolder> imageMediaFolders = MediaProvider.getImageFolders(contentResolver, 1, null, true);
             final List<MediaFolder> videoMediaFolders = MediaProvider.getVideoFolders(contentResolver, 1, null, true);
@@ -608,7 +608,7 @@ public class MainApp extends MultiDexApplication {
             AppPreferences preferences = PreferenceManager.fromContext(getAppContext());
             if (!preferences.isAutoUploadInitialized()) {
                 SyncedFolderProvider syncedFolderProvider =
-                        new SyncedFolderProvider(MainApp.getAppContext().getContentResolver());
+                        new SyncedFolderProvider(MainApp.getAppContext().getContentResolver(), preferences);
 
                 for (SyncedFolder syncedFolder : syncedFolderProvider.getSyncedFolders()) {
                     if (syncedFolder.isEnabled()) {
@@ -627,10 +627,11 @@ public class MainApp extends MultiDexApplication {
         // database, and this cleans all that and leaves 1 (newest) entry per synced folder
 
         Context context = getAppContext();
+        AppPreferences preferences = PreferenceManager.fromContext(context);
 
-        if (!PreferenceManager.getLegacyClean(context)) {
+        if (!preferences.isLegacyClean()) {
             SyncedFolderProvider syncedFolderProvider =
-                    new SyncedFolderProvider(context.getContentResolver());
+                    new SyncedFolderProvider(context.getContentResolver(), preferences);
 
             List<SyncedFolder> syncedFolderList = syncedFolderProvider.getSyncedFolders();
             Map<Pair<String, String>, Long> syncedFolders = new HashMap<>();
@@ -649,9 +650,12 @@ public class MainApp extends MultiDexApplication {
             ids.addAll(syncedFolders.values());
 
             if (ids.size() > 0) {
-                syncedFolderProvider.deleteSyncedFoldersNotInList(mContext, ids);
+                int deletedCount = syncedFolderProvider.deleteSyncedFoldersNotInList(ids);
+                if(deletedCount > 0) {
+                    preferences.setLegacyClean(true);
+                }
             } else {
-                PreferenceManager.setLegacyClean(context, true);
+                preferences.setLegacyClean(true);
             }
         }
     }

+ 7 - 6
src/main/java/com/owncloud/android/datamodel/SyncedFolderProvider.java

@@ -46,17 +46,19 @@ public class SyncedFolderProvider extends Observable {
     static private final String TAG = SyncedFolderProvider.class.getSimpleName();
 
     private ContentResolver mContentResolver;
+    private AppPreferences preferences;
 
     /**
      * constructor.
      *
      * @param contentResolver the ContentResolver to work with.
      */
-    public SyncedFolderProvider(ContentResolver contentResolver) {
+    public SyncedFolderProvider(ContentResolver contentResolver, AppPreferences preferences) {
         if (contentResolver == null) {
             throw new IllegalArgumentException("Cannot create an instance with a NULL contentResolver");
         }
         mContentResolver = contentResolver;
+        this.preferences = preferences;
     }
 
     /**
@@ -271,19 +273,18 @@ public class SyncedFolderProvider extends Observable {
     /**
      * delete any records of synchronized folders that are not within the given list of ids.
      *
-     * @param context the context.
-     * @param ids     the list of ids to be excluded from deletion.
+     * @param ids          the list of ids to be excluded from deletion.
      * @return number of deleted records.
      */
-    public int deleteSyncedFoldersNotInList(Context context, List<Long> ids) {
+    public int deleteSyncedFoldersNotInList(List<Long> ids) {
         int result = mContentResolver.delete(
                 ProviderMeta.ProviderTableMeta.CONTENT_URI_SYNCED_FOLDERS,
                 ProviderMeta.ProviderTableMeta._ID + " NOT IN (?)",
                 new String[]{String.valueOf(ids)}
         );
 
-        if (result > 0 && context != null) {
-            PreferenceManager.setLegacyClean(context, true);
+        if(result > 0) {
+            preferences.setLegacyClean(true);
         }
 
         return result;

+ 3 - 1
src/main/java/com/owncloud/android/jobs/AccountRemovalJob.java

@@ -29,6 +29,7 @@ import android.content.Context;
 
 import com.evernote.android.job.Job;
 import com.evernote.android.job.util.support.PersistableBundleCompat;
+import com.nextcloud.client.preferences.PreferenceManager;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.datamodel.ArbitraryDataProvider;
@@ -92,7 +93,8 @@ public class AccountRemovalJob extends Job implements AccountManagerCallback<Boo
             arbitraryDataProvider.deleteKeyForAccount(account.name, PENDING_FOR_REMOVAL);
 
             // remove synced folders set for account
-            SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(context.getContentResolver());
+            SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(context.getContentResolver(),
+                PreferenceManager.fromContext(context));
             List<SyncedFolder> syncedFolders = syncedFolderProvider.getSyncedFolders();
 
             List<Long> syncedFolderIds = new ArrayList<>();

+ 3 - 1
src/main/java/com/owncloud/android/jobs/FilesSyncJob.java

@@ -31,6 +31,7 @@ import android.text.TextUtils;
 
 import com.evernote.android.job.Job;
 import com.evernote.android.job.util.support.PersistableBundleCompat;
+import com.nextcloud.client.preferences.PreferenceManager;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AccountUtils;
@@ -103,7 +104,8 @@ public class FilesSyncJob extends Job {
         // Create all the providers we'll need
         final ContentResolver contentResolver = context.getContentResolver();
         final FilesystemDataProvider filesystemDataProvider = new FilesystemDataProvider(contentResolver);
-        SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver);
+        SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver,
+            PreferenceManager.fromContext(context));
 
         Locale currentLocale = context.getResources().getConfiguration().locale;
         SimpleDateFormat sFormatter = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss", currentLocale);

+ 2 - 1
src/main/java/com/owncloud/android/jobs/MediaFoldersDetectionJob.java

@@ -80,7 +80,8 @@ public class MediaFoldersDetectionJob extends Job {
         Context context = getContext();
         ContentResolver contentResolver = context.getContentResolver();
         ArbitraryDataProvider arbitraryDataProvider = new ArbitraryDataProvider(contentResolver);
-        SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver);
+        SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver,
+            PreferenceManager.fromContext(context));
         Gson gson = new Gson();
         String arbitraryDataString;
         MediaFoldersModel mediaFoldersModel;

+ 3 - 1
src/main/java/com/owncloud/android/jobs/NContentObserverJob.java

@@ -27,6 +27,7 @@ import android.os.Build;
 
 import com.evernote.android.job.JobRequest;
 import com.evernote.android.job.util.support.PersistableBundleCompat;
+import com.nextcloud.client.preferences.PreferenceManager;
 import com.owncloud.android.datamodel.SyncedFolderProvider;
 import com.owncloud.android.utils.FilesSyncHelper;
 import com.owncloud.android.utils.PowerUtils;
@@ -65,7 +66,8 @@ public class NContentObserverJob extends JobService {
 
     private void checkAndStartFileSyncJob() {
         if (!PowerUtils.isPowerSaveMode(getApplicationContext()) &&
-                new SyncedFolderProvider(getContentResolver()).countEnabledSyncedFolders() > 0) {
+                new SyncedFolderProvider(getContentResolver(),
+                    PreferenceManager.fromContext(getApplicationContext())).countEnabledSyncedFolders() > 0) {
             PersistableBundleCompat persistableBundleCompat = new PersistableBundleCompat();
             persistableBundleCompat.putBoolean(FilesSyncJob.SKIP_CUSTOM, true);
 

+ 3 - 1
src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java

@@ -42,6 +42,7 @@ import android.widget.LinearLayout;
 import android.widget.TextView;
 
 import com.google.android.material.bottomnavigation.BottomNavigationView;
+import com.nextcloud.client.preferences.PreferenceManager;
 import com.owncloud.android.BuildConfig;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
@@ -187,7 +188,8 @@ public class SyncedFoldersActivity extends FileActivity implements SyncedFolderA
         final int gridWidth = getResources().getInteger(R.integer.media_grid_width);
         boolean lightVersion = getResources().getBoolean(R.bool.syncedFolder_light);
         mAdapter = new SyncedFolderAdapter(this, gridWidth, this, lightVersion);
-        mSyncedFolderProvider = new SyncedFolderProvider(getContentResolver());
+        mSyncedFolderProvider = new SyncedFolderProvider(getContentResolver(),
+            PreferenceManager.fromContext(this));
 
         final GridLayoutManager lm = new GridLayoutManager(this, gridWidth);
         mAdapter.setLayoutManager(lm);

+ 3 - 1
src/main/java/com/owncloud/android/utils/FilesSyncHelper.java

@@ -36,6 +36,7 @@ import android.util.Log;
 import com.evernote.android.job.JobManager;
 import com.evernote.android.job.JobRequest;
 import com.evernote.android.job.util.Device;
+import com.nextcloud.client.preferences.PreferenceManager;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.authentication.AccountUtils;
 import com.owncloud.android.datamodel.ArbitraryDataProvider;
@@ -157,7 +158,8 @@ public final class FilesSyncHelper {
     public static void insertAllDBEntries(boolean skipCustom) {
         final Context context = MainApp.getAppContext();
         final ContentResolver contentResolver = context.getContentResolver();
-        SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver);
+        SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver,
+            PreferenceManager.fromContext(context));
 
         for (SyncedFolder syncedFolder : syncedFolderProvider.getSyncedFolders()) {
             if (syncedFolder.isEnabled() && (MediaFolderType.CUSTOM != syncedFolder.getType() || !skipCustom)) {