46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
import chalk from "chalk"
|
|
import Chat from "./Chat.ts"
|
|
import User from "./User.ts"
|
|
import GroupSettingsBean from "./GroupSettingsBean.ts"
|
|
|
|
class GroupSettings {
|
|
declare chat: ChatGroup
|
|
declare settings: GroupSettingsBean
|
|
constructor(chat: ChatGroup) {
|
|
this.chat = chat
|
|
this.settings = JSON.parse(chat.bean.settings)
|
|
}
|
|
|
|
update(bean: GroupSettingsBean) {
|
|
const updateValue = (key: string) => {
|
|
if (key in bean)
|
|
this.settings[key] = bean[key]
|
|
}
|
|
for (const k of [
|
|
'allow_new_member_join',
|
|
'allow_new_member_from_invitation',
|
|
'new_member_join_method',
|
|
'answered_and_allowed_by_admin_question',
|
|
])
|
|
updateValue(k)
|
|
|
|
this.apply()
|
|
}
|
|
apply() {
|
|
this.chat.setAttr('settings', JSON.stringify(this.settings))
|
|
}
|
|
}
|
|
|
|
export default class ChatGroup extends Chat {
|
|
getSettings() {
|
|
return new GroupSettings(this)
|
|
}
|
|
|
|
static fromChat(chat: Chat) {
|
|
return new ChatGroup(chat.bean)
|
|
}
|
|
|
|
static createGroup(chatId?: string) {
|
|
return this.create(chatId || crypto.randomUUID(), 'group')
|
|
}
|
|
} |