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
+9
View File
@@ -15,6 +15,7 @@ import 'supabase_provider.dart';
import 'tickets_provider.dart';
import 'user_offices_provider.dart';
import 'stream_recovery.dart';
import 'realtime_controller.dart';
import '../utils/app_time.dart';
// Helper to insert activity log rows while sanitizing nulls and
@@ -198,6 +199,8 @@ final tasksProvider = StreamProvider<List<Task>>((ref) {
return data.cast<Map<String, dynamic>>().map(Task.fromMap).toList();
},
fromMap: Task.fromMap,
channelName: 'tasks',
onStatusChanged: ref.read(realtimeControllerProvider).handleChannelStatus,
);
ref.onDispose(wrapper.dispose);
@@ -446,6 +449,8 @@ final taskAssignmentsProvider = StreamProvider<List<TaskAssignment>>((ref) {
return data.map(TaskAssignment.fromMap).toList();
},
fromMap: TaskAssignment.fromMap,
channelName: 'task_assignments',
onStatusChanged: ref.read(realtimeControllerProvider).handleChannelStatus,
);
ref.onDispose(wrapper.dispose);
@@ -472,6 +477,10 @@ final taskActivityLogsProvider =
return data.map((r) => TaskActivityLog.fromMap(r)).toList();
},
fromMap: TaskActivityLog.fromMap,
channelName: 'task_activity_logs:$taskId',
onStatusChanged: ref
.read(realtimeControllerProvider)
.handleChannelStatus,
);
ref.onDispose(wrapper.dispose);