diff --git a/src/components/Invitations/InviteNotifier.ts b/src/components/Invitations/InviteNotifier.ts index 11c83f98..ef370999 100644 --- a/src/components/Invitations/InviteNotifier.ts +++ b/src/components/Invitations/InviteNotifier.ts @@ -3,13 +3,15 @@ import { PendingInvite } from './InviteProvider'; export type InviteParams = PendingInvite; +type InviteState = { + loading?: boolean; + failedToDecode?: boolean; + failureMessage?: string; +}; + export type EventTypeHandlers = { inviteDetected: (inviteParams: InviteParams) => void; - inviteLoadingStateChanged: (state: { - loading?: boolean; - failedToDecode?: boolean; - failureMessage?: string; - }) => void; + inviteLoadingStateChanged: (state: InviteState) => void; }; export type EventTypes = keyof EventTypeHandlers; @@ -17,6 +19,7 @@ export type EventTypeHandler = EventTypeHandlers[T]; export class InviteNotifier { private emitter = new EventEmitter(); private lastInviteDetectedParams: InviteParams | undefined; + private lastInviteState: InviteState | undefined; public addListener( eventType: T, @@ -26,6 +29,13 @@ export class InviteNotifier { (listener as EventTypeHandler<'inviteDetected'>)( this.lastInviteDetectedParams, ); + } else if ( + eventType === 'inviteLoadingStateChanged' && + this.lastInviteState + ) { + (listener as EventTypeHandler<'inviteLoadingStateChanged'>)( + this.lastInviteState, + ); } return this.emitter.addListener(eventType, listener); }