aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-12-30 00:40:43 -0800
committerFuwn <[email protected]>2023-12-30 00:40:43 -0800
commite42386016f144a90ecc138d7d8003c0eaa4981a6 (patch)
treee802c6ee2ee9efc0d0519d0d6b218d56d53c44c8 /src
parentfeat(badges): manual time set (diff)
downloaddue.moe-e42386016f144a90ecc138d7d8003c0eaa4981a6.tar.xz
due.moe-e42386016f144a90ecc138d7d8003c0eaa4981a6.zip
feat(badges): sort by time
Diffstat (limited to 'src')
-rw-r--r--src/lib/Database/badges.ts9
-rw-r--r--src/lib/Utility/time.ts8
-rw-r--r--src/routes/user/[user]/badges/+page.svelte10
3 files changed, 17 insertions, 10 deletions
diff --git a/src/lib/Database/badges.ts b/src/lib/Database/badges.ts
index 9f857469..d56fa27a 100644
--- a/src/lib/Database/badges.ts
+++ b/src/lib/Database/badges.ts
@@ -1,3 +1,4 @@
+import { databaseTimeToDate } from '$lib/Utility/time';
import { Database } from 'bun:sqlite';
export interface Badge {
@@ -28,7 +29,13 @@ database
export const getUserBadges = (userId: number): Badge[] => {
return database
.query('SELECT * FROM user_badges WHERE user_id = $userId')
- .all({ $userId: String(userId) }) as Badge[];
+ .all({ $userId: String(userId) })
+ .sort((a, b) =>
+ databaseTimeToDate((a as Badge).time ?? '').getTime() >
+ databaseTimeToDate((b as Badge).time ?? '').getTime()
+ ? -1
+ : 1
+ ) as Badge[];
};
export const addUserBadge = (userId: number, badge: Badge) => {
diff --git a/src/lib/Utility/time.ts b/src/lib/Utility/time.ts
new file mode 100644
index 00000000..e1f8d0c6
--- /dev/null
+++ b/src/lib/Utility/time.ts
@@ -0,0 +1,8 @@
+export const databaseTimeToDate = (time: string) =>
+ new Date(new Date(time + 'Z').getTime() + new Date(time + 'Z').getTimezoneOffset() * 60000);
+
+export const dateToDatabaseTime = (date: Date) =>
+ date
+ .toISOString()
+ .replace('T', ' ')
+ .replace(/\.\d+Z$/, '');
diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte
index 7843fed3..c675f4d3 100644
--- a/src/routes/user/[user]/badges/+page.svelte
+++ b/src/routes/user/[user]/badges/+page.svelte
@@ -6,6 +6,7 @@
import { domToBlob } from 'modern-screenshot';
import { onMount } from 'svelte';
import HeadTitle from '$lib/HeadTitle.svelte';
+ import { databaseTimeToDate, dateToDatabaseTime } from '$lib/Utility/time';
// import { io } from 'socket.io-client';
export let data;
@@ -156,15 +157,6 @@
element.classList.remove('invert');
}
};
-
- const databaseTimeToDate = (time: string) =>
- new Date(new Date(time + 'Z').getTime() + new Date(time + 'Z').getTimezoneOffset() * 60000);
-
- const dateToDatabaseTime = (date: Date) =>
- date
- .toISOString()
- .replace('T', ' ')
- .replace(/\.\d+Z$/, '');
</script>
<HeadTitle route={`${data.username}'s Badge Wall`} path={`/user/${data.username}`} />