Browse Source

Replace deprecated usages

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 year ago
parent
commit
d01991e95d
39 changed files with 159 additions and 135 deletions
  1. 2 1
      app/src/main/java/com/nextcloud/client/media/PlayerService.kt
  2. 2 1
      app/src/main/java/com/nextcloud/ui/ChooseAccountDialogFragment.kt
  3. 6 5
      app/src/main/java/com/nextcloud/ui/ImageDetailFragment.kt
  4. 3 2
      app/src/main/java/com/nextcloud/ui/SetStatusDialogFragment.kt
  5. 4 1
      app/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java
  6. 3 2
      app/src/main/java/com/owncloud/android/services/OperationsService.java
  7. 2 1
      app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java
  8. 4 3
      app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java
  9. 2 1
      app/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java
  10. 4 2
      app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
  11. 0 1
      app/src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.kt
  12. 3 1
      app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt
  13. 5 3
      app/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java
  14. 3 1
      app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.java
  15. 3 2
      app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt
  16. 7 6
      app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java
  17. 3 2
      app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt
  18. 4 2
      app/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java
  19. 3 1
      app/src/main/java/com/owncloud/android/ui/dialog/RenamePublicShareDialogFragment.java
  20. 2 8
      app/src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.kt
  21. 2 7
      app/src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.kt
  22. 3 2
      app/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.java
  23. 3 14
      app/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.kt
  24. 2 8
      app/src/main/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragment.kt
  25. 2 7
      app/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.kt
  26. 2 1
      app/src/main/java/com/owncloud/android/ui/fragment/FeatureFragment.java
  27. 5 4
      app/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java
  28. 6 5
      app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java
  29. 7 4
      app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java
  30. 4 1
      app/src/main/java/com/owncloud/android/ui/fragment/FileFragment.java
  31. 7 4
      app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java
  32. 19 13
      app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java
  33. 5 3
      app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupListFragment.java
  34. 5 4
      app/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java
  35. 5 2
      app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java
  36. 5 4
      app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java
  37. 5 4
      app/src/main/java/com/owncloud/android/ui/preview/PreviewTextFileFragment.java
  38. 2 1
      app/src/main/java/com/owncloud/android/ui/preview/pdf/PreviewPdfFragment.kt
  39. 5 1
      app/src/main/java/com/owncloud/android/utils/PermissionUtil.kt

+ 2 - 1
app/src/main/java/com/nextcloud/client/media/PlayerService.kt

@@ -158,7 +158,8 @@ class PlayerService : Service() {
     }
 
     private fun onActionStopFile(args: Bundle?) {
-        val file: OCFile = args?.getParcelable(EXTRA_FILE) ?: throw IllegalArgumentException("Missing file argument")
+        val file: OCFile = args?.getParcelableArgument(EXTRA_FILE, OCFile::class.java)
+            ?: throw IllegalArgumentException("Missing file argument")
         stopServiceAndRemoveNotification(file)
     }
 

+ 2 - 1
app/src/main/java/com/nextcloud/ui/ChooseAccountDialogFragment.kt

@@ -35,6 +35,7 @@ import com.nextcloud.client.account.User
 import com.nextcloud.client.account.UserAccountManager
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.network.ClientFactory
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.DialogChooseAccountBinding
 import com.owncloud.android.datamodel.FileDataStorageManager
@@ -76,7 +77,7 @@ class ChooseAccountDialogFragment :
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         arguments?.let {
-            currentUser = it.getParcelable(ARG_CURRENT_USER_PARAM)
+            currentUser = it.getParcelableArgument(ARG_CURRENT_USER_PARAM, User::class.java)
         }
     }
 

+ 6 - 5
app/src/main/java/com/nextcloud/ui/ImageDetailFragment.kt

@@ -37,6 +37,7 @@ import com.nextcloud.android.common.ui.theme.utils.ColorRole
 import com.nextcloud.client.NominatimClient
 import com.nextcloud.client.account.User
 import com.nextcloud.client.di.Injectable
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.MainApp
 import com.owncloud.android.R
 import com.owncloud.android.databinding.PreviewImageDetailsFragmentBinding
@@ -95,13 +96,13 @@ class ImageDetailFragment : Fragment(), Injectable {
         )
 
         val arguments = arguments ?: throw IllegalStateException("arguments are mandatory")
