@riverpod Future<int> longestStreak(Ref ref) async { final ds = ref.watch(supabaseDatasourceProvider); final dates = await ds.getSessionDates(); return StreakCalculator.longestStreak(dates); }