@@ -28,6 +28,7 @@ import {
28
28
MetadataLot ,
29
29
type UserMediaFeaturesEnabledPreferences ,
30
30
UserUpcomingCalendarEventsDocument ,
31
+ type UserPreferences ,
31
32
} from "@ryot/generated/graphql/backend/graphql" ;
32
33
import { displayWeightWithUnit , humanizeDuration } from "@ryot/ts-utils" ;
33
34
import {
@@ -61,24 +62,28 @@ import {
61
62
62
63
const cookieName = ApplicationKey . CurrentWorkout ;
63
64
65
+ const getTake = ( prefs : UserPreferences , el : DashboardElementLot ) => {
66
+ const t = prefs . general . dashboard . find (
67
+ ( de ) => de . section === el ,
68
+ ) ?. numElements ;
69
+ invariant ( t , `No take found for ${ el } ` ) ;
70
+ return t ;
71
+ } ;
72
+
64
73
export const loader = async ( { request } : LoaderFunctionArgs ) => {
65
- const userPreferences = await getUserPreferences ( request ) ;
66
- const getTake = ( el : DashboardElementLot ) => {
67
- const t = userPreferences . general . dashboard . find (
68
- ( de ) => de . section === el ,
69
- ) ?. numElements ;
70
- invariant ( t , `No take found for ${ el } ` ) ;
71
- return t ;
72
- } ;
73
- const takeUpcoming = getTake ( DashboardElementLot . Upcoming ) ;
74
- const takeInProgress = getTake ( DashboardElementLot . InProgress ) ;
74
+ const prefs = await getUserPreferences ( request ) ;
75
+ const takeUpcoming = getTake ( prefs , DashboardElementLot . Upcoming ) ;
76
+ const takeInProgress = getTake ( prefs , DashboardElementLot . InProgress ) ;
75
77
const userCollectionsList = await getUserCollectionsList ( request ) ;
76
- const collectionId = userCollectionsList [ 0 ] . id ;
78
+ const foundCollection = userCollectionsList . find (
79
+ ( c ) => c . name === "In Progress" ,
80
+ ) ;
81
+ invariant ( foundCollection , 'No collection found for "In Progress"' ) ;
77
82
const { collectionContents } = await gqlClient . request (
78
83
CollectionContentsDocument ,
79
84
{
80
85
input : {
81
- collectionId,
86
+ collectionId : foundCollection . id ,
82
87
take : takeInProgress ,
83
88
sort : { order : GraphqlSortOrder . Desc } ,
84
89
} ,
@@ -100,11 +105,11 @@ export const loader = async ({ request }: LoaderFunctionArgs) => {
100
105
return json ( {
101
106
workoutInProgress,
102
107
userPreferences : {
103
- reviewScale : userPreferences . general . reviewScale ,
104
- dashboard : userPreferences . general . dashboard ,
105
- media : userPreferences . featuresEnabled . media ,
106
- fitness : userPreferences . featuresEnabled . fitness ,
107
- unitSystem : userPreferences . fitness . exercises . unitSystem ,
108
+ reviewScale : prefs . general . reviewScale ,
109
+ dashboard : prefs . general . dashboard ,
110
+ media : prefs . featuresEnabled . media ,
111
+ fitness : prefs . featuresEnabled . fitness ,
112
+ unitSystem : prefs . fitness . exercises . unitSystem ,
108
113
} ,
109
114
latestUserSummary,
110
115
userUpcomingCalendarEvents,
@@ -362,51 +367,55 @@ export default function Page() {
362
367
] }
363
368
/>
364
369
{ loaderData . userPreferences . media . enabled ? (
365
- < ActualDisplayStat
366
- icon = { < IconServer /> }
367
- lot = "Metadata stats"
368
- color = { theme . colors . grape [ 8 ] }
369
- data = { [
370
- {
371
- label : "Media" ,
372
- value :
373
- loaderData . latestUserSummary . media . metadataOverall
374
- . interactedWith ,
375
- type : "number" ,
376
- } ,
377
- {
378
- label : "Reviews" ,
379
- value :
380
- loaderData . latestUserSummary . media . metadataOverall
381
- . reviewed ,
382
- type : "number" ,
383
- hideIfZero : true ,
384
- } ,
385
- ] }
386
- />
370
+ < >
371
+ < ActualDisplayStat
372
+ icon = { < IconServer /> }
373
+ lot = "Metadata stats"
374
+ color = { theme . colors . grape [ 8 ] }
375
+ data = { [
376
+ {
377
+ label : "Media" ,
378
+ value :
379
+ loaderData . latestUserSummary . media . metadataOverall
380
+ . interactedWith ,
381
+ type : "number" ,
382
+ } ,
383
+ {
384
+ label : "Reviews" ,
385
+ value :
386
+ loaderData . latestUserSummary . media . metadataOverall
387
+ . reviewed ,
388
+ type : "number" ,
389
+ hideIfZero : true ,
390
+ } ,
391
+ ] }
392
+ />
393
+ { loaderData . userPreferences . media . people ? (
394
+ < ActualDisplayStat
395
+ icon = { < IconFriends /> }
396
+ lot = "People stats"
397
+ color = { theme . colors . red [ 9 ] }
398
+ data = { [
399
+ {
400
+ label : "People" ,
401
+ value :
402
+ loaderData . latestUserSummary . media . peopleOverall
403
+ . interactedWith ,
404
+ type : "number" ,
405
+ } ,
406
+ {
407
+ label : "Reviews" ,
408
+ value :
409
+ loaderData . latestUserSummary . media . peopleOverall
410
+ . reviewed ,
411
+ type : "number" ,
412
+ hideIfZero : true ,
413
+ } ,
414
+ ] }
415
+ />
416
+ ) : null }
417
+ </ >
387
418
) : null }
388
- < ActualDisplayStat
389
- icon = { < IconFriends /> }
390
- lot = "People stats"
391
- color = { theme . colors . red [ 9 ] }
392
- data = { [
393
- {
394
- label : "People" ,
395
- value :
396
- loaderData . latestUserSummary . media . peopleOverall
397
- . interactedWith ,
398
- type : "number" ,
399
- } ,
400
- {
401
- label : "Reviews" ,
402
- value :
403
- loaderData . latestUserSummary . media . peopleOverall
404
- . reviewed ,
405
- type : "number" ,
406
- hideIfZero : true ,
407
- } ,
408
- ] }
409
- />
410
419
{ loaderData . userPreferences . fitness . enabled &&
411
420
loaderData . latestUserSummary . fitness . workouts . duration +
412
421
loaderData . latestUserSummary . fitness . workouts . recorded >
@@ -461,6 +470,7 @@ export default function Page() {
461
470
loaderData . latestUserSummary . fitness
462
471
. measurementsRecorded ,
463
472
type : "number" ,
473
+ hideIfZero : true ,
464
474
} ,
465
475
{
466
476
label : "Exercises" ,
0 commit comments