Offline Support
This commit is contained in:
@@ -0,0 +1,107 @@
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
|
||||
import 'announcements_provider.dart';
|
||||
import 'attendance_provider.dart';
|
||||
import 'chat_provider.dart';
|
||||
import 'it_service_request_provider.dart';
|
||||
import 'leave_provider.dart';
|
||||
import 'notifications_provider.dart';
|
||||
import 'pass_slip_provider.dart';
|
||||
import 'profile_provider.dart';
|
||||
import 'tasks_provider.dart';
|
||||
import 'tickets_provider.dart';
|
||||
import 'user_offices_provider.dart';
|
||||
|
||||
/// Total count of items waiting to sync across all modules.
|
||||
/// Used by the offline banner and reconnect overlay for dynamic messaging.
|
||||
final pendingSyncCountProvider = Provider<int>((ref) {
|
||||
// Tasks
|
||||
final tasks = ref.watch(offlinePendingTasksProvider).length;
|
||||
final taskUpdates = ref.watch(offlinePendingTaskUpdatesProvider).length;
|
||||
final messages = ref.watch(offlinePendingMessagesProvider)
|
||||
.values
|
||||
.fold<int>(0, (sum, list) => sum + list.length);
|
||||
final assignments = ref.watch(offlinePendingAssignmentsProvider).length;
|
||||
final activityLogs =
|
||||
ref.watch(offlinePendingActivityLogItemsProvider).length;
|
||||
|
||||
// Leave
|
||||
final leaves = ref.watch(offlinePendingLeavesProvider).length;
|
||||
final leaveUpdates = ref.watch(offlinePendingLeaveUpdatesProvider).length;
|
||||
|
||||
// Pass slips
|
||||
final passSlips = ref.watch(offlinePendingPassSlipsProvider).length;
|
||||
final passSlipUpdates =
|
||||
ref.watch(offlinePendingPassSlipUpdatesProvider).length;
|
||||
|
||||
// Announcements
|
||||
final announcements = ref.watch(offlinePendingAnnouncementsProvider).length;
|
||||
final announcementUpdates =
|
||||
ref.watch(offlinePendingAnnouncementUpdatesProvider).length;
|
||||
final announcementComments =
|
||||
ref.watch(offlinePendingAnnouncementCommentsProvider).length;
|
||||
|
||||
// IT Service Requests
|
||||
final itRequests =
|
||||
ref.watch(offlinePendingItServiceRequestsProvider).length;
|
||||
final itRequestUpdates =
|
||||
ref.watch(offlinePendingItServiceRequestUpdatesProvider).length;
|
||||
final isrActions = ref.watch(offlinePendingIsrActionsProvider).length;
|
||||
|
||||
// Attendance
|
||||
final checkIns = ref.watch(offlinePendingCheckInsProvider).length;
|
||||
final attendanceUpdates =
|
||||
ref.watch(offlinePendingAttendanceUpdatesProvider).length;
|
||||
|
||||
// Notifications
|
||||
final notifReads =
|
||||
ref.watch(offlinePendingNotificationReadsProvider).length;
|
||||
final notifBatchReads =
|
||||
ref.watch(offlinePendingBatchNotificationReadsProvider).length;
|
||||
|
||||
// Profile
|
||||
final profileUpdates =
|
||||
ref.watch(offlinePendingProfileUpdatesProvider).length;
|
||||
|
||||
// Tickets
|
||||
final tickets = ref.watch(offlinePendingTicketsProvider).length;
|
||||
final ticketUpdates =
|
||||
ref.watch(offlinePendingTicketUpdatesProvider).length;
|
||||
|
||||
// Offices
|
||||
final offices = ref.watch(offlinePendingOfficesProvider).length;
|
||||
|
||||
// User offices
|
||||
final officeOps = ref.watch(offlinePendingUserOfficeOpsProvider).length;
|
||||
|
||||
// Chat
|
||||
final chatMessages = ref.watch(offlinePendingChatMessagesProvider)
|
||||
.values
|
||||
.fold<int>(0, (sum, list) => sum + list.length);
|
||||
|
||||
return tasks +
|
||||
taskUpdates +
|
||||
messages +
|
||||
assignments +
|
||||
activityLogs +
|
||||
leaves +
|
||||
leaveUpdates +
|
||||
passSlips +
|
||||
passSlipUpdates +
|
||||
announcements +
|
||||
announcementUpdates +
|
||||
announcementComments +
|
||||
itRequests +
|
||||
itRequestUpdates +
|
||||
isrActions +
|
||||
checkIns +
|
||||
attendanceUpdates +
|
||||
notifReads +
|
||||
notifBatchReads +
|
||||
profileUpdates +
|
||||
tickets +
|
||||
ticketUpdates +
|
||||
offices +
|
||||
officeOps +
|
||||
chatMessages;
|
||||
});
|
||||
Reference in New Issue
Block a user