diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/Database/userPreferences.ts | 6 | ||||
| -rw-r--r-- | src/routes/user/[user]/badges/+page.svelte | 10 |
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; |