Merge pull request #12287 from nextcloud/refactor/remove-deprecated-argument-passing

Replace Deprecated Argument Passing
This commit is contained in:
Tobias Kaminsky 2023-12-19 07:59:38 +01:00 committed by GitHub
commit f430bf18c5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
83 changed files with 317 additions and 243 deletions

View File

@ -34,8 +34,6 @@ import org.junit.rules.TestRule;
import androidx.test.espresso.intent.rule.IntentsTestRule;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
public class AuthenticatorActivityIT extends AbstractIT {
private static final String URL = "cloud.nextcloud.com";

View File

@ -20,7 +20,6 @@
package com.nextcloud.client.migrations
import android.content.SharedPreferences
import java.lang.UnsupportedOperationException
import java.util.TreeMap
/**

View File

@ -34,7 +34,6 @@ import com.owncloud.android.R
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.AdditionalMatchers.not
@RunWith(AndroidJUnit4::class)
class LauncherActivityIT : AbstractIT() {

View File

@ -25,7 +25,6 @@ import android.content.ContentValues
import com.owncloud.android.db.ProviderMeta
import com.owncloud.android.utils.MimeTypeUtil
import org.junit.Test
import java.lang.IllegalArgumentException
@Suppress("FunctionNaming")
class FileContentProviderVerificationIT {

View File

@ -27,10 +27,10 @@ import android.accounts.AccountManager;
import android.net.Uri;
import android.os.Bundle;
import com.nextcloud.test.RetryTestRule;
import com.nextcloud.client.account.User;
import com.nextcloud.client.account.UserAccountManager;
import com.nextcloud.client.account.UserAccountManagerImpl;
import com.nextcloud.test.RetryTestRule;
import com.owncloud.android.AbstractIT;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;

View File

@ -92,7 +92,6 @@ import androidx.activity.result.contract.ActivityResultContract;
import androidx.annotation.NonNull;
import androidx.fragment.app.DialogFragment;
import androidx.test.espresso.intent.rule.IntentsTestRule;
import androidx.test.rule.GrantPermissionRule;
import kotlin.Unit;
import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;

View File

@ -21,7 +21,6 @@
package com.owncloud.android.util;
import android.accounts.Account;
import android.content.Context;
import android.content.res.Resources;

View File

@ -32,6 +32,7 @@ import com.nextcloud.client.network.ClientFactory
import com.nextcloud.client.network.ConnectivityService
import com.nextcloud.client.notifications.AppNotificationManager
import com.nextcloud.utils.ForegroundServiceHelper
import com.nextcloud.utils.extensions.getParcelableArgument
import com.owncloud.android.datamodel.FileDataStorageManager
import com.owncloud.android.datamodel.ForegroundServiceType
import com.owncloud.android.datamodel.UploadsStorageManager
@ -117,7 +118,7 @@ class FileTransferService : Service() {
)
}
val request: Request = intent.getParcelableExtra(EXTRA_REQUEST)!!
val request: Request = intent.getParcelableArgument(EXTRA_REQUEST, Request::class.java)!!
val transferManager = getTransferManager(request.user)
transferManager.enqueue(request)
@ -127,12 +128,8 @@ class FileTransferService : Service() {
}
override fun onBind(intent: Intent?): IBinder? {
val user = intent?.getParcelableExtra<User>(EXTRA_USER)
if (user != null) {
return Binder(getTransferManager(user), this)
} else {
return null
}
val user = intent?.getParcelableArgument(EXTRA_USER, User::class.java) ?: return null
return Binder(getTransferManager(user), this)
}
private fun onTransferUpdate(transfer: Transfer) {

View File

@ -20,7 +20,6 @@
package com.nextcloud.client.files.downloader
import com.owncloud.android.datamodel.OCFile
import java.util.LinkedHashMap
import java.util.UUID
import kotlin.math.max
import kotlin.math.min

View File

@ -32,6 +32,7 @@ import androidx.core.app.NotificationCompat
import com.nextcloud.client.account.User
import com.nextcloud.client.network.ClientFactory
import com.nextcloud.utils.ForegroundServiceHelper
import com.nextcloud.utils.extensions.getParcelableArgument
import com.owncloud.android.R
import com.owncloud.android.datamodel.ForegroundServiceType
import com.owncloud.android.datamodel.OCFile
@ -144,8 +145,8 @@ class PlayerService : Service() {
}
private fun onActionPlay(intent: Intent) {
val user: User = intent.getParcelableExtra(EXTRA_USER)!!
val file: OCFile = intent.getParcelableExtra(EXTRA_FILE)!!
val user: User = intent.getParcelableArgument(EXTRA_USER, User::class.java)!!
val file: OCFile = intent.getParcelableArgument(EXTRA_FILE, OCFile::class.java)!!
val startPos = intent.getLongExtra(EXTRA_START_POSITION_MS, 0)
val autoPlay = intent.getBooleanExtra(EXTRA_AUTO_PLAY, true)
val item = PlaylistItem(file = file, startPositionMs = startPos, autoPlay = autoPlay, user = user)
@ -157,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)
}

View File

@ -28,7 +28,6 @@ import android.os.IBinder
import android.widget.MediaController
import com.nextcloud.client.account.User
import com.owncloud.android.datamodel.OCFile
import java.lang.IllegalStateException
@Suppress("TooManyFunctions") // implementing large interface
class PlayerServiceConnection(private val context: Context) : MediaController.MediaPlayerControl {

View File

@ -22,7 +22,6 @@ package com.nextcloud.client.network;
import android.content.Context;
import android.net.ConnectivityManager;
import android.os.Build;
import com.nextcloud.client.account.UserAccountManager;

View File

@ -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)
}
}

View File

@ -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(

View File

@ -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)

View File

@ -30,7 +30,7 @@ fun <T : Serializable?> Bundle.getSerializableArgument(key: String, type: Class<
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
this.getSerializable(key, type)
} else {
@Suppress("UNCHECKED_CAST")
@Suppress("UNCHECKED_CAST", "DEPRECATION")
this.getSerializable(key) as T
}
}
@ -39,6 +39,7 @@ fun <T : Parcelable?> Bundle.getParcelableArgument(key: String, type: Class<T>):
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
this.getParcelable(key, type)
} else {
@Suppress("DEPRECATION")
this.getParcelable(key)
}
}

View File

@ -0,0 +1,45 @@
/*
* Nextcloud Android client application
*
* @author Alper Ozturk
* Copyright (C) 2023 Alper Ozturk
* Copyright (C) 2023 Nextcloud GmbH
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.nextcloud.utils.extensions
import android.content.Intent
import android.os.Build
import android.os.Parcelable
import java.io.Serializable
fun <T : Serializable?> Intent.getSerializableArgument(key: String, type: Class<T>): T? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
this.getSerializableExtra(key, type)
} else {
@Suppress("UNCHECKED_CAST", "DEPRECATION")
this.getSerializableExtra(key) as T
}
}
fun <T : Parcelable?> Intent.getParcelableArgument(key: String, type: Class<T>): T? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
this.getParcelableExtra(key, type)
} else {
@Suppress("DEPRECATION")
this.getParcelableExtra(key)
}
}

View File

@ -20,6 +20,8 @@ import android.accounts.AccountAuthenticatorResponse;
import android.accounts.AccountManager;
import android.os.Bundle;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import androidx.appcompat.app.AppCompatActivity;
/*
@ -59,7 +61,9 @@ public abstract class AccountAuthenticatorActivity extends AppCompatActivity {
super.onCreate(savedInstanceState);
mAccountAuthenticatorResponse =
getIntent().getParcelableExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE);
IntentExtensionsKt.getParcelableArgument(getIntent(),
AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE,
AccountAuthenticatorResponse.class);
if (mAccountAuthenticatorResponse != null) {
mAccountAuthenticatorResponse.onRequestContinued();

View File

@ -60,6 +60,7 @@ import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.text.Editable;
import android.text.TextUtils;
import android.util.AndroidRuntimeException;
import android.view.KeyEvent;
@ -86,6 +87,7 @@ 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;
@ -142,6 +144,7 @@ import androidx.annotation.ColorInt;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.ActionBar;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
@ -284,11 +287,12 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
// Workaround, for fixing a problem with Android Library Support v7 19
//getWindow().requestFeature(Window.FEATURE_NO_TITLE);
if (getSupportActionBar() != null) {
getSupportActionBar().hide();
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);
getSupportActionBar().setDisplayShowTitleEnabled(false);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null) {
actionBar.hide();
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
}
mIsFirstAuthAttempt = true;
@ -302,7 +306,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) {
@ -763,9 +767,11 @@ public class AuthenticatorActivity extends AccountAuthenticatorActivity
private void checkOcServer() {
String uri;
if (accountSetupBinding != null && accountSetupBinding.hostUrlInput.getText() != null &&
!accountSetupBinding.hostUrlInput.getText().toString().isEmpty()) {
uri = accountSetupBinding.hostUrlInput.getText().toString().trim();
Editable hostUrlInput = accountSetupBinding.hostUrlInput.getText();
if (accountSetupBinding != null && hostUrlInput != null &&
!hostUrlInput.toString().isEmpty()) {
uri = hostUrlInput.toString().trim();
} else {
uri = mServerInfo.mBaseUrl;
}

View File

@ -1208,7 +1208,12 @@ public class FileDataStorageManager {
ContentValues contentValues = new ContentValues();
contentValues.put(ProviderTableMeta.OCSHARES_FILE_SOURCE, share.getFileSource());
contentValues.put(ProviderTableMeta.OCSHARES_ITEM_SOURCE, share.getItemSource());
contentValues.put(ProviderTableMeta.OCSHARES_SHARE_TYPE, share.getShareType().getValue());
ShareType shareType = share.getShareType();
if (shareType != null) {
contentValues.put(ProviderTableMeta.OCSHARES_SHARE_TYPE, shareType.getValue());
}
contentValues.put(ProviderTableMeta.OCSHARES_SHARE_WITH, share.getShareWith());
contentValues.put(ProviderTableMeta.OCSHARES_PATH, share.getPath());
contentValues.put(ProviderTableMeta.OCSHARES_PERMISSIONS, share.getPermissions());

View File

@ -20,7 +20,6 @@
*/
package com.owncloud.android.datamodel;
import android.accounts.Account;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;

View File

@ -83,7 +83,6 @@ import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.core.content.ContextCompat;
import androidx.core.content.res.ResourcesCompat;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import kotlin.text.Charsets;

View File

@ -43,6 +43,7 @@ import com.nextcloud.client.account.UserAccountManager;
import com.nextcloud.client.files.downloader.DownloadTask;
import com.nextcloud.java.util.Optional;
import com.nextcloud.utils.ForegroundServiceHelper;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import com.owncloud.android.R;
import com.owncloud.android.authentication.AuthenticatorActivity;
import com.owncloud.android.datamodel.FileDataStorageManager;
@ -208,13 +209,13 @@ public class FileDownloader extends Service
Log_OC.e(TAG, "Not enough information provided in intent");
return START_NOT_STICKY;
} else {
final User user = intent.getParcelableExtra(EXTRA_USER);
final OCFile file = intent.getParcelableExtra(EXTRA_FILE);
final User user = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_USER, User.class);
final OCFile file = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class);
final String behaviour = intent.getStringExtra(OCFileListFragment.DOWNLOAD_BEHAVIOUR);
DownloadType downloadType = DownloadType.DOWNLOAD;
if (intent.hasExtra(DOWNLOAD_TYPE)) {
downloadType = (DownloadType) intent.getSerializableExtra(DOWNLOAD_TYPE);
downloadType = IntentExtensionsKt.getSerializableArgument(intent, DOWNLOAD_TYPE, DownloadType.class);
}
String activityName = intent.getStringExtra(SendShareDialog.ACTIVITY_NAME);
String packageName = intent.getStringExtra(SendShareDialog.PACKAGE_NAME);

