OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / legacy-keet-core-schemas / lib / schema-builder.js

146 lines · javascript ref:
const e = require("@holepunchto/hyperindex"),
  i = require("./chat"),
  t = require("./config"),
  s = require("./members"),
  n = require("./reactions"),
  o = require("./invitations"),
  a = require("./devices"),
  r = require("./mailbox"),
  l = require("./private-mailbox"),
  c = require("./private-rooms"),
  v = require("./private-devices")
module.exports = class {
  constructor({ view: i, tx: t }) {
    ;((this.view = i), (this.dex = t || new e(i.bee, { offset: 2 })))
  }
  createCollections() {
    if (this.view.collections) return
    this.view.isApplyView ||
      this.dex.createCollections([
        i.ChatCollection,
        n.ReactionsCollection,
        o.InvitationsCollection,
        a.DevicesCollection,
        s.PendingMembersCollection,
        s.MembersCollection,
        s.AvatarsCollection,
        t.Collection,
        r.MailboxCollection,
        r.OpenMailboxesCollection,
        s.InactiveMembersCollection,
        r.MailboxCollectionV2,
        l.PrivateMailboxCollection,
        l.SentPrivateMailboxCollection,
        c.RoomsCollection,
        v.DeviceKeysCollection,
        v.AttestationsCollection,
        s.MutedMembersCollection,
      ])
    const [e, x, d, b, h, m, M, p, u, w, I, y, C, _, P, B, V, D] = this.dex.collections
    return {
      chat: e,
      reactions: x,
      invitations: d,
      devices: b,
      pendingMembers: h,
      inactiveMembers: I,
      members: m,
      avatars: M,
      config: p,
      mailbox: u,
      mailboxV2: y,
      openMailboxes: w,
      privateMailbox: C,
      sentPrivateMailbox: _,
      privateRooms: P,
      privateDeviceKeys: B,
      privateDeviceAttestations: V,
      mutedMembers: D,
    }
  }
  _indexReactions(e, i) {
    return this.view._applyView.reactions.autobaseIndex(i)
  }
  _indexDevices(e, i) {
    return this.view._applyView.devices.autobaseIndex(i)
  }
  _indexMembers(e, i) {
    return this.view._applyView.members.autobaseIndexMembers(i)
  }
  _indexInactiveMembers(e, i) {
    return this.view._applyView.members.autobaseIndexInactiveMembers(i)
  }
  _indexChat(e, i) {
    return this.view._applyView.chat.autobaseIndex(i)
  }
  _indexMailbox(e, i) {
    return this.view._applyView.mailbox.autobaseIndex(i)
  }
  _indexPrivateMailbox(e, i) {
    return this.view._applyView.privateProfile.privateMailbox.autobaseIndex(i)
  }
  _indexSentPrivateMailbox(e, i) {
    return this.view._applyView.privateProfile.privateMailbox.autobaseIndexSent(i)
  }
  createIndexes() {
    if (this.view.indexes) return
    this.view.isApplyView ||
      (this.view.collections.reactions.createIndexes(
        n.ReactionsIndexes,
        this._indexReactions.bind(this),
      ),
      this.view.collections.devices.createIndexes(a.DevicesIndexes, this._indexDevices.bind(this)),
      this.view.collections.members.createIndexes(s.MembersIndexes, this._indexMembers.bind(this)),
      this.view.collections.chat.createIndexes(i.ChatIndexes, this._indexChat.bind(this)),
      this.view.collections.inactiveMembers.createIndexes(
        s.InactiveMembersIndexes,
        this._indexInactiveMembers.bind(this),
      ),
      this.view.collections.mailboxV2.createIndexes(
        r.MailboxIndexes,
        this._indexMailbox.bind(this),
      ),
      this.view.collections.privateMailbox.createIndexes(
        l.PrivateMailboxIndexes,
        this._indexPrivateMailbox.bind(this),
      ),
      this.view.collections.sentPrivateMailbox.createIndexes(
        l.PrivateMailboxIndexes,
        this._indexSentPrivateMailbox.bind(this),
      ))
    const [e, t, o, c] = this.view.collections.chat.indexes,
      [v, x] = this.view.collections.reactions.indexes,
      [d, b, h] = this.view.collections.devices.indexes,
      [m, M, p, u, w] = this.view.collections.members.indexes,
      [I] = this.view.collections.inactiveMembers.indexes,
      [y, C] = this.view.collections.mailboxV2.indexes,
      [_, P, B, V] = this.view.collections.privateMailbox.indexes
    return (
      (this.view.indexes = {
        eventIdsByMessageId: e,
        eventIdsByClock: t,
        mentionsByMemberId: o,
        drivesByPath: c,
        reactionDigests: v,
        reactionsByMember: x,
        deviceCount: b,
        mobileDeviceCount: h,
        deviceKeysByNoisePublicKey: d,
        memberKeysByMemberName: m,
        membersByDeviceKey: M,
        inactiveMembersByDeviceKey: I,
        capabilitiesByDeviceKey: p,
        moderatorsByMemberKey: u,
        membersCount: w,
        mailboxCounter: y,
        mailByMessageId: C,
        dmByMember: _,
        privateMailByMessageId: P,
        privateMailByPublicMail: B,
        privateMailboxCounter: V,
      }),
      this.view.indexes
    )
  }
}