aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-02-12 12:34:45 -0800
committerFuwn <[email protected]>2024-02-12 12:34:45 -0800
commit80e972a99b4fd78eb3f597638bfa799b548c174c (patch)
treeacef742fde8c32e0b9d9c0b2aa04d24fa89eb073 /src
parentfix(time): database time to date (diff)
downloaddue.moe-80e972a99b4fd78eb3f597638bfa799b548c174c.tar.xz
due.moe-80e972a99b4fd78eb3f597638bfa799b548c174c.zip
fix(time): proper database time update
Diffstat (limited to 'src')
-rw-r--r--src/lib/Database/userBadges.ts3
-rw-r--r--src/lib/Utility/time.ts18
-rw-r--r--src/routes/user/[user]/badges/+page.svelte10
3 files changed, 26 insertions, 5 deletions
diff --git a/src/lib/Database/userBadges.ts b/src/lib/Database/userBadges.ts
index 8816ac40..1f4b5b5b 100644
--- a/src/lib/Database/userBadges.ts
+++ b/src/lib/Database/userBadges.ts
@@ -52,7 +52,8 @@ export const updateUserBadge = async (userId: number, id: number, badge: Badge)
post: badge.post,
image: badge.image,
description: badge.description,
- category: badge.category
+ category: badge.category,
+ time: badge.time
})
.eq('id', id)
.eq('user_id', userId);
diff --git a/src/lib/Utility/time.ts b/src/lib/Utility/time.ts
index 26fdc0ee..4ab72212 100644
--- a/src/lib/Utility/time.ts
+++ b/src/lib/Utility/time.ts
@@ -1,4 +1,20 @@
export const databaseTimeToDate = (time: string) => new Date(time + 'Z');
export const dateToDatabaseTime = (date: Date) =>
- date.toISOString().replace(' ', 'T').replace(' ', 'Z');
+ date.toISOString().replace('T', ' ').replace(/\..+/, '');
+
+export const dateToInputTime = (date: Date) => {
+ const offset = date.getTimezoneOffset();
+
+ date.setMinutes(date.getMinutes() - offset);
+
+ return date.toISOString().slice(0, 16);
+};
+
+export const inputTimeToDatabaseTime = (date: Date) => {
+ const offset = date.getTimezoneOffset();
+
+ date.setMinutes(date.getMinutes() + offset);
+
+ return dateToDatabaseTime(date);
+};
diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte
index 1e22a489..e0cbeeb8 100644
--- a/src/routes/user/[user]/badges/+page.svelte
+++ b/src/routes/user/[user]/badges/+page.svelte
@@ -5,7 +5,7 @@
// import { domToBlob } from 'modern-screenshot';
import { onMount } from 'svelte';
import HeadTitle from '$lib/Home/HeadTitle.svelte';
- import { databaseTimeToDate, dateToDatabaseTime } from '$lib/Utility/time';
+ import { databaseTimeToDate, dateToInputTime, inputTimeToDatabaseTime } from '$lib/Utility/time';
import root from '$lib/Utility/root.js';
import tooltip from '$lib/Tooltip/tooltip.js';
import proxy from '$lib/Utility/proxy.js';
@@ -191,7 +191,9 @@
)}${
description.value.length > 0 ? `&description=${encodeURIComponent(description.value)}` : ''
}${category.value.length > 0 ? `&category=${encodeURIComponent(category.value)}` : ''}${
- time.valueAsDate ? `&time=${encodeURIComponent(dateToDatabaseTime(time.valueAsDate))}` : ''
+ time.valueAsDate
+ ? `&time=${encodeURIComponent(inputTimeToDatabaseTime(time.valueAsDate))}`
+ : ''
}${
selectedBadge && selectedBadge.id ? `&update=${encodeURIComponent(selectedBadge.id)}` : ''
}`,
@@ -564,7 +566,9 @@
<span style="float: right;">
<input
type="datetime-local"
- value={selectedBadge && selectedBadge.time ? selectedBadge.time : ''}
+ value={selectedBadge && selectedBadge.time
+ ? dateToInputTime(databaseTimeToDate(selectedBadge.time))
+ : ''}
/>
<small>Must be full date and time, defaults to now if any fields empty</small>
</span>