diff options
| author | Fuwn <[email protected]> | 2024-05-04 20:26:49 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-05-04 20:26:49 -0700 |
| commit | e242c23c10cbfb51bab1a678daef34441f127eda (patch) | |
| tree | 5194d8a49db17f07d0ba19713a45ab0379ae2cd3 /src/lib/Database | |
| parent | feat(badges): pinned categories (diff) | |
| download | due.moe-e242c23c10cbfb51bab1a678daef34441f127eda.tar.xz due.moe-e242c23c10cbfb51bab1a678daef34441f127eda.zip | |
feat(user): pinned category ui
Diffstat (limited to 'src/lib/Database')
| -rw-r--r-- | src/lib/Database/userPreferences.ts | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/lib/Database/userPreferences.ts b/src/lib/Database/userPreferences.ts index ba1eb1d8..9f55e110 100644 --- a/src/lib/Database/userPreferences.ts +++ b/src/lib/Database/userPreferences.ts @@ -19,6 +19,7 @@ interface NewUserPreferences { badge_wall_css?: string; biography?: string; hide_awc_badges?: boolean; + pinned_badge_wall_categories?: string; } export const getUserPreferences = async (userId: number) => { @@ -45,9 +46,9 @@ export const setUserPreferences = async (userId: number, preferences: NewUserPre badge_wall_css: preferences.badge_wall_css || (userPreferences ? userPreferences.badge_wall_css : ''), hide_awc_badges: preferences.hide_awc_badges || false, - pinned_badge_wall_categories: userPreferences - ? userPreferences.pinned_badge_wall_categories - : '' + pinned_badge_wall_categories: + preferences.pinned_badge_wall_categories || + (userPreferences ? userPreferences.pinned_badge_wall_categories : '') }, { onConflict: 'user_id' } ) @@ -119,3 +120,23 @@ export const setBiography = async (userId: number, biography: string) => { biography: biography || '\n' }); }; + +export const togglePinnedBadgeWallCategory = async (userId: number, category: string) => { + const userPreferences = await getUserPreferences(userId); + + if (!userPreferences) return null; + + const pinnedCategories = userPreferences.pinned_badge_wall_categories.split(','); + const index = pinnedCategories.indexOf(category); + + if (index === -1) pinnedCategories.push(category); + else pinnedCategories.splice(index, 1); + + 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.join(',') + }); +}; |