From c23ce07c85c29e48f15756d214617ba7c6c6b35b Mon Sep 17 00:00:00 2001 From: CrescentLeaf Date: Thu, 14 Aug 2025 12:05:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=20User=20=E7=B1=BB?= =?UTF-8?q?=E4=B8=AD=E7=9A=84=20Settings?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/data/User.ts | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/data/User.ts b/src/data/User.ts index 8d93ea5..e9d2814 100644 --- a/src/data/User.ts +++ b/src/data/User.ts @@ -113,14 +113,36 @@ export default class User { this.setAttr("avatar", avatar) } - /* getSettings(): Settings { - + getSettings(): User.Settings { + return new Settings(JSON.parse(this.bean.settings)) } static Settings = class { + declare bean: User.SettingsBean + declare user: User + constructor(user: User, bean: User.SettingsBean) { + this.bean = bean + this.user = user + for (const i of [ + + ]) { + this["set" + i.substring(0, 1).toUpperCase() + i.substring(1)] = (v: unknown) => { + this.set(i, v) + } + } + } + + set(key: string, value: unknown) { + this.bean[key] = value + } + get(key: string) { + return this.bean[key] + } + apply() { + this.user.setAttr("settings", JSON.stringify(this.bean)) + } + } + static SettingsBean = class { } - static SettingsBean = interface { - - } */ }