diff options
Diffstat (limited to 'src/lib/Database/SB/User')
| -rw-r--r-- | src/lib/Database/SB/User/preferences.ts | 70 |
1 files changed, 26 insertions, 44 deletions
diff --git a/src/lib/Database/SB/User/preferences.ts b/src/lib/Database/SB/User/preferences.ts index fcffbff2..d1f03ee8 100644 --- a/src/lib/Database/SB/User/preferences.ts +++ b/src/lib/Database/SB/User/preferences.ts @@ -22,6 +22,15 @@ interface NewUserPreferences { pinned_badge_wall_categories?: string[]; } +const defaultPreferences = { + pinned_hololive_streams: [], + hide_missing_badges: false, + biography: null, + badge_wall_css: "", + hide_awc_badges: false, + pinned_badge_wall_categories: [], +} satisfies Omit<UserPreferences, "created_at" | "updated_at" | "user_id">; + export const getUserPreferences = async (userId: number) => { const { data, error } = await sb .from("user_preferences") @@ -38,26 +47,27 @@ export const setUserPreferences = async ( preferences: NewUserPreferences, ) => { const userPreferences = await getUserPreferences(userId); + const currentPreferences = userPreferences ?? defaultPreferences; const { data, error } = await sb .from("user_preferences") .upsert( { user_id: userId, - updated_at: preferences.updated_at || new Date().toISOString(), + updated_at: preferences.updated_at ?? new Date().toISOString(), pinned_hololive_streams: - preferences.pinned_hololive_streams || - (userPreferences ? userPreferences.pinned_hololive_streams : []), - hide_missing_badges: preferences.hide_missing_badges || false, - biography: - preferences.biography || - (userPreferences ? userPreferences.biography : null), + preferences.pinned_hololive_streams ?? + currentPreferences.pinned_hololive_streams, + hide_missing_badges: + preferences.hide_missing_badges ?? + currentPreferences.hide_missing_badges, + biography: preferences.biography ?? currentPreferences.biography, badge_wall_css: - preferences.badge_wall_css || - (userPreferences ? userPreferences.badge_wall_css : ""), - hide_awc_badges: preferences.hide_awc_badges || false, + preferences.badge_wall_css ?? currentPreferences.badge_wall_css, + hide_awc_badges: + preferences.hide_awc_badges ?? currentPreferences.hide_awc_badges, pinned_badge_wall_categories: - preferences.pinned_badge_wall_categories || - (userPreferences ? userPreferences.pinned_badge_wall_categories : ""), + preferences.pinned_badge_wall_categories ?? + currentPreferences.pinned_badge_wall_categories, }, { onConflict: "user_id" }, ) @@ -94,12 +104,9 @@ export const toggleHideMissingBadges = async (userId: number) => { return await setUserPreferences(userId, { updated_at: new Date().toISOString(), - pinned_hololive_streams: userPreferences - ? userPreferences.pinned_hololive_streams - : [], hide_missing_badges: userPreferences ? !userPreferences.hide_missing_badges - : false, + : true, }); }; @@ -108,40 +115,21 @@ export const toggleHideAWCBadges = async (userId: number) => { return await setUserPreferences(userId, { updated_at: new Date().toISOString(), - hide_awc_badges: userPreferences ? !userPreferences.hide_awc_badges : false, + hide_awc_badges: userPreferences ? !userPreferences.hide_awc_badges : true, }); }; export const setCSS = async (userId: number, css: string) => { - const userPreferences = await getUserPreferences(userId); - return await setUserPreferences(userId, { updated_at: new Date().toISOString(), - pinned_hololive_streams: userPreferences - ? userPreferences.pinned_hololive_streams - : [], - hide_missing_badges: userPreferences - ? userPreferences.hide_missing_badges - : false, - badge_wall_css: - css || - "/* Use classes and IDs such as .badges, #badges, .badge, or standard elements like body and details, or anything, as long as it's valid CSS! */", + badge_wall_css: css, }); }; export const setBiography = async (userId: number, biography: string) => { - const userPreferences = await getUserPreferences(userId); - return await setUserPreferences(userId, { updated_at: new Date().toISOString(), - pinned_hololive_streams: userPreferences - ? userPreferences.pinned_hololive_streams - : [], - hide_missing_badges: userPreferences - ? userPreferences.hide_missing_badges - : false, - badge_wall_css: userPreferences ? userPreferences.badge_wall_css : "", - biography: biography || "\n", + biography, }); }; @@ -161,9 +149,6 @@ export const togglePinnedBadgeWallCategory = async ( return await setUserPreferences(userId, { updated_at: new Date().toISOString(), - pinned_hololive_streams: userPreferences.pinned_hololive_streams, - hide_missing_badges: userPreferences.hide_missing_badges, - badge_wall_css: userPreferences.badge_wall_css, pinned_badge_wall_categories: pinnedCategories, }); }; @@ -178,9 +163,6 @@ export const setPinnedBadgeWallCategories = async ( return await setUserPreferences(userId, { updated_at: new Date().toISOString(), - pinned_hololive_streams: userPreferences.pinned_hololive_streams, - hide_missing_badges: userPreferences.hide_missing_badges, - badge_wall_css: userPreferences.badge_wall_css, pinned_badge_wall_categories: categories, }); }; |