'Assign to me by default' toggle in Account.tsx

This commit is contained in:
2026-01-29 22:43:02 +00:00
parent 130f564c33
commit e339274069
10 changed files with 1418 additions and 5 deletions

View File

@@ -0,0 +1 @@
ALTER TABLE "User" ADD COLUMN "preferences" json DEFAULT '{"assignByDefault":false}'::json NOT NULL;

File diff suppressed because it is too large Load Diff

View File

@@ -204,6 +204,13 @@
"when": 1769643481882,
"tag": "0028_quick_supernaut",
"breakpoints": true
},
{
"idx": 29,
"version": "7",
"when": 1769726204311,
"tag": "0029_fantastic_venom",
"breakpoints": true
}
]
}

View File

@@ -39,6 +39,7 @@ export async function updateById(
avatarURL?: string | null;
iconPreference?: IconStyle;
plan?: string;
preferences?: Record<string, boolean>;
},
): Promise<UserRecord | undefined> {
const [user] = await db.update(User).set(updates).where(eq(User.id, id)).returning();

View File

@@ -14,5 +14,6 @@ export default async function me(req: AuthedRequest) {
user: safeUser as Omit<UserRecord, "passwordHash">,
csrfToken: req.csrfToken,
emailVerified: user.emailVerified,
preferences: user.preferences,
});
}

View File

@@ -8,16 +8,16 @@ export default async function update(req: AuthedRequest) {
const parsed = await parseJsonBody(req, UserUpdateRequestSchema);
if ("error" in parsed) return parsed.error;
const { name, password, avatarURL, iconPreference } = parsed.data;
const { name, password, avatarURL, iconPreference, preferences } = parsed.data;
const user = await getUserById(req.userId);
if (!user) {
return errorResponse("user not found", "USER_NOT_FOUND", 404);
}
if (!name && !password && avatarURL === undefined && !iconPreference) {
if (!name && !password && avatarURL === undefined && !iconPreference && preferences === undefined) {
return errorResponse(
"at least one of name, password, avatarURL, or iconPreference must be provided",
"at least one of name, password, avatarURL, iconPreference, or preferences must be provided",
"NO_UPDATES",
400,
);
@@ -42,7 +42,13 @@ export default async function update(req: AuthedRequest) {
}
const { updateById } = await import("../../db/queries/users");
const updatedUser = await updateById(user.id, { name, passwordHash, avatarURL, iconPreference });
const updatedUser = await updateById(user.id, {
name,
passwordHash,
avatarURL,
iconPreference,
preferences,
});
if (!updatedUser) {
return errorResponse("failed to update user", "UPDATE_FAILED", 500);