aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/Database/userPreferences.ts14
-rw-r--r--src/lib/Locale/english.ts3
-rw-r--r--src/lib/Locale/japanese.ts3
-rw-r--r--src/lib/Locale/layout.ts3
-rw-r--r--src/routes/api/preferences/+server.ts10
-rw-r--r--src/routes/user/[user]/+page.svelte14
-rw-r--r--src/routes/user/[user]/badges/+page.svelte68
7 files changed, 80 insertions, 35 deletions
diff --git a/src/lib/Database/userPreferences.ts b/src/lib/Database/userPreferences.ts
index a98d13ec..4b0e224f 100644
--- a/src/lib/Database/userPreferences.ts
+++ b/src/lib/Database/userPreferences.ts
@@ -8,6 +8,7 @@ export interface UserPreferences {
hide_missing_badges: boolean;
biography: string | null;
badge_wall_css: string;
+ hide_awc_badges: boolean;
}
interface NewUserPreferences {
@@ -16,6 +17,7 @@ interface NewUserPreferences {
hide_missing_badges?: boolean;
badge_wall_css?: string;
biography?: string;
+ hide_awc_badges?: boolean;
}
export const getUserPreferences = async (userId: number) => {
@@ -40,7 +42,8 @@ export const setUserPreferences = async (userId: number, preferences: NewUserPre
hide_missing_badges: preferences.hide_missing_badges || false,
biography: preferences.biography || (userPreferences ? userPreferences.biography : null),
badge_wall_css:
- preferences.badge_wall_css || (userPreferences ? userPreferences.badge_wall_css : '')
+ preferences.badge_wall_css || (userPreferences ? userPreferences.badge_wall_css : ''),
+ hide_awc_badges: preferences.hide_awc_badges || false
},
{ onConflict: 'user_id' }
)
@@ -79,6 +82,15 @@ export const toggleHideMissingBadges = async (userId: number) => {
});
};
+export const toggleHideAWCBadges = async (userId: number) => {
+ const userPreferences = await getUserPreferences(userId);
+
+ return await setUserPreferences(userId, {
+ updated_at: new Date().toISOString(),
+ hide_awc_badges: userPreferences ? !userPreferences.hide_awc_badges : false
+ });
+};
+
export const setCSS = async (userId: number, css: string) => {
const userPreferences = await getUserPreferences(userId);
diff --git a/src/lib/Locale/english.ts b/src/lib/Locale/english.ts
index 794a97d5..f68db610 100644
--- a/src/lib/Locale/english.ts
+++ b/src/lib/Locale/english.ts
@@ -210,6 +210,9 @@ const English: Locale = {
hideMissingBadges: {
title: 'Hide missing badges from Badge Wall',
hint: "Hide any 404'd badges from appearing on your Badge Wall, excluding during edit mode"
+ },
+ hideAWCBadges: {
+ title: 'Hide AWC badges from Badge Wall'
}
}
},
diff --git a/src/lib/Locale/japanese.ts b/src/lib/Locale/japanese.ts
index 5986395b..089946ef 100644
--- a/src/lib/Locale/japanese.ts
+++ b/src/lib/Locale/japanese.ts
@@ -212,6 +212,9 @@ const Japanese: Locale = {
hideMissingBadges: {
title: 'Badge Wallから不足しているバッジを隠す',
hint: '画像がエラー404を返すバッジをBadge Wallに表示しないようにします。編集モード中を除く'
+ },
+ hideAWCBadges: {
+ title: 'Badge WallからAWCバッジを隠す'
}
}
},
diff --git a/src/lib/Locale/layout.ts b/src/lib/Locale/layout.ts
index 0e1bdecc..4fea935a 100644
--- a/src/lib/Locale/layout.ts
+++ b/src/lib/Locale/layout.ts
@@ -212,6 +212,9 @@ export interface Locale {
title: LocaleValue;
hint: LocaleValue;
};
+ hideAWCBadges: {
+ title: LocaleValue;
+ };
};
};
lists: {
diff --git a/src/routes/api/preferences/+server.ts b/src/routes/api/preferences/+server.ts
index 151af298..379f33c5 100644
--- a/src/routes/api/preferences/+server.ts
+++ b/src/routes/api/preferences/+server.ts
@@ -3,7 +3,8 @@ import {
getUserPreferences,
toggleHideMissingBadges,
setCSS,
- setBiography
+ setBiography,
+ toggleHideAWCBadges
} from '$lib/Database/userPreferences';
const unauthorised = new Response('Unauthorised', { status: 401 });
@@ -40,6 +41,13 @@ export const PUT = async ({ url, cookies, request }) => {
}
});
+ if (url.searchParams.get('toggleHideAWCBadges') !== null)
+ return Response.json(await toggleHideAWCBadges(userId), {
+ headers: {
+ 'Access-Control-Allow-Origin': 'https://due.moe'
+ }
+ });
+
if (url.searchParams.get('badgeWallCSS') !== null)
return Response.json(await setCSS(userId, await request.text()), {
headers: {
diff --git a/src/routes/user/[user]/+page.svelte b/src/routes/user/[user]/+page.svelte
index 222e044f..7049cbfd 100644
--- a/src/routes/user/[user]/+page.svelte
+++ b/src/routes/user/[user]/+page.svelte
@@ -225,6 +225,20 @@
<p />
+ <input
+ type="checkbox"
+ on:change={() => {
+ if (userData)
+ fetch(root(`/api/preferences?id=${userData.id}&toggleHideAWCBadges`), {
+ method: 'PUT'
+ });
+ }}
+ checked={preferences.hide_awc_badges}
+ />
+ {$locale().user.preferences.hideAWCBadges.title}
+
+ <p />
+
Biography
<button
diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte
index caf2019d..2b7dd65f 100644
--- a/src/routes/user/[user]/badges/+page.svelte
+++ b/src/routes/user/[user]/badges/+page.svelte
@@ -520,42 +520,44 @@
!editMode}
<div id="badges">
- {#await awcPromise then badges}
- {#await badges.clone().text() then text}
- {@const parsedBadges = awcBadgesGrouped(text)}
-
- {#if parsedBadges.length > 0}
- {#each parsedBadges as group}
- <details open={categoryFilter || isOwner ? false : true}>
- <summary>
- Anime Watching Club <span class="opaque">|</span>
- {group.group}
- </summary>
+ {#if !preferences.hide_awc_badges}
+ {#await awcPromise then badges}
+ {#await badges.clone().text() then text}
+ {@const parsedBadges = awcBadgesGrouped(text)}
+
+ {#if parsedBadges.length > 0}
+ {#each parsedBadges as group}
+ <details open={categoryFilter || isOwner ? false : true}>
+ <summary>
+ Anime Watching Club <span class="opaque">|</span>
+ {group.group}
+ </summary>
+
+ <p />
+
+ <div class="badges">
+ {#each group.badges as badge, index}
+ <div id={`badge-${index}`}>
+ <FallbackBadge
+ {badge}
+ source={cdn(thumbnail(badge.image))}
+ alternative={badge.description}
+ fallback={thumbnail(badge.image)}
+ hideOnError={preferences.hide_missing_badges}
+ awc
+ {index}
+ />
+ </div>
+ {/each}
+ </div>
+ </details>
<p />
-
- <div class="badges">
- {#each group.badges as badge, index}
- <div id={`badge-${index}`}>
- <FallbackBadge
- {badge}
- source={cdn(thumbnail(badge.image))}
- alternative={badge.description}
- fallback={thumbnail(badge.image)}
- hideOnError={preferences.hide_missing_badges}
- awc
- {index}
- />
- </div>
- {/each}
- </div>
- </details>
-
- <p />
- {/each}
- {/if}
+ {/each}
+ {/if}
+ {/await}
{/await}
- {/await}
+ {/if}
{#if ungroupedBadges === null}
<Message message="Loading badges ..." />