MCPcopy
hub / github.com/fccview/jotty / updateUserSettings

Function updateUserSettings

app/_server/actions/users/settings.ts:10–61  ·  view source on GitHub ↗
(
  settings: Partial<User>
)

Source from the content-addressed store, hash-verified

8import { getCurrentUser } from "./queries";
9
10export const updateUserSettings = async (
11 settings: Partial<User>
12): Promise<Result<{ user: User }>> => {
13 try {
14 const currentUser = await getCurrentUser();
15 if (!currentUser) {
16 await logUserEvent("user_settings_updated", "unknown", false, { error: "Not authenticated" });
17 return { success: false, error: "Not authenticated" };
18 }
19
20 const allUsers = await readJsonFile(USERS_FILE);
21 const userIndex = await getUserIndex(currentUser.username);
22
23 const updates: Partial<User> = {};
24 for (const [key, value] of Object.entries(settings)) {
25 if (value !== undefined) {
26 (updates as any)[key] = value;
27 }
28 }
29
30 const updatedUser: User = {
31 ...allUsers[userIndex],
32 ...updates,
33 };
34
35 allUsers[userIndex] = updatedUser;
36 await writeJsonFile(allUsers, USERS_FILE);
37
38 await logAudit({
39 level: "INFO",
40 action: "user_settings_updated",
41 category: "settings",
42 success: true,
43 metadata: {
44 changes: Object.keys(updates),
45 settingsUpdated: updates,
46 },
47 });
48
49 return { success: true, data: { user: updatedUser } };
50 } catch (error) {
51 console.error("Error updating user settings:", error);
52 await logAudit({
53 level: "ERROR",
54 action: "user_settings_updated",
55 category: "settings",
56 success: false,
57 errorMessage: "Failed to update user settings",
58 });
59 return { success: false, error: "Failed to update user settings" };
60 }
61};

Callers 15

KonamiProviderFunction · 0.90
generateKeyPairFunction · 0.90
importKeysFunction · 0.90
setCustomKeyPathFunction · 0.90
deleteKeysFunction · 0.90
verifyAndEnableMfaFunction · 0.90
disableMfaFunction · 0.90
regenerateRecoveryCodeFunction · 0.90
handleLanguageChangeFunction · 0.90
handleThemeChangeFunction · 0.90
handleAutoDecryptChangeFunction · 0.90
handleMethodChangeFunction · 0.90

Calls 6

getCurrentUserFunction · 0.90
logUserEventFunction · 0.90
readJsonFileFunction · 0.90
getUserIndexFunction · 0.90
writeJsonFileFunction · 0.90
logAuditFunction · 0.90

Tested by

no test coverage detected