Browse Source

fix(mobile): invalid range on label builder crash timeline (#3759)

* fix(mobile): invalid date on label builder crash timeline

* actual fix

---------

Co-authored-by: Alex Tran <Alex.Tran@conductix.com>
Alex 1 year ago
parent
commit
28d3d3e679
1 changed files with 9 additions and 2 deletions
  1. 9 2
      mobile/lib/modules/home/ui/asset_grid/immich_asset_grid_view.dart

+ 9 - 2
mobile/lib/modules/home/ui/asset_grid/immich_asset_grid_view.dart

@@ -300,7 +300,13 @@ class ImmichAssetGridViewState extends State<ImmichAssetGridView> {
   }
 
   Text _labelBuilder(int pos) {
-    final date = widget.renderList.elements[pos].date;
+    final maxLength = widget.renderList.elements.length;
+    if (pos < 0 || pos >= maxLength) {
+      return const Text("");
+    }
+
+    final date = widget.renderList.elements[pos % maxLength].date;
+
     return Text(
       DateFormat.yMMMM().format(date),
       style: const TextStyle(
@@ -335,7 +341,8 @@ class ImmichAssetGridViewState extends State<ImmichAssetGridView> {
       itemBuilder: _itemBuilder,
       itemPositionsListener: _itemPositionsListener,
       itemScrollController: _itemScrollController,
-      itemCount: widget.renderList.elements.length + (widget.topWidget != null ? 1 : 0),
+      itemCount: widget.renderList.elements.length +
+          (widget.topWidget != null ? 1 : 0),
       addRepaintBoundaries: true,
     );