我累了

This commit is contained in:
CrescentLeaf
2025-10-08 02:52:02 +08:00
parent 0df1149618
commit 38c28c3fb6
4 changed files with 32 additions and 7 deletions

View File

@@ -18,6 +18,8 @@ export type CallMethod =
"Chat.getInfo" | "Chat.getInfo" |
"Chat.updateSettings" |
"Chat.createGroup" | "Chat.createGroup" |
"Chat.getIdForPrivate" | "Chat.getIdForPrivate" |

View File

@@ -5,6 +5,7 @@ export default class Chat {
declare id: string declare id: string
declare title: string declare title: string
declare avatar?: string declare avatar?: string
declare settings?: { [key: string]: unknown }
[key: string]: unknown [key: string]: unknown
} }

View File

@@ -24,6 +24,7 @@ import SwitchPreference from '../preference/SwitchPreference.tsx'
import SelectPreference from '../preference/SelectPreference.tsx' import SelectPreference from '../preference/SelectPreference.tsx'
import TextFieldPreference from '../preference/TextFieldPreference.tsx' import TextFieldPreference from '../preference/TextFieldPreference.tsx'
import Preference from '../preference/Preference.tsx' import Preference from '../preference/Preference.tsx'
import GroupSettings from "../../api/client_data/GroupSettings.ts"
interface Args extends React.HTMLAttributes<HTMLElement> { interface Args extends React.HTMLAttributes<HTMLElement> {
target: string target: string
@@ -64,6 +65,7 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
} as Chat) } as Chat)
const [tabItemSelected, setTabItemSelected] = React.useState('None') const [tabItemSelected, setTabItemSelected] = React.useState('None')
const [groupPreferenceDefaultValue, setGroupPreferenceDefaultValue] = React.useState<GroupSettings>({})
const tabRef = React.useRef<Tab>(null) const tabRef = React.useRef<Tab>(null)
const chatPanelRef = React.useRef<HTMLElement>(null) const chatPanelRef = React.useRef<HTMLElement>(null)
useEventListener(tabRef, 'change', () => { useEventListener(tabRef, 'change', () => {
@@ -82,6 +84,11 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
await loadMore() await loadMore()
setTabItemSelected("Chat") setTabItemSelected("Chat")
if (re.data!.type == 'group') {
setGroupPreferenceDefaultValue(re.data!.settings as GroupSettings)
groupPreferenceStore.setter(re.data!.settings as GroupSettings)
console.log(re.data!.settings as GroupSettings)
}
setTimeout(() => { setTimeout(() => {
chatPanelRef.current!.scrollTo({ chatPanelRef.current!.scrollTo({
top: 10000000000, top: 10000000000,
@@ -210,9 +217,22 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
addFile(file.type, file.name, file) addFile(file.type, file.name, file)
} }
}) })
const groupPreferenceStore = new PreferenceStore() const groupPreferenceStore = new PreferenceStore<GroupSettings>()
groupPreferenceStore.setOnUpdate(async (value) => {
const re = await Client.invoke("Chat.updateSettings", {
token: data.access_token,
target,
settings: value,
})
if (checkApiSuccessOrSncakbar(re, "更新设定失败")) return
setChatInfo(JSON.parse(JSON.stringify({
...chatInfo,
settings: value as object,
})))
})
return ( return (
<div style={{ <div style={{
width: '100%', width: '100%',
@@ -448,14 +468,14 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
<SwitchPreference <SwitchPreference
title="允许入群" title="允许入群"
icon="person_add" icon="person_add"
defaultState={false} defaultState={groupPreferenceDefaultValue.allow_new_member_join || false}
updater={groupPreferenceStore.updater('allow_new_member_join')} /> updater={groupPreferenceStore.updater('allow_new_member_join')} />
<SwitchPreference <SwitchPreference
title="允许成员邀请" title="允许成员邀请"
description="目前压根没有这项功能, 甚至还不能查看成员列表, 以后再说吧" description="目前压根没有这项功能, 甚至还不能查看成员列表, 以后再说吧"
icon="_" icon="_"
disabled={true} disabled={true}
defaultState={false} defaultState={groupPreferenceDefaultValue.allow_new_member_from_invitation || false}
updater={groupPreferenceStore.updater('allow_new_member_from_invitation')} /> updater={groupPreferenceStore.updater('allow_new_member_from_invitation')} />
<SelectPreference <SelectPreference
title="入群验证方式" title="入群验证方式"
@@ -467,14 +487,14 @@ export default function ChatFragment({ target, showReturnButton, onReturnButtonC
}} }}
disabled={!groupPreferenceStore.value.allow_new_member_join} disabled={!groupPreferenceStore.value.allow_new_member_join}
updater={groupPreferenceStore.updater('new_member_join_method')} updater={groupPreferenceStore.updater('new_member_join_method')}
defaultCheckedId="disabled" /> defaultCheckedId={groupPreferenceDefaultValue.new_member_join_method || 'disabled'} />
{ {
groupPreferenceStore.value.new_member_join_method == 'answered_and_allowed_by_admin' groupPreferenceStore.value.new_member_join_method == 'answered_and_allowed_by_admin'
&& <TextFieldPreference && <TextFieldPreference
title="设置问题" title="设置问题"
icon="_" icon="_"
description="WIP" description="WIP"
defaultState="" defaultState={groupPreferenceDefaultValue.answered_and_allowed_by_admin_question || ''}
disabled={true} disabled={true}
updater={groupPreferenceStore.updater('answered_and_allowed_by_admin_question')} /> updater={groupPreferenceStore.updater('answered_and_allowed_by_admin_question')} />
} }

View File

@@ -17,6 +17,8 @@ export type CallMethod =
"User.getMyRecentChats" | "User.getMyRecentChats" |
"Chat.getInfo" | "Chat.getInfo" |
"Chat.updateSettings" |
"Chat.createGroup" | "Chat.createGroup" |