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 }) {
-
+ 更新
+
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,
+ });
+ },
+};