const e = require("./registration"),
{ addEvent: t } = require("./chat"),
{ isMemberActive: r, getMemberForDeviceKey: i } = require("./query"),
{ updateAvatar: a } = require("./avatars"),
{ KeetContractError: o } = require("./errors"),
n = 10,
s = ["title", "description", "avatar", "supportedLanguages", "blindPeers"],
l = { Title: 1, Description: 2, Avatar: 3, SupportedLanguages: 4, BlindPeers: 5 }
async function u({ header: e, key: u, config: c }, { db: d, writer: g, blobs: f }) {
const [m, p] = await Promise.all([i(d, g.key), d.get("@keet/room-config")])
if (!r(m) || !m.status.isModerator) return
if (0 === u || u > s.length) return
const v = s[u - 1],
b = { ...p, [v]: c[v] }
if (u === l.Avatar) {
const e = p && p[v],
t = c[v]
if (null !== t.small && !t.small?.pointer?.inlined) throw o.ABORT()
const r = null !== t.small ? await a(f, e, t) : null
b[v] = r
}
if (u === l.Title) {
const r = p && p[v],
i = c[v]
r && r !== i && (await t(d, g, { titleChanged: { from: r, to: i } }, e.timestamp))
}
;(u === l.BlindPeers && (b[v] = c[v].slice(0, n)), await d.insert("@keet/room-config", b))
}
function c(e) {
e.add("@keet/update-room-config", u)
}
module.exports = { [e]: c, CONFIG_INDEX_TO_KEY: s, Config: l }