Per channel skeleton

This commit is contained in:
2026-03-01 20:10:38 +08:00
parent b9153a070f
commit 029e671367
13 changed files with 380 additions and 153 deletions
+13
View File
@@ -13,6 +13,7 @@ import 'supabase_provider.dart';
import 'user_offices_provider.dart';
import 'tasks_provider.dart';
import 'stream_recovery.dart';
import 'realtime_controller.dart';
final officesProvider = StreamProvider<List<Office>>((ref) {
final client = ref.watch(supabaseClientProvider);
@@ -24,6 +25,8 @@ final officesProvider = StreamProvider<List<Office>>((ref) {
return data.map(Office.fromMap).toList();
},
fromMap: Office.fromMap,
channelName: 'offices',
onStatusChanged: ref.read(realtimeControllerProvider).handleChannelStatus,
);
ref.onDispose(wrapper.dispose);
@@ -191,6 +194,8 @@ final ticketsProvider = StreamProvider<List<Ticket>>((ref) {
return data.cast<Map<String, dynamic>>().map(Ticket.fromMap).toList();
},
fromMap: Ticket.fromMap,
channelName: 'tickets',
onStatusChanged: ref.read(realtimeControllerProvider).handleChannelStatus,
);
ref.onDispose(wrapper.dispose);
@@ -373,6 +378,10 @@ final ticketMessagesProvider =
return data.map(TicketMessage.fromMap).toList();
},
fromMap: TicketMessage.fromMap,
channelName: 'ticket_messages:$ticketId',
onStatusChanged: ref
.read(realtimeControllerProvider)
.handleChannelStatus,
);
ref.onDispose(wrapper.dispose);
@@ -395,6 +404,8 @@ final ticketMessagesAllProvider = StreamProvider<List<TicketMessage>>((ref) {
return data.map(TicketMessage.fromMap).toList();
},
fromMap: TicketMessage.fromMap,
channelName: 'ticket_messages_all',
onStatusChanged: ref.read(realtimeControllerProvider).handleChannelStatus,
);
ref.onDispose(wrapper.dispose);
@@ -420,6 +431,8 @@ final taskMessagesProvider = StreamProvider.family<List<TicketMessage>, String>(
return data.map(TicketMessage.fromMap).toList();
},
fromMap: TicketMessage.fromMap,
channelName: 'task_messages:$taskId',
onStatusChanged: ref.read(realtimeControllerProvider).handleChannelStatus,
);
ref.onDispose(wrapper.dispose);