Skip to content

Commit da31217

Browse files
committed
wip
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent e7d97b2 commit da31217

3 files changed

Lines changed: 26 additions & 16 deletions

File tree

app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@
8080
import java.util.Locale;
8181
import java.util.Set;
8282
import java.util.UUID;
83-
import java.util.stream.IntStream;
8483

8584
import androidx.annotation.NonNull;
8685
import androidx.annotation.Nullable;
@@ -1126,18 +1125,17 @@ public void removeFile(@NonNull OCFile file) {
11261125

11271126
@SuppressLint("NotifyDataSetChanged")
11281127
public void updateFile(@NonNull OCFile updatedFile) {
1129-
long fileId = updatedFile.getFileId();
1128+
int allIndex = helper.indexOfSameRemoteFile(mFilesAll, updatedFile);
1129+
if (allIndex != -1) {
1130+
mFilesAll.set(allIndex, updatedFile);
1131+
}
11301132

1131-
IntStream.range(0, mFilesAll.size())
1132-
.filter(i -> mFilesAll.get(i).getFileId() == fileId)
1133-
.findFirst()
1134-
.ifPresent(i -> mFilesAll.set(i, updatedFile));
1133+
int oldIndex = helper.indexOfSameRemoteFile(mFiles, updatedFile);
1134+
if (oldIndex == -1) {
1135+
return;
1136+
}
11351137

1136-
int oldIndex = IntStream.range(0, mFiles.size())
1137-
.filter(i -> mFiles.get(i).getFileId() == fileId)
1138-
.findFirst()
1139-
.orElse(-1);
1140-
if (oldIndex == -1) return;
1138+
long previousItemId = mFiles.get(oldIndex).getFileId();
11411139

11421140
mFiles.remove(oldIndex);
11431141
mFiles.add(updatedFile);
@@ -1161,10 +1159,12 @@ public void updateFile(@NonNull OCFile updatedFile) {
11611159
int oldAdapterPos = oldIndex + headerOffset;
11621160
int newAdapterPos = newIndex + headerOffset;
11631161

1164-
if (oldAdapterPos != newAdapterPos) {
1165-
notifyItemMoved(oldAdapterPos, newAdapterPos);
1162+
if (oldAdapterPos == newAdapterPos && previousItemId == updatedFile.getFileId()) {
1163+
notifyItemChanged(newAdapterPos);
1164+
} else {
1165+
notifyItemRemoved(oldAdapterPos);
1166+
notifyItemInserted(newAdapterPos);
11661167
}
1167-
notifyItemChanged(newAdapterPos);
11681168

11691169
if (shouldShowRecommendedFiles() && recommendedFilesAdapter != null && updatedFile.isRecommendedFile()) {
11701170
int pos = recommendedFilesAdapter.getItemPosition(updatedFile);

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

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,18 @@ class OCFileListAdapterHelper {
196196
}
197197
}
198198

199+
fun indexOfSameRemoteFile(files: List<OCFile>, target: OCFile): Int =
200+
files.indexOfFirst { isSameRemoteFile(it, target) }
201+
202+
fun isSameRemoteFile(file: OCFile, target: OCFile): Boolean {
203+
if (file.fileId == target.fileId) {
204+
return true
205+
}
206+
207+
val remoteId = file.remoteId ?: return false
208+
return remoteId == target.remoteId
209+
}
210+
199211
fun cleanup() {
200212
job?.cancel()
201213
job = null

app/src/main/java/com/owncloud/android/ui/helpers/FileOperationsHelper.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -962,8 +962,6 @@ public void renameFile(OCFile file, String newFilename) {
962962
service.putExtra(OperationsService.EXTRA_REMOTE_PATH, file.getRemotePath());
963963
service.putExtra(OperationsService.EXTRA_NEWNAME, newFilename);
964964
mWaitingForOpId = fileActivity.getOperationsServiceBinder().queueNewOperation(service);
965-
966-
fileActivity.refreshList();
967965
}
968966

969967

0 commit comments

Comments
 (0)