@actschurch/ccms-sdk 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -1
- package/dist/core/Config.d.ts +21 -2
- package/dist/core/Config.d.ts.map +1 -1
- package/dist/core/Config.js.map +1 -1
- package/dist/core/HttpClient.d.ts +5 -0
- package/dist/core/HttpClient.d.ts.map +1 -1
- package/dist/core/HttpClient.js +75 -0
- package/dist/core/HttpClient.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/models/file/Folder.d.ts +179 -0
- package/dist/models/file/Folder.d.ts.map +1 -0
- package/dist/models/file/Folder.js +6 -0
- package/dist/models/file/Folder.js.map +1 -0
- package/dist/models/file/ModelView/FileRecordModelView.d.ts +3 -0
- package/dist/models/file/ModelView/FileRecordModelView.d.ts.map +1 -1
- package/dist/models/file/PresignUploadRequest.d.ts +4 -0
- package/dist/models/file/PresignUploadRequest.d.ts.map +1 -1
- package/dist/models/file/index.d.ts +1 -0
- package/dist/models/file/index.d.ts.map +1 -1
- package/dist/models/file/index.js +1 -0
- package/dist/models/file/index.js.map +1 -1
- package/dist/models/index.d.ts +1 -0
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +2 -0
- package/dist/models/index.js.map +1 -1
- package/dist/models/socialmedia/index.d.ts +322 -0
- package/dist/models/socialmedia/index.d.ts.map +1 -0
- package/dist/models/socialmedia/index.js +6 -0
- package/dist/models/socialmedia/index.js.map +1 -0
- package/dist/models/system/ModelView/Health.d.ts +14 -11
- package/dist/models/system/ModelView/Health.d.ts.map +1 -1
- package/dist/models/system/ModelView/Health.js +1 -0
- package/dist/models/system/ModelView/Health.js.map +1 -1
- package/dist/models/system/ModelView/RabbitMQManagement.d.ts +93 -92
- package/dist/models/system/ModelView/RabbitMQManagement.d.ts.map +1 -1
- package/dist/models/system/ModelView/RedisManagement.d.ts +94 -42
- package/dist/models/system/ModelView/RedisManagement.d.ts.map +1 -1
- package/dist/models/task/ModelView/CreateTask.d.ts +14 -17
- package/dist/models/task/ModelView/CreateTask.d.ts.map +1 -1
- package/dist/models/task/ModelView/UpdateTaskPriorityRequest.d.ts +10 -0
- package/dist/models/task/ModelView/UpdateTaskPriorityRequest.d.ts.map +1 -0
- package/dist/models/task/ModelView/UpdateTaskPriorityRequest.js +2 -0
- package/dist/models/task/ModelView/UpdateTaskPriorityRequest.js.map +1 -0
- package/dist/models/task/ModelView/UpdateTaskProjectRequest.d.ts +10 -0
- package/dist/models/task/ModelView/UpdateTaskProjectRequest.d.ts.map +1 -0
- package/dist/models/task/ModelView/UpdateTaskProjectRequest.js +2 -0
- package/dist/models/task/ModelView/UpdateTaskProjectRequest.js.map +1 -0
- package/dist/models/task/ModelView/index.d.ts +2 -0
- package/dist/models/task/ModelView/index.d.ts.map +1 -1
- package/dist/models/task/ModelView/index.js +2 -0
- package/dist/models/task/ModelView/index.js.map +1 -1
- package/dist/react/CCMSProvider.d.ts +1 -19
- package/dist/react/CCMSProvider.d.ts.map +1 -1
- package/dist/react/CCMSProvider.js +71 -56
- package/dist/react/CCMSProvider.js.map +1 -1
- package/dist/react/hooks/index.d.ts +0 -1
- package/dist/react/hooks/index.d.ts.map +1 -1
- package/dist/react/hooks/index.js +1 -3
- package/dist/react/hooks/index.js.map +1 -1
- package/dist/react/hooks/services/index.d.ts +1 -0
- package/dist/react/hooks/services/index.d.ts.map +1 -1
- package/dist/react/hooks/services/index.js +2 -0
- package/dist/react/hooks/services/index.js.map +1 -1
- package/dist/react/hooks/services/useSocialMediaServices.d.ts +43 -0
- package/dist/react/hooks/services/useSocialMediaServices.d.ts.map +1 -0
- package/dist/react/hooks/services/useSocialMediaServices.js +65 -0
- package/dist/react/hooks/services/useSocialMediaServices.js.map +1 -0
- package/dist/react/hooks/services/useUsersServices.d.ts +5 -1
- package/dist/react/hooks/services/useUsersServices.d.ts.map +1 -1
- package/dist/react/hooks/services/useUsersServices.js +6 -0
- package/dist/react/hooks/services/useUsersServices.js.map +1 -1
- package/dist/react/hooks/useCCMS.d.ts +7 -4
- package/dist/react/hooks/useCCMS.d.ts.map +1 -1
- package/dist/react/hooks/useCCMS.js +8 -4
- package/dist/react/hooks/useCCMS.js.map +1 -1
- package/dist/realtime/index.d.ts +1 -1
- package/dist/realtime/index.d.ts.map +1 -1
- package/dist/realtime/index.js +2 -5
- package/dist/realtime/index.js.map +1 -1
- package/dist/realtime/presence/ActivityTracker.d.ts +141 -0
- package/dist/realtime/presence/ActivityTracker.d.ts.map +1 -0
- package/dist/realtime/presence/ActivityTracker.js +342 -0
- package/dist/realtime/presence/ActivityTracker.js.map +1 -0
- package/dist/realtime/presence/AutoHeartbeatManager.d.ts +68 -0
- package/dist/realtime/presence/AutoHeartbeatManager.d.ts.map +1 -0
- package/dist/realtime/presence/AutoHeartbeatManager.js +160 -0
- package/dist/realtime/presence/AutoHeartbeatManager.js.map +1 -0
- package/dist/realtime/presence/IdleDetector.d.ts +107 -0
- package/dist/realtime/presence/IdleDetector.d.ts.map +1 -0
- package/dist/realtime/presence/IdleDetector.js +270 -0
- package/dist/realtime/presence/IdleDetector.js.map +1 -0
- package/dist/realtime/presence/PresenceClient.d.ts +26 -2
- package/dist/realtime/presence/PresenceClient.d.ts.map +1 -1
- package/dist/realtime/presence/PresenceClient.js +111 -17
- package/dist/realtime/presence/PresenceClient.js.map +1 -1
- package/dist/realtime/presence/PresenceManager.d.ts +191 -0
- package/dist/realtime/presence/PresenceManager.d.ts.map +1 -0
- package/dist/realtime/presence/PresenceManager.js +314 -0
- package/dist/realtime/presence/PresenceManager.js.map +1 -0
- package/dist/realtime/presence/PresenceProvider.d.ts +16 -0
- package/dist/realtime/presence/PresenceProvider.d.ts.map +1 -1
- package/dist/realtime/presence/PresenceProvider.js +92 -20
- package/dist/realtime/presence/PresenceProvider.js.map +1 -1
- package/dist/realtime/presence/index.d.ts +5 -0
- package/dist/realtime/presence/index.d.ts.map +1 -1
- package/dist/realtime/presence/index.js +10 -0
- package/dist/realtime/presence/index.js.map +1 -1
- package/dist/realtime/presence/types.d.ts +32 -13
- package/dist/realtime/presence/types.d.ts.map +1 -1
- package/dist/realtime/presence/types.js +6 -5
- package/dist/realtime/presence/types.js.map +1 -1
- package/dist/realtime/presence/utils/platformDetector.d.ts +23 -0
- package/dist/realtime/presence/utils/platformDetector.d.ts.map +1 -0
- package/dist/realtime/presence/utils/platformDetector.js +88 -0
- package/dist/realtime/presence/utils/platformDetector.js.map +1 -0
- package/dist/realtime/presence/utils.d.ts +87 -0
- package/dist/realtime/presence/utils.d.ts.map +1 -0
- package/dist/realtime/presence/utils.js +191 -0
- package/dist/realtime/presence/utils.js.map +1 -0
- package/dist/realtime/shared/BaseSignalRClient.d.ts.map +1 -1
- package/dist/realtime/shared/BaseSignalRClient.js +38 -4
- package/dist/realtime/shared/BaseSignalRClient.js.map +1 -1
- package/dist/services/departments/DepartmentService.d.ts.map +1 -1
- package/dist/services/departments/DepartmentService.js +1 -1
- package/dist/services/departments/DepartmentService.js.map +1 -1
- package/dist/services/departments/DesignationService.d.ts.map +1 -1
- package/dist/services/departments/DesignationService.js +1 -1
- package/dist/services/departments/DesignationService.js.map +1 -1
- package/dist/services/departments/DesignationTaskService.d.ts.map +1 -1
- package/dist/services/departments/DesignationTaskService.js +1 -1
- package/dist/services/departments/DesignationTaskService.js.map +1 -1
- package/dist/services/departments/MemberDesignationService.d.ts.map +1 -1
- package/dist/services/departments/MemberDesignationService.js +1 -1
- package/dist/services/departments/MemberDesignationService.js.map +1 -1
- package/dist/services/departments/MemberInDepartmentService.d.ts.map +1 -1
- package/dist/services/departments/MemberInDepartmentService.js +1 -1
- package/dist/services/departments/MemberInDepartmentService.js.map +1 -1
- package/dist/services/departments/MinistryActivityService.d.ts.map +1 -1
- package/dist/services/departments/MinistryActivityService.js +1 -1
- package/dist/services/departments/MinistryActivityService.js.map +1 -1
- package/dist/services/departments/MinistryEquipmentService.d.ts.map +1 -1
- package/dist/services/departments/MinistryEquipmentService.js +1 -1
- package/dist/services/departments/MinistryEquipmentService.js.map +1 -1
- package/dist/services/departments/MinistryRoleService.d.ts.map +1 -1
- package/dist/services/departments/MinistryRoleService.js +1 -1
- package/dist/services/departments/MinistryRoleService.js.map +1 -1
- package/dist/services/departments/MinistryService.d.ts.map +1 -1
- package/dist/services/departments/MinistryService.js +1 -1
- package/dist/services/departments/MinistryService.js.map +1 -1
- package/dist/services/departments/MinistryTeamService.d.ts.map +1 -1
- package/dist/services/departments/MinistryTeamService.js +1 -1
- package/dist/services/departments/MinistryTeamService.js.map +1 -1
- package/dist/services/feedback/FeedbackCategoryRecipientService.d.ts.map +1 -1
- package/dist/services/feedback/FeedbackCategoryRecipientService.js +1 -1
- package/dist/services/feedback/FeedbackCategoryRecipientService.js.map +1 -1
- package/dist/services/feedback/FeedbackCategoryService.d.ts.map +1 -1
- package/dist/services/feedback/FeedbackCategoryService.js +1 -1
- package/dist/services/feedback/FeedbackCategoryService.js.map +1 -1
- package/dist/services/feedback/FeedbackNotificationQueueService.d.ts.map +1 -1
- package/dist/services/feedback/FeedbackNotificationQueueService.js +1 -1
- package/dist/services/feedback/FeedbackNotificationQueueService.js.map +1 -1
- package/dist/services/feedback/FeedbackService.d.ts.map +1 -1
- package/dist/services/feedback/FeedbackService.js +1 -1
- package/dist/services/feedback/FeedbackService.js.map +1 -1
- package/dist/services/feedback/FeedbackTypeService.d.ts.map +1 -1
- package/dist/services/feedback/FeedbackTypeService.js +1 -1
- package/dist/services/feedback/FeedbackTypeService.js.map +1 -1
- package/dist/services/file/FileService.d.ts +55 -1
- package/dist/services/file/FileService.d.ts.map +1 -1
- package/dist/services/file/FileService.js +114 -0
- package/dist/services/file/FileService.js.map +1 -1
- package/dist/services/file/FolderService.d.ts +99 -0
- package/dist/services/file/FolderService.d.ts.map +1 -0
- package/dist/services/file/FolderService.js +147 -0
- package/dist/services/file/FolderService.js.map +1 -0
- package/dist/services/file/index.d.ts +3 -0
- package/dist/services/file/index.d.ts.map +1 -1
- package/dist/services/file/index.js +3 -0
- package/dist/services/file/index.js.map +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +2 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/locations/AddressService.d.ts.map +1 -1
- package/dist/services/locations/AddressService.js +1 -1
- package/dist/services/locations/AddressService.js.map +1 -1
- package/dist/services/locations/LocationInfoService.d.ts.map +1 -1
- package/dist/services/locations/LocationInfoService.js +1 -1
- package/dist/services/locations/LocationInfoService.js.map +1 -1
- package/dist/services/locations/LocationLeaderService.d.ts.map +1 -1
- package/dist/services/locations/LocationLeaderService.js +1 -1
- package/dist/services/locations/LocationLeaderService.js.map +1 -1
- package/dist/services/locations/LocationService.d.ts.map +1 -1
- package/dist/services/locations/LocationService.js +1 -1
- package/dist/services/locations/LocationService.js.map +1 -1
- package/dist/services/locations/LocationSocialMediaService.d.ts.map +1 -1
- package/dist/services/locations/LocationSocialMediaService.js +1 -1
- package/dist/services/locations/LocationSocialMediaService.js.map +1 -1
- package/dist/services/locations/LocationVenueService.d.ts.map +1 -1
- package/dist/services/locations/LocationVenueService.js +1 -1
- package/dist/services/locations/LocationVenueService.js.map +1 -1
- package/dist/services/locations/ServiceTimeService.d.ts.map +1 -1
- package/dist/services/locations/ServiceTimeService.js +1 -1
- package/dist/services/locations/ServiceTimeService.js.map +1 -1
- package/dist/services/locations/SocialMediaService.d.ts.map +1 -1
- package/dist/services/locations/SocialMediaService.js +1 -1
- package/dist/services/locations/SocialMediaService.js.map +1 -1
- package/dist/services/meetings/LocationVenueRequestService.d.ts.map +1 -1
- package/dist/services/meetings/LocationVenueRequestService.js +1 -1
- package/dist/services/meetings/LocationVenueRequestService.js.map +1 -1
- package/dist/services/meetings/LocationVenueSetupService.d.ts.map +1 -1
- package/dist/services/meetings/LocationVenueSetupService.js +1 -1
- package/dist/services/meetings/LocationVenueSetupService.js.map +1 -1
- package/dist/services/meetings/MeetingAttendanceStatusService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingAttendanceStatusService.js +1 -1
- package/dist/services/meetings/MeetingAttendanceStatusService.js.map +1 -1
- package/dist/services/meetings/MeetingAttendeeService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingAttendeeService.js +1 -1
- package/dist/services/meetings/MeetingAttendeeService.js.map +1 -1
- package/dist/services/meetings/MeetingCommentService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingCommentService.js +1 -1
- package/dist/services/meetings/MeetingCommentService.js.map +1 -1
- package/dist/services/meetings/MeetingFileService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingFileService.js +1 -1
- package/dist/services/meetings/MeetingFileService.js.map +1 -1
- package/dist/services/meetings/MeetingRequestService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingRequestService.js +1 -1
- package/dist/services/meetings/MeetingRequestService.js.map +1 -1
- package/dist/services/meetings/MeetingService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingService.js +1 -1
- package/dist/services/meetings/MeetingService.js.map +1 -1
- package/dist/services/meetings/MeetingSetupService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingSetupService.js +1 -1
- package/dist/services/meetings/MeetingSetupService.js.map +1 -1
- package/dist/services/meetings/MeetingStatusService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingStatusService.js +1 -1
- package/dist/services/meetings/MeetingStatusService.js.map +1 -1
- package/dist/services/meetings/MeetingTypeService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingTypeService.js +1 -1
- package/dist/services/meetings/MeetingTypeService.js.map +1 -1
- package/dist/services/meetings/MeetingVenueService.d.ts.map +1 -1
- package/dist/services/meetings/MeetingVenueService.js +1 -1
- package/dist/services/meetings/MeetingVenueService.js.map +1 -1
- package/dist/services/meetings/RequestInMeetingService.d.ts.map +1 -1
- package/dist/services/meetings/RequestInMeetingService.js +1 -1
- package/dist/services/meetings/RequestInMeetingService.js.map +1 -1
- package/dist/services/meetings/SetupInMeetingService.d.ts.map +1 -1
- package/dist/services/meetings/SetupInMeetingService.js +1 -1
- package/dist/services/meetings/SetupInMeetingService.js.map +1 -1
- package/dist/services/members/AllergyService.d.ts.map +1 -1
- package/dist/services/members/AllergyService.js +1 -1
- package/dist/services/members/AllergyService.js.map +1 -1
- package/dist/services/members/DisabilityService.d.ts.map +1 -1
- package/dist/services/members/DisabilityService.js +1 -1
- package/dist/services/members/DisabilityService.js.map +1 -1
- package/dist/services/members/FamilyService.d.ts.map +1 -1
- package/dist/services/members/FamilyService.js +1 -1
- package/dist/services/members/FamilyService.js.map +1 -1
- package/dist/services/members/MaritalStatusService.d.ts.map +1 -1
- package/dist/services/members/MaritalStatusService.js +1 -1
- package/dist/services/members/MaritalStatusService.js.map +1 -1
- package/dist/services/members/MemberAddressService.d.ts.map +1 -1
- package/dist/services/members/MemberAddressService.js +1 -1
- package/dist/services/members/MemberAddressService.js.map +1 -1
- package/dist/services/members/MemberLocationService.d.ts.map +1 -1
- package/dist/services/members/MemberLocationService.js +1 -1
- package/dist/services/members/MemberLocationService.js.map +1 -1
- package/dist/services/members/MemberService.d.ts.map +1 -1
- package/dist/services/members/MemberService.js +1 -1
- package/dist/services/members/MemberService.js.map +1 -1
- package/dist/services/members/MemberTypeService.d.ts.map +1 -1
- package/dist/services/members/MemberTypeService.js +1 -1
- package/dist/services/members/MemberTypeService.js.map +1 -1
- package/dist/services/members/RelationshipService.d.ts.map +1 -1
- package/dist/services/members/RelationshipService.js +1 -1
- package/dist/services/members/RelationshipService.js.map +1 -1
- package/dist/services/orders/OrderLineModelViewService.d.ts.map +1 -1
- package/dist/services/orders/OrderLineModelViewService.js +1 -1
- package/dist/services/orders/OrderLineModelViewService.js.map +1 -1
- package/dist/services/orders/OrderLineService.d.ts.map +1 -1
- package/dist/services/orders/OrderLineService.js +1 -1
- package/dist/services/orders/OrderLineService.js.map +1 -1
- package/dist/services/orders/OrderModelViewService.d.ts.map +1 -1
- package/dist/services/orders/OrderModelViewService.js +1 -1
- package/dist/services/orders/OrderModelViewService.js.map +1 -1
- package/dist/services/orders/OrderNotificationService.d.ts.map +1 -1
- package/dist/services/orders/OrderNotificationService.js +1 -1
- package/dist/services/orders/OrderNotificationService.js.map +1 -1
- package/dist/services/orders/OrderPaymentModelViewService.d.ts.map +1 -1
- package/dist/services/orders/OrderPaymentModelViewService.js +1 -1
- package/dist/services/orders/OrderPaymentModelViewService.js.map +1 -1
- package/dist/services/orders/OrderPaymentService.d.ts.map +1 -1
- package/dist/services/orders/OrderPaymentService.js +1 -1
- package/dist/services/orders/OrderPaymentService.js.map +1 -1
- package/dist/services/orders/OrderService.d.ts.map +1 -1
- package/dist/services/orders/OrderService.js +1 -1
- package/dist/services/orders/OrderService.js.map +1 -1
- package/dist/services/orders/OrderStatusService.d.ts.map +1 -1
- package/dist/services/orders/OrderStatusService.js +1 -1
- package/dist/services/orders/OrderStatusService.js.map +1 -1
- package/dist/services/orders/PaymentStatusService.d.ts.map +1 -1
- package/dist/services/orders/PaymentStatusService.js +1 -1
- package/dist/services/orders/PaymentStatusService.js.map +1 -1
- package/dist/services/procurements/AuditLogService.d.ts.map +1 -1
- package/dist/services/procurements/AuditLogService.js +1 -1
- package/dist/services/procurements/AuditLogService.js.map +1 -1
- package/dist/services/procurements/InvoiceLineService.d.ts.map +1 -1
- package/dist/services/procurements/InvoiceLineService.js +1 -1
- package/dist/services/procurements/InvoiceLineService.js.map +1 -1
- package/dist/services/procurements/InvoiceService.d.ts.map +1 -1
- package/dist/services/procurements/InvoiceService.js +1 -1
- package/dist/services/procurements/InvoiceService.js.map +1 -1
- package/dist/services/procurements/InvoiceStatusService.d.ts.map +1 -1
- package/dist/services/procurements/InvoiceStatusService.js +1 -1
- package/dist/services/procurements/InvoiceStatusService.js.map +1 -1
- package/dist/services/procurements/NotificationService.d.ts.map +1 -1
- package/dist/services/procurements/NotificationService.js +1 -1
- package/dist/services/procurements/NotificationService.js.map +1 -1
- package/dist/services/procurements/ProcurementRoleTypeService.d.ts.map +1 -1
- package/dist/services/procurements/ProcurementRoleTypeService.js +1 -1
- package/dist/services/procurements/ProcurementRoleTypeService.js.map +1 -1
- package/dist/services/procurements/PurchaseRequestService.d.ts.map +1 -1
- package/dist/services/procurements/PurchaseRequestService.js +1 -1
- package/dist/services/procurements/PurchaseRequestService.js.map +1 -1
- package/dist/services/procurements/QuotationLineService.d.ts.map +1 -1
- package/dist/services/procurements/QuotationLineService.js +1 -1
- package/dist/services/procurements/QuotationLineService.js.map +1 -1
- package/dist/services/procurements/QuotationService.d.ts.map +1 -1
- package/dist/services/procurements/QuotationService.js +1 -1
- package/dist/services/procurements/QuotationService.js.map +1 -1
- package/dist/services/procurements/QuotationStatusService.d.ts.map +1 -1
- package/dist/services/procurements/QuotationStatusService.js +1 -1
- package/dist/services/procurements/QuotationStatusService.js.map +1 -1
- package/dist/services/procurements/RequestApprovalStatusService.d.ts.map +1 -1
- package/dist/services/procurements/RequestApprovalStatusService.js +1 -1
- package/dist/services/procurements/RequestApprovalStatusService.js.map +1 -1
- package/dist/services/procurements/RequestAttachmentService.d.ts.map +1 -1
- package/dist/services/procurements/RequestAttachmentService.js +1 -1
- package/dist/services/procurements/RequestAttachmentService.js.map +1 -1
- package/dist/services/procurements/RequestCommentService.d.ts.map +1 -1
- package/dist/services/procurements/RequestCommentService.js +1 -1
- package/dist/services/procurements/RequestCommentService.js.map +1 -1
- package/dist/services/procurements/RequestStageService.d.ts.map +1 -1
- package/dist/services/procurements/RequestStageService.js +1 -1
- package/dist/services/procurements/RequestStageService.js.map +1 -1
- package/dist/services/procurements/RequestStatusService.d.ts.map +1 -1
- package/dist/services/procurements/RequestStatusService.js +1 -1
- package/dist/services/procurements/RequestStatusService.js.map +1 -1
- package/dist/services/procurements/RequestTypeService.d.ts.map +1 -1
- package/dist/services/procurements/RequestTypeService.js +1 -1
- package/dist/services/procurements/RequestTypeService.js.map +1 -1
- package/dist/services/procurements/SageItemService.d.ts.map +1 -1
- package/dist/services/procurements/SageItemService.js +1 -1
- package/dist/services/procurements/SageItemService.js.map +1 -1
- package/dist/services/procurements/SagePurchaseOrderService.d.ts.map +1 -1
- package/dist/services/procurements/SagePurchaseOrderService.js +1 -1
- package/dist/services/procurements/SagePurchaseOrderService.js.map +1 -1
- package/dist/services/socialmedia/SocialMediaAccountService.d.ts +38 -0
- package/dist/services/socialmedia/SocialMediaAccountService.d.ts.map +1 -0
- package/dist/services/socialmedia/SocialMediaAccountService.js +59 -0
- package/dist/services/socialmedia/SocialMediaAccountService.js.map +1 -0
- package/dist/services/socialmedia/SocialMediaAdsService.d.ts +74 -0
- package/dist/services/socialmedia/SocialMediaAdsService.d.ts.map +1 -0
- package/dist/services/socialmedia/SocialMediaAdsService.js +130 -0
- package/dist/services/socialmedia/SocialMediaAdsService.js.map +1 -0
- package/dist/services/socialmedia/SocialMediaDashboardService.d.ts +137 -0
- package/dist/services/socialmedia/SocialMediaDashboardService.d.ts.map +1 -0
- package/dist/services/socialmedia/SocialMediaDashboardService.js +179 -0
- package/dist/services/socialmedia/SocialMediaDashboardService.js.map +1 -0
- package/dist/services/socialmedia/SocialMediaMetricsService.d.ts +56 -0
- package/dist/services/socialmedia/SocialMediaMetricsService.d.ts.map +1 -0
- package/dist/services/socialmedia/SocialMediaMetricsService.js +105 -0
- package/dist/services/socialmedia/SocialMediaMetricsService.js.map +1 -0
- package/dist/services/socialmedia/SocialMediaPostService.d.ts +56 -0
- package/dist/services/socialmedia/SocialMediaPostService.d.ts.map +1 -0
- package/dist/services/socialmedia/SocialMediaPostService.js +94 -0
- package/dist/services/socialmedia/SocialMediaPostService.js.map +1 -0
- package/dist/services/socialmedia/SocialMediaStoryService.d.ts +47 -0
- package/dist/services/socialmedia/SocialMediaStoryService.d.ts.map +1 -0
- package/dist/services/socialmedia/SocialMediaStoryService.js +77 -0
- package/dist/services/socialmedia/SocialMediaStoryService.js.map +1 -0
- package/dist/services/socialmedia/SocialMediaThresholdService.d.ts +47 -0
- package/dist/services/socialmedia/SocialMediaThresholdService.d.ts.map +1 -0
- package/dist/services/socialmedia/SocialMediaThresholdService.js +75 -0
- package/dist/services/socialmedia/SocialMediaThresholdService.js.map +1 -0
- package/dist/services/socialmedia/SocialMediaVideoService.d.ts +47 -0
- package/dist/services/socialmedia/SocialMediaVideoService.d.ts.map +1 -0
- package/dist/services/socialmedia/SocialMediaVideoService.js +77 -0
- package/dist/services/socialmedia/SocialMediaVideoService.js.map +1 -0
- package/dist/services/socialmedia/index.d.ts +43 -0
- package/dist/services/socialmedia/index.d.ts.map +1 -0
- package/dist/services/socialmedia/index.js +41 -0
- package/dist/services/socialmedia/index.js.map +1 -0
- package/dist/services/system/HealthService.d.ts +15 -0
- package/dist/services/system/HealthService.d.ts.map +1 -1
- package/dist/services/system/HealthService.js +21 -15
- package/dist/services/system/HealthService.js.map +1 -1
- package/dist/services/system/RabbitMQManagementService.d.ts +13 -9
- package/dist/services/system/RabbitMQManagementService.d.ts.map +1 -1
- package/dist/services/system/RabbitMQManagementService.js +23 -40
- package/dist/services/system/RabbitMQManagementService.js.map +1 -1
- package/dist/services/system/RedisManagementService.d.ts +13 -6
- package/dist/services/system/RedisManagementService.d.ts.map +1 -1
- package/dist/services/system/RedisManagementService.js +42 -20
- package/dist/services/system/RedisManagementService.js.map +1 -1
- package/dist/services/task/LogTypeService.d.ts.map +1 -1
- package/dist/services/task/LogTypeService.js +1 -1
- package/dist/services/task/LogTypeService.js.map +1 -1
- package/dist/services/task/TaskAssignmentService.d.ts.map +1 -1
- package/dist/services/task/TaskAssignmentService.js +1 -1
- package/dist/services/task/TaskAssignmentService.js.map +1 -1
- package/dist/services/task/TaskAttachmentService.d.ts.map +1 -1
- package/dist/services/task/TaskAttachmentService.js +1 -1
- package/dist/services/task/TaskAttachmentService.js.map +1 -1
- package/dist/services/task/TaskCommentService.d.ts.map +1 -1
- package/dist/services/task/TaskCommentService.js +1 -1
- package/dist/services/task/TaskCommentService.js.map +1 -1
- package/dist/services/task/TaskLogService.d.ts.map +1 -1
- package/dist/services/task/TaskLogService.js +1 -1
- package/dist/services/task/TaskLogService.js.map +1 -1
- package/dist/services/task/TaskNoteService.d.ts.map +1 -1
- package/dist/services/task/TaskNoteService.js +1 -1
- package/dist/services/task/TaskNoteService.js.map +1 -1
- package/dist/services/task/TaskNotificationQueueService.d.ts.map +1 -1
- package/dist/services/task/TaskNotificationQueueService.js +1 -1
- package/dist/services/task/TaskNotificationQueueService.js.map +1 -1
- package/dist/services/task/TaskNotificationService.d.ts.map +1 -1
- package/dist/services/task/TaskNotificationService.js +1 -1
- package/dist/services/task/TaskNotificationService.js.map +1 -1
- package/dist/services/task/TaskPriorityService.d.ts.map +1 -1
- package/dist/services/task/TaskPriorityService.js +1 -1
- package/dist/services/task/TaskPriorityService.js.map +1 -1
- package/dist/services/task/TaskProgressStageService.d.ts.map +1 -1
- package/dist/services/task/TaskProgressStageService.js +1 -1
- package/dist/services/task/TaskProgressStageService.js.map +1 -1
- package/dist/services/task/TaskService.d.ts +100 -1
- package/dist/services/task/TaskService.d.ts.map +1 -1
- package/dist/services/task/TaskService.js +167 -0
- package/dist/services/task/TaskService.js.map +1 -1
- package/dist/services/task/TaskStatusService.d.ts.map +1 -1
- package/dist/services/task/TaskStatusService.js +1 -1
- package/dist/services/task/TaskStatusService.js.map +1 -1
- package/dist/services/types.d.ts +2 -0
- package/dist/services/types.d.ts.map +1 -1
- package/dist/services/users/AdminService.d.ts.map +1 -1
- package/dist/services/users/AdminService.js +30 -3
- package/dist/services/users/AdminService.js.map +1 -1
- package/dist/services/users/PresenceAnalyticsService.d.ts +179 -0
- package/dist/services/users/PresenceAnalyticsService.d.ts.map +1 -0
- package/dist/services/users/PresenceAnalyticsService.js +232 -0
- package/dist/services/users/PresenceAnalyticsService.js.map +1 -0
- package/dist/services/users/RightService.d.ts +16 -20
- package/dist/services/users/RightService.d.ts.map +1 -1
- package/dist/services/users/RightService.js +3 -37
- package/dist/services/users/RightService.js.map +1 -1
- package/dist/services/users/RoleService.d.ts +27 -0
- package/dist/services/users/RoleService.d.ts.map +1 -1
- package/dist/services/users/RoleService.js +54 -0
- package/dist/services/users/RoleService.js.map +1 -1
- package/dist/services/users/SystemService.d.ts +9 -0
- package/dist/services/users/SystemService.d.ts.map +1 -1
- package/dist/services/users/SystemService.js +20 -0
- package/dist/services/users/SystemService.js.map +1 -1
- package/dist/services/users/UserPreferencesService.d.ts +27 -0
- package/dist/services/users/UserPreferencesService.d.ts.map +1 -1
- package/dist/services/users/UserPreferencesService.js +54 -0
- package/dist/services/users/UserPreferencesService.js.map +1 -1
- package/dist/services/users/UserPushDeviceService.d.ts +18 -0
- package/dist/services/users/UserPushDeviceService.d.ts.map +1 -1
- package/dist/services/users/UserPushDeviceService.js +35 -0
- package/dist/services/users/UserPushDeviceService.js.map +1 -1
- package/dist/services/users/UserService.d.ts +142 -1
- package/dist/services/users/UserService.d.ts.map +1 -1
- package/dist/services/users/UserService.js +265 -0
- package/dist/services/users/UserService.js.map +1 -1
- package/dist/services/users/index.d.ts +5 -2
- package/dist/services/users/index.d.ts.map +1 -1
- package/dist/services/users/index.js +3 -0
- package/dist/services/users/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/react/hooks/useRealtime.d.ts +0 -63
- package/dist/react/hooks/useRealtime.d.ts.map +0 -1
- package/dist/react/hooks/useRealtime.js +0 -146
- package/dist/react/hooks/useRealtime.js.map +0 -1
- package/dist/realtime/RealtimeClient.d.ts +0 -99
- package/dist/realtime/RealtimeClient.d.ts.map +0 -1
- package/dist/realtime/RealtimeClient.js +0 -278
- package/dist/realtime/RealtimeClient.js.map +0 -1
- package/dist/realtime/types.d.ts +0 -76
- package/dist/realtime/types.d.ts.map +0 -1
- package/dist/realtime/types.js +0 -55
- package/dist/realtime/types.js.map +0 -1
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ActivityTracker
|
|
3
|
+
* Tracks user activity (mouse, keyboard) and sends to backend with debounce
|
|
4
|
+
* Platform-aware: Works on web, React Native, and Node.js
|
|
5
|
+
* Matches the test app's activity tracking implementation
|
|
6
|
+
*/
|
|
7
|
+
export class ActivityTracker {
|
|
8
|
+
/**
|
|
9
|
+
* Create ActivityTracker
|
|
10
|
+
* @param presenceClient - PresenceClient instance
|
|
11
|
+
* @param debounceMs - Debounce delay in milliseconds (default: 5000 = 5 seconds) - DEPRECATED
|
|
12
|
+
* @param highSignificanceThrottleMs - Throttle delay for keyboard/clicks (default: 2000 = 2 seconds)
|
|
13
|
+
* @param lowSignificanceThrottleMs - Throttle delay for mouse/scroll (default: 5000 = 5 seconds)
|
|
14
|
+
* @param platform - Platform type (default: auto-detect)
|
|
15
|
+
*/
|
|
16
|
+
constructor(presenceClient, debounceMs = 5000, highSignificanceThrottleMs = 2000, lowSignificanceThrottleMs = 5000, platform = 'web') {
|
|
17
|
+
this.presenceClient = presenceClient;
|
|
18
|
+
this.debounceMs = debounceMs;
|
|
19
|
+
this.highSignificanceThrottleMs = highSignificanceThrottleMs;
|
|
20
|
+
this.lowSignificanceThrottleMs = lowSignificanceThrottleMs;
|
|
21
|
+
this.platform = platform;
|
|
22
|
+
this.debounceTimer = null;
|
|
23
|
+
this.throttleTimer = null;
|
|
24
|
+
this.lastActivityTime = Date.now();
|
|
25
|
+
this.lastServerSyncTime = 0;
|
|
26
|
+
this.isActive = false;
|
|
27
|
+
this.activityHandler = null;
|
|
28
|
+
this.highSignificanceHandler = null;
|
|
29
|
+
this.lowSignificanceHandler = null;
|
|
30
|
+
/**
|
|
31
|
+
* Handle activity event (internal) - DEPRECATED, kept for React Native compatibility
|
|
32
|
+
* Debounces calls to recordActivity
|
|
33
|
+
* @private
|
|
34
|
+
*/
|
|
35
|
+
this.handleActivity = () => {
|
|
36
|
+
this.lastActivityTime = Date.now();
|
|
37
|
+
// Clear existing debounce timer
|
|
38
|
+
if (this.debounceTimer) {
|
|
39
|
+
clearTimeout(this.debounceTimer);
|
|
40
|
+
}
|
|
41
|
+
// Set new debounce timer
|
|
42
|
+
this.debounceTimer = setTimeout(async () => {
|
|
43
|
+
try {
|
|
44
|
+
await this.presenceClient.recordActivity();
|
|
45
|
+
console.log('[ActivityTracker] Activity recorded at', new Date().toISOString());
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('[ActivityTracker] Failed to record activity:', error);
|
|
49
|
+
}
|
|
50
|
+
}, this.debounceMs);
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Handle high-significance activity (keyboard, clicks)
|
|
54
|
+
* Updates local timestamp immediately, throttles server sync
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
this.handleHighSignificanceActivity = () => {
|
|
58
|
+
// ALWAYS update local timestamp immediately (for idle detection)
|
|
59
|
+
this.lastActivityTime = Date.now();
|
|
60
|
+
// Throttle server sync
|
|
61
|
+
this.throttleServerSync(this.highSignificanceThrottleMs);
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Handle low-significance activity (mouse movement, scroll)
|
|
65
|
+
* Updates local timestamp immediately, throttles server sync with longer delay
|
|
66
|
+
* @private
|
|
67
|
+
*/
|
|
68
|
+
this.handleLowSignificanceActivity = () => {
|
|
69
|
+
// ALWAYS update local timestamp immediately (for idle detection)
|
|
70
|
+
this.lastActivityTime = Date.now();
|
|
71
|
+
// Throttle server sync with longer delay
|
|
72
|
+
this.throttleServerSync(this.lowSignificanceThrottleMs);
|
|
73
|
+
};
|
|
74
|
+
// Auto-detect platform if not specified
|
|
75
|
+
if (!platform) {
|
|
76
|
+
this.platform = this.detectPlatform();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Auto-detect the current platform
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
detectPlatform() {
|
|
84
|
+
// Check for React Native
|
|
85
|
+
if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {
|
|
86
|
+
return 'react-native';
|
|
87
|
+
}
|
|
88
|
+
// Check for browser environment
|
|
89
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
90
|
+
return 'web';
|
|
91
|
+
}
|
|
92
|
+
// Default to Node.js
|
|
93
|
+
return 'node';
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Start activity tracking
|
|
97
|
+
* Begins listening to platform-specific activity events
|
|
98
|
+
*/
|
|
99
|
+
start() {
|
|
100
|
+
if (this.isActive) {
|
|
101
|
+
console.warn('[ActivityTracker] Already tracking');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
console.log(`[ActivityTracker] Starting on platform: ${this.platform}`);
|
|
105
|
+
if (this.platform === 'web') {
|
|
106
|
+
this.startWebTracking();
|
|
107
|
+
}
|
|
108
|
+
else if (this.platform === 'react-native') {
|
|
109
|
+
this.startReactNativeTracking();
|
|
110
|
+
}
|
|
111
|
+
// Node.js doesn't need activity tracking (server-side)
|
|
112
|
+
this.isActive = true;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Stop activity tracking
|
|
116
|
+
* Removes all event listeners and clears pending timers
|
|
117
|
+
*/
|
|
118
|
+
stop() {
|
|
119
|
+
if (!this.isActive) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
console.log('[ActivityTracker] Stopping');
|
|
123
|
+
if (this.platform === 'web') {
|
|
124
|
+
this.stopWebTracking();
|
|
125
|
+
}
|
|
126
|
+
else if (this.platform === 'react-native') {
|
|
127
|
+
this.stopReactNativeTracking();
|
|
128
|
+
}
|
|
129
|
+
// Clear any pending timers
|
|
130
|
+
if (this.debounceTimer) {
|
|
131
|
+
clearTimeout(this.debounceTimer);
|
|
132
|
+
this.debounceTimer = null;
|
|
133
|
+
}
|
|
134
|
+
if (this.throttleTimer) {
|
|
135
|
+
clearTimeout(this.throttleTimer);
|
|
136
|
+
this.throttleTimer = null;
|
|
137
|
+
}
|
|
138
|
+
this.isActive = false;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Throttle server synchronization
|
|
142
|
+
* Ensures we send updates at most once per interval
|
|
143
|
+
* @private
|
|
144
|
+
*/
|
|
145
|
+
throttleServerSync(throttleMs) {
|
|
146
|
+
const now = Date.now();
|
|
147
|
+
const timeSinceLastSync = now - this.lastServerSyncTime;
|
|
148
|
+
// If enough time has passed, sync immediately
|
|
149
|
+
if (timeSinceLastSync >= throttleMs) {
|
|
150
|
+
this.syncActivityToServer();
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
// Otherwise, schedule a sync for the remaining time
|
|
154
|
+
if (!this.throttleTimer) {
|
|
155
|
+
const remainingTime = throttleMs - timeSinceLastSync;
|
|
156
|
+
this.throttleTimer = setTimeout(() => {
|
|
157
|
+
this.syncActivityToServer();
|
|
158
|
+
}, remainingTime);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Send activity to server
|
|
163
|
+
* @private
|
|
164
|
+
*/
|
|
165
|
+
async syncActivityToServer() {
|
|
166
|
+
this.lastServerSyncTime = Date.now();
|
|
167
|
+
this.throttleTimer = null;
|
|
168
|
+
try {
|
|
169
|
+
await this.presenceClient.recordActivity();
|
|
170
|
+
console.log('[ActivityTracker] Activity synced to server at', new Date().toISOString());
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
console.error('[ActivityTracker] Failed to sync activity to server:', error);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Start web platform tracking
|
|
178
|
+
* Listens to high-significance (keyboard, clicks) and low-significance (mouse, scroll) events
|
|
179
|
+
* @private
|
|
180
|
+
*/
|
|
181
|
+
startWebTracking() {
|
|
182
|
+
if (typeof window === 'undefined') {
|
|
183
|
+
console.warn('[ActivityTracker] Web platform not available');
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
console.log('[ActivityTracker] Starting web event listeners');
|
|
187
|
+
// High-significance events (definite user activity)
|
|
188
|
+
window.addEventListener('keydown', this.handleHighSignificanceActivity);
|
|
189
|
+
window.addEventListener('keypress', this.handleHighSignificanceActivity);
|
|
190
|
+
window.addEventListener('mousedown', this.handleHighSignificanceActivity);
|
|
191
|
+
window.addEventListener('click', this.handleHighSignificanceActivity);
|
|
192
|
+
window.addEventListener('touchstart', this.handleHighSignificanceActivity);
|
|
193
|
+
// Low-significance events (potential idle movement)
|
|
194
|
+
window.addEventListener('mousemove', this.handleLowSignificanceActivity);
|
|
195
|
+
window.addEventListener('scroll', this.handleLowSignificanceActivity);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Stop web platform tracking
|
|
199
|
+
* Removes all web event listeners
|
|
200
|
+
* @private
|
|
201
|
+
*/
|
|
202
|
+
stopWebTracking() {
|
|
203
|
+
if (typeof window === 'undefined')
|
|
204
|
+
return;
|
|
205
|
+
console.log('[ActivityTracker] Removing web event listeners');
|
|
206
|
+
// High-significance events
|
|
207
|
+
window.removeEventListener('keydown', this.handleHighSignificanceActivity);
|
|
208
|
+
window.removeEventListener('keypress', this.handleHighSignificanceActivity);
|
|
209
|
+
window.removeEventListener('mousedown', this.handleHighSignificanceActivity);
|
|
210
|
+
window.removeEventListener('click', this.handleHighSignificanceActivity);
|
|
211
|
+
window.removeEventListener('touchstart', this.handleHighSignificanceActivity);
|
|
212
|
+
// Low-significance events
|
|
213
|
+
window.removeEventListener('mousemove', this.handleLowSignificanceActivity);
|
|
214
|
+
window.removeEventListener('scroll', this.handleLowSignificanceActivity);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Start React Native platform tracking
|
|
218
|
+
* Uses AppState to detect app activity
|
|
219
|
+
* @private
|
|
220
|
+
*/
|
|
221
|
+
startReactNativeTracking() {
|
|
222
|
+
try {
|
|
223
|
+
// Dynamically import AppState for React Native
|
|
224
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
225
|
+
const { AppState } = require('react-native');
|
|
226
|
+
this.activityHandler = AppState.addEventListener('change', (nextAppState) => {
|
|
227
|
+
if (nextAppState === 'active') {
|
|
228
|
+
this.handleActivity();
|
|
229
|
+
}
|
|
230
|
+
});
|
|
231
|
+
console.log('[ActivityTracker] Started React Native AppState tracking');
|
|
232
|
+
}
|
|
233
|
+
catch (error) {
|
|
234
|
+
console.warn('[ActivityTracker] React Native AppState not available:', error);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Stop React Native platform tracking
|
|
239
|
+
* Removes AppState listener
|
|
240
|
+
* @private
|
|
241
|
+
*/
|
|
242
|
+
stopReactNativeTracking() {
|
|
243
|
+
if (this.activityHandler) {
|
|
244
|
+
try {
|
|
245
|
+
// Remove the subscription
|
|
246
|
+
if (typeof this.activityHandler === 'function') {
|
|
247
|
+
// In newer React Native versions, addEventListener returns a remove function
|
|
248
|
+
this.activityHandler();
|
|
249
|
+
}
|
|
250
|
+
else if ('remove' in this.activityHandler) {
|
|
251
|
+
// Older versions have a remove method
|
|
252
|
+
this.activityHandler.remove();
|
|
253
|
+
}
|
|
254
|
+
this.activityHandler = null;
|
|
255
|
+
console.log('[ActivityTracker] Stopped React Native tracking');
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
console.warn('[ActivityTracker] Failed to stop React Native tracking:', error);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get the timestamp of the last detected activity
|
|
264
|
+
* @returns Timestamp in milliseconds
|
|
265
|
+
*/
|
|
266
|
+
getLastActivityTime() {
|
|
267
|
+
return this.lastActivityTime;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Manually trigger activity recording
|
|
271
|
+
* Bypasses debounce and sends immediately
|
|
272
|
+
*/
|
|
273
|
+
async triggerActivity() {
|
|
274
|
+
try {
|
|
275
|
+
await this.presenceClient.recordActivity();
|
|
276
|
+
this.lastActivityTime = Date.now();
|
|
277
|
+
console.log('[ActivityTracker] Activity triggered manually');
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
console.error('[ActivityTracker] Failed to trigger activity:', error);
|
|
281
|
+
throw error;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Update the debounce delay
|
|
286
|
+
* @param ms - New debounce delay in milliseconds
|
|
287
|
+
*/
|
|
288
|
+
setDebounce(ms) {
|
|
289
|
+
if (ms < 1000) {
|
|
290
|
+
console.warn('[ActivityTracker] Debounce too short, using minimum 1000ms');
|
|
291
|
+
ms = 1000;
|
|
292
|
+
}
|
|
293
|
+
this.debounceMs = ms;
|
|
294
|
+
console.log(`[ActivityTracker] Debounce updated to ${ms}ms`);
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Get current debounce setting
|
|
298
|
+
* @returns Debounce delay in milliseconds
|
|
299
|
+
*/
|
|
300
|
+
getDebounce() {
|
|
301
|
+
return this.debounceMs;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Check if activity tracking is currently active
|
|
305
|
+
* @returns True if tracking, false otherwise
|
|
306
|
+
*/
|
|
307
|
+
isTracking() {
|
|
308
|
+
return this.isActive;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Get the current platform
|
|
312
|
+
* @returns Platform type
|
|
313
|
+
*/
|
|
314
|
+
getPlatform() {
|
|
315
|
+
return this.platform;
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Update high-significance throttle delay
|
|
319
|
+
* @param ms - New throttle delay in milliseconds
|
|
320
|
+
*/
|
|
321
|
+
setHighSignificanceThrottle(ms) {
|
|
322
|
+
if (ms < 500) {
|
|
323
|
+
console.warn('[ActivityTracker] High-significance throttle too short, using minimum 500ms');
|
|
324
|
+
ms = 500;
|
|
325
|
+
}
|
|
326
|
+
this.highSignificanceThrottleMs = ms;
|
|
327
|
+
console.log(`[ActivityTracker] High-significance throttle updated to ${ms}ms`);
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Update low-significance throttle delay
|
|
331
|
+
* @param ms - New throttle delay in milliseconds
|
|
332
|
+
*/
|
|
333
|
+
setLowSignificanceThrottle(ms) {
|
|
334
|
+
if (ms < 1000) {
|
|
335
|
+
console.warn('[ActivityTracker] Low-significance throttle too short, using minimum 1000ms');
|
|
336
|
+
ms = 1000;
|
|
337
|
+
}
|
|
338
|
+
this.lowSignificanceThrottleMs = ms;
|
|
339
|
+
console.log(`[ActivityTracker] Low-significance throttle updated to ${ms}ms`);
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=ActivityTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActivityTracker.js","sourceRoot":"","sources":["../../../src/realtime/presence/ActivityTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AutoHeartbeatManager
|
|
3
|
+
* Manages automatic periodic heartbeat to keep presence fresh
|
|
4
|
+
* Matches the test app's auto-heartbeat implementation
|
|
5
|
+
*/
|
|
6
|
+
import { PresenceClient } from './PresenceClient';
|
|
7
|
+
export declare class AutoHeartbeatManager {
|
|
8
|
+
private presenceClient;
|
|
9
|
+
private intervalSeconds;
|
|
10
|
+
private intervalId;
|
|
11
|
+
private lastHeartbeat;
|
|
12
|
+
private isRunning;
|
|
13
|
+
private stateChangeUnsubscribe;
|
|
14
|
+
private wasPausedDueToDisconnect;
|
|
15
|
+
/**
|
|
16
|
+
* Create AutoHeartbeatManager
|
|
17
|
+
* @param presenceClient - PresenceClient instance
|
|
18
|
+
* @param intervalSeconds - Heartbeat interval in seconds (default: 30)
|
|
19
|
+
*/
|
|
20
|
+
constructor(presenceClient: PresenceClient, intervalSeconds?: number);
|
|
21
|
+
/**
|
|
22
|
+
* Start automatic heartbeat
|
|
23
|
+
* Sends heartbeat immediately and then every intervalSeconds
|
|
24
|
+
*/
|
|
25
|
+
start(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Stop automatic heartbeat
|
|
28
|
+
*/
|
|
29
|
+
stop(): void;
|
|
30
|
+
/**
|
|
31
|
+
* Send a single heartbeat
|
|
32
|
+
* @private
|
|
33
|
+
*/
|
|
34
|
+
private sendHeartbeat;
|
|
35
|
+
/**
|
|
36
|
+
* Get the timestamp of the last successful heartbeat
|
|
37
|
+
* @returns Last heartbeat date or null if never sent
|
|
38
|
+
*/
|
|
39
|
+
getLastHeartbeat(): Date | null;
|
|
40
|
+
/**
|
|
41
|
+
* Update the heartbeat interval
|
|
42
|
+
* If currently running, restarts with new interval
|
|
43
|
+
* @param seconds - New interval in seconds
|
|
44
|
+
*/
|
|
45
|
+
setInterval(seconds: number): void;
|
|
46
|
+
/**
|
|
47
|
+
* Get current interval setting
|
|
48
|
+
* @returns Interval in seconds
|
|
49
|
+
*/
|
|
50
|
+
getInterval(): number;
|
|
51
|
+
/**
|
|
52
|
+
* Check if heartbeat is currently running
|
|
53
|
+
* @returns True if running, false otherwise
|
|
54
|
+
*/
|
|
55
|
+
isActive(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Handle connection state changes
|
|
58
|
+
* Pauses heartbeat when disconnected/reconnecting, resumes when connected
|
|
59
|
+
* @private
|
|
60
|
+
*/
|
|
61
|
+
private handleConnectionStateChange;
|
|
62
|
+
/**
|
|
63
|
+
* Cleanup and destroy the heartbeat manager
|
|
64
|
+
* Stops heartbeat and unsubscribes from connection state changes
|
|
65
|
+
*/
|
|
66
|
+
destroy(): void;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=AutoHeartbeatManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoHeartbeatManager.d.ts","sourceRoot":"","sources":["../../../src/realtime/presence/AutoHeartbeatManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGlD,qBAAa,oBAAoB;IAa7B,OAAO,CAAC,cAAc;IACtB,OAAO,CAAC,eAAe;IAbzB,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,sBAAsB,CAAmC;IACjE,OAAO,CAAC,wBAAwB,CAAkB;IAElD;;;;OAIG;gBAEO,cAAc,EAAE,cAAc,EAC9B,eAAe,GAAE,MAAW;IAQtC;;;OAGG;IACH,KAAK,IAAI,IAAI;IAmBb;;OAEG;IACH,IAAI,IAAI,IAAI;IASZ;;;OAGG;YACW,aAAa;IAgB3B;;;OAGG;IACH,gBAAgB,IAAI,IAAI,GAAG,IAAI;IAI/B;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAoBlC;;;OAGG;IACH,WAAW,IAAI,MAAM;IAIrB;;;OAGG;IACH,QAAQ,IAAI,OAAO;IAInB;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IA0BnC;;;OAGG;IACH,OAAO,IAAI,IAAI;CAOhB"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AutoHeartbeatManager
|
|
3
|
+
* Manages automatic periodic heartbeat to keep presence fresh
|
|
4
|
+
* Matches the test app's auto-heartbeat implementation
|
|
5
|
+
*/
|
|
6
|
+
import { ConnectionState } from '../shared/types';
|
|
7
|
+
export class AutoHeartbeatManager {
|
|
8
|
+
/**
|
|
9
|
+
* Create AutoHeartbeatManager
|
|
10
|
+
* @param presenceClient - PresenceClient instance
|
|
11
|
+
* @param intervalSeconds - Heartbeat interval in seconds (default: 30)
|
|
12
|
+
*/
|
|
13
|
+
constructor(presenceClient, intervalSeconds = 30) {
|
|
14
|
+
this.presenceClient = presenceClient;
|
|
15
|
+
this.intervalSeconds = intervalSeconds;
|
|
16
|
+
this.intervalId = null;
|
|
17
|
+
this.lastHeartbeat = null;
|
|
18
|
+
this.isRunning = false;
|
|
19
|
+
this.stateChangeUnsubscribe = null;
|
|
20
|
+
this.wasPausedDueToDisconnect = false;
|
|
21
|
+
// Listen for connection state changes
|
|
22
|
+
this.stateChangeUnsubscribe = this.presenceClient.onStateChange((state) => {
|
|
23
|
+
this.handleConnectionStateChange(state);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Start automatic heartbeat
|
|
28
|
+
* Sends heartbeat immediately and then every intervalSeconds
|
|
29
|
+
*/
|
|
30
|
+
start() {
|
|
31
|
+
if (this.isRunning) {
|
|
32
|
+
console.warn('[AutoHeartbeat] Already running');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
console.log(`[AutoHeartbeat] Starting with ${this.intervalSeconds}s interval`);
|
|
36
|
+
// Send initial heartbeat immediately
|
|
37
|
+
this.sendHeartbeat();
|
|
38
|
+
// Setup interval for subsequent heartbeats
|
|
39
|
+
this.intervalId = setInterval(() => {
|
|
40
|
+
this.sendHeartbeat();
|
|
41
|
+
}, this.intervalSeconds * 1000);
|
|
42
|
+
this.isRunning = true;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Stop automatic heartbeat
|
|
46
|
+
*/
|
|
47
|
+
stop() {
|
|
48
|
+
if (this.intervalId) {
|
|
49
|
+
clearInterval(this.intervalId);
|
|
50
|
+
this.intervalId = null;
|
|
51
|
+
}
|
|
52
|
+
this.isRunning = false;
|
|
53
|
+
console.log('[AutoHeartbeat] Stopped');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Send a single heartbeat
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
59
|
+
async sendHeartbeat() {
|
|
60
|
+
try {
|
|
61
|
+
// Check if connected before invoking hub method
|
|
62
|
+
if (!this.presenceClient.isConnected()) {
|
|
63
|
+
console.warn('[AutoHeartbeat] Not connected, skipping heartbeat');
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
await this.presenceClient.heartbeat();
|
|
67
|
+
this.lastHeartbeat = new Date();
|
|
68
|
+
console.log('[AutoHeartbeat] Heartbeat sent successfully at', this.lastHeartbeat.toISOString());
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
console.error('[AutoHeartbeat] Failed to send heartbeat:', error);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the timestamp of the last successful heartbeat
|
|
76
|
+
* @returns Last heartbeat date or null if never sent
|
|
77
|
+
*/
|
|
78
|
+
getLastHeartbeat() {
|
|
79
|
+
return this.lastHeartbeat;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Update the heartbeat interval
|
|
83
|
+
* If currently running, restarts with new interval
|
|
84
|
+
* @param seconds - New interval in seconds
|
|
85
|
+
*/
|
|
86
|
+
setInterval(seconds) {
|
|
87
|
+
if (seconds < 10) {
|
|
88
|
+
console.warn('[AutoHeartbeat] Interval too short, using minimum 10 seconds');
|
|
89
|
+
seconds = 10;
|
|
90
|
+
}
|
|
91
|
+
if (seconds > 300) {
|
|
92
|
+
console.warn('[AutoHeartbeat] Interval too long, using maximum 300 seconds');
|
|
93
|
+
seconds = 300;
|
|
94
|
+
}
|
|
95
|
+
this.intervalSeconds = seconds;
|
|
96
|
+
// If running, restart with new interval
|
|
97
|
+
if (this.isRunning) {
|
|
98
|
+
console.log(`[AutoHeartbeat] Updating interval to ${seconds}s`);
|
|
99
|
+
this.stop();
|
|
100
|
+
this.start();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get current interval setting
|
|
105
|
+
* @returns Interval in seconds
|
|
106
|
+
*/
|
|
107
|
+
getInterval() {
|
|
108
|
+
return this.intervalSeconds;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Check if heartbeat is currently running
|
|
112
|
+
* @returns True if running, false otherwise
|
|
113
|
+
*/
|
|
114
|
+
isActive() {
|
|
115
|
+
return this.isRunning;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Handle connection state changes
|
|
119
|
+
* Pauses heartbeat when disconnected/reconnecting, resumes when connected
|
|
120
|
+
* @private
|
|
121
|
+
*/
|
|
122
|
+
handleConnectionStateChange(state) {
|
|
123
|
+
if (state === ConnectionState.Disconnected || state === ConnectionState.Reconnecting) {
|
|
124
|
+
// Pause if running
|
|
125
|
+
if (this.isRunning) {
|
|
126
|
+
console.log(`[AutoHeartbeat] Pausing due to connection state: ${state}`);
|
|
127
|
+
if (this.intervalId) {
|
|
128
|
+
clearInterval(this.intervalId);
|
|
129
|
+
this.intervalId = null;
|
|
130
|
+
}
|
|
131
|
+
this.wasPausedDueToDisconnect = true;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
else if (state === ConnectionState.Connected) {
|
|
135
|
+
// Resume if was paused due to disconnect
|
|
136
|
+
if (this.wasPausedDueToDisconnect && this.isRunning) {
|
|
137
|
+
console.log('[AutoHeartbeat] Resuming after reconnection');
|
|
138
|
+
// Send immediate heartbeat on reconnect
|
|
139
|
+
this.sendHeartbeat();
|
|
140
|
+
// Restart interval
|
|
141
|
+
this.intervalId = setInterval(() => {
|
|
142
|
+
this.sendHeartbeat();
|
|
143
|
+
}, this.intervalSeconds * 1000);
|
|
144
|
+
this.wasPausedDueToDisconnect = false;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Cleanup and destroy the heartbeat manager
|
|
150
|
+
* Stops heartbeat and unsubscribes from connection state changes
|
|
151
|
+
*/
|
|
152
|
+
destroy() {
|
|
153
|
+
this.stop();
|
|
154
|
+
if (this.stateChangeUnsubscribe) {
|
|
155
|
+
this.stateChangeUnsubscribe();
|
|
156
|
+
this.stateChangeUnsubscribe = null;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=AutoHeartbeatManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AutoHeartbeatManager.js","sourceRoot":"","sources":["../../../src/realtime/presence/AutoHeartbeatManager.ts"],"names":[],"mappings":"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"}
|