View File

@ -59,6 +59,7 @@ import com.nextcloud.client.network.ConnectivityService;
import com.nextcloud.client.utils.FileUploaderDelegate;
import com.nextcloud.java.util.Optional;
import com.nextcloud.utils.ForegroundServiceHelper;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
import com.owncloud.android.authentication.AuthenticatorActivity;
@ -329,7 +330,7 @@ public class FileUploader extends Service
return Service.START_NOT_STICKY;
}
final Account account = intent.getParcelableExtra(KEY_ACCOUNT);
final Account account = IntentExtensionsKt.getParcelableArgument(intent, KEY_ACCOUNT, Account.class);
if (account == null) {
return Service.START_NOT_STICKY;
}
@ -436,7 +437,7 @@ public class FileUploader extends Service
}
// at this point variable "OCFile[] files" is loaded correctly.
NameCollisionPolicy nameCollisionPolicy = (NameCollisionPolicy) intent.getSerializableExtra(KEY_NAME_COLLISION_POLICY);
NameCollisionPolicy nameCollisionPolicy = IntentExtensionsKt.getSerializableArgument(intent, KEY_NAME_COLLISION_POLICY, NameCollisionPolicy.class);
if (nameCollisionPolicy == null) {
nameCollisionPolicy = NameCollisionPolicy.DEFAULT;
}
@ -543,7 +544,8 @@ public class FileUploader extends Service
private void retryUploads(Intent intent, User user, List<String> requestedUploads) {
boolean onWifiOnly;
boolean whileChargingOnly;
OCUpload upload = intent.getParcelableExtra(KEY_RETRY_UPLOAD);
OCUpload upload = IntentExtensionsKt.getParcelableArgument(intent, KEY_RETRY_UPLOAD, OCUpload.class);
onWifiOnly = upload.isUseWifiOnly();
whileChargingOnly = upload.isWhileChargingOnly();

View File

@ -20,7 +20,6 @@
package com.owncloud.android.operations;
import android.accounts.Account;
import android.accounts.AccountManager;
import android.content.Context;

View File

@ -42,6 +42,7 @@ import android.util.Pair;
import com.nextcloud.client.account.User;
import com.nextcloud.client.account.UserAccountManager;
import com.nextcloud.java.util.Optional;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import com.owncloud.android.MainApp;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
@ -190,7 +191,8 @@ public class OperationsService extends Service {
Log_OC.e(TAG, "Not enough information provided in intent");
return START_NOT_STICKY;
}
Account account = intent.getParcelableExtra(EXTRA_ACCOUNT);
Account account = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_ACCOUNT, Account.class);
String remotePath = intent.getStringExtra(EXTRA_REMOTE_PATH);
Pair<Account, String> itemSyncKey = new Pair<>(account, remotePath);
@ -497,7 +499,7 @@ public class OperationsService extends Service {
Log_OC.e(TAG, "Not enough information provided in intent");
} else {
Account account = operationIntent.getParcelableExtra(EXTRA_ACCOUNT);
Account account = IntentExtensionsKt.getParcelableArgument(operationIntent, EXTRA_ACCOUNT, Account.class);
User user = toUser(account);
String serverUrl = operationIntent.getStringExtra(EXTRA_SERVER_URL);
target = new Target(account, (serverUrl == null) ? null : Uri.parse(serverUrl));
@ -590,7 +592,7 @@ public class OperationsService extends Service {
case ACTION_CREATE_SHARE_WITH_SHAREE:
remotePath = operationIntent.getStringExtra(EXTRA_REMOTE_PATH);
String shareeName = operationIntent.getStringExtra(EXTRA_SHARE_WITH);
shareType = (ShareType) operationIntent.getSerializableExtra(EXTRA_SHARE_TYPE);
shareType = IntentExtensionsKt.getSerializableArgument(operationIntent, EXTRA_SHARE_TYPE, ShareType.class);
int permissions = operationIntent.getIntExtra(EXTRA_SHARE_PERMISSIONS, -1);
String noteMessage = operationIntent.getStringExtra(EXTRA_SHARE_NOTE);
String sharePassword = operationIntent.getStringExtra(EXTRA_SHARE_PASSWORD);
@ -672,7 +674,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,
@ -729,7 +731,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;

View File

@ -22,7 +22,6 @@
*/
package com.owncloud.android.ui.activities.data.activities;
import android.accounts.Account;
import android.accounts.AuthenticatorException;
import android.accounts.OperationCanceledException;
import android.content.Context;

View File

@ -78,7 +78,7 @@ class ConflictsResolveActivity : FileActivity(), OnConflictDecisionMadeListener
localBehaviour = savedInstanceState.getInt(EXTRA_LOCAL_BEHAVIOUR)
} else {
conflictUploadId = intent.getLongExtra(EXTRA_CONFLICT_UPLOAD_ID, -1)
existingFile = intent.getParcelableExtra(EXTRA_EXISTING_FILE)
existingFile = intent.getParcelableArgument(EXTRA_EXISTING_FILE, OCFile::class.java)
localBehaviour = intent.getIntExtra(EXTRA_LOCAL_BEHAVIOUR, localBehaviour)
}
}