-        file = arguments.getParcelable(ARG_FILE)!!
-        user = arguments.getParcelable(ARG_USER)!!
+        file = arguments.getParcelableArgument(ARG_FILE, OCFile::class.java)!!
+        user = arguments.getParcelableArgument(ARG_USER, User::class.java)!!
 
         if (savedInstanceState != null) {
-            file = savedInstanceState.getParcelable(ARG_FILE)!!
-            user = savedInstanceState.getParcelable(ARG_USER)!!
-            metadata = savedInstanceState.getParcelable(ARG_METADATA)!!
+            file = savedInstanceState.getParcelableArgument(ARG_FILE, OCFile::class.java)!!
+            user = savedInstanceState.getParcelableArgument(ARG_USER, User::class.java)!!
+            metadata = savedInstanceState.getParcelableArgument(ARG_METADATA, ImageMetadata::class.java)!!
         }
 
         nominatimClient = NominatimClient(

+ 3 - 2
app/src/main/java/com/nextcloud/ui/SetStatusDialogFragment.kt

@@ -46,6 +46,7 @@ import com.nextcloud.client.account.UserAccountManager
 import com.nextcloud.client.core.AsyncRunner
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.network.ClientFactory
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.DialogSetStatusBinding
 import com.owncloud.android.datamodel.ArbitraryDataProvider
@@ -119,8 +120,8 @@ class SetStatusDialogFragment :
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         arguments?.let {
-            currentUser = it.getParcelable(ARG_CURRENT_USER_PARAM)
-            currentStatus = it.getParcelable(ARG_CURRENT_STATUS_PARAM)
+            currentUser = it.getParcelableArgument(ARG_CURRENT_USER_PARAM, User::class.java)
+            currentStatus = it.getParcelableArgument(ARG_CURRENT_STATUS_PARAM, Status::class.java)
 
             val json = arbitraryDataProvider.getValue(currentUser, ArbitraryDataProvider.PREDEFINED_STATUS)
 

+ 4 - 1
app/src/main/java/com/owncloud/android/authentication/AuthenticatorActivity.java

@@ -86,11 +86,13 @@ import com.nextcloud.client.onboarding.FirstRunActivity;
 import com.nextcloud.client.onboarding.OnboardingService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.java.util.Optional;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.AccountSetupBinding;
 import com.owncloud.android.databinding.AccountSetupWebviewBinding;
 import com.owncloud.android.datamodel.FileDataStorageManager;
+import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClientFactory;
@@ -153,6 +155,7 @@ import de.cotech.hw.fido2.WebViewWebauthnBridge;
 import de.cotech.hw.fido2.ui.WebauthnDialogOptions;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
+import static com.owncloud.android.ui.activity.FileActivity.EXTRA_FILE;
 import static com.owncloud.android.utils.PermissionUtil.PERMISSIONS_CAMERA;
 
 /**
@@ -302,7 +305,7 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
         Bundle extras = getIntent().getExtras();
 
         if (extras != null) {
-            mAccount = extras.getParcelable(EXTRA_ACCOUNT);
+            mAccount = BundleExtensionsKt.getParcelableArgument(extras, EXTRA_ACCOUNT, Account.class);
         }
 
         if (savedInstanceState != null) {

+ 3 - 2
app/src/main/java/com/owncloud/android/services/OperationsService.java

@@ -75,6 +75,7 @@ import com.owncloud.android.operations.UpdateNoteForShareOperation;
 import com.owncloud.android.operations.UpdateShareInfoOperation;
 import com.owncloud.android.operations.UpdateSharePermissionsOperation;
 import com.owncloud.android.operations.UpdateShareViaLinkOperation;
+import com.owncloud.android.ui.activity.FolderPickerActivity;
 
 import java.io.IOException;
 import java.util.Iterator;
@@ -675,7 +676,7 @@ public class OperationsService extends Service {
 
                     case ACTION_REMOVE:
                         // Remove file or folder
-                        OCFile file = operationIntent.getParcelableExtra(EXTRA_FILE);
+                        OCFile file = IntentExtensionsKt.getParcelableArgument(operationIntent, EXTRA_FILE, OCFile.class);
                         boolean onlyLocalCopy = operationIntent.getBooleanExtra(EXTRA_REMOVE_ONLY_LOCAL, false);
                         boolean inBackground = operationIntent.getBooleanExtra(EXTRA_IN_BACKGROUND, false);
                         operation = new RemoveFileOperation(file,
@@ -732,7 +733,7 @@ public class OperationsService extends Service {
                         break;
 
                     case ACTION_RESTORE_VERSION:
-                        FileVersion fileVersion = operationIntent.getParcelableExtra(EXTRA_FILE_VERSION);
+                        FileVersion fileVersion = IntentExtensionsKt.getParcelableArgument(operationIntent, EXTRA_FILE_VERSION, FileVersion.class);
                         operation = new RestoreFileVersionRemoteOperation(fileVersion.getLocalId(),
                                                                           fileVersion.getFileName());
                         break;

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/activity/FileActivity.java

@@ -46,6 +46,7 @@ import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.utils.EditorUtils;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
@@ -207,7 +208,7 @@ public abstract class FileActivity extends DrawerActivity
         mFileOperationsHelper = new FileOperationsHelper(this, getUserAccountManager(), connectivityService, editorUtils);
 
         if (savedInstanceState != null) {
-            mFile = savedInstanceState.getParcelable(FileActivity.EXTRA_FILE);
+            mFile = BundleExtensionsKt.getParcelableArgument(savedInstanceState, FileActivity.EXTRA_FILE, OCFile.class);
             mFromNotification = savedInstanceState.getBoolean(FileActivity.EXTRA_FROM_NOTIFICATION);
             mFileOperationsHelper.setOpIdWaitingFor(
                 savedInstanceState.getLong(KEY_WAITING_FOR_OP_ID, Long.MAX_VALUE)

+ 4 - 3
app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -71,6 +71,7 @@ import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.utils.IntentUtil;
 import com.nextcloud.java.util.Optional;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.nextcloud.utils.view.FastScrollUtils;
 import com.owncloud.android.MainApp;
@@ -285,10 +286,10 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
     @SuppressWarnings("unchecked")
     private void loadSavedInstanceState(Bundle savedInstanceState) {
         if (savedInstanceState != null) {
-            previousSortGroupState = (Stack<Boolean>) savedInstanceState.getSerializable(KEY_SORT_GROUP_STATE);
-            mWaitingToPreview = savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_PREVIEW);
+            previousSortGroupState = BundleExtensionsKt.getSerializableArgument(savedInstanceState, KEY_SORT_GROUP_STATE, Stack.class);
+            mWaitingToPreview = BundleExtensionsKt.getParcelableArgument(savedInstanceState, FileDisplayActivity.KEY_WAITING_TO_PREVIEW, OCFile.class);
             mSyncInProgress = savedInstanceState.getBoolean(KEY_SYNC_IN_PROGRESS);
-            mWaitingToSend = savedInstanceState.getParcelable(FileDisplayActivity.KEY_WAITING_TO_SEND);
+            mWaitingToSend = BundleExtensionsKt.getParcelableArgument(savedInstanceState, FileDisplayActivity.KEY_WAITING_TO_SEND, OCFile.class);
             searchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
             searchOpen = savedInstanceState.getBoolean(FileDisplayActivity.KEY_IS_SEARCH_OPEN, false);
         } else {

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/activity/ManageAccountsActivity.java

@@ -44,6 +44,7 @@ import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.onboarding.FirstRunActivity;
 import com.nextcloud.java.util.Optional;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.authentication.AuthenticatorActivity;
@@ -168,7 +169,7 @@ public class ManageAccountsActivity extends FileActivity implements UserListAdap
         if (resultCode == KEY_DELETE_CODE && data != null) {
             Bundle bundle = data.getExtras();
             if (bundle != null && bundle.containsKey(UserInfoActivity.KEY_ACCOUNT)) {
-                final Account account = bundle.getParcelable(UserInfoActivity.KEY_ACCOUNT);
+                final Account account = BundleExtensionsKt.getParcelableArgument(bundle, UserInfoActivity.KEY_ACCOUNT, Account.class);
                 if (account != null) {
                     User user = accountManager.getUser(account.name).orElseThrow(RuntimeException::new);
                     accountName = account.name;

+ 4 - 2
app/src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java

@@ -61,6 +61,7 @@ import com.google.android.material.button.MaterialButton;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.preferences.AppPreferences;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
@@ -74,6 +75,7 @@ import com.owncloud.android.lib.common.operations.RemoteOperation;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult.ResultCode;
 import com.owncloud.android.lib.common.utils.Log_OC;
+import com.owncloud.android.lib.resources.files.model.FileVersion;
 import com.owncloud.android.operations.CreateFolderOperation;
 import com.owncloud.android.operations.RefreshFolderOperation;
 import com.owncloud.android.operations.UploadFileOperation;
@@ -183,7 +185,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
                 mParents.addAll(Arrays.asList(parentPath.split(OCFile.PATH_SEPARATOR)));
             }
 
-            mFile = savedInstanceState.getParcelable(KEY_FILE);
+            mFile = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_FILE, OCFile.class);
         }
         mAccountManager = (AccountManager) getSystemService(Context.ACCOUNT_SERVICE);
 
@@ -852,7 +854,7 @@ public class ReceiveExternalFilesActivity extends FileActivity
 
         if (Intent.ACTION_SEND.equals(intent.getAction())) {
             mStreamsToUpload = new ArrayList<>();
-            mStreamsToUpload.add(intent.getParcelableExtra(Intent.EXTRA_STREAM));
+            mStreamsToUpload.add(IntentExtensionsKt.getParcelableArgument(intent, Intent.EXTRA_STREAM, Parcelable.class));
         } else if (Intent.ACTION_SEND_MULTIPLE.equals(intent.getAction())) {
             mStreamsToUpload = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
         }

+ 0 - 1
app/src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.kt

@@ -25,7 +25,6 @@ package com.owncloud.android.ui.activity
 
 import android.content.Intent
 import android.net.Uri
-import android.os.Build
 import android.os.Bundle
 import android.text.TextUtils
 import android.view.KeyEvent

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

@@ -631,7 +631,9 @@ class SyncedFoldersActivity :
         if (requestCode == SyncedFolderPreferencesDialogFragment.REQUEST_CODE__SELECT_REMOTE_FOLDER &&
             resultCode == RESULT_OK && syncedFolderPreferencesDialogFragment != null
         ) {
-            val chosenFolder: OCFile = FolderPickerActivity.EXTRA_FOLDER?.let { data!!.getParcelableArgument(it, OCFile::class.java) } ?: return
+            val chosenFolder: OCFile = FolderPickerActivity.EXTRA_FOLDER?.let {
+                data!!.getParcelableArgument(it, OCFile::class.java)
+            } ?: return
             syncedFolderPreferencesDialogFragment!!.setRemoteFolderSummary(chosenFolder.remotePath)
         } else if (
             requestCode == SyncedFolderPreferencesDialogFragment.REQUEST_CODE__SELECT_LOCAL_FOLDER &&

+ 5 - 3
app/src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java

@@ -47,9 +47,11 @@ import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.common.NextcloudClient;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.UserInfoDetailsTableItemBinding;
 import com.owncloud.android.databinding.UserInfoLayoutBinding;
+import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudClientFactory;
 import com.owncloud.android.lib.common.UserInfo;
 import com.owncloud.android.lib.common.accounts.AccountUtils;
@@ -106,16 +108,16 @@ public class UserInfoActivity extends DrawerActivity implements Injectable {
             return;
         }
 
-        user = bundle.getParcelable(KEY_ACCOUNT);
+        user = BundleExtensionsKt.getParcelableArgument(bundle, KEY_ACCOUNT, User.class);
         if(user == null) {
             finish();
             return;
         }
 
         if (savedInstanceState != null && savedInstanceState.containsKey(KEY_USER_DATA)) {
-            userInfo = savedInstanceState.getParcelable(KEY_USER_DATA);
+            userInfo = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_USER_DATA, UserInfo.class);
         } else if (bundle.containsKey(KEY_ACCOUNT)) {
-            userInfo = bundle.getParcelable(KEY_USER_DATA);
+            userInfo =  BundleExtensionsKt.getParcelableArgument(bundle, KEY_USER_DATA, UserInfo.class);
         }
 
         mCurrentAccountAvatarRadiusDimension = getResources().getDimension(R.dimen.user_icon_radius);

+ 3 - 1
app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.java

@@ -42,6 +42,7 @@ import com.nextcloud.client.account.CurrentAccountProvider;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.network.ClientFactory;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.ChooseTemplateBinding;
@@ -51,6 +52,7 @@ import com.owncloud.android.datamodel.Template;
 import com.owncloud.android.files.CreateFileFromTemplateOperation;
 import com.owncloud.android.files.FetchTemplateOperation;
 import com.owncloud.android.lib.common.OwnCloudClient;
+import com.owncloud.android.lib.common.UserInfo;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation;
@@ -168,7 +170,7 @@ public class ChooseRichDocumentsTemplateDialogFragment extends DialogFragment im
             throw new RuntimeException(e); // we'll NPE without the client
         }
 
-        parentFolder = arguments.getParcelable(ARG_PARENT_FOLDER);
+        parentFolder = BundleExtensionsKt.getParcelableArgument(arguments, ARG_PARENT_FOLDER, OCFile.class);
         List<OCFile> folderContent = fileDataStorageManager.getFolderContent(parentFolder, false);
         fileNames = Sets.newHashSetWithExpectedSize(folderContent.size());
 

+ 3 - 2
app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt

@@ -44,6 +44,7 @@ import com.nextcloud.client.account.User
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.network.ClientFactory
 import com.nextcloud.client.network.ClientFactory.CreationException
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.MainApp
 import com.owncloud.android.R
 import com.owncloud.android.databinding.ChooseTemplateBinding
@@ -127,8 +128,8 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
         val arguments = arguments ?: throw IllegalArgumentException("Arguments may not be null")
         val activity = activity ?: throw IllegalArgumentException("Activity may not be null")
 
-        parentFolder = arguments.getParcelable(ARG_PARENT_FOLDER)
-        creator = arguments.getParcelable(ARG_CREATOR)
+        parentFolder = arguments.getParcelableArgument(ARG_PARENT_FOLDER, OCFile::class.java)
+        creator = arguments.getParcelableArgument(ARG_CREATOR, Creator::class.java)
 
         title = arguments.getString(ARG_HEADLINE, getString(R.string.select_template))
         title = when (savedInstanceState) {

+ 7 - 6
app/src/main/java/com/owncloud/android/ui/dialog/ConflictsResolveDialog.java

@@ -33,6 +33,7 @@ import com.google.android.material.button.MaterialButton;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.ConflictResolveDialogBinding;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -133,13 +134,13 @@ public class ConflictsResolveDialog extends DialogFragment implements Injectable
         super.onCreate(savedInstanceState);
 
         if (savedInstanceState != null) {
-            existingFile = savedInstanceState.getParcelable(KEY_EXISTING_FILE);
-            newFile = (File) savedInstanceState.getSerializable(KEY_NEW_FILE);
-            user = savedInstanceState.getParcelable(KEY_USER);
+            existingFile = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_EXISTING_FILE, OCFile.class);
+            newFile = BundleExtensionsKt.getSerializableArgument(savedInstanceState, KEY_NEW_FILE, File.class);
+            user = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_USER, User.class);
         } else if (getArguments() != null) {
-            existingFile = getArguments().getParcelable(KEY_EXISTING_FILE);
-            newFile = (File) getArguments().getSerializable(KEY_NEW_FILE);
-            user = getArguments().getParcelable(KEY_USER);
+            existingFile = BundleExtensionsKt.getParcelableArgument(getArguments(), KEY_EXISTING_FILE, OCFile.class);
+            newFile = BundleExtensionsKt.getSerializableArgument(getArguments(), KEY_NEW_FILE, File.class);
+            user = BundleExtensionsKt.getParcelableArgument(getArguments(), KEY_USER, User.class);
         } else {
             Toast.makeText(getContext(), "Failed to create conflict dialog", Toast.LENGTH_LONG).show();
         }

+ 3 - 2
app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt

@@ -33,6 +33,7 @@ import com.google.android.material.button.MaterialButton
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.google.common.collect.Sets
 import com.nextcloud.client.di.Injectable
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.EditBoxDialogBinding
 import com.owncloud.android.datamodel.FileDataStorageManager
@@ -92,7 +93,7 @@ class CreateFolderDialogFragment : DialogFragment(), DialogInterface.OnClickList
 
     @Suppress("EmptyFunctionBlock")
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
-        mParentFolder = arguments?.getParcelable(ARG_PARENT_FOLDER)
+        mParentFolder = arguments?.getParcelableArgument(ARG_PARENT_FOLDER, OCFile::class.java)
 
         // Inflate the layout for the dialog
         val inflater = requireActivity().layoutInflater
@@ -103,7 +104,7 @@ class CreateFolderDialogFragment : DialogFragment(), DialogInterface.OnClickList
         binding.userInput.setText("")
         viewThemeUtils?.material?.colorTextInputLayout(binding.userInputContainer)
 
-        val parentFolder = requireArguments().getParcelable<OCFile>(ARG_PARENT_FOLDER)
+        val parentFolder = requireArguments().getParcelableArgument(ARG_PARENT_FOLDER, OCFile::class.java)
 
         val folderContent = fileDataStorageManager!!.getFolderContent(parentFolder, false)
         val fileNames: MutableSet<String> = Sets.newHashSetWithExpectedSize(folderContent.size)

+ 4 - 2
app/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java

@@ -28,6 +28,7 @@ package com.owncloud.android.ui.dialog;
 
 import android.app.Dialog;
 import android.content.DialogInterface;
+import android.content.Intent;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.TextUtils;
@@ -39,6 +40,7 @@ import com.google.android.material.button.MaterialButton;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.google.common.collect.Sets;
 import com.nextcloud.client.di.Injectable;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.EditBoxDialogBinding;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -109,7 +111,7 @@ public class RenameFileDialogFragment
     @NonNull
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        mTargetFile = requireArguments().getParcelable(ARG_TARGET_FILE);
+        mTargetFile = BundleExtensionsKt.getParcelableArgument(requireArguments(), ARG_TARGET_FILE, OCFile.class);
 
         // Inflate the layout for the dialog
         LayoutInflater inflater = requireActivity().getLayoutInflater();
@@ -124,7 +126,7 @@ public class RenameFileDialogFragment
         int selectionEnd = extensionStart >= 0 ? extensionStart : currentName.length();
         binding.userInput.setSelection(0, selectionEnd);
 
-        OCFile parentFolder = requireArguments().getParcelable(ARG_PARENT_FOLDER);
+        OCFile parentFolder = BundleExtensionsKt.getParcelableArgument(getArguments(), ARG_PARENT_FOLDER, OCFile.class);
         List<OCFile> folderContent = fileDataStorageManager.getFolderContent(parentFolder, false);
         fileNames = Sets.newHashSetWithExpectedSize(folderContent.size());
 

+ 3 - 1
app/src/main/java/com/owncloud/android/ui/dialog/RenamePublicShareDialogFragment.java

@@ -31,8 +31,10 @@ import android.view.View;
 import com.google.android.material.button.MaterialButton;
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
 import com.nextcloud.client.di.Injectable;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.EditBoxDialogBinding;
+import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.resources.shares.OCShare;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.utils.DisplayUtils;
@@ -90,7 +92,7 @@ public class RenamePublicShareDialogFragment
     @NonNull
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        publicShare = requireArguments().getParcelable(ARG_PUBLIC_SHARE);
+        publicShare = BundleExtensionsKt.getParcelableArgument(requireArguments(), ARG_PUBLIC_SHARE, OCShare.class);
 
         // Inflate the layout for the dialog
         LayoutInflater inflater = requireActivity().getLayoutInflater();

+ 2 - 8
app/src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.kt

@@ -3,7 +3,6 @@ package com.owncloud.android.ui.dialog
 import android.content.ComponentName
 import android.content.Intent
 import android.graphics.drawable.Drawable
-import android.os.Build
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
@@ -16,6 +15,7 @@ import com.google.android.material.snackbar.Snackbar
 import com.nextcloud.android.common.ui.theme.utils.ColorRole
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.utils.IntentUtil.createSendIntent
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.SendShareFragmentBinding
 import com.owncloud.android.datamodel.OCFile
@@ -73,13 +73,7 @@ class SendShareDialog : BottomSheetDialogFragment(R.layout.send_share_fragment),
         retainInstance = true
         val arguments = requireArguments()
 
-        file = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-            arguments.getParcelable(KEY_OCFILE, OCFile::class.java)
-        } else {
-            @Suppress("DEPRECATION")
-            arguments.getParcelable(KEY_OCFILE)
-        }
-
+        file = arguments.getParcelableArgument(KEY_OCFILE, OCFile::class.java)
         hideNcSharingOptions = arguments.getBoolean(KEY_HIDE_NCSHARING_OPTIONS, false)
         sharingPublicPasswordEnforced = arguments.getBoolean(KEY_SHARING_PUBLIC_PASSWORD_ENFORCED, false)
         sharingPublicAskForPassword = arguments.getBoolean(KEY_SHARING_PUBLIC_ASK_FOR_PASSWORD)

+ 2 - 7
app/src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.kt

@@ -29,7 +29,6 @@ import android.content.Context
 import android.content.DialogInterface
 import android.content.Intent
 import android.os.AsyncTask
-import android.os.Build
 import android.os.Bundle
 import android.view.View
 import androidx.annotation.VisibleForTesting
@@ -39,6 +38,7 @@ import com.google.android.material.button.MaterialButton
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.nextcloud.client.account.User
 import com.nextcloud.client.di.Injectable
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.SetupEncryptionDialogBinding
 import com.owncloud.android.datamodel.ArbitraryDataProvider
@@ -109,12 +109,7 @@ class SetupEncryptionDialogFragment : DialogFragment(), Injectable {
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
         checkNotNull(arguments) { "Arguments may not be null" }
 
-        user = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-            requireArguments().getParcelable(ARG_USER, User::class.java)
-        } else {
-            @Suppress("DEPRECATION")
-            requireArguments().getParcelable(ARG_USER)
-        }
+        user = requireArguments().getParcelableArgument(ARG_USER, User::class.java)
 
         if (savedInstanceState != null) {
             keyWords = savedInstanceState.getStringArrayList(EncryptionUtils.MNEMONIC)

+ 3 - 2
app/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.java

@@ -37,6 +37,7 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.google.android.material.dialog.MaterialAlertDialogBuilder;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.activity.CopyToClipboardActivity;
@@ -84,12 +85,12 @@ public class ShareLinkToDialog  extends DialogFragment {
     @Override
     @NonNull
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        mIntent = getArguments().getParcelable(ARG_INTENT);
+        mIntent = BundleExtensionsKt.getParcelableArgument(getArguments(), ARG_INTENT, Intent.class);
         String[] packagesToExclude = getArguments().getStringArray(ARG_PACKAGES_TO_EXCLUDE);
         List<String> packagesToExcludeList = Arrays.asList(packagesToExclude != null ?
                 packagesToExclude : new String[0]);
 
-        PackageManager pm= getActivity().getPackageManager();
+        PackageManager pm = getActivity().getPackageManager();
         List<ResolveInfo> activities = pm.queryIntentActivities(mIntent, PackageManager.MATCH_DEFAULT_ONLY);
         Iterator<ResolveInfo> it = activities.iterator();
         ResolveInfo resolveInfo;

+ 3 - 14
app/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.kt

@@ -22,7 +22,6 @@ package com.owncloud.android.ui.dialog
 
 import android.app.Dialog
 import android.content.DialogInterface
-import android.os.Build
 import android.os.Bundle
 import android.text.TextUtils
 import androidx.appcompat.app.AlertDialog
@@ -31,6 +30,7 @@ import androidx.fragment.app.DialogFragment
 import com.google.android.material.button.MaterialButton
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.nextcloud.client.di.Injectable
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.PasswordDialogBinding
 import com.owncloud.android.datamodel.OCFile
@@ -110,19 +110,8 @@ class SharePasswordDialogFragment : DialogFragment(), Injectable {
     }
 
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
-        file = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-            requireArguments().getParcelable(ARG_FILE, OCFile::class.java)
-        } else {
-            @Suppress("DEPRECATION")
-            requireArguments().getParcelable(ARG_FILE)
-        }
-
-        share = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-            requireArguments().getParcelable(ARG_SHARE, OCShare::class.java)
-        } else {
-            @Suppress("DEPRECATION")
-            requireArguments().getParcelable(ARG_SHARE)
-        }
+        file = requireArguments().getParcelableArgument(ARG_FILE, OCFile::class.java)
+        share = requireArguments().getParcelableArgument(ARG_SHARE, OCShare::class.java)
 
         createShare = requireArguments().getBoolean(ARG_CREATE_SHARE, false)
         askForPassword = requireArguments().getBoolean(ARG_ASK_FOR_PASSWORD, false)

+ 2 - 8
app/src/main/java/com/owncloud/android/ui/dialog/SyncFileNotEnoughSpaceDialogFragment.kt

@@ -24,6 +24,7 @@ import android.os.Build
 import android.os.Bundle
 import android.os.storage.StorageManager
 import androidx.annotation.RequiresApi
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.datamodel.OCFile
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener
@@ -40,15 +41,8 @@ class SyncFileNotEnoughSpaceDialogFragment :
     private var targetFile: OCFile? = null
 
     override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
-        targetFile = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-            requireArguments().getParcelable(ARG_PASSED_FILE, OCFile::class.java)
-        } else {
-            @Suppress("DEPRECATION")
-            requireArguments().getParcelable(ARG_PASSED_FILE)
-        }
-
+        targetFile = requireArguments().getParcelableArgument(ARG_PASSED_FILE, OCFile::class.java)
         setOnConfirmationListener(this)
-
         return super.onCreateDialog(savedInstanceState)
     }
 

+ 2 - 7
app/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.kt

@@ -25,7 +25,6 @@ import android.app.Dialog
 import android.content.DialogInterface
 import android.content.Intent
 import android.graphics.Typeface
-import android.os.Build
 import android.os.Bundle
 import android.text.TextUtils
 import android.text.style.StyleSpan
@@ -36,6 +35,7 @@ import androidx.fragment.app.DialogFragment
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.preferences.SubFolderRule
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.SyncedFoldersSettingsLayoutBinding
 import com.owncloud.android.datamodel.MediaFolderType
@@ -91,12 +91,7 @@ class SyncedFolderPreferencesDialogFragment : DialogFragment(), Injectable {
 
         val arguments = arguments
         if (arguments != null) {
-            syncedFolder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
-                arguments.getParcelable(SYNCED_FOLDER_PARCELABLE, SyncedFolderParcelable::class.java)
-            } else {
-                @Suppress("DEPRECATION")
-                arguments.getParcelable(SYNCED_FOLDER_PARCELABLE)
-            }
+            syncedFolder = arguments.getParcelableArgument(SYNCED_FOLDER_PARCELABLE, SyncedFolderParcelable::class.java)
         }
 
         uploadBehaviorItemStrings = resources.getTextArray(R.array.pref_behaviour_entries)

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/fragment/FeatureFragment.java

@@ -16,6 +16,7 @@ import android.widget.TextView;
 
 import com.nextcloud.android.common.ui.theme.utils.ColorRole;
 import com.nextcloud.client.di.Injectable;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.features.FeatureItem;
 import com.owncloud.android.utils.theme.ViewThemeUtils;
@@ -45,7 +46,7 @@ public class FeatureFragment extends Fragment implements Injectable {
     public void onCreate(@Nullable Bundle savedInstanceState) {
         viewThemeUtils = viewThemeUtilsFactory.withPrimaryAsBackground();
         super.onCreate(savedInstanceState);
-        item = getArguments() != null ? (FeatureItem) getArguments().getParcelable("feature") : null;
+        item = getArguments() != null ? BundleExtensionsKt.getParcelableArgument(getArguments(), "feature", FeatureItem.class) : null;
     }
 
     @Nullable

+ 5 - 4
app/src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java

@@ -38,6 +38,7 @@ import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.network.ClientFactory;
 import com.nextcloud.common.NextcloudClient;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.FileDetailsActivitiesFragmentBinding;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -130,12 +131,12 @@ public class FileDetailActivitiesFragment extends Fragment implements
         if (arguments == null) {
             throw new IllegalStateException("arguments are mandatory");
         }
-        file = arguments.getParcelable(ARG_FILE);
-        user = arguments.getParcelable(ARG_USER);
+        file = BundleExtensionsKt.getParcelableArgument(arguments, ARG_FILE, OCFile.class);
+        user = BundleExtensionsKt.getParcelableArgument(arguments, ARG_USER, User.class);
 
         if (savedInstanceState != null) {
-            file = savedInstanceState.getParcelable(ARG_FILE);
-            user = savedInstanceState.getParcelable(ARG_USER);
+            file = BundleExtensionsKt.getParcelableArgument(savedInstanceState, ARG_FILE, OCFile.class);
+            user = BundleExtensionsKt.getParcelableArgument(savedInstanceState, ARG_USER, User.class);
         }
 
         binding = FileDetailsActivitiesFragmentBinding.inflate(inflater, container, false);

+ 6 - 5
app/src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -50,6 +50,7 @@ import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.ui.fileactions.FileActionsBottomSheet;
 import com.nextcloud.utils.MenuUtils;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.FileDetailsFragmentBinding;
@@ -214,14 +215,14 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
             throw new IllegalArgumentException("Arguments may not be null");
         }
 
-        setFile(arguments.getParcelable(ARG_FILE));
-        parentFolder = arguments.getParcelable(ARG_PARENT_FOLDER);
-        user = arguments.getParcelable(ARG_USER);
+        setFile(BundleExtensionsKt.getParcelableArgument(arguments, ARG_FILE, OCFile.class));
+        parentFolder = BundleExtensionsKt.getParcelableArgument(arguments, ARG_PARENT_FOLDER, OCFile.class);
+        user = BundleExtensionsKt.getParcelableArgument(arguments, ARG_USER, User.class);
         activeTab = arguments.getInt(ARG_ACTIVE_TAB, 0);
 
         if (savedInstanceState != null) {
-            setFile(savedInstanceState.getParcelable(ARG_FILE));
-            user = savedInstanceState.getParcelable(ARG_USER);
+            setFile(BundleExtensionsKt.getParcelableArgument(savedInstanceState, ARG_FILE, OCFile.class));
+            user = BundleExtensionsKt.getParcelableArgument(savedInstanceState, ARG_USER, User.class);
         }
 
         binding = FileDetailsFragmentBinding.inflate(inflater, container, false);

+ 7 - 4
app/src/main/java/com/owncloud/android/ui/fragment/FileDetailSharingFragment.java

@@ -46,10 +46,12 @@ import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.network.ClientFactory;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.FileDetailsSharingFragmentBinding;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
+import com.owncloud.android.features.FeatureItem;
 import com.owncloud.android.lib.common.OwnCloudAccount;
 import com.owncloud.android.lib.common.operations.RemoteOperationResult;
 import com.owncloud.android.lib.common.utils.Log_OC;
@@ -122,13 +124,14 @@ public class FileDetailSharingFragment extends Fragment implements ShareeListAda
         super.onCreate(savedInstanceState);
 
         if (savedInstanceState != null) {
-            file = savedInstanceState.getParcelable(ARG_FILE);
-            user = savedInstanceState.getParcelable(ARG_USER);
+            file = BundleExtensionsKt.getParcelableArgument(savedInstanceState, ARG_FILE, OCFile.class);
+            user = BundleExtensionsKt.getParcelableArgument(savedInstanceState, ARG_USER, User.class);
         } else {
             Bundle arguments = getArguments();
+
             if (arguments != null) {
-                file = arguments.getParcelable(ARG_FILE);
-                user = arguments.getParcelable(ARG_USER);
+                file = BundleExtensionsKt.getParcelableArgument(arguments, ARG_FILE, OCFile.class);
+                user = BundleExtensionsKt.getParcelableArgument(arguments, ARG_USER, User.class);
             }
         }
 

+ 4 - 1
app/src/main/java/com/owncloud/android/ui/fragment/FileFragment.java

@@ -25,6 +25,7 @@ import android.accounts.Account;
 import android.app.Activity;
 import android.os.Bundle;
 
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.files.services.FileDownloader.FileDownloaderBinder;
 import com.owncloud.android.files.services.FileUploader.FileUploaderBinder;
@@ -61,7 +62,9 @@ public class FileFragment extends Fragment {
         super.onCreate(savedInstanceState);
 
         Bundle bundle = getArguments();
-        setFile(bundle.getParcelable(EXTRA_FILE));
+        if (bundle != null) {
+            setFile(BundleExtensionsKt.getParcelableArgument(bundle, EXTRA_FILE, OCFile.class));
+        }
     }
 
     /**

+ 7 - 4
app/src/main/java/com/owncloud/android/ui/fragment/GalleryFragment.java

@@ -37,6 +37,7 @@ import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.owncloud.android.BuildConfig;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -316,10 +317,12 @@ public class GalleryFragment extends OCFileListFragment implements GalleryFragme
     @Override
     public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
         if (requestCode == SELECT_LOCATION_REQUEST_CODE && data != null) {
-            OCFile chosenFolder = data.getParcelableExtra(FolderPickerActivity.EXTRA_FOLDER);
-            if (chosenFolder != null) {
-                preferences.setLastSelectedMediaFolder(chosenFolder.getRemotePath());
-                searchAndDisplayAfterChangingFolder();
+            if (FolderPickerActivity.EXTRA_FOLDER != null) {
+                OCFile chosenFolder = IntentExtensionsKt.getParcelableArgument(data, FolderPickerActivity.EXTRA_FOLDER, OCFile.class);
+                if (chosenFolder != null) {
+                    preferences.setLastSelectedMediaFolder(chosenFolder.getRemotePath());
+                    searchAndDisplayAfterChangingFolder();
+                }
             }
         }
         super.onActivityResult(requestCode, resultCode, data);

+ 19 - 13
app/src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -26,6 +26,7 @@
  */
 package com.owncloud.android.ui.fragment;
 
+import android.accounts.Account;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
@@ -33,6 +34,7 @@ import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
+import android.os.Parcelable;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.Pair;
@@ -67,6 +69,8 @@ import com.nextcloud.common.NextcloudClient;
 import com.nextcloud.ui.fileactions.FileActionsBottomSheet;
 import com.nextcloud.utils.EditorUtils;
 import com.nextcloud.utils.ShortcutUtil;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
+import com.nextcloud.utils.extensions.IntentExtensionsKt;
 import com.nextcloud.utils.view.FastScrollUtils;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
@@ -91,6 +95,7 @@ import com.owncloud.android.ui.activity.FileDisplayActivity;
 import com.owncloud.android.ui.activity.FolderPickerActivity;
 import com.owncloud.android.ui.activity.OnEnforceableRefreshListener;
 import com.owncloud.android.ui.activity.UploadFilesActivity;
+import com.owncloud.android.ui.activity.UserInfoActivity;
 import com.owncloud.android.ui.adapter.CommonOCFileListAdapterInterface;
 import com.owncloud.android.ui.adapter.OCFileListAdapter;
 import com.owncloud.android.ui.dialog.ChooseRichDocumentsTemplateDialogFragment;
@@ -253,9 +258,9 @@ public class OCFileListFragment extends ExtendedListFragment implements
         mMultiChoiceModeListener = new MultiChoiceModeListener();
 
         if (savedInstanceState != null) {
-            currentSearchType = savedInstanceState.getParcelable(KEY_CURRENT_SEARCH_TYPE);
-            searchEvent = savedInstanceState.getParcelable(OCFileListFragment.SEARCH_EVENT);
-            mFile = savedInstanceState.getParcelable(KEY_FILE);
+            currentSearchType = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_CURRENT_SEARCH_TYPE, SearchType.class);
+            searchEvent = BundleExtensionsKt.getParcelableArgument(savedInstanceState, OCFileListFragment.SEARCH_EVENT, SearchEvent.class);
+            mFile = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_FILE, OCFile.class);
         }
 
         searchFragment = currentSearchType != null && isSearchEventSet(searchEvent);
