Эх сурвалжийг харах

Try to fix it

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 8 жил өмнө
parent
commit
e0cbbd0bf8

+ 51 - 0
src/main/java/com/owncloud/android/MainApp.java

@@ -20,6 +20,7 @@
 package com.owncloud.android;
 
 import android.app.Activity;
+import android.content.ContentResolver;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.pm.PackageInfo;
@@ -31,6 +32,8 @@ import android.support.v4.util.Pair;
 
 import com.evernote.android.job.JobManager;
 import com.owncloud.android.authentication.PassCodeManager;
+import com.owncloud.android.datamodel.MediaFolder;
+import com.owncloud.android.datamodel.MediaProvider;
 import com.owncloud.android.datamodel.SyncedFolder;
 import com.owncloud.android.datamodel.SyncedFolderProvider;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
@@ -263,6 +266,54 @@ public class MainApp extends MultiDexApplication {
         }
     }
 
+    private void splitOutAutoUploadEntries() {
+        if (!PreferenceManager.getAutoUploadSplitEntries(this)) {
+            // magic to split out existing synced folders in two when needed
+            // otherwise, we migrate them to their proper type (image or video)
+            Log_OC.i(TAG, "Migrate synced_folders records for image/video split");
+            ContentResolver contentResolver = this.getContentResolver();
+
+            SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver);
+
+            final List<MediaFolder> imageMediaFolders = MediaProvider.getImageFolders(contentResolver, 1);
+            final List<MediaFolder> videoMediaFolders = MediaProvider.getVideoFolders(contentResolver, 1);
+
+            ArrayList<Long> idsToDelete = new ArrayList<>();
+            List<SyncedFolder> syncedFolders = syncedFolderProvider.getSyncedFolders();
+            long primaryKey;
+            SyncedFolder newSyncedFolder;
+            for (SyncedFolder syncedFolder : syncedFolders) {
+                idsToDelete.add(syncedFolder.getId());
+                for (int i = 0; i < imageMediaFolders.size(); i++) {
+                    if (imageMediaFolders.get(i).absolutePath.equals(syncedFolder.getLocalPath())) {
+                        newSyncedFolder = (SyncedFolder) syncedFolder.clone();
+                        newSyncedFolder.setType(MediaFolder.IMAGE);
+                        primaryKey = syncedFolderProvider.storeFolderSync(newSyncedFolder);
+                        Log_OC.i(TAG, "Migrated image synced_folders record: "
+                                + primaryKey + " - " + newSyncedFolder.getLocalPath());
+                        break;
+                    }
+                }
+
+                for (int j = 0; j < videoMediaFolders.size(); j++) {
+                    if (videoMediaFolders.get(j).absolutePath.equals(syncedFolder.getLocalPath())) {
+                        newSyncedFolder = (SyncedFolder) syncedFolder.clone();
+                        newSyncedFolder.setType(MediaFolder.VIDEO);
+                        primaryKey = syncedFolderProvider.storeFolderSync(newSyncedFolder);
+                        Log_OC.i(TAG, "Migrated video synced_folders record: "
+                                + primaryKey + " - " + newSyncedFolder.getLocalPath());
+                        break;
+                    }
+                }
+            }
+
+            syncedFolderProvider.deleteSyncedFoldersInList(idsToDelete);
+
+            PreferenceManager.setAutoUploadSplitEntries(this, true);
+
+        }
+    }
+
     private void cleanOldEntries() {
         // previous versions of application created broken entries in the SyncedFolderProvider
         // database, and this cleans all that and leaves 1 (newest) entry per synced folder

+ 22 - 0
src/main/java/com/owncloud/android/db/PreferenceManager.java

@@ -48,6 +48,7 @@ public abstract class PreferenceManager {
     private static final String PREF__LEGACY_CLEAN = "legacyClean";
     private static final String PREF__AUTO_UPLOAD_UPDATE_PATH = "autoUploadPathUpdate";
     private static final String PREF__PUSH_TOKEN = "pushToken";
+    private static final String PREF__AUTO_UPLOAD_SPLIT_OUT = "autoUploadEntriesSplitOut";
 
     public static void setPushToken(Context context, String pushToken) {
         saveStringPreferenceNow(context, PREF__PUSH_TOKEN, pushToken);
@@ -218,6 +219,16 @@ public abstract class PreferenceManager {
         return getDefaultSharedPreferences(context).getBoolean(PREF__AUTO_UPLOAD_UPDATE_PATH, false);
     }
 
+    /**
+     * Gets the auto upload split out 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 getAutoUploadSplitEntries(Context context) {
+        return getDefaultSharedPreferences(context).getBoolean(PREF__AUTO_UPLOAD_SPLIT_OUT, false);
+    }
+
 
     /**
      * Saves the legacy cleaning flag which the user has set last.
@@ -239,6 +250,17 @@ public abstract class PreferenceManager {
         saveBooleanPreference(context, PREF__AUTO_UPLOAD_UPDATE_PATH, pathUpdate);
     }
 
+    /**
+     * Saves the flag for split entries magic
+     *
+     * @param context    Caller {@link Context}, used to access to shared preferences manager.
+     * @param splitOut flag if it is a auto upload path update
+     */
+    public static void setAutoUploadSplitEntries(Context context, boolean splitOut) {
+        saveBooleanPreference(context, PREF__AUTO_UPLOAD_SPLIT_OUT, splitOut);
+    }
+
+
 
     /**
      * Gets the uploader behavior which the user has set last.

+ 0 - 42
src/main/java/com/owncloud/android/providers/FileContentProvider.java

@@ -1021,53 +1021,11 @@ public class FileContentProvider extends ContentProvider {
                     upgraded = true;
                     db.setTransactionSuccessful();
 
-                    // magic to split out existing synced folders in two when needed
-                    // otherwise, we migrate them to their proper type (image or video)
-                    Log_OC.i(SQL, "Migrate synced_folders records for image/video split");
-                    ContentResolver contentResolver = getContext().getContentResolver();
-
-                    SyncedFolderProvider syncedFolderProvider = new SyncedFolderProvider(contentResolver);
-
-                    final List<MediaFolder> imageMediaFolders = MediaProvider.getImageFolders(contentResolver, 1);
-                    final List<MediaFolder> videoMediaFolders = MediaProvider.getVideoFolders(contentResolver, 1);
-
-                    ArrayList<Long> idsToDelete = new ArrayList<>();
-                    List<SyncedFolder> syncedFolders = syncedFolderProvider.getSyncedFolders();
-                    long primaryKey;
-                    SyncedFolder newSyncedFolder;
-                    for (SyncedFolder syncedFolder : syncedFolders) {
-                        idsToDelete.add(syncedFolder.getId());
-                        for (int i = 0; i < imageMediaFolders.size(); i++) {
-                            if (imageMediaFolders.get(i).absolutePath.equals(syncedFolder.getLocalPath())) {
-                                newSyncedFolder = (SyncedFolder) syncedFolder.clone();
-                                newSyncedFolder.setType(MediaFolder.IMAGE);
-                                primaryKey = syncedFolderProvider.storeFolderSync(newSyncedFolder);
-                                Log_OC.i(SQL, "Migrated image synced_folders record: "
-                                        + primaryKey + " - " + newSyncedFolder.getLocalPath());
-                                break;
-                            }
-                        }
-
-                        for (int j = 0; j < videoMediaFolders.size(); j++) {
-                            if (videoMediaFolders.get(j).absolutePath.equals(syncedFolder.getLocalPath())) {
-                                newSyncedFolder = (SyncedFolder) syncedFolder.clone();
-                                newSyncedFolder.setType(MediaFolder.VIDEO);
-                                primaryKey = syncedFolderProvider.storeFolderSync(newSyncedFolder);
-                                Log_OC.i(SQL, "Migrated video synced_folders record: "
-                                        + primaryKey + " - " + newSyncedFolder.getLocalPath());
-                                break;
-                            }
-                        }
-                    }
-
-                    syncedFolderProvider.deleteSyncedFoldersInList(idsToDelete);
-
                 } catch (Throwable t) {
                     Log_OC.e(TAG, "ERROR!", t);
                 } finally {
                     db.endTransaction();
                 }
-            }
 
             if (!upgraded) {
                 Log_OC.i(SQL, String.format(Locale.ENGLISH, UPGRADE_VERSION_MSG, oldVersion, newVersion));