View File

@ -28,6 +28,7 @@ import android.os.Bundle;
import com.nextcloud.client.account.User;
import com.nextcloud.client.jobs.BackgroundJobManager;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.ui.fragment.FileFragment;
@ -104,13 +105,14 @@ public class ContactsPreferenceActivity extends FileActivity implements FileFrag
Intent intent = getIntent();
if (savedInstanceState == null) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
if (intent == null || intent.getParcelableExtra(EXTRA_FILE) == null ||
intent.getParcelableExtra(EXTRA_USER) == null) {
if (intent == null ||
IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class) == null ||
IntentExtensionsKt.getParcelableArgument(intent, EXTRA_USER, User.class) == null) {
BackupFragment fragment = BackupFragment.create(showSidebar);
transaction.add(R.id.frame_container, fragment);
} else {
OCFile file = intent.getParcelableExtra(EXTRA_FILE);
User user = intent.getParcelableExtra(EXTRA_USER);
OCFile file = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class);
User user = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_USER, User.class);
BackupListFragment contactListFragment = BackupListFragment.newInstance(file, user);
transaction.add(R.id.frame_container, contactListFragment);
}

View File

@ -40,8 +40,8 @@ import android.widget.Toast;
import com.google.android.material.snackbar.Snackbar;
import com.nextcloud.client.account.User;
import com.nextcloud.client.preferences.DarkMode;
import com.nextcloud.java.util.Optional;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import com.owncloud.android.R;
import com.owncloud.android.databinding.RichdocumentsWebviewBinding;
import com.owncloud.android.datamodel.OCFile;
@ -144,7 +144,7 @@ public abstract class EditorWebView extends ExternalSiteWebView {
}
});
setFile(getIntent().getParcelableExtra(ExternalSiteWebView.EXTRA_FILE));
setFile(IntentExtensionsKt.getParcelableArgument(getIntent(), ExternalSiteWebView.EXTRA_FILE, OCFile.class));
if (getFile() == null) {
Toast.makeText(getApplicationContext(),

View File

@ -36,6 +36,7 @@ import android.widget.ListView;
import android.widget.TextView;
import com.nextcloud.client.account.User;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
@ -91,7 +92,7 @@ public class ErrorsWhileCopyingHandlerActivity extends AppCompatActivity implem
/// read extra parameters in intent
Intent intent = getIntent();
user = intent.getParcelableExtra(EXTRA_USER);
user = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_USER, User.class);
mRemotePaths = intent.getStringArrayListExtra(EXTRA_REMOTE_PATHS);
mLocalPaths = intent.getStringArrayListExtra(EXTRA_LOCAL_PATHS);
mStorageManager = new FileDataStorageManager(user, getContentResolver());

View File

@ -46,6 +46,8 @@ 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;
import com.owncloud.android.authentication.AuthenticatorActivity;
@ -206,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)
@ -216,8 +218,8 @@ public abstract class FileActivity extends DrawerActivity
viewThemeUtils.files.themeActionBar(this, actionBar, savedInstanceState.getString(KEY_ACTION_BAR_TITLE));
}
} else {
User user = getIntent().getParcelableExtra(FileActivity.EXTRA_USER);
mFile = getIntent().getParcelableExtra(FileActivity.EXTRA_FILE);
User user = IntentExtensionsKt.getParcelableArgument(getIntent(), FileActivity.EXTRA_USER, User.class);
mFile = IntentExtensionsKt.getParcelableArgument(getIntent(), FileActivity.EXTRA_FILE, OCFile.class);
mFromNotification = getIntent().getBooleanExtra(FileActivity.EXTRA_FROM_NOTIFICATION,
false);
if (user != null) {

View File

@ -71,6 +71,9 @@ 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.extensions.BundleExtensionsKt;
import com.nextcloud.utils.view.FastScrollUtils;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
@ -252,7 +255,6 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
@Override
protected void onCreate(Bundle savedInstanceState) {
Log_OC.v(TAG, "onCreate() start");
// Set the default theme to replace the launch screen theme.
setTheme(R.style.Theme_ownCloud_Toolbar_Drawer);
@ -284,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, 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, KEY_WAITING_TO_SEND, OCFile.class);
searchQuery = savedInstanceState.getString(KEY_SEARCH_QUERY);
searchOpen = savedInstanceState.getBoolean(FileDisplayActivity.KEY_IS_SEARCH_OPEN, false);
} else {
@ -372,7 +374,7 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
PermissionUtil.requestExternalStoragePermission(this, viewThemeUtils);
}
if (getIntent().getParcelableExtra(OCFileListFragment.SEARCH_EVENT) != null) {
if (IntentExtensionsKt.getParcelableArgument(getIntent(), OCFileListFragment.SEARCH_EVENT, SearchEvent.class) != null) {
switchToSearchFragment(savedInstanceState);
int menuId = getIntent().getIntExtra(DRAWER_MENU_ID, -1);
@ -465,7 +467,10 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
OCFileListFragment listOfFiles = new OCFileListFragment();
Bundle args = new Bundle();
args.putParcelable(OCFileListFragment.SEARCH_EVENT, getIntent().getParcelableExtra(OCFileListFragment.SEARCH_EVENT));
args.putParcelable(OCFileListFragment.SEARCH_EVENT,
IntentExtensionsKt.getParcelableArgument(getIntent(),
OCFileListFragment.SEARCH_EVENT,
SearchEvent.class));
args.putBoolean(OCFileListFragment.ARG_ALLOW_CONTEXTUAL_ACTIONS, true);
listOfFiles.setArguments(args);
@ -511,10 +516,9 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
setIntent(intent);
if (ACTION_DETAILS.equalsIgnoreCase(intent.getAction())) {
OCFile file = intent.getParcelableExtra(EXTRA_FILE);
OCFile file = IntentExtensionsKt.getParcelableArgument(intent, EXTRA_FILE, OCFile.class);
setFile(file);
setIntent(intent);
setFile(intent.getParcelableExtra(EXTRA_FILE));
showDetails(file);
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
handleOpenFileViaIntent(intent);
@ -527,7 +531,7 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
setIntent(intent);
SearchEvent searchEvent = intent.getParcelableExtra(OCFileListFragment.SEARCH_EVENT);
SearchEvent searchEvent = IntentExtensionsKt.getParcelableArgument(intent, OCFileListFragment.SEARCH_EVENT, SearchEvent.class);
if (searchEvent != null) {
if (SearchRemoteOperation.SearchType.PHOTO_SEARCH == searchEvent.getSearchType()) {
Log_OC.d(this, "Switch to photo search fragment");
@ -1076,8 +1080,12 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
syncAndUpdateFolder(false, true);
OCFile startFile = null;
if (getIntent() != null && getIntent().getParcelableExtra(EXTRA_FILE) != null) {
startFile = getIntent().getParcelableExtra(EXTRA_FILE);
if (getIntent() != null) {
OCFile fileArgs = IntentExtensionsKt.getParcelableArgument(getIntent(), EXTRA_FILE, OCFile.class);
if (fileArgs != null) {
startFile = fileArgs;
setFile(startFile);
}
setFile(startFile);
}
@ -1571,7 +1579,8 @@ public class FileDisplayActivity extends FileActivity implements FileFragment.Co
// a new chance to get the mDownloadBinder through
// getFileDownloadBinder() - THIS IS A MESS
OCFileListFragment listOfFiles = getListOfFilesFragment();
if (listOfFiles != null && (getIntent() == null || (getIntent() != null && getIntent().getParcelableExtra(EXTRA_FILE) == null))) {
if (listOfFiles != null && (getIntent() == null || (getIntent() != null &&
IntentExtensionsKt.getParcelableArgument(getIntent(), EXTRA_FILE, OCFile.class) == null))) {
listOfFiles.listDirectory(MainApp.isOnlyOnDevice(), false);
}
Fragment leftFragment = getLeftFragment();

View File

@ -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;

View File

@ -49,7 +49,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager.LayoutParams;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView;
@ -61,6 +60,8 @@ 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;
import com.owncloud.android.databinding.ReceiveExternalFilesBinding;
@ -104,7 +105,6 @@ import java.util.Arrays;
import java.util.Calendar;
import java.util.List;
import java.util.Stack;
import java.util.Vector;
import javax.inject.Inject;
@ -182,7 +182,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);
@ -851,7 +851,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);
}

View File

@ -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
@ -35,6 +34,7 @@ import androidx.activity.result.ActivityResultLauncher
import androidx.activity.result.contract.ActivityResultContracts
import com.nextcloud.client.account.CurrentAccountProvider
import com.nextcloud.client.network.ClientFactory
import com.nextcloud.utils.extensions.getParcelableArgument
import com.owncloud.android.R
import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.lib.common.utils.Log_OC
@ -100,12 +100,7 @@ class RichDocumentsEditorWebView : EditorWebView() {
}
private fun handleRemoteFile(data: Intent) {
val file = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
data.getParcelableExtra(FolderPickerActivity.EXTRA_FILES, OCFile::class.java)
} else {
@Suppress("DEPRECATION")
data.getParcelableExtra(FolderPickerActivity.EXTRA_FILES)
}
val file = FolderPickerActivity.EXTRA_FILES?.let { data.getParcelableArgument(it, OCFile::class.java) }
Thread {
val user = currentAccountProvider?.user

View File

@ -27,6 +27,7 @@ import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.nextcloud.client.account.User
import com.nextcloud.utils.extensions.getParcelableArgument
import com.owncloud.android.R
import com.owncloud.android.ui.dialog.SetupEncryptionDialogFragment
@ -34,7 +35,7 @@ class SetupEncryptionActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val user = intent?.getParcelableExtra("EXTRA_USER") as User?
val user = intent?.getParcelableArgument("EXTRA_USER", User::class.java)
if (user == null) {
Toast.makeText(this, getString(R.string.error_showing_encryption_dialog), Toast.LENGTH_LONG).show()

View File

@ -27,7 +27,6 @@ import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import com.nextcloud.client.account.User;
import com.nextcloud.client.preferences.DarkMode;
import com.nextcloud.java.util.Optional;
import com.owncloud.android.R;
import com.owncloud.android.databinding.ShareActivityBinding;

View File

@ -40,6 +40,7 @@ import android.text.style.StyleSpan;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.nextcloud.android.sso.Constants;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
import com.owncloud.android.databinding.DialogSsoGrantPermissionBinding;
@ -92,13 +93,16 @@ public class SsoGrantPermissionActivity extends BaseActivity {
if (callingActivity != null) {
packageName = callingActivity.getPackageName();
final String appName = getAppNameForPackage(packageName);
account = getIntent().getParcelableExtra(NEXTCLOUD_FILES_ACCOUNT);
account = IntentExtensionsKt.getParcelableArgument(getIntent(), NEXTCLOUD_FILES_ACCOUNT, Account.class);
if (account != null) {
final SpannableStringBuilder dialogText = makeSpecialPartsBold(
getString(R.string.single_sign_on_request_token, appName, account.name),
appName,
account.name);
binding.permissionText.setText(dialogText);
}
final SpannableStringBuilder dialogText = makeSpecialPartsBold(
getString(R.string.single_sign_on_request_token, appName, account.name),
appName,
account.name);
binding.permissionText.setText(dialogText);
try {
if (packageName != null) {
Drawable appIcon = getPackageManager().getApplicationIcon(packageName);

View File

@ -45,6 +45,7 @@ import com.nextcloud.client.jobs.MediaFoldersDetectionWork
import com.nextcloud.client.jobs.NotificationWork
import com.nextcloud.client.preferences.AppPreferences
import com.nextcloud.client.preferences.SubFolderRule
import com.nextcloud.utils.extensions.getParcelableArgument
import com.owncloud.android.BuildConfig
import com.owncloud.android.MainApp
import com.owncloud.android.R
@ -630,8 +631,10 @@ class SyncedFoldersActivity :
if (requestCode == SyncedFolderPreferencesDialogFragment.REQUEST_CODE__SELECT_REMOTE_FOLDER &&
resultCode == RESULT_OK && syncedFolderPreferencesDialogFragment != null
) {
val chosenFolder: OCFile = data!!.getParcelableExtra(FolderPickerActivity.EXTRA_FOLDER)!!
syncedFolderPreferencesDialogFragment!!.setRemoteFolderSummary(chosenFolder.remotePath)
val chosenFolder: OCFile? = FolderPickerActivity.EXTRA_FOLDER?.let {
data?.getParcelableArgument(it, OCFile::class.java)
}
syncedFolderPreferencesDialogFragment?.setRemoteFolderSummary(chosenFolder?.remotePath)
} else if (
requestCode == SyncedFolderPreferencesDialogFragment.REQUEST_CODE__SELECT_LOCAL_FOLDER &&
resultCode == RESULT_OK && syncedFolderPreferencesDialogFragment != null

View File

@ -53,7 +53,6 @@ import javax.inject.Inject;
import androidx.annotation.NonNull;
import androidx.annotation.StringRes;
import androidx.annotation.VisibleForTesting;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.widget.AppCompatSpinner;

View File

@ -47,6 +47,7 @@ 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;
@ -106,16 +107,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);

View File

@ -80,7 +80,6 @@ import java.util.List;
import java.util.Locale;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
/**

View File

@ -54,7 +54,6 @@ import java.util.concurrent.Executors;
import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
/**

View File

@ -45,7 +45,6 @@ import com.owncloud.android.utils.DisplayUtils;
import com.owncloud.android.utils.theme.ViewThemeUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import androidx.annotation.NonNull;

View File

@ -48,7 +48,6 @@ import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.RecyclerView;
import static com.owncloud.android.datamodel.OCFile.PATH_SEPARATOR;

View File

@ -21,7 +21,6 @@
*/
package com.owncloud.android.ui.asynctasks;
import android.accounts.Account;
import android.os.AsyncTask;
import com.nextcloud.client.account.User;

View File

@ -33,7 +33,6 @@ import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import com.google.android.material.button.MaterialButton;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -42,6 +41,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;
@ -168,7 +168,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());

View File

@ -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) {

View File

@ -26,13 +26,13 @@ import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
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 +133,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();
}

View File

@ -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)

View File

@ -39,6 +39,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 +110,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 +125,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());

View File

@ -31,6 +31,7 @@ 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.lib.resources.shares.OCShare;
@ -90,7 +91,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();

View File

@ -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)

View File

@ -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)

View File

@ -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;

View File

@ -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)

View File

@ -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)
}

View File

@ -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)

View File

@ -25,7 +25,6 @@ import android.os.Parcelable;
import com.nextcloud.client.preferences.SubFolderRule;
import com.owncloud.android.datamodel.MediaFolderType;
import com.owncloud.android.datamodel.SyncedFolder;
import com.owncloud.android.datamodel.SyncedFolderDisplayItem;
import com.owncloud.android.files.services.FileUploader;
import com.owncloud.android.files.services.NameCollisionPolicy;

View File

@ -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,11 @@ 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;
Bundle bundle = getArguments();
if (bundle != null) {
item = BundleExtensionsKt.getParcelableArgument(bundle, "feature", FeatureItem.class);
}
}
@Nullable