@@ -269,8 +274,8 @@ public class OCFileListFragment extends ExtendedListFragment implements
 
         Intent intent = getActivity().getIntent();
 
-        if (intent.getParcelableExtra(OCFileListFragment.SEARCH_EVENT) != null) {
-            searchEvent = intent.getParcelableExtra(OCFileListFragment.SEARCH_EVENT);
+        if (IntentExtensionsKt.getParcelableArgument(intent, OCFileListFragment.SEARCH_EVENT, SearchEvent.class) != null) {
+            searchEvent = IntentExtensionsKt.getParcelableArgument(intent, OCFileListFragment.SEARCH_EVENT, SearchEvent.class);
         }
 
         if (isSearchEventSet(searchEvent)) {
@@ -313,12 +318,13 @@ public class OCFileListFragment extends ExtendedListFragment implements
         Log_OC.i(TAG, "onCreateView() start");
         View v = super.onCreateView(inflater, container, savedInstanceState);
 
-        if (savedInstanceState != null
-            && savedInstanceState.getParcelable(KEY_CURRENT_SEARCH_TYPE) != null &&
-            savedInstanceState.getParcelable(OCFileListFragment.SEARCH_EVENT) != null) {
+
+        if (savedInstanceState != null &&
+            BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_CURRENT_SEARCH_TYPE, SearchType.class) != null &&
+            BundleExtensionsKt.getParcelableArgument(savedInstanceState, SEARCH_EVENT, SearchEvent.class) != null) {
             searchFragment = true;
-            currentSearchType = savedInstanceState.getParcelable(KEY_CURRENT_SEARCH_TYPE);
-            searchEvent = savedInstanceState.getParcelable(OCFileListFragment.SEARCH_EVENT);
+            currentSearchType = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_CURRENT_SEARCH_TYPE, SearchType.class);
+            searchEvent = BundleExtensionsKt.getParcelableArgument(savedInstanceState, SEARCH_EVENT, SearchEvent.class);
         } else {
             currentSearchType = NO_SEARCH;
         }
@@ -372,7 +378,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
         Log_OC.i(TAG, "onActivityCreated() start");
 
         if (savedInstanceState != null) {
-            mFile = savedInstanceState.getParcelable(KEY_FILE);
+            mFile = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_FILE, OCFile.class);
         }
 
         Bundle args = getArguments();
