aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Utility/notifications.ts
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-03-01 16:20:51 -0800
committerFuwn <[email protected]>2026-03-01 16:21:02 -0800
commiteae5d24d9e79e59a19d4721caaeaa0ca650ecb33 (patch)
tree1b685bb248e051dfa26d2bfdebe6689402dd93c5 /src/lib/Utility/notifications.ts
parentchore(tooling): remove legacy eslint and prettier (diff)
downloaddue.moe-eae5d24d9e79e59a19d4721caaeaa0ca650ecb33.tar.xz
due.moe-eae5d24d9e79e59a19d4721caaeaa0ca650ecb33.zip
chore(biome): drop formatter style overrides
Diffstat (limited to 'src/lib/Utility/notifications.ts')
-rw-r--r--src/lib/Utility/notifications.ts99
1 files changed, 53 insertions, 46 deletions
diff --git a/src/lib/Utility/notifications.ts b/src/lib/Utility/notifications.ts
index 92f1f1f9..8ed44629 100644
--- a/src/lib/Utility/notifications.ts
+++ b/src/lib/Utility/notifications.ts
@@ -1,57 +1,64 @@
-import { env } from '$env/dynamic/public';
+import { env } from "$env/dynamic/public";
import {
- isNotificationQueued,
- notifications,
- updateLastNotificationID
-} from '$lib/Data/AniList/notifications';
-import { database } from '$lib/Database/IDB/user';
-import { getFingerprint } from './fingerprint';
-import root from './root';
+ isNotificationQueued,
+ notifications,
+ updateLastNotificationID,
+} from "$lib/Data/AniList/notifications";
+import { database } from "$lib/Database/IDB/user";
+import { getFingerprint } from "./fingerprint";
+import root from "./root";
export const requestNotifications = async () => {
- if ('Notification' in window && navigator.serviceWorker) {
- const registration = await navigator.serviceWorker.getRegistration();
-
- if (registration) {
- try {
- const pushSubscription = await registration.pushManager.subscribe({
- userVisibleOnly: true,
- applicationServerKey: env.PUBLIC_VAPID_PUBLIC_KEY
- });
-
- await fetch(root(`/api/notifications/subscribe?p=${getFingerprint()}`), {
- method: 'POST',
- headers: {
- 'Content-Type': 'application/json'
- },
- body: JSON.stringify(pushSubscription)
- });
- } catch {
- await fetch(`/api/notifications/unsubscribe?p=${getFingerprint()}`, {
- method: 'POST'
- });
- await updateLocalNotifications();
- setInterval(async () => await updateLocalNotifications(), 1000 * 60);
- }
- }
- }
+ if ("Notification" in window && navigator.serviceWorker) {
+ const registration = await navigator.serviceWorker.getRegistration();
+
+ if (registration) {
+ try {
+ const pushSubscription = await registration.pushManager.subscribe({
+ userVisibleOnly: true,
+ applicationServerKey: env.PUBLIC_VAPID_PUBLIC_KEY,
+ });
+
+ await fetch(
+ root(`/api/notifications/subscribe?p=${getFingerprint()}`),
+ {
+ method: "POST",
+ headers: {
+ "Content-Type": "application/json",
+ },
+ body: JSON.stringify(pushSubscription),
+ },
+ );
+ } catch {
+ await fetch(`/api/notifications/unsubscribe?p=${getFingerprint()}`, {
+ method: "POST",
+ });
+ await updateLocalNotifications();
+ setInterval(async () => await updateLocalNotifications(), 1000 * 60);
+ }
+ }
+ }
};
const updateLocalNotifications = async () => {
- const user = (await database.users.toArray()).at(0);
+ const user = (await database.users.toArray()).at(0);
- if (!user) return;
+ if (!user) return;
- const recentNotifications = await notifications(user.user.accessToken);
+ const recentNotifications = await notifications(user.user.accessToken);
- if ((await window.Notification.requestPermission()) === 'granted')
- if (recentNotifications && isNotificationQueued(recentNotifications, user.lastNotificationID)) {
- await updateLastNotificationID(user.id, recentNotifications);
+ if ((await window.Notification.requestPermission()) === "granted")
+ if (
+ recentNotifications &&
+ isNotificationQueued(recentNotifications, user.lastNotificationID)
+ ) {
+ await updateLastNotificationID(user.id, recentNotifications);
- new Notification('due.moe', {
- body: `${recentNotifications[0].user.name}${recentNotifications[0].context}`,
- icon: recentNotifications[0].user.avatar.large || '/favicon-196x196.png',
- tag: 'notification-1'
- });
- }
+ new Notification("due.moe", {
+ body: `${recentNotifications[0].user.name}${recentNotifications[0].context}`,
+ icon:
+ recentNotifications[0].user.avatar.large || "/favicon-196x196.png",
+ tag: "notification-1",
+ });
+ }
};