@@ -2,93 +2,26 @@ import { db } from '@sim/db'
22import { settings } from '@sim/db/schema'
33import { createLogger } from '@sim/logger'
44import { generateShortId } from '@sim/utils/id'
5- import { eq } from 'drizzle-orm'
65import { type NextRequest , NextResponse } from 'next/server'
76import { updateUserSettingsContract } from '@/lib/api/contracts'
87import { parseRequest , validationErrorResponse } from '@/lib/api/server'
98import { getSession } from '@/lib/auth'
109import { generateRequestId } from '@/lib/core/utils/request'
1110import { withRouteHandler } from '@/lib/core/utils/with-route-handler'
11+ import { defaultUserSettings , getUserSettings } from '@/lib/users/queries'
1212
1313const logger = createLogger ( 'UserSettingsAPI' )
1414
15- const defaultSettings = {
16- theme : 'system' ,
17- autoConnect : true ,
18- telemetryEnabled : true ,
19- emailPreferences : { } ,
20- billingUsageNotificationsEnabled : true ,
21- showTrainingControls : false ,
22- superUserModeEnabled : false ,
23- mothershipEnvironment : 'default' ,
24- errorNotificationsEnabled : true ,
25- snapToGridSize : 0 ,
26- showActionBar : true ,
27- timezone : null ,
28- lastActiveWorkspaceId : null ,
29- }
30-
3115export const GET = withRouteHandler ( async ( ) => {
3216 const requestId = generateRequestId ( )
3317
3418 try {
3519 const session = await getSession ( )
36-
37- if ( ! session ?. user ?. id ) {
38- logger . info ( `[${ requestId } ] Returning default settings for unauthenticated user` )
39- return NextResponse . json ( { data : defaultSettings } , { status : 200 } )
40- }
41-
42- const userId = session . user . id
43- const result = await db
44- . select ( {
45- theme : settings . theme ,
46- autoConnect : settings . autoConnect ,
47- telemetryEnabled : settings . telemetryEnabled ,
48- emailPreferences : settings . emailPreferences ,
49- billingUsageNotificationsEnabled : settings . billingUsageNotificationsEnabled ,
50- showTrainingControls : settings . showTrainingControls ,
51- superUserModeEnabled : settings . superUserModeEnabled ,
52- mothershipEnvironment : settings . mothershipEnvironment ,
53- errorNotificationsEnabled : settings . errorNotificationsEnabled ,
54- snapToGridSize : settings . snapToGridSize ,
55- showActionBar : settings . showActionBar ,
56- timezone : settings . timezone ,
57- lastActiveWorkspaceId : settings . lastActiveWorkspaceId ,
58- } )
59- . from ( settings )
60- . where ( eq ( settings . userId , userId ) )
61- . limit ( 1 )
62-
63- if ( ! result . length ) {
64- return NextResponse . json ( { data : defaultSettings } , { status : 200 } )
65- }
66-
67- const userSettings = result [ 0 ]
68-
69- return NextResponse . json (
70- {
71- data : {
72- theme : userSettings . theme ,
73- autoConnect : userSettings . autoConnect ,
74- telemetryEnabled : userSettings . telemetryEnabled ,
75- emailPreferences : userSettings . emailPreferences ?? { } ,
76- billingUsageNotificationsEnabled : userSettings . billingUsageNotificationsEnabled ?? true ,
77- showTrainingControls : userSettings . showTrainingControls ?? false ,
78- superUserModeEnabled : userSettings . superUserModeEnabled ?? false ,
79- mothershipEnvironment : userSettings . mothershipEnvironment ?? 'default' ,
80- errorNotificationsEnabled : userSettings . errorNotificationsEnabled ?? true ,
81- snapToGridSize : userSettings . snapToGridSize ?? 0 ,
82- showActionBar : userSettings . showActionBar ?? true ,
83- timezone : userSettings . timezone ?? null ,
84- lastActiveWorkspaceId : userSettings . lastActiveWorkspaceId ?? null ,
85- } ,
86- } ,
87- { status : 200 }
88- )
20+ const data = await getUserSettings ( session ?. user ?. id ?? null )
21+ return NextResponse . json ( { data } , { status : 200 } )
8922 } catch ( error : any ) {
9023 logger . error ( `[${ requestId } ] Settings fetch error` , error )
91- return NextResponse . json ( { data : defaultSettings } , { status : 200 } )
24+ return NextResponse . json ( { data : defaultUserSettings } , { status : 200 } )
9225 }
9326} )
9427
0 commit comments