diff --git a/packages/sanity/src/core/store/_legacy/presence/message-transports/bifurTransport.ts b/packages/sanity/src/core/store/_legacy/presence/message-transports/bifurTransport.ts index 1a26807ca45..3c0193f8e31 100644 --- a/packages/sanity/src/core/store/_legacy/presence/message-transports/bifurTransport.ts +++ b/packages/sanity/src/core/store/_legacy/presence/message-transports/bifurTransport.ts @@ -26,7 +26,17 @@ type RollCallEvent = { session: string } -type IncomingBifurEvent = RollCallEvent | BifurStateMessage | BifurDisconnectMessage +type ExpireEvent = { + type: 'expires' + event: 'expires' + at: string +} + +type IncomingBifurEvent = + | RollCallEvent + | BifurStateMessage + | BifurDisconnectMessage + | ExpireEvent const handleIncomingMessage = (event: IncomingBifurEvent): TransportEvent => { // console.log('ws incoming event', event) @@ -57,14 +67,13 @@ const handleIncomingMessage = (event: IncomingBifurEvent): Transport } } - // if (event.type === 'subscription') { - // return { - // type: 'subscription', - // userId: event.i, - // sessionId: event.m.session, - // timestamp: new Date().toISOString(), - // } - // } + if (event.event === 'expires') { + return { + type: 'authorizationExpire', + expiresAt: event.at, + timestamp: new Date().toISOString(), + } + } throw new Error(`Got unknown presence event: ${JSON.stringify(event)}`) } @@ -78,12 +87,13 @@ export const createBifurTransport = (bifur: BifurClient, sessionId: string): Tra .listen>('authorization') .pipe(map(handleIncomingMessage)) - const testIncomingAuthorizationEvents$: Observable = bifur - .listen>('authorization') - .subscribe((event) => { - // eslint-disable-next-line no-console - console.log('[++++++]Authorization event', event) - }) + // const testIncomingAuthorizationEvents$: Observable = bifur + // .listen>('authorization') + // .pipe(map(handleIncomingMessage)) + // .subscribe((event) => { + // // eslint-disable-next-line no-console + // console.log('[++++++]Authorization event', event) + // }) const dispatchMessage = (message: TransportMessage): Observable => { if (message.type === 'rollCall') { diff --git a/packages/sanity/src/core/store/_legacy/presence/message-transports/transport.ts b/packages/sanity/src/core/store/_legacy/presence/message-transports/transport.ts index 54c629f4643..9f956acf24e 100644 --- a/packages/sanity/src/core/store/_legacy/presence/message-transports/transport.ts +++ b/packages/sanity/src/core/store/_legacy/presence/message-transports/transport.ts @@ -42,8 +42,21 @@ export interface RollCallEvent extends RollCallMessage { userId: string } -export type TransportMessage = DisconnectMessage | StateMessage | RollCallMessage -export type TransportEvent = StateEvent | RollCallEvent | DisconnectEvent +export interface AuthorizationExpireMessage { + type: 'authorizationExpire' +} + +export interface AuthorizationExpireEvent extends AuthorizationExpireMessage { + expiresAt: string + timestamp: string +} + +export type TransportMessage = + | DisconnectMessage + | StateMessage + | RollCallMessage + | AuthorizationExpireMessage +export type TransportEvent = StateEvent | RollCallEvent | DisconnectEvent | AuthorizationExpireEvent // This is the interface a transport must implement export type Transport = [ diff --git a/packages/sanity/src/core/store/_legacy/presence/presence-store.ts b/packages/sanity/src/core/store/_legacy/presence/presence-store.ts index 517edb2a15e..842de975699 100644 --- a/packages/sanity/src/core/store/_legacy/presence/presence-store.ts +++ b/packages/sanity/src/core/store/_legacy/presence/presence-store.ts @@ -126,6 +126,10 @@ export function __tmp_wrap_presenceStore(context: { SESSION_ID, ) + authorizationEvents$.subscribe((event) => { + // console.log('[++++++]Authorization event', event) + }) + const currentLocation$ = new BehaviorSubject([]) const locationChange$ = currentLocation$.pipe(distinctUntilChanged())