View File

@ -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);

View File

@ -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);

View File

@ -46,6 +46,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.BundleExtensionsKt;
import com.owncloud.android.R;
import com.owncloud.android.databinding.FileDetailsSharingFragmentBinding;
import com.owncloud.android.datamodel.FileDataStorageManager;
@ -122,13 +123,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);
}
}

View File

@ -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));
}
}
/**

View File

@ -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;
@ -56,7 +57,6 @@ import javax.inject.Inject;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentActivity;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@ -315,8 +315,9 @@ 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 (requestCode == SELECT_LOCATION_REQUEST_CODE && data != null && FolderPickerActivity.EXTRA_FOLDER != null) {
OCFile chosenFolder = IntentExtensionsKt.getParcelableArgument(data, FolderPickerActivity.EXTRA_FOLDER, OCFile.class);
if (chosenFolder != null) {
preferences.setLastSelectedMediaFolder(chosenFolder.getRemotePath());
searchAndDisplayAfterChangingFolder();

View File

@ -67,6 +67,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;
@ -253,9 +255,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, SEARCH_EVENT, SearchEvent.class);
mFile = BundleExtensionsKt.getParcelableArgument(savedInstanceState, KEY_FILE, OCFile.class);
}
searchFragment = currentSearchType != null && isSearchEventSet(searchEvent);
@ -269,8 +271,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, SEARCH_EVENT, SearchEvent.class) != null) {
searchEvent = IntentExtensionsKt.getParcelableArgument(intent, SEARCH_EVENT, SearchEvent.class);
}
if (isSearchEventSet(searchEvent)) {
@ -313,12 +315,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 +375,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 +399,7 @@ public class OCFileListFragment extends ExtendedListFragment implements
if (getArguments() == null) {
searchEvent = null;
} else {
searchEvent = getArguments().getParcelable(OCFileListFragment.SEARCH_EVENT);
searchEvent = BundleExtensionsKt.getParcelableArgument(getArguments(), SEARCH_EVENT, SearchEvent.class);
}
}
prepareCurrentSearch(searchEvent);
@ -1618,7 +1621,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);
}
}

View File

@ -45,6 +45,7 @@ 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;
@ -194,8 +195,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 +205,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();

View File

@ -26,7 +26,6 @@ import android.content.Context
import android.widget.ArrayAdapter
import com.afollestad.sectionedrecyclerview.SectionedViewHolder
import com.owncloud.android.databinding.BackupListItemHeaderBinding
import java.util.ArrayList
class BackupListHeaderViewHolder(
val binding: BackupListItemHeaderBinding,

View File

@ -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 {

View File

@ -39,6 +39,7 @@ import com.nextcloud.client.di.Injectable;
import com.nextcloud.client.editimage.EditImageActivity;
import com.nextcloud.client.preferences.AppPreferences;
import com.nextcloud.java.util.Optional;
import com.nextcloud.utils.extensions.IntentExtensionsKt;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.FileDataStorageManager;
@ -123,7 +124,7 @@ public class PreviewImageActivity extends FileActivity implements
setContentView(R.layout.preview_image_activity);
livePhotoFile = getIntent().getParcelableExtra(EXTRA_LIVE_PHOTO_FILE);
livePhotoFile = IntentExtensionsKt.getParcelableArgument(getIntent(), EXTRA_LIVE_PHOTO_FILE, OCFile.class);
// Navigation Drawer
setupDrawer();
@ -161,7 +162,7 @@ public class PreviewImageActivity extends FileActivity implements
private void initViewPager(User user) {
// virtual folder
final Serializable virtualFolderType = getIntent().getSerializableExtra(EXTRA_VIRTUAL_TYPE);
final Serializable virtualFolderType = IntentExtensionsKt.getSerializableArgument(getIntent(), EXTRA_VIRTUAL_TYPE, Serializable.class);
if (virtualFolderType != null && virtualFolderType != VirtualFolderType.NONE) {
VirtualFolderType type = (VirtualFolderType) virtualFolderType;

View File

@ -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;
@ -175,7 +176,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 +243,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 {

View File

@ -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;
@ -94,8 +95,6 @@ import androidx.core.graphics.drawable.DrawableCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
/**
* This fragment shows a preview of a downloaded media file (audio or video).
@ -193,9 +192,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 +245,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);
}

View File

@ -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();

View File

@ -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) {

View File

@ -67,7 +67,6 @@ import com.nextcloud.client.account.CurrentAccountProvider;
import com.nextcloud.client.account.User;
import com.nextcloud.client.network.ClientFactory;
import com.nextcloud.client.preferences.AppPreferences;
import com.nextcloud.client.preferences.DarkMode;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.ArbitraryDataProvider;

View File

@ -33,7 +33,6 @@ import com.owncloud.android.MainApp;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.FileDataStorageManager;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.datamodel.SyncedFolder;
import com.owncloud.android.lib.common.utils.Log_OC;
import com.owncloud.android.lib.resources.files.model.RemoteFile;
import com.owncloud.android.lib.resources.shares.ShareeUser;
@ -421,7 +420,13 @@ public final class FileStorageUtils {
return false;
}
for (File f : sourceFolder.listFiles()) {
File[] listFiles = sourceFolder.listFiles();
if (listFiles == null) {
return false;
}
for (File f : listFiles) {
if (f.isDirectory()) {
if (!copyDirs(f, new File(targetFolder, f.getName()))) {
return false;
@ -436,7 +441,13 @@ public final class FileStorageUtils {
public static void deleteRecursively(File file, FileDataStorageManager storageManager) {
if (file.isDirectory()) {
for (File child : file.listFiles()) {
File[] listFiles = file.listFiles();
if (listFiles == null) {
return;
}
for (File child : listFiles) {
deleteRecursively(child, storageManager);
}
}
@ -447,11 +458,19 @@ public final class FileStorageUtils {
public static boolean deleteRecursive(File file) {
boolean res = true;
if (file.isDirectory()) {
for (File c : file.listFiles()) {
File[] listFiles = file.listFiles();
if (listFiles == null) {
return true;
}
for (File c : listFiles) {
res = deleteRecursive(c) && res;
}
}
return file.delete() && res;
}

View File

@ -24,14 +24,11 @@ import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.net.Uri;
import android.util.DisplayMetrics;
import android.util.Log;
import android.webkit.MimeTypeMap;
import com.nextcloud.android.common.ui.theme.utils.ColorRole;
import com.owncloud.android.R;
import com.owncloud.android.datamodel.OCFile;
import com.owncloud.android.lib.common.network.WebdavEntry;
import com.owncloud.android.lib.resources.files.model.ServerFileInterface;
import com.owncloud.android.utils.theme.ViewThemeUtils;
@ -45,7 +42,6 @@ import java.util.Locale;
import java.util.Map;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
/**
* <p>Helper class for detecting the right icon for a file or folder,

View File

@ -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) {

View File

@ -23,7 +23,6 @@
package com.owncloud.android.utils.theme;
import android.content.Context;
import android.content.res.Configuration;
import com.owncloud.android.MainApp;
import com.owncloud.android.R;
@ -34,8 +33,10 @@ import com.owncloud.android.lib.resources.status.OCCapability;
*/
public final class ThemeUtils {
public boolean themingEnabled(Context context) {
return CapabilityUtils.getCapability(context).getServerColor() != null
&& !CapabilityUtils.getCapability(context).getServerColor().isEmpty();
OCCapability capability = CapabilityUtils.getCapability(context);
return capability.getServerColor() != null
&& !capability.getServerColor().isEmpty();
}
public String getDefaultDisplayNameForRootFolder(Context context) {

View File

@ -20,7 +20,6 @@
-->
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"

View File

@ -24,7 +24,6 @@ package com.owncloud.android.ui.activity;
import com.nextcloud.client.preferences.SubFolderRule;
import com.owncloud.android.datamodel.MediaFolderType;
import com.owncloud.android.datamodel.SyncedFolder;
import com.owncloud.android.datamodel.SyncedFolderDisplayItem;
import com.owncloud.android.files.services.FileUploader;
import com.owncloud.android.files.services.NameCollisionPolicy;

View File

@ -1,2 +1,2 @@
DO NOT TOUCH; GENERATED BY DRONE
<span class="mdl-layout-title">Lint Report: 3 errors and 70 warnings</span>
<span class="mdl-layout-title">Lint Report: 3 errors and 69 warnings</span>