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

Migrate ThumbnailCacheManager to User model

Signed-off-by: Chris Narkiewicz <hello@ezaquarii.com>
Chris Narkiewicz 3 жил өмнө
parent
commit
f134cf4cd3

+ 11 - 14
src/main/java/com/owncloud/android/datamodel/ThumbnailsCacheManager.java

@@ -440,7 +440,7 @@ public final class ThumbnailsCacheManager {
 
     public static class ThumbnailGenerationTask extends AsyncTask<ThumbnailGenerationTaskObject, Void, Bitmap> {
         private final WeakReference<ImageView> mImageViewReference;
-        private static Account mAccount;
+        private User user;
         private List<ThumbnailGenerationTask> mAsyncTasks;
         private Object mFile;
         private String mImageKey;
@@ -449,13 +449,13 @@ public final class ThumbnailsCacheManager {
         private Listener mListener;
         private boolean gridViewEnabled = false;
 
-        public ThumbnailGenerationTask(ImageView imageView, FileDataStorageManager storageManager, Account account)
+        public ThumbnailGenerationTask(ImageView imageView, FileDataStorageManager storageManager, User user)
                 throws IllegalArgumentException {
-            this(imageView, storageManager, account, null);
+            this(imageView, storageManager, user, null);
         }
 
         public ThumbnailGenerationTask(ImageView imageView, FileDataStorageManager storageManager,
-                                       Account account, List<ThumbnailGenerationTask> asyncTasks)
+                                       User user, List<ThumbnailGenerationTask> asyncTasks)
                 throws IllegalArgumentException {
             // Use a WeakReference to ensure the ImageView can be garbage collected
             mImageViewReference = new WeakReference<>(imageView);
@@ -463,15 +463,15 @@ public final class ThumbnailsCacheManager {
                 throw new IllegalArgumentException("storageManager must not be NULL");
             }
             mStorageManager = storageManager;
-            mAccount = account;
+            this.user = user;
             mAsyncTasks = asyncTasks;
         }
 
         public ThumbnailGenerationTask(ImageView imageView, FileDataStorageManager storageManager,
-                                       Account account, List<ThumbnailGenerationTask> asyncTasks,
+                                       User user, List<ThumbnailGenerationTask> asyncTasks,
                                        boolean gridViewEnabled)
             throws IllegalArgumentException {
-            this(imageView, storageManager, account, asyncTasks);
+            this(imageView, storageManager, user, asyncTasks);
             this.gridViewEnabled = gridViewEnabled;
         }
 
@@ -479,12 +479,12 @@ public final class ThumbnailsCacheManager {
             return getMethod;
         }
 
-        public ThumbnailGenerationTask(FileDataStorageManager storageManager, Account account){
+        public ThumbnailGenerationTask(FileDataStorageManager storageManager, User user){
             if (storageManager == null) {
                 throw new IllegalArgumentException("storageManager must not be NULL");
             }
             mStorageManager = storageManager;
-            mAccount = account;
+            this.user = user;
             mImageViewReference = null;
         }
 
@@ -498,11 +498,8 @@ public final class ThumbnailsCacheManager {
         protected Bitmap doInBackground(ThumbnailGenerationTaskObject... params) {
             Bitmap thumbnail = null;
             try {
-                if (mAccount != null) {
-                    OwnCloudAccount ocAccount = new OwnCloudAccount(
-                            mAccount,
-                            MainApp.getAppContext()
-                    );
+                if (user != null) {
+                    OwnCloudAccount ocAccount = user.toOwnCloudAccount();
                     mClient = OwnCloudClientManagerFactory.getDefaultSingleton().
                             getClientFor(ocAccount, MainApp.getAppContext());
                 }

+ 21 - 5
src/main/java/com/owncloud/android/files/services/FileUploader.java

@@ -669,16 +669,32 @@ public class FileUploader extends Service
             }
 
             // generate new Thumbnail
-            final ThumbnailsCacheManager.ThumbnailGenerationTask task =
-                new ThumbnailsCacheManager.ThumbnailGenerationTask(mStorageManager, mCurrentAccount);
+            Optional<User> user = getCurrentUser();
+            if (user.isPresent()) {
+                final ThumbnailsCacheManager.ThumbnailGenerationTask task =
+                    new ThumbnailsCacheManager.ThumbnailGenerationTask(mStorageManager, user.get());
 
-            File file = new File(mCurrentUpload.getOriginalStoragePath());
-            String remoteId = mCurrentUpload.getFile().getRemoteId();
+                File file = new File(mCurrentUpload.getOriginalStoragePath());
+                String remoteId = mCurrentUpload.getFile().getRemoteId();
 
-            task.execute(new ThumbnailsCacheManager.ThumbnailGenerationTaskObject(file, remoteId));
+                task.execute(new ThumbnailsCacheManager.ThumbnailGenerationTaskObject(file, remoteId));
+            }
         }
     }
 
+    /**
+     * Convert current account to user. This is a temporary workaround until
+     * service is migrated to new user model.
+     * 
+     * @return Optional {@link User}
+     */
+    private Optional<User> getCurrentUser() {
+        if (mCurrentAccount == null) {
+            return Optional.empty();
+        } else {
+            return accountManager.getUser(mCurrentAccount.name);
+        }
+    }
 
     /**
      * Creates a status notification to show the upload progress

+ 1 - 1
src/main/java/com/owncloud/android/operations/UploadFileOperation.java

@@ -1364,7 +1364,7 @@ public class UploadFileOperation extends SyncOperation {
 
         // generate new Thumbnail
         final ThumbnailsCacheManager.ThumbnailGenerationTask task =
-                new ThumbnailsCacheManager.ThumbnailGenerationTask(getStorageManager(), user.toPlatformAccount());
+                new ThumbnailsCacheManager.ThumbnailGenerationTask(getStorageManager(), user);
         task.execute(new ThumbnailsCacheManager.ThumbnailGenerationTaskObject(file, file.getRemoteId()));
     }
 

+ 1 - 1
src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

@@ -569,7 +569,7 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
                             final ThumbnailsCacheManager.ThumbnailGenerationTask task =
                                 new ThumbnailsCacheManager.ThumbnailGenerationTask(thumbnailView,
                                                                                    storageManager,
-                                                                                   user.toPlatformAccount(),
+                                                                                   user,
                                                                                    asyncTasks,
                                                                                    gridView);
                             if (thumbnail == null) {

+ 4 - 2
src/main/java/com/owncloud/android/ui/adapter/TrashbinListAdapter.java

@@ -236,8 +236,10 @@ public class TrashbinListAdapter extends RecyclerView.Adapter<RecyclerView.ViewH
                     if (ThumbnailsCacheManager.cancelPotentialThumbnailWork(file, thumbnailView)) {
                         try {
                             final ThumbnailsCacheManager.ThumbnailGenerationTask task =
-                                    new ThumbnailsCacheManager.ThumbnailGenerationTask(thumbnailView, storageManager,
-                                                                                       user.toPlatformAccount(), asyncTasks);
+                                    new ThumbnailsCacheManager.ThumbnailGenerationTask(thumbnailView,
+                                                                                       storageManager,
+                                                                                       user,
+                                                                                       asyncTasks);
 
                             final ThumbnailsCacheManager.AsyncThumbnailDrawable asyncDrawable =
                                     new ThumbnailsCacheManager.AsyncThumbnailDrawable(context.getResources(),

+ 3 - 2
src/main/java/com/owncloud/android/ui/adapter/UploadListAdapter.java

@@ -410,12 +410,13 @@ public class UploadListAdapter extends SectionedRecyclerViewAdapter<SectionedVie
                 itemViewHolder.binding.thumbnail.setImageBitmap(thumbnail);
             } else {
                 // generate new Thumbnail
-                if (allowedToCreateNewThumbnail) {
+                Optional<User> user = parentActivity.getUser();
+                if (allowedToCreateNewThumbnail && user.isPresent()) {
                     final ThumbnailsCacheManager.ThumbnailGenerationTask task =
                             new ThumbnailsCacheManager.ThumbnailGenerationTask(
                                 itemViewHolder.binding.thumbnail,
                                 parentActivity.getStorageManager(),
-                                parentActivity.getAccount()
+                                user.get()
                             );
                     if (thumbnail == null) {
                         if (MimeTypeUtil.isVideo(fakeFileToCheatThumbnailsCacheManagerInterface)) {

+ 1 - 2
src/main/java/com/owncloud/android/ui/adapter/UploaderAdapter.java

@@ -114,8 +114,7 @@ public class UploaderAdapter extends SimpleAdapter {
                     // generate new Thumbnail
                     if (ThumbnailsCacheManager.cancelPotentialThumbnailWork(file, fileIcon)) {
                         final ThumbnailsCacheManager.ThumbnailGenerationTask task =
-                                new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon, mStorageManager,
-                                        user.toPlatformAccount());
+                                new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon, mStorageManager, user);
                         if (thumbnail == null) {
                             if (MimeTypeUtil.isVideo(file)) {
                                 thumbnail = ThumbnailsCacheManager.mDefaultVideo;