diff --git a/islands/TalkListContent.tsx b/islands/TalkListContent.tsx index 492e2175..1fa8cf64 100644 --- a/islands/TalkListContent.tsx +++ b/islands/TalkListContent.tsx @@ -140,9 +140,7 @@ function TalkListContent({ state }: { state: AppStateType }) { } }} /> - {settingPage.value === 2 && ( - - )} + {settingPage.value === 2 && } {settingPage.value === 1 && ( <>
@@ -288,7 +286,7 @@ function OtherSettingPage({ settingPage }: { settingPage: any }) { const allowOtherServerUsers = useSignal(false); useEffect(() => { async function run() { - const res = await fetch("/api/v2/client/users/settings") + const res = await fetch("/api/v2/client/users/settings"); const json = await res.json(); addFriendById.value = json.settings.addFriendById; allowOtherServerUsers.value = json.settings.allowOtherServerUsers; @@ -318,7 +316,11 @@ function OtherSettingPage({ settingPage }: { settingPage: any }) {
@@ -330,7 +332,11 @@ function OtherSettingPage({ settingPage }: { settingPage: any }) {
@@ -338,12 +344,36 @@ function OtherSettingPage({ settingPage }: { settingPage: any }) {
- + 更新 +
diff --git a/routes/api/v2/client/settings/privacy.ts b/routes/api/v2/client/settings/privacy.ts index 4aacce3e..be7d651a 100644 --- a/routes/api/v2/client/settings/privacy.ts +++ b/routes/api/v2/client/settings/privacy.ts @@ -2,3 +2,41 @@ //POST /api/v2/client/settings/privacy // { setting: { ... }, csrftoken: string } // -> { status: boolean, message: string } +import takos from "../../../../../util/takos.ts"; +import userConfig from "../../../../../models/userConfig.ts"; +export const handler = { + async POST(req: Request, ctx: any) { + if (!ctx.state.data.loggedIn) { + return ctx.json({ status: false, message: "You are not logged in" }); + } + let body; + try { + body = await req.json(); + } catch (e) { + return ctx.json({ status: false, message: "Invalid JSON" }); + } + const userid = ctx.state.data.userid; + const setting = body.setting; + const csrftoken = body.csrftoken; + if (await takos.checkCsrfToken(csrftoken, ctx.state.data.sessionid) === false) { + return new Response(JSON.stringify({ status: false, message: "Invalid CSRF Token" }), { + headers: { "Content-Type": "application/json" }, + status: 400, + }); + } + if ( + typeof setting !== "object" || setting === null || setting.addFriendById === undefined || setting.allowOtherServerUsers === undefined || typeof setting.addFriendById !== "boolean" || + typeof setting.allowOtherServerUsers !== "boolean" + ) { + return new Response(JSON.stringify({ status: false, message: "Invalid setting" }), { + headers: { "Content-Type": "application/json" }, + status: 400, + }); + } + await userConfig.updateOne({ userid: userid }, { addFriendById: setting.addFriendById, allowOtherServerUsers: setting.allowOtherServerUsers }); + return new Response(JSON.stringify({ status: true, message: "Success" }), { + headers: { "Content-Type": "application/json" }, + status: 200, + }); + }, +};