Skip to content

Commit 3154507

Browse files
Merge pull request #17004 from nextcloud/fix/oc-file-search-task-data-state
fix(oc-search-task): data consistency
2 parents 1b45bdf + 25c5af3 commit 3154507

6 files changed

Lines changed: 41 additions & 12 deletions

File tree

app/src/main/java/com/nextcloud/utils/extensions/RemoteFileExtensions.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ package com.nextcloud.utils.extensions
99

1010
import com.nextcloud.utils.TimeConstants
1111
import com.owncloud.android.lib.resources.files.model.RemoteFile
12+
import com.owncloud.android.lib.resources.shares.ShareeUser
13+
import com.owncloud.android.lib.resources.tags.Tag
1214
import com.owncloud.android.utils.FileUtil
1315
import com.owncloud.android.utils.MimeTypeUtil
1416

@@ -27,6 +29,14 @@ fun RemoteFile.isSame(path: String?): Boolean {
2729
this.areImageDimensionsSame(path)
2830
}
2931

32+
fun RemoteFile.sharedViaLink(): Boolean = sharees?.any { it.shareType?.isLink == true } ?: false
33+
34+
fun RemoteFile.sharedWithSharee(): Boolean = sharees?.isNotEmpty() ?: false
35+
36+
fun RemoteFile.getShareeList(): List<ShareeUser> = sharees?.toList() ?: emptyList()
37+
38+
fun RemoteFile.tags(): List<Tag> = tags?.mapNotNull { it } ?: emptyList()
39+
3040
@Suppress("ReturnCount")
3141
private fun RemoteFile.areImageDimensionsSame(path: String): Boolean {
3242
if (!MimeTypeUtil.isImage(mimeType)) {

app/src/main/java/com/owncloud/android/ui/adapter/OCFileListDelegate.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -414,7 +414,7 @@ class OCFileListDelegate(
414414
if (showShareAvatar) null else R.drawable.shared_via_users to R.string.shared_icon_shared
415415
}
416416

417-
file.isSharedViaLink -> R.drawable.shared_via_link to R.string.shared_icon_shared_via_link
417+
file.isShared || file.isSharedViaLink -> R.drawable.shared_via_link to R.string.shared_icon_shared_via_link
418418

419419
else -> R.drawable.ic_unshared to R.string.shared_icon_share
420420
}

app/src/main/java/com/owncloud/android/ui/fragment/OCFileListSearchTask.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ class OCFileListSearchTask(
202202

203203
for (obj in data) {
204204
try {
205-
val remoteFile = obj as? RemoteFile ?: continue
205+
val remoteFile = (obj as? RemoteFile) ?: continue
206206
var ocFile = FileStorageUtils.fillOCFile(remoteFile)
207207
FileStorageUtils.searchForLocalFileInDefaultPath(ocFile, currentUser.accountName)
208208
resolveLocalFileId(ocFile)

app/src/main/java/com/owncloud/android/ui/fragment/SharedListFragment.kt

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,16 +83,12 @@ class SharedListFragment :
8383
etag = it
8484
}
8585
}
86-
val file = FileStorageUtils.fillOCFile(remoteFile)
86+
val file = FileStorageUtils.fillOCFile(remoteFile).apply {
87+
fileId = partialFile.fileId
88+
parentId = partialFile.parentId
89+
}
8790
FileStorageUtils.searchForLocalFileInDefaultPath(file, user.accountName)
8891
val savedFile = mContainerActivity.storageManager.saveFileWithParent(file, context)
89-
savedFile.apply {
90-
ownerId = partialFile.ownerId
91-
ownerDisplayName = partialFile.ownerDisplayName
92-
isSharedViaLink = partialFile.isSharedViaLink
93-
isSharedWithSharee = partialFile.isSharedWithSharee
94-
sharees = partialFile.sharees
95-
}
9692
savedFile
9793
} else {
9894
logger.e(SHARED_TAG, "Error fetching file")

app/src/main/java/com/owncloud/android/utils/FileStorageUtils.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,16 @@
2121
import android.webkit.MimeTypeMap;
2222

2323
import com.nextcloud.client.preferences.SubFolderRule;
24+
import com.nextcloud.utils.extensions.RemoteFileExtensionsKt;
2425
import com.nextcloud.utils.extensions.StringConstants;
2526
import com.owncloud.android.MainApp;
2627
import com.owncloud.android.R;
2728
import com.owncloud.android.datamodel.FileDataStorageManager;
2829
import com.owncloud.android.datamodel.OCFile;
2930
import com.owncloud.android.lib.common.utils.Log_OC;
3031
import com.owncloud.android.lib.resources.files.model.RemoteFile;
32+
import com.owncloud.android.lib.resources.shares.ShareType;
33+
import com.owncloud.android.lib.resources.shares.ShareeUser;
3134
import com.owncloud.android.ui.helpers.FileOperationsHelper;
3235

3336
import org.apache.commons.io.FilenameUtils;
@@ -349,7 +352,11 @@ public static OCFile fillOCFile(RemoteFile remote) {
349352
file.setOwnerId(remote.getOwnerId());
350353
file.setOwnerDisplayName(remote.getOwnerDisplayName());
351354
file.setNote(remote.getNote());
352-
file.setSharees(new ArrayList<>(Arrays.asList(remote.getSharees())));
355+
356+
file.setSharees(RemoteFileExtensionsKt.getShareeList(remote));
357+
file.setSharedWithSharee(RemoteFileExtensionsKt.sharedWithSharee(remote));
358+
file.setSharedViaLink(RemoteFileExtensionsKt.sharedViaLink(remote));
359+
353360
file.setRichWorkspace(remote.getRichWorkspace());
354361
file.setLocked(remote.isLocked());
355362
file.setLockType(remote.getLockType());
@@ -359,7 +366,7 @@ public static OCFile fillOCFile(RemoteFile remote) {
359366
file.setLockTimestamp(remote.getLockTimestamp());
360367
file.setLockTimeout(remote.getLockTimeout());
361368
file.setLockToken(remote.getLockToken());
362-
file.setTags(new ArrayList<>(Arrays.asList(remote.getTags())));
369+
file.setTags(RemoteFileExtensionsKt.tags(remote));
363370
file.setImageDimension(remote.getImageDimension());
364371
file.setGeoLocation(remote.getGeoLocation());
365372
file.setLivePhoto(remote.getLivePhoto());

gradle/verification-metadata.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21168,6 +21168,14 @@
2116821168
<sha256 value="2f00698736587390e30f3ffb5ed9e801c1f0e80f1304590488624be969186483" origin="Generated by Gradle" reason="Artifact is not signed"/>
2116921169
</artifact>
2117021170
</component>
21171+
<component group="com.github.nextcloud" name="android-library" version="445f4b7b3d">
21172+
<artifact name="android-library-445f4b7b3d.aar">
21173+
<sha256 value="a7cdfc02c68f723b83cd262e6e6447bfe8453aac3084c57fb898208e069459ea" origin="Generated by Gradle" reason="Artifact is not signed"/>
21174+
</artifact>
21175+
<artifact name="android-library-445f4b7b3d.module">
21176+
<sha256 value="173b3a1cc7e6d075a0f9f1c114fbcad642c19bbb43e10c068e2be625545b7be3" origin="Generated by Gradle" reason="Artifact is not signed"/>
21177+
</artifact>
21178+
</component>
2117121179
<component group="com.github.nextcloud" name="android-library" version="451cddeba122ff4d17dc8f88feb2fd7589f77567">
2117221180
<artifact name="android-library-451cddeba122ff4d17dc8f88feb2fd7589f77567.aar">
2117321181
<sha256 value="c253a126ca3c32dd5b373ab1c64668e4603305b3113b052fc0fc5e3c833a913c" origin="Generated by Gradle" reason="Artifact is not signed"/>
@@ -21688,6 +21696,14 @@
2168821696
<sha256 value="66afb9f2eea39427f6f03c14c5b82ca240157e22b8b2a764f0a7c8ad87cb2d3e" origin="Generated by Gradle" reason="Artifact is not signed"/>
2168921697
</artifact>
2169021698
</component>
21699+
<component group="com.github.nextcloud" name="android-library" version="bf4287e5a6">
21700+
<artifact name="android-library-bf4287e5a6.aar">
21701+
<sha256 value="c023859b682b37feee6182665e2af29faa3a903f9d28378af5f5e07c1a51b812" origin="Generated by Gradle" reason="Artifact is not signed"/>
21702+
</artifact>
21703+
<artifact name="android-library-bf4287e5a6.module">
21704+
<sha256 value="834b3f515013a9d5ed70c69645e92b7d4a323a6349141672001efbc3c6f4b20f" origin="Generated by Gradle" reason="Artifact is not signed"/>
21705+
</artifact>
21706+
</component>
2169121707
<component group="com.github.nextcloud" name="android-library" version="bf5fa888cf51896a20297818e04b3e59be4c4f93">
2169221708
<artifact name="android-library-bf5fa888cf51896a20297818e04b3e59be4c4f93.aar">
2169321709
<sha256 value="e22b38a2e7e9ec9461af2005c573f7c3bf097651f0bda27367fb355f82ef217d" origin="Generated by Gradle"/>

0 commit comments

Comments
 (0)