Marmot-TS
    Preparing search index...

    Class InviteManager

    InviteManager orchestrates the lifecycle of reading Welcome invites.

    It takes gift-wrapped events from the app, handles decryption/parsing, persists invites to storage, and provides interfaces for consumption.

    The app is responsible for:

    • Syncing events from relays
    • Passing gift wrap events (kind 1059) to ingestEvent()
    • Calling decryptGiftWraps() to decrypt (triggers nip-44 decryption prompts)
    • Reading unread invites via getUnread(), watchUnread(), or event listeners
    • Marking invites as read after processing

    State lifecycle:

    1. RECEIVED: Gift wrap ingested, stored, awaiting decryption
    2. UNREAD: Decrypted and parsed, ready for app consumption
    3. SEEN: Event ID tracked to prevent re-processing
    4. (DELETED): Read invites are removed from storage

    Store layout:

    • __seen key holds a serialized set of all seen event IDs
    • received:<eventId> keys hold undecrypted gift wraps
    • unread:<rumorId> keys hold decrypted welcome rumors

    Hierarchy

    Index

    Client - Invite Manager

    • Process a single received (undecrypted) gift wrap by event ID.

      Attempts to decrypt and parse the specified event.

      • On success: moves to 'unread' state and emits 'newInvite' event
      • On failure: emits 'error' event (event remains in 'seen' to prevent retry)

      This method prompts the user via signer for decryption.

      Parameters

      • eventId: string | ReceivedGiftWrap

        The gift wrap event ID to decrypt, or the gift wrap event itself

      Returns Promise<UnreadInvite | null>

      The decrypted welcome rumor, or null if failed to decrypt

      Error if the event is not found in received store

    • Decrypts all received gift wraps.

      Attempts to decrypt and parse each received gift wrap.

      • On success: moves to 'unread' state and emits 'newInvite' event
      • On failure: emits 'error' event (event remains in 'seen' to prevent retry)

      This method prompts the user via signer for each decryption, so it should be called deliberately by the app (not automatically).

      Returns Promise<UnreadInvite[]>

      Array of successfully decrypted welcome rumors

    • Ingest a gift wrap event (kind 1059).

      The event is checked against the seen index for deduplication. If new, it's stored in the 'received' state awaiting decryption.

      Parameters

      Returns Promise<boolean>

      true if event was new and stored, false if already seen

      Error if event is not kind 1059

    Other

    prefixed: string | boolean
    • Type Parameters

      Parameters

      Returns this

    • Return an array listing the events for which the emitter has registered listeners.

      Returns (keyof InviteManagerEvents)[]

    • Return the number of listeners listening to a given event.

      Parameters

      Returns number

    • Return the listeners registered for a given event.

      Type Parameters

      Parameters

      • event: T

      Returns (
          (
              ...args: ArgumentMap<InviteManagerEvents>[Extract<
                  T,
                  keyof InviteManagerEvents,
              >],
          ) => void
      )[]

    • Type Parameters

      Parameters

      • event: T
      • Optionalfn: (
            ...args: ArgumentMap<InviteManagerEvents>[Extract<
                T,
                keyof InviteManagerEvents,
            >],
        ) => void
      • Optionalcontext: any
      • Optionalonce: boolean

      Returns this

    • Add a listener for a given event.

      Type Parameters

      Parameters

      Returns this

    • Add a one-time listener for a given event.

      Type Parameters

      Parameters

      Returns this

    • Remove all listeners, or those of the specified event.

      Parameters

      • Optionalevent: keyof InviteManagerEvents

      Returns this

    • Remove the listeners of a given event.

      Type Parameters

      Parameters

      • event: T
      • Optionalfn: (
            ...args: ArgumentMap<InviteManagerEvents>[Extract<
                T,
                keyof InviteManagerEvents,
            >],
        ) => void
      • Optionalcontext: any
      • Optionalonce: boolean

      Returns this