diff --git a/.changeset/25921-readerless-presence-sync-helpers.md b/.changeset/25921-readerless-presence-sync-helpers.md new file mode 100644 index 00000000000..a4afeb74033 --- /dev/null +++ b/.changeset/25921-readerless-presence-sync-helpers.md @@ -0,0 +1,11 @@ +--- +'@object-ui/collaboration': patch +'@object-ui/mobile': patch +--- + +refactor(collaboration,mobile): delete the module-local `createPresenceUpdater` and `requestBackgroundSync` helpers that nothing reads + +Clause-②: no +Metadata-protocol: none + +Neither name is exported from its package entry (the single `.` export), so no host can import them; the compiled `usePresence.js` and `serviceWorkerSource.js` simply stop carrying the two dead function bodies. Behaviour of every exported name is unchanged. diff --git a/ui/packages/collaboration/src/usePresence.ts b/ui/packages/collaboration/src/usePresence.ts index c184b3d9276..d1d0d1a3ea2 100644 --- a/ui/packages/collaboration/src/usePresence.ts +++ b/ui/packages/collaboration/src/usePresence.ts @@ -205,41 +205,3 @@ export function usePresence( currentUser, }; } - -/** - * Update remote user presence. Call this when receiving presence data - * from other users via the realtime channel. - * - * @returns A function to update or remove a remote user from the presence set. - */ -export function createPresenceUpdater(): { - updateUser: (user: PresenceUser) => void; - removeUser: (userId: string) => void; - getUsers: () => PresenceUser[]; - onUsersChange: (callback: (users: Map) => void) => () => void; -} { - const users = new Map(); - const listeners = new Set<(users: Map) => void>(); - - const notify = () => { - listeners.forEach(cb => cb(new Map(users))); - }; - - return { - updateUser(user: PresenceUser) { - users.set(user.userId, user); - notify(); - }, - removeUser(userId: string) { - users.delete(userId); - notify(); - }, - getUsers() { - return Array.from(users.values()); - }, - onUsersChange(callback: (users: Map) => void) { - listeners.add(callback); - return () => { listeners.delete(callback); }; - }, - }; -} diff --git a/ui/packages/mobile/src/serviceWorkerSource.ts b/ui/packages/mobile/src/serviceWorkerSource.ts index dd12fdb58ea..18a3cbe5320 100644 --- a/ui/packages/mobile/src/serviceWorkerSource.ts +++ b/ui/packages/mobile/src/serviceWorkerSource.ts @@ -95,15 +95,3 @@ self.addEventListener('sync', (event) => { }); `; } - -/** - * Request a one-shot background sync. The page should call this after - * enqueuing offline work so the browser will wake the SW when the - * connection returns. Returns false if Background Sync is unsupported. - */ -export async function requestBackgroundSync(tag = 'objectui-offline-queue'): Promise { - if (typeof navigator === 'undefined') return false; - const reg: any = await (navigator as any).serviceWorker?.ready; - if (!reg || !reg.sync) return false; - try { await reg.sync.register(tag); return true; } catch { return false; } -}