diff --git a/app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt b/app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt index 114849b5a831..22758d6140a2 100644 --- a/app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt +++ b/app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt @@ -9,6 +9,8 @@ package com.nextcloud.utils.extensions import com.nextcloud.utils.TimeConstants import com.owncloud.android.lib.resources.files.model.RemoteFile +import com.owncloud.android.lib.resources.shares.ShareeUser +import com.owncloud.android.lib.resources.tags.Tag import com.owncloud.android.utils.FileUtil import com.owncloud.android.utils.MimeTypeUtil @@ -27,6 +29,14 @@ fun RemoteFile.isSame(path: String?): Boolean { this.areImageDimensionsSame(path) } +fun RemoteFile.sharedViaLink(): Boolean = sharees?.any { it.shareType?.isLink == true } ?: false + +fun RemoteFile.sharedWithSharee(): Boolean = sharees?.isNotEmpty() ?: false + +fun RemoteFile.getShareeList(): List = sharees?.toList() ?: emptyList() + +fun RemoteFile.tags(): List = tags?.mapNotNull { it } ?: emptyList() + @Suppress("ReturnCount") private fun RemoteFile.areImageDimensionsSame(path: String): Boolean { if (!MimeTypeUtil.isImage(mimeType)) { diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt index 65bc90380aaf..3f607b3e6b0b 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt @@ -414,7 +414,7 @@ class OCFileListDelegate( if (showShareAvatar) null else R.drawable.shared_via_users to R.string.shared_icon_shared } - file.isSharedViaLink -> R.drawable.shared_via_link to R.string.shared_icon_shared_via_link + file.isShared || file.isSharedViaLink -> R.drawable.shared_via_link to R.string.shared_icon_shared_via_link else -> R.drawable.ic_unshared to R.string.shared_icon_share } diff --git a/app/src/main/java/com/owncloud/android/ui/asynctasks/GallerySearchTask.kt b/app/src/main/java/com/owncloud/android/ui/asynctasks/GallerySearchTask.kt index d3d4a0660875..b75f9374dc47 100644 --- a/app/src/main/java/com/owncloud/android/ui/asynctasks/GallerySearchTask.kt +++ b/app/src/main/java/com/owncloud/android/ui/asynctasks/GallerySearchTask.kt @@ -70,10 +70,11 @@ class GallerySearchTask( ocCapability: com.owncloud.android.lib.resources.status.OCCapability ): SearchRemoteOperation = SearchRemoteOperation("", SearchRemoteOperation.SearchType.GALLERY_SEARCH, false, ocCapability).apply { - setLimit(limit) - setEndDate(endDate) + limit = this@GallerySearchTask.limit + endDate = this@GallerySearchTask.endDate + // workaround to keep SearchRemoteOperation functioning correctly even if we don't actively use startDate - setStartDate(0L) + startDate = 0L } private fun logSearchStart() { diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListSearchTask.kt b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListSearchTask.kt index 26a8943b311d..d0e72abf2afa 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListSearchTask.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/OCFileListSearchTask.kt @@ -208,7 +208,7 @@ class OCFileListSearchTask( for (obj in data) { try { - val remoteFile = obj as? RemoteFile ?: continue + val remoteFile = (obj as? RemoteFile) ?: continue var ocFile = FileStorageUtils.fillOCFile(remoteFile) FileStorageUtils.searchForLocalFileInDefaultPath(ocFile, currentUser.accountName) ocFile = storageManager.saveFileWithParent(ocFile, activity) diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/SharedListFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/SharedListFragment.kt index 5e7b26a3b019..30857c9665eb 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/SharedListFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/SharedListFragment.kt @@ -83,16 +83,12 @@ class SharedListFragment : etag = it } } - val file = FileStorageUtils.fillOCFile(remoteFile) + val file = FileStorageUtils.fillOCFile(remoteFile).apply { + fileId = partialFile.fileId + parentId = partialFile.parentId + } FileStorageUtils.searchForLocalFileInDefaultPath(file, user.accountName) val savedFile = mContainerActivity.storageManager.saveFileWithParent(file, context) - savedFile.apply { - ownerId = partialFile.ownerId - ownerDisplayName = partialFile.ownerDisplayName - isSharedViaLink = partialFile.isSharedViaLink - isSharedWithSharee = partialFile.isSharedWithSharee - sharees = partialFile.sharees - } savedFile } else { logger.e(SHARED_TAG, "Error fetching file") diff --git a/app/src/main/java/com/owncloud/android/utils/FileStorageUtils.java b/app/src/main/java/com/owncloud/android/utils/FileStorageUtils.java index 1068358b9bcd..014f4e12d64e 100644 --- a/app/src/main/java/com/owncloud/android/utils/FileStorageUtils.java +++ b/app/src/main/java/com/owncloud/android/utils/FileStorageUtils.java @@ -21,6 +21,7 @@ import android.webkit.MimeTypeMap; import com.nextcloud.client.preferences.SubFolderRule; +import com.nextcloud.utils.extensions.RemoteFileExtensionsKt; import com.nextcloud.utils.extensions.StringConstants; import com.owncloud.android.MainApp; import com.owncloud.android.R; @@ -28,6 +29,8 @@ import com.owncloud.android.datamodel.OCFile; 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.ShareType; +import com.owncloud.android.lib.resources.shares.ShareeUser; import com.owncloud.android.ui.helpers.FileOperationsHelper; import org.apache.commons.io.FilenameUtils; @@ -349,7 +352,11 @@ public static OCFile fillOCFile(RemoteFile remote) { file.setOwnerId(remote.getOwnerId()); file.setOwnerDisplayName(remote.getOwnerDisplayName()); file.setNote(remote.getNote()); - file.setSharees(new ArrayList<>(Arrays.asList(remote.getSharees()))); + + file.setSharees(RemoteFileExtensionsKt.getShareeList(remote)); + file.setSharedWithSharee(RemoteFileExtensionsKt.sharedWithSharee(remote)); + file.setSharedViaLink(RemoteFileExtensionsKt.sharedViaLink(remote)); + file.setRichWorkspace(remote.getRichWorkspace()); file.setLocked(remote.isLocked()); file.setLockType(remote.getLockType()); @@ -359,7 +366,7 @@ public static OCFile fillOCFile(RemoteFile remote) { file.setLockTimestamp(remote.getLockTimestamp()); file.setLockTimeout(remote.getLockTimeout()); file.setLockToken(remote.getLockToken()); - file.setTags(new ArrayList<>(Arrays.asList(remote.getTags()))); + file.setTags(RemoteFileExtensionsKt.tags(remote)); file.setImageDimension(remote.getImageDimension()); file.setGeoLocation(remote.getGeoLocation()); file.setLivePhoto(remote.getLivePhoto()); diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 21cc251dfeda..1a5232190bd7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ androidCommonLibraryVersion = "0.33.2" androidGifDrawableVersion = "1.2.31" androidImageCropperVersion = "4.7.0" -androidLibraryVersion ="1c847678482c739d0b92e27a445d2f5f168f7d33" +androidLibraryVersion ="445f4b7b3d" androidPluginVersion = "9.2.1" androidsvgVersion = "1.4" androidxMediaVersion = "1.5.1" diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index 4ec7b49b5934..5c2938ca0718 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -21168,6 +21168,14 @@ + + + + + + + + @@ -21688,6 +21696,14 @@ + + + + + + + +