aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/Database/userPreferences.ts6
-rw-r--r--src/routes/user/[user]/badges/+page.svelte10
2 files changed, 15 insertions, 1 deletions
diff --git a/src/lib/Database/userPreferences.ts b/src/lib/Database/userPreferences.ts
index 4b0e224f..ba1eb1d8 100644
--- a/src/lib/Database/userPreferences.ts
+++ b/src/lib/Database/userPreferences.ts
@@ -9,6 +9,7 @@ export interface UserPreferences {
biography: string | null;
badge_wall_css: string;
hide_awc_badges: boolean;
+ pinned_badge_wall_categories: string;
}
interface NewUserPreferences {
@@ -43,7 +44,10 @@ export const setUserPreferences = async (userId: number, preferences: NewUserPre
biography: preferences.biography || (userPreferences ? userPreferences.biography : null),
badge_wall_css:
preferences.badge_wall_css || (userPreferences ? userPreferences.badge_wall_css : ''),
- hide_awc_badges: preferences.hide_awc_badges || false
+ hide_awc_badges: preferences.hide_awc_badges || false,
+ pinned_badge_wall_categories: userPreferences
+ ? userPreferences.pinned_badge_wall_categories
+ : ''
},
{ onConflict: 'user_id' }
)
diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte
index b7c5ca2d..fc938b21 100644
--- a/src/routes/user/[user]/badges/+page.svelte
+++ b/src/routes/user/[user]/badges/+page.svelte
@@ -323,6 +323,16 @@
return Object.entries(groupedBadges)
.sort((a, b) => a[1].length - b[1].length)
+ .sort((a, b) => {
+ if (preferences.pinned_badge_wall_categories) {
+ const pinnedCategories = preferences.pinned_badge_wall_categories.split(',');
+
+ if (pinnedCategories.includes(a[0]) && !pinnedCategories.includes(b[0])) return -1;
+ if (pinnedCategories.includes(b[0]) && !pinnedCategories.includes(a[0])) return 1;
+ }
+
+ return 0;
+ })
.reduce((set: GroupedBadges, [key, value]) => {
set[key] = value;