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
)
}
}