From c8328fa3470cafb5730f70684f4bb12953a761fc Mon Sep 17 00:00:00 2001 From: NBA2K1 <78034913+NBA2K1@users.noreply.github.com> Date: Tue, 30 Dec 2025 02:44:45 +0100 Subject: [PATCH] improve performance of helper method - compare integers instead of Strings - cache results per day --- lib/modules/calendar/calendar_screen.dart | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/modules/calendar/calendar_screen.dart b/lib/modules/calendar/calendar_screen.dart index 3e798098..b6347864 100644 --- a/lib/modules/calendar/calendar_screen.dart +++ b/lib/modules/calendar/calendar_screen.dart @@ -233,8 +233,12 @@ class _CalendarScreenState extends ConsumerState { ); } + final Map> _dayCache = {}; + List _getEntriesForDay(DateTime day, List data) { - return data.where((e) { + final key = "${day.year}-${day.month}-${day.day}"; + if (_dayCache.containsKey(key)) return _dayCache[key]!; + final result = data.where((e) { final lastChapter = e.chapters .filter() .sortByDateUploadDesc() @@ -244,10 +248,12 @@ class _CalendarScreenState extends ConsumerState { ? DateTime.fromMillisecondsSinceEpoch(lastDate) : DateTime.now(); final temp = start.add(Duration(days: e.smartUpdateDays!)); - final predictedDay = "${temp.year}-${temp.month}-${temp.day}"; - final selectedDay = "${day.year}-${day.month}-${day.day}"; - return predictedDay == selectedDay; + return temp.year == day.year && + temp.month == day.month && + temp.day == day.day; }).toList(); + _dayCache[key] = result; + return result; } List _getEntriesForRange(