Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import android.accounts.Account
import android.os.Parcel
import android.os.Parcelable
import com.owncloud.android.lib.common.OwnCloudAccount
import com.nextcloud.utils.extensions.readParcelableCompat

/**
* This class represents normal user logged into the Nextcloud server.
Expand All @@ -30,9 +31,9 @@ internal data class RegisteredUser(
}

private constructor(source: Parcel) : this(
source.readParcelable<Account>(Account::class.java.classLoader) as Account,
source.readParcelable<OwnCloudAccount>(OwnCloudAccount::class.java.classLoader) as OwnCloudAccount,
source.readParcelable<Server>(Server::class.java.classLoader) as Server
source.readParcelableCompat<Account>(Account::class.java.classLoader) as Account,
source.readParcelableCompat<OwnCloudAccount>(OwnCloudAccount::class.java.classLoader) as OwnCloudAccount,
source.readParcelableCompat<Server>(Server::class.java.classLoader) as Server
)

override val isAnonymous = false
Expand Down
6 changes: 4 additions & 2 deletions app/src/main/java/com/nextcloud/client/account/Server.kt
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ package com.nextcloud.client.account

import android.os.Parcel
import android.os.Parcelable
import com.nextcloud.utils.extensions.readParcelableCompat
import com.nextcloud.utils.extensions.readSerializableCompat
import com.owncloud.android.lib.resources.status.OwnCloudVersion
import java.net.URI

Expand All @@ -19,8 +21,8 @@ import java.net.URI
data class Server(val uri: URI, val version: OwnCloudVersion) : Parcelable {

constructor(source: Parcel) : this(
source.readSerializable() as URI,
source.readParcelable<Parcelable>(OwnCloudVersion::class.java.classLoader) as OwnCloudVersion
source.readSerializableCompat<URI>(URI::class.java.classLoader) as URI,
source.readParcelableCompat<OwnCloudVersion>(OwnCloudVersion::class.java.classLoader) as OwnCloudVersion
)

override fun describeContents() = 0
Expand Down
20 changes: 11 additions & 9 deletions app/src/main/java/com/nextcloud/client/files/Request.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@ import android.os.Parcelable
import com.nextcloud.client.account.User
import com.nextcloud.client.jobs.upload.PostUploadAction
import com.nextcloud.client.jobs.upload.UploadTrigger
import com.nextcloud.utils.extensions.readParcelableCompat
import com.nextcloud.utils.extensions.readSerializableCompat
import com.owncloud.android.datamodel.OCFile
import com.owncloud.android.datamodel.UploadsStorageManager
import com.owncloud.android.db.OCUpload
Expand Down Expand Up @@ -54,10 +56,10 @@ class DownloadRequest internal constructor(
) : this(user, file, UUID.randomUUID(), Direction.DOWNLOAD, test)

constructor(parcel: Parcel) : this(
user = parcel.readParcelable<User>(User::class.java.classLoader) as User,
file = parcel.readParcelable<OCFile>(OCFile::class.java.classLoader) as OCFile,
uuid = parcel.readSerializable() as UUID,
type = parcel.readSerializable() as Direction,
user = parcel.readParcelableCompat<User>(User::class.java.classLoader) as User,
file = parcel.readParcelableCompat<OCFile>(OCFile::class.java.classLoader) as OCFile,
uuid = parcel.readSerializableCompat<UUID>(UUID::class.java.classLoader) as UUID,
type = parcel.readSerializableCompat<Direction>(Direction::class.java.classLoader) as Direction,
test = parcel.readInt() != 0
)

Expand Down Expand Up @@ -110,11 +112,11 @@ class UploadRequest internal constructor(
) : this(user, upload, false)

constructor(parcel: Parcel) : this(
user = parcel.readParcelable<User>(User::class.java.classLoader) as User,
file = parcel.readParcelable<OCFile>(OCFile::class.java.classLoader) as OCFile,
upload = parcel.readParcelable<OCUpload>(OCUpload::class.java.classLoader) as OCUpload,
uuid = parcel.readSerializable() as UUID,
type = parcel.readSerializable() as Direction,
user = parcel.readParcelableCompat<User>(User::class.java.classLoader) as User,
file = parcel.readParcelableCompat<OCFile>(OCFile::class.java.classLoader) as OCFile,
upload = parcel.readParcelableCompat<OCUpload>(OCUpload::class.java.classLoader) as OCUpload,
uuid = parcel.readSerializableCompat<UUID>(UUID::class.java.classLoader) as UUID,
type = parcel.readSerializableCompat<Direction>(Direction::class.java.classLoader) as Direction,
test = parcel.readInt() != 0
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ package com.nextcloud.utils.extensions
import android.os.Parcel
import android.os.Parcelable
import androidx.core.os.ParcelCompat
import java.io.Serializable

inline fun <reified T : Parcelable> Parcel?.readParcelableCompat(classLoader: ClassLoader?): T? {
if (this == null) {
Expand All @@ -18,3 +19,11 @@ inline fun <reified T : Parcelable> Parcel?.readParcelableCompat(classLoader: Cl

return ParcelCompat.readParcelable(this, classLoader, T::class.java)
}

inline fun <reified T : Serializable> Parcel?.readSerializableCompat(classLoader: ClassLoader?): T? {
if (this == null) {
return null
}

return ParcelCompat.readSerializable(this, classLoader, T::class.java) as T?
}
7 changes: 6 additions & 1 deletion app/src/main/java/com/owncloud/android/datamodel/OCFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.FileProvider;
import androidx.core.os.ParcelCompat;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import third_parties.daveKoeller.AlphanumComparator;

Expand Down Expand Up @@ -199,7 +200,11 @@ private OCFile(Parcel source) {
encrypted = source.readInt() == 1;
ownerId = source.readString();
ownerDisplayName = source.readString();
mountType = (WebdavEntry.MountType) source.readSerializable();
mountType = (WebdavEntry.MountType) ParcelCompat.readSerializable(
source,
WebdavEntry.MountType.class.getClassLoader(),
java.io.Serializable.class
);
richWorkspace = source.readString();
previewAvailable = source.readInt() == 1;
firstShareTimestamp = source.readLong();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ data class ConflictDialogData(
parcel.readString() ?: "",
parcel.readString() ?: "",
checkboxData = Pair(
parcel.readParcelableCompat(ConflictFileData::class.java.classLoader) ?: ConflictFileData("", "", ""),
parcel.readParcelableCompat(ConflictFileData::class.java.classLoader) ?: ConflictFileData("", "", "")
parcel.readParcelableCompat<ConflictFileData>(ConflictFileData::class.java.classLoader) ?: ConflictFileData("", "", ""),
parcel.readParcelableCompat<ConflictFileData>(ConflictFileData::class.java.classLoader) ?: ConflictFileData("", "", "")
)
)

Expand Down
Loading