@@ -396,7 +402,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
             if (getArguments() == null) {
                 searchEvent = null;
             } else {
-                searchEvent = getArguments().getParcelable(OCFileListFragment.SEARCH_EVENT);
+                searchEvent = BundleExtensionsKt.getParcelableArgument(getArguments(), OCFileListFragment.SEARCH_EVENT, SearchEvent.class);
             }
         }
         prepareCurrentSearch(searchEvent);
@@ -1618,7 +1624,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
         super.onViewStateRestored(savedInstanceState);
 
         if (savedInstanceState != null) {
-            searchEvent = savedInstanceState.getParcelable(SEARCH_EVENT);
+            searchEvent = BundleExtensionsKt.getParcelableArgument(savedInstanceState, SEARCH_EVENT, SearchEvent.class);
         }
     }
 

+ 5 - 3
app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupListFragment.java

@@ -45,11 +45,13 @@ import com.nextcloud.client.files.downloader.TransferManagerConnection;
 import com.nextcloud.client.files.downloader.TransferState;
 import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.network.ClientFactory;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.BackuplistFragmentBinding;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.ui.activity.ContactsPreferenceActivity;
 import com.owncloud.android.ui.asynctasks.LoadContactsTask;
+import com.owncloud.android.ui.events.SearchEvent;
 import com.owncloud.android.ui.events.VCardToggleEvent;
 import com.owncloud.android.ui.fragment.FileFragment;
 import com.owncloud.android.utils.MimeTypeUtil;
@@ -194,8 +196,8 @@ public class BackupListFragment extends FileFragment implements Injectable {
             return view;
         }
 
-        if (arguments.getParcelable(FILE_NAME) != null) {
-            ocFiles.add(arguments.getParcelable(FILE_NAME));
+        if (BundleExtensionsKt.getParcelableArgument(arguments, FILE_NAME, OCFile.class) != null) {
+            ocFiles.add(BundleExtensionsKt.getParcelableArgument(arguments, FILE_NAME, OCFile.class));
         } else if (arguments.getParcelableArray(FILE_NAMES) != null) {
             for (Parcelable file : arguments.getParcelableArray(FILE_NAMES)) {
                 ocFiles.add((OCFile) file);
@@ -204,7 +206,7 @@ public class BackupListFragment extends FileFragment implements Injectable {
             return view;
         }
 
-        User user = getArguments().getParcelable(USER);
+        User user = BundleExtensionsKt.getParcelableArgument(getArguments(), USER, User.class);
         fileDownloader = new TransferManagerConnection(getActivity(), user);
         fileDownloader.registerTransferListener(this::onDownloadUpdate);
         fileDownloader.bind();

+ 5 - 4
app/src/main/java/com/owncloud/android/ui/preview/FileDownloadFragment.java

@@ -29,6 +29,7 @@ import android.widget.TextView;
 
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.di.Injectable;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.network.OnDatatransferProgressListener;
@@ -116,11 +117,11 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         Bundle args = getArguments();
-        setFile(args.getParcelable(ARG_FILE));
+        setFile(BundleExtensionsKt.getParcelableArgument(args, ARG_FILE, OCFile.class));
             // TODO better in super, but needs to check ALL the class extending FileFragment; not right now
 
         mIgnoreFirstSavedState = args.getBoolean(ARG_IGNORE_FIRST);
-        user = args.getParcelable(ARG_USER);
+        user = BundleExtensionsKt.getParcelableArgument(args, ARG_USER, User.class);
     }
 
 
@@ -131,8 +132,8 @@ public class FileDownloadFragment extends FileFragment implements OnClickListene
 
         if (savedInstanceState != null) {
             if (!mIgnoreFirstSavedState) {
-                setFile(savedInstanceState.getParcelable(EXTRA_FILE));
-                user = savedInstanceState.getParcelable(EXTRA_USER);
+                setFile(BundleExtensionsKt.getParcelableArgument(savedInstanceState, EXTRA_FILE, OCFile.class));
+                user = BundleExtensionsKt.getParcelableArgument(savedInstanceState, EXTRA_USER, User.class);
                 mError = savedInstanceState.getBoolean(EXTRA_ERROR);
             }
             else {

+ 5 - 2
app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -54,6 +54,7 @@ import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.ui.fileactions.FileActionsBottomSheet;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.nextcloud.utils.extensions.ExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
@@ -63,7 +64,9 @@ import com.owncloud.android.datamodel.ThumbnailsCacheManager;
 import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
 import com.owncloud.android.ui.dialog.RemoveFilesDialogFragment;
+import com.owncloud.android.ui.events.SearchEvent;
 import com.owncloud.android.ui.fragment.FileFragment;
+import com.owncloud.android.ui.fragment.OCFileListFragment;
 import com.owncloud.android.utils.BitmapUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.MimeType;
@@ -175,7 +178,7 @@ public class PreviewImageFragment extends FileFragment implements Injectable {
             throw new IllegalArgumentException("Arguments may not be null!");
         }
 
-        setFile(args.getParcelable(ARG_FILE));
+        setFile(BundleExtensionsKt.getParcelableArgument(args, ARG_FILE, OCFile.class));
         // TODO better in super, but needs to check ALL the class extending FileFragment;
         // not right now
 
@@ -242,7 +245,7 @@ public class PreviewImageFragment extends FileFragment implements Injectable {
         super.onActivityCreated(savedInstanceState);
         if (savedInstanceState != null) {
             if (!ignoreFirstSavedState) {
-                OCFile file = savedInstanceState.getParcelable(EXTRA_FILE);
+                OCFile file = BundleExtensionsKt.getParcelableArgument(savedInstanceState, EXTRA_FILE, OCFile.class);
                 setFile(file);
                 binding.image.setScale(Math.min(binding.image.getMaximumScale(), savedInstanceState.getFloat(EXTRA_ZOOM)));
             } else {

+ 5 - 4
app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -63,6 +63,7 @@ import com.nextcloud.client.media.PlayerServiceConnection;
 import com.nextcloud.client.network.ClientFactory;
 import com.nextcloud.common.NextcloudClient;
 import com.nextcloud.ui.fileactions.FileActionsBottomSheet;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.FragmentPreviewMediaBinding;
 import com.owncloud.android.datamodel.OCFile;
@@ -193,9 +194,9 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
 
         Bundle bundle = getArguments();
 
-        setFile(bundle.getParcelable(FILE));
+        setFile(BundleExtensionsKt.getParcelableArgument(bundle, FILE, OCFile.class));
+        user = BundleExtensionsKt.getParcelableArgument(bundle, USER, User.class);
 
-        user = bundle.getParcelable(USER);
         savedPlaybackPosition = bundle.getLong(PLAYBACK_POSITION);
         autoplay = bundle.getBoolean(AUTOPLAY);
         isLivePhoto = bundle.getBoolean(IS_LIVE_PHOTO);
@@ -246,9 +247,9 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
                 throw new IllegalStateException("Instanced with a NULL ownCloud Account");
             }
         } else {
-            file = savedInstanceState.getParcelable(EXTRA_FILE);
+            file = BundleExtensionsKt.getParcelableArgument(savedInstanceState, EXTRA_FILE, OCFile.class);
             setFile(file);
-            user = savedInstanceState.getParcelable(EXTRA_USER);
+            user = BundleExtensionsKt.getParcelableArgument(savedInstanceState, EXTRA_USER, User.class);
             savedPlaybackPosition = savedInstanceState.getInt(EXTRA_PLAY_POSITION);
             autoplay = savedInstanceState.getBoolean(EXTRA_PLAYING);
         }

+ 5 - 4
app/src/main/java/com/owncloud/android/ui/preview/PreviewTextFileFragment.java

@@ -35,6 +35,7 @@ import android.widget.TextView;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.ui.fileactions.FileActionsBottomSheet;
+import com.nextcloud.utils.extensions.BundleExtensionsKt;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.utils.Log_OC;
@@ -117,11 +118,11 @@ public class PreviewTextFileFragment extends PreviewTextFragment {
         Bundle args = getArguments();
 
         if (file == null) {
-            file = args.getParcelable(EXTRA_FILE);
+            file = BundleExtensionsKt.getParcelableArgument(args, EXTRA_FILE, OCFile.class);
         }
 
         if (user == null) {
-            user = args.getParcelable(EXTRA_USER);
+            user = BundleExtensionsKt.getParcelableArgument(args, EXTRA_USER, User.class);
         }
 
         if (args.containsKey(EXTRA_SEARCH_QUERY)) {
@@ -137,8 +138,8 @@ public class PreviewTextFileFragment extends PreviewTextFragment {
                 throw new IllegalStateException("Instanced with a NULL ownCloud Account");
             }
         } else {
-            file = savedInstanceState.getParcelable(EXTRA_FILE);
-            user = savedInstanceState.getParcelable(EXTRA_USER);
+            file = BundleExtensionsKt.getParcelableArgument(savedInstanceState, EXTRA_FILE, OCFile.class);
+            user = BundleExtensionsKt.getParcelableArgument(savedInstanceState, EXTRA_USER, User.class);
         }
 
         handler = new Handler();

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/preview/pdf/PreviewPdfFragment.kt

@@ -34,6 +34,7 @@ import com.google.android.material.snackbar.Snackbar
 import com.nextcloud.client.di.Injectable
 import com.nextcloud.client.di.ViewModelFactory
 import com.nextcloud.utils.MenuUtils
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.databinding.PreviewPdfFragmentBinding
 import com.owncloud.android.datamodel.OCFile
@@ -75,7 +76,7 @@ class PreviewPdfFragment : Fragment(), Injectable {
 
         setupObservers()
 
-        file = requireArguments().getParcelable(ARG_FILE)!!
+        file = requireArguments().getParcelableArgument(ARG_FILE, OCFile::class.java)!!
         try {
             viewModel.process(file)
         } catch (e: SecurityException) {

+ 5 - 1
app/src/main/java/com/owncloud/android/utils/PermissionUtil.kt

@@ -41,6 +41,7 @@ import androidx.core.content.ContextCompat
 import com.google.android.material.snackbar.Snackbar
 import com.nextcloud.client.preferences.AppPreferences
 import com.nextcloud.client.preferences.AppPreferencesImpl
+import com.nextcloud.utils.extensions.getParcelableArgument
 import com.owncloud.android.R
 import com.owncloud.android.ui.dialog.StoragePermissionDialogFragment
 import com.owncloud.android.utils.theme.ViewThemeUtils
@@ -231,7 +232,10 @@ object PermissionUtil {
         ) {
             val listener: (requestKey: String, result: Bundle) -> Unit = { _, resultBundle ->
                 val result: StoragePermissionDialogFragment.Result? =
-                    resultBundle.getParcelable(StoragePermissionDialogFragment.RESULT_KEY)
+                    resultBundle.getParcelableArgument(
+                        StoragePermissionDialogFragment.RESULT_KEY,
+                        StoragePermissionDialogFragment.Result::class.java
+                    )
                 if (result != null) {
                     preferences.isStoragePermissionRequested = true
                     when (result) {