@@ -50,7 +50,7 @@ import { match } from "ts-pattern";
50
50
import { z } from "zod" ;
51
51
import { zx } from "zodix" ;
52
52
import { getAuthorizationHeader , gqlClient } from "~/lib/api.server" ;
53
- import { getCoreDetails , getUserPreferences } from "~/lib/graphql.server" ;
53
+ import { getUserDetails , getUserPreferences } from "~/lib/graphql.server" ;
54
54
import classes from "~/styles/preferences.module.css" ;
55
55
56
56
const searchSchema = z . object ( {
@@ -59,15 +59,13 @@ const searchSchema = z.object({
59
59
60
60
export const loader = async ( { request } : LoaderFunctionArgs ) => {
61
61
const query = zx . parseQuery ( request , searchSchema ) ;
62
- const [ coreDetails , userPreferences ] = await Promise . all ( [
63
- getCoreDetails ( ) ,
62
+ const [ userPreferences , userDetails ] = await Promise . all ( [
64
63
getUserPreferences ( request ) ,
64
+ getUserDetails ( request ) ,
65
65
] ) ;
66
66
return json ( {
67
67
query,
68
- coreDetails : {
69
- preferencesChangeAllowed : coreDetails . preferencesChangeAllowed ,
70
- } ,
68
+ userDetails : { isDemo : userDetails . isDemo } ,
71
69
userPreferences,
72
70
} ) ;
73
71
} ;
@@ -79,7 +77,8 @@ export const meta: MetaFunction = () => {
79
77
const notificationContent = {
80
78
title : "Invalid action" ,
81
79
color : "red" ,
82
- message : "Changing preferences is disabled on this instance." ,
80
+ message :
81
+ "Changing preferences is disabled for demo users. Please create an account to save your preferences." ,
83
82
} ;
84
83
85
84
export const action = async ( { request } : ActionFunctionArgs ) => {
@@ -159,7 +158,7 @@ export default function Page() {
159
158
color = "red"
160
159
variant = "outline"
161
160
onClick = { async ( e ) => {
162
- if ( loaderData . coreDetails . preferencesChangeAllowed ) {
161
+ if ( ! loaderData . userDetails . isDemo ) {
163
162
if (
164
163
! confirm (
165
164
"This will reset all your preferences to default. Are you sure you want to continue?" ,
@@ -182,7 +181,7 @@ export default function Page() {
182
181
</ ActionIcon >
183
182
</ Form >
184
183
</ Group >
185
- { ! loaderData . coreDetails . preferencesChangeAllowed ? (
184
+ { loaderData . userDetails . isDemo ? (
186
185
< Alert icon = { < IconAlertCircle /> } variant = "outline" color = "violet" >
187
186
{ notificationContent . message }
188
187
</ Alert >
@@ -203,7 +202,7 @@ export default function Page() {
203
202
< Text mb = "md" > The different sections on the dashboard.</ Text >
204
203
< DragDropContext
205
204
onDragEnd = { ( { destination, source } ) => {
206
- if ( loaderData . coreDetails . preferencesChangeAllowed ) {
205
+ if ( ! loaderData . userDetails . isDemo ) {
207
206
flushSync ( ( ) => {
208
207
dashboardElementsHandlers . reorder ( {
209
208
from : source . index ,
@@ -254,9 +253,7 @@ export default function Page() {
254
253
label = { changeCase ( snakeCase ( name ) ) }
255
254
// biome-ignore lint/suspicious/noExplicitAny: required here
256
255
defaultChecked = { isEnabled as any }
257
- disabled = {
258
- ! loaderData . coreDetails . preferencesChangeAllowed
259
- }
256
+ disabled = { ! ! loaderData . userDetails . isDemo }
260
257
onChange = { ( ev ) => {
261
258
const lot = snakeCase ( name ) ;
262
259
appendPref (
@@ -282,7 +279,7 @@ export default function Page() {
282
279
value : c ,
283
280
} ) ) }
284
281
defaultValue = { loaderData . userPreferences . general . reviewScale }
285
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
282
+ disabled = { ! ! loaderData . userDetails . isDemo }
286
283
onChange = { ( val ) => {
287
284
if ( val ) appendPref ( "general.review_scale" , val ) ;
288
285
} }
@@ -294,7 +291,7 @@ export default function Page() {
294
291
defaultChecked = {
295
292
loaderData . userPreferences . general . displayNsfw
296
293
}
297
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
294
+ disabled = { ! ! loaderData . userDetails . isDemo }
298
295
onChange = { ( ev ) => {
299
296
appendPref (
300
297
"general.display_nsfw" ,
@@ -309,7 +306,7 @@ export default function Page() {
309
306
defaultChecked = {
310
307
loaderData . userPreferences . general . disableYankIntegrations
311
308
}
312
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
309
+ disabled = { ! ! loaderData . userDetails . isDemo }
313
310
onChange = { ( ev ) => {
314
311
appendPref (
315
312
"general.disable_yank_integrations" ,
@@ -366,9 +363,7 @@ export default function Page() {
366
363
)
367
364
. otherwise ( ( ) => undefined ) }
368
365
defaultChecked = { isEnabled }
369
- disabled = {
370
- ! loaderData . coreDetails . preferencesChangeAllowed
371
- }
366
+ disabled = { ! ! loaderData . userDetails . isDemo }
372
367
onChange = { ( ev ) => {
373
368
appendPref (
374
369
`notifications.${ snakeCase ( name ) } ` ,
@@ -394,7 +389,7 @@ export default function Page() {
394
389
loaderData . userPreferences . fitness . exercises . defaultTimer ||
395
390
undefined
396
391
}
397
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
392
+ disabled = { ! ! loaderData . userDetails . isDemo }
398
393
onChange = { ( num ) => {
399
394
appendPref ( "fitness.exercises.default_timer" , String ( num ) ) ;
400
395
} }
@@ -405,7 +400,7 @@ export default function Page() {
405
400
defaultValue = {
406
401
loaderData . userPreferences . fitness . exercises . saveHistory
407
402
}
408
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
403
+ disabled = { ! ! loaderData . userDetails . isDemo }
409
404
onChange = { ( num ) => {
410
405
if ( num )
411
406
appendPref ( "fitness.exercises.save_history" , String ( num ) ) ;
@@ -438,7 +433,7 @@ export default function Page() {
438
433
label : startCase ( c . toLowerCase ( ) ) ,
439
434
} ) ) }
440
435
defaultValue = { loaderData . userPreferences . fitness . exercises . unitSystem . toLowerCase ( ) }
441
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
436
+ disabled = { ! ! loaderData . userDetails . isDemo }
442
437
onChange = { ( val ) => {
443
438
if ( val ) appendPref ( "fitness.exercises.unit_system" , val ) ;
444
439
} }
@@ -454,7 +449,7 @@ export default function Page() {
454
449
key = { name }
455
450
label = { changeCase ( snakeCase ( name ) ) }
456
451
defaultChecked = { isEnabled }
457
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
452
+ disabled = { ! ! loaderData . userDetails . isDemo }
458
453
onChange = { ( ev ) => {
459
454
appendPref (
460
455
`fitness.measurements.inbuilt.${ snakeCase ( name ) } ` ,
@@ -472,7 +467,7 @@ export default function Page() {
472
467
null ,
473
468
4 ,
474
469
) }
475
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
470
+ disabled = { ! ! loaderData . userDetails . isDemo }
476
471
autosize
477
472
formatOnBlur
478
473
onChange = { ( v ) => {
@@ -532,7 +527,7 @@ const EditDashboardElement = (props: {
532
527
label = "Hidden"
533
528
labelPosition = "left"
534
529
defaultChecked = { focusedElement . hidden }
535
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
530
+ disabled = { ! ! loaderData . userDetails . isDemo }
536
531
onChange = { ( ev ) => {
537
532
const newValue = ev . currentTarget . checked ;
538
533
const newDashboardData = Array . from (
@@ -552,7 +547,7 @@ const EditDashboardElement = (props: {
552
547
label = "Number of elements"
553
548
size = "xs"
554
549
defaultValue = { focusedElement . numElements }
555
- disabled = { ! loaderData . coreDetails . preferencesChangeAllowed }
550
+ disabled = { ! ! loaderData . userDetails . isDemo }
556
551
onChange = { ( num ) => {
557
552
if ( typeof num === "number" ) {
558
553
const newDashboardData = Array . from (
0 commit comments