Offline rediness
This commit is contained in:
@@ -1,10 +1,12 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'supabase_provider.dart';
|
||||
import 'stream_recovery.dart';
|
||||
import 'realtime_controller.dart';
|
||||
import '../brick/cache_helpers.dart';
|
||||
import '../brick/cache_warmer.dart';
|
||||
import '../models/team.dart';
|
||||
import '../models/team_member.dart';
|
||||
import 'realtime_controller.dart';
|
||||
import 'stream_recovery.dart';
|
||||
import 'supabase_provider.dart';
|
||||
|
||||
/// Real-time stream of teams with automatic recovery and graceful degradation.
|
||||
final teamsProvider = StreamProvider<List<Team>>((ref) {
|
||||
@@ -19,6 +21,7 @@ final teamsProvider = StreamProvider<List<Team>>((ref) {
|
||||
fromMap: Team.fromMap,
|
||||
channelName: 'teams',
|
||||
onStatusChanged: ref.read(realtimeControllerProvider).handleChannelStatus,
|
||||
onOfflineData: () async => cachedListFromBrick<Team>(),
|
||||
);
|
||||
|
||||
ref.onDispose(wrapper.dispose);
|
||||
@@ -40,6 +43,10 @@ final teamMembersProvider = StreamProvider<List<TeamMember>>((ref) {
|
||||
fromMap: TeamMember.fromMap,
|
||||
channelName: 'team_members',
|
||||
onStatusChanged: ref.read(realtimeControllerProvider).handleChannelStatus,
|
||||
onOfflineData: () async {
|
||||
final rows = await CacheWarmer.readCachedTeamMembers();
|
||||
return rows.map(TeamMember.fromMap).toList();
|
||||
},
|
||||
);
|
||||
|
||||
ref.onDispose(wrapper.dispose);
|
||||
|
||||
Reference in New Issue
Block a user