userDataService Service
File: src/services/userDataService.ts
Overview
Exports
- userDataService - const export
Functions
detectMobileDevice()
No description available.
Parameters: None
Returns: boolean
typescript
/**
* User Data Service
*
* Discord/Slack-style user data management with:
* - Smart fetching and caching
* - Real-time presence sync
* - Single source of truth for all user data
* - Efficient context-based subscriptions
*/
import { supabase } from '@/supabase'
import { UserStatus, type UserData, type UserContext, type CustomUserStatus } from '@/types'
import { activityTracker } from '@/services/ActivityTracker'
import { debug } from '@/utils/debug'
import { userStorage } from '@/utils/userScopedStorage'
import type { RealtimeChannel } from '@supabase/supabase-js'
/**
* Detect if user is on a mobile device
* Touch-enabled desktops/laptops with a mouse are NOT considered mobile
*/
function detectMobileDevice(): booleanClasses
UserDataService
No description available.
Methods:
initializeinitializeBackgroundFeaturesgetStatusFromLocalStoragecatchgetCustomStatusFromLocalStoragesaveCustomStatusToLocalStorageparseCustomStatussetupActivityTrackinghandleActivityResumedhandleAutomaticStatusChangeinitializeCurrentUsersetupGlobalPresencetrackCurrentUserGloballyhandleGlobalPresenceSynchandleGlobalPresenceJoinhandleGlobalPresenceLeaveupdateUserFromGlobalPresenceupdateUserFromPresencestartHeartbeathandleConnectionLostsubscribeToContextsetupServerPresencetrackCurrentUserInServerhandleServerSyncexecuteServerSynchandleServerUserJoinhandleServerUserLeavehandleServerMemberJoinhandleServerMemberLeavehandleProfileUpdatehandleProfileUpdateBroadcastloadUsersDatagetUserProfilefetchUserProfilefetchMultipleUserProfilesensureUsersLoadedisUserDataStaleupdateCurrentUserStatussetCustomStatussetRichPresenceclearCustomStatusgetCustomStatusgetUserCustomStatusisCurrentUserMobileupdatePresenceStatusupdateCurrentUserProfilebroadcastProfileToContextsgetUsergetCurrentUsergetUsersInContextgetAllUsersgetOnlineUsersunsubscribeFromContextemitEventrefreshGlobalPresencecleanuprefreshgetStatsfindUserIdByUsernametriggerPresenceSyncgetOnlineUsersInContextuntrackFromAllPresenceChannels
Properties:
userscontextscurrentUserIdglobalChannelinitializedduplicatespendingSubscriptionsmanagementwasManuallySetmanualStatuslastAutoStatussettingsCACHE_TTLHEARTBEAT_INTERVALdebouncingpresenceSyncTimeoutsPRESENCE_SYNC_DEBOUNCEheartbeatTimerheartbeatFailuresMAX_HEARTBEAT_FAILURESuserusernameIMPORTANTuserIdchannelfunctionalitytrueFIXrenderbackupsavedstatusNumberlocalStorageUserStatusnullcustomStatusexpiredformatundefineddirectlyitstatuscustomStatusJsonexpiresAttextemojiemoji_urltypedetailsstatesetAtemptytrackingeventsresumptionuserDatachoiceinactivityOnlineflagsOfflinetomanualprofileloadeddatahandlingfinalStatusPrimarythatdatabasenowonlinesupabaseonlybackupStatusconsistencyappp_user_idp_typep_textp_emojip_emoji_urlp_detailsp_statep_duration_minutesiddisplayNameavatarUrlbannerUrlbiocolordomainDBCheckisLocalisOnlineisMobilelastSeenlastHeartbeatlastCacheUpdatecreatedAtisAdminisModeratorsourceinitialStatuserrorSIMPLIFIEDsimpleeventspamneedpresenceconnectionchangeserrorsuser_iddisplay_nameavatar_urlcustom_statusis_mobileonline_atfailedchurnuserCountgloballyOnlineUserIdsfalsejoinexistinguserStatusnetofflineNOTErepeatedlylosscontextprogressuserIdslastSyncneededsubscriptionschannelNameserverschematablefilterconnectedserverIdIMPLEMENTATIONothersapproachSTATUSbanner_urlserver_idsyncsexistingTimeoutsynconlineUserIdscontextUserscompletenewPresencesleaveleftPresencespayloadnewUserIdupdatecontextIdleftUserIdupdatedProfilechangedreactloadingclientspayloadsbroadcastimmediatelypatternuuidPatternfederatedmissingUserIdsloadUsersDatainstanceupdatedAtcreated_atupdated_atrolesis_adminis_moderatoris_locallast_seenforceRefreshefficientlyresultsrefreshageisManualNotefeedbackverificationExpectedchannelscleardurationMinutespersistencefederationupdatedoptionsprovidedcachemobilesufficientsubscriptionSupabasepropagationdetailautomaticallyresetheartbeattimeoutsdebuggingtotalUsersonlineUserscurrentUserglobalChannelConnectedsearchKeyspecifieduserKey
Source Code Insights
File Size: 67187 characters Lines of Code: 1867 Imports: 6
Usage Example
typescript
import { userDataService } from '@/services/userDataService'
// Example usage
detectMobileDevice()This documentation was automatically generated from the source code.
