Skip to content

Commit 6ff81c4

Browse files
committed
dont change sorting logic
Signed-off-by: alperozturk <[email protected]> # Conflicts: # app/src/main/java/com/owncloud/android/ui/fragment/LocalFileListFragment.java
1 parent c6daedb commit 6ff81c4

File tree

5 files changed

+43
-317
lines changed

5 files changed

+43
-317
lines changed

app/src/androidTest/java/com/nextcloud/utils/FileSortOrderTests.kt

Lines changed: 0 additions & 278 deletions
This file was deleted.

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

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import java.util.List;
4444
import java.util.Locale;
4545
import java.util.Set;
46+
import java.util.concurrent.ExecutorService;
4647
import java.util.concurrent.Executors;
4748

4849
import androidx.annotation.NonNull;
@@ -67,6 +68,7 @@ public class LocalFileListAdapter extends RecyclerView.Adapter<RecyclerView.View
6768
private Set<File> checkedFiles;
6869
private ViewThemeUtils viewThemeUtils;
6970
private boolean isWithinEncryptedFolder;
71+
private final ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
7072

7173
private static final int VIEWTYPE_ITEM = 0;
7274
private static final int VIEWTYPE_FOOTER = 1;
@@ -372,7 +374,7 @@ public void swapDirectory(final File directory) {
372374
mFiles.clear();
373375
mFilesAll.clear();
374376

375-
Executors.newSingleThreadExecutor().execute(() -> {
377+
singleThreadExecutor.execute(() -> {
376378
// Load first page of folders
377379
List<File> firstPage = FileHelper.INSTANCE.listDirectoryEntries(directory, currentOffset, PAGE_SIZE, true);
378380

@@ -442,15 +444,25 @@ private void notifyItemRange(List<File> updatedList) {
442444
});
443445
}
444446

447+
private final Object filesLock = new Object();
448+
445449
@SuppressLint("NotifyDataSetChanged")
446450
public void setSortOrder(FileSortOrder sortOrder) {
447451
localFileListFragmentInterface.setLoading(true);
448-
final Handler uiHandler = new Handler(Looper.getMainLooper());
449-
Executors.newSingleThreadExecutor().execute(() -> {
450-
preferences.setSortOrder(FileSortOrder.Type.localFileListView, sortOrder);
451-
mFiles = sortOrder.sortLocalFiles(mFiles);
452+
singleThreadExecutor.execute(() -> {
453+
List<File> sortedCopy;
454+
synchronized (filesLock) {
455+
sortedCopy = new ArrayList<>(mFiles);
456+
}
457+
458+
sortedCopy = sortOrder.sortLocalFiles(sortedCopy);
452459

453-
uiHandler.post(() -> {
460+
List<File> finalSortedCopy = sortedCopy;
461+
new Handler(Looper.getMainLooper()).post(() -> {
462+
synchronized (filesLock) {
463+
mFiles = finalSortedCopy;
464+
mFilesAll = new ArrayList<>(finalSortedCopy);
465+
}
454466
notifyDataSetChanged();
455467
localFileListFragmentInterface.setLoading(false);
456468
});
@@ -591,4 +603,8 @@ public void setFiles(List<File> newFiles) {
591603
notifyDataSetChanged();
592604
localFileListFragmentInterface.setLoading(false);
593605
}
606+
607+
public void cleanup() {
608+
singleThreadExecutor.shutdown();
609+
}
594610
}

app/src/main/java/com/owncloud/android/utils/FileSortOrderByDate.kt

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,10 @@ class FileSortOrderByDate(name: String, ascending: Boolean) : FileSortOrder(name
2626
favoritesFirst: Boolean
2727
): MutableList<OCFile> {
2828
val multiplier = if (isAscending) 1 else -1
29-
val copy = files.toMutableList()
30-
copy.sortWith { o1: OCFile, o2: OCFile ->
29+
files.sortWith { o1: OCFile, o2: OCFile ->
3130
multiplier * o1.modificationTimestamp.compareTo(o2.modificationTimestamp)
3231
}
33-
return super.sortCloudFiles(copy, foldersBeforeFiles, favoritesFirst)
32+
return super.sortCloudFiles(files, foldersBeforeFiles, favoritesFirst)
3433
}
3534

3635
/**
@@ -40,11 +39,10 @@ class FileSortOrderByDate(name: String, ascending: Boolean) : FileSortOrder(name
4039
*/
4140
override fun sortTrashbinFiles(files: MutableList<TrashbinFile>): List<TrashbinFile> {
4241
val multiplier = if (isAscending) 1 else -1
43-
val copy = files.toMutableList()
44-
copy.sortWith { o1: TrashbinFile, o2: TrashbinFile ->
42+
files.sortWith { o1: TrashbinFile, o2: TrashbinFile ->
4543
multiplier * o1.deletionTimestamp.compareTo(o2.deletionTimestamp)
4644
}
47-
return super.sortTrashbinFiles(copy)
45+
return super.sortTrashbinFiles(files)
4846
}
4947

5048
/**
@@ -54,10 +52,9 @@ class FileSortOrderByDate(name: String, ascending: Boolean) : FileSortOrder(name
5452
*/
5553
override fun sortLocalFiles(files: MutableList<File>): List<File> {
5654
val multiplier = if (isAscending) 1 else -1
57-
val copy = files.toMutableList()
58-
copy.sortWith { o1: File, o2: File ->
55+
files.sortWith { o1: File, o2: File ->
5956
multiplier * o1.lastModified().compareTo(o2.lastModified())
6057
}
61-
return copy
58+
return files
6259
}
6360
}

0 commit comments

Comments
 (0)