aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Database
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-05-04 20:26:49 -0700
committerFuwn <[email protected]>2024-05-04 20:26:49 -0700
commite242c23c10cbfb51bab1a678daef34441f127eda (patch)
tree5194d8a49db17f07d0ba19713a45ab0379ae2cd3 /src/lib/Database
parentfeat(badges): pinned categories (diff)
downloaddue.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.ts27
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(',')
+ });
+};