diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-22 11:39:34 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-22 11:39:34 +0200 |
| commit | 1ffa52946d8de76806b0b467ccd60f4b2fe57683 (patch) | |
| tree | 52892e10f178225edd51bdd3b5c174c7e3de2513 /app/src/main/java/mygram/droid/HomeRows.java | |
| parent | 40b12e5b4cd6a4352e37cd1b6e85b1da10624436 (diff) | |
| download | mygram-droid-1ffa52946d8de76806b0b467ccd60f4b2fe57683.tar.gz mygram-droid-1ffa52946d8de76806b0b467ccd60f4b2fe57683.zip | |
Lazy-load folder content in random page order
A folder with several thousand posts took ~10 s to open because
FolderActivity and the Home row OK handler fetched every page before
showing anything. Pages are now fetched one at a time in a shuffled page
order (each page shuffled locally), the grid shows after the first page,
and the viewer shares the list and pager so it keeps paging the folder.
Reels use the same generic pager. Not a full shuffle: neighbours within
a page stay together.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'app/src/main/java/mygram/droid/HomeRows.java')
| -rw-r--r-- | app/src/main/java/mygram/droid/HomeRows.java | 11 |
1 files changed, 2 insertions, 9 deletions
diff --git a/app/src/main/java/mygram/droid/HomeRows.java b/app/src/main/java/mygram/droid/HomeRows.java index e4abeb5..6105c1c 100644 --- a/app/src/main/java/mygram/droid/HomeRows.java +++ b/app/src/main/java/mygram/droid/HomeRows.java @@ -20,12 +20,10 @@ import android.content.Context; import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; -import android.widget.Toast; import androidx.recyclerview.widget.RecyclerView; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -102,14 +100,9 @@ final class HomeRows extends RecyclerView.Adapter<HomeRows.Row> { return folders.size(); } - /** Viewer at p, then the rest of the folder, shuffled. */ + /** Viewer at p at once; the rest of the folder pages in lazily, in random page order. */ private void open(Api.Folder f, Post p) { - Api.async(() -> Api.folderPosts(f.slug), all -> { - Collections.shuffle(all); - all.removeIf(x -> x.id == p.id); - all.add(0, p); - Playlist.open(activity, all, 0); - }, e -> Toast.makeText(activity, "Cannot load folder: " + e.getMessage(), Toast.LENGTH_LONG).show()); + Playlist.open(activity, new ArrayList<>(List.of(p)), 0, Api.folderPages(f.slug, f.count)); } /** Rebinds visible tiles so hearts follow likes changed in the viewer. */ |
