summaryrefslogtreecommitdiff
path: root/ui/lib/components/NotificationSettings.svelte
diff options
context:
space:
mode:
authorKit La Touche <kit@transneptune.net>2025-08-29 14:22:09 -0400
committerKit La Touche <kit@transneptune.net>2025-08-29 14:22:09 -0400
commitce00aa3965befe4b11a2115b704f96fd3559b19c (patch)
treef1a034ac4d1a46b78cf04b4cc312cb953dcd0b50 /ui/lib/components/NotificationSettings.svelte
parent39282cf5d9494290a674a01a3f1f8172badcb16e (diff)
Make test-notifs button in settings
The idea here is that we should make a really really minimal notifications feature, where you can enable them, and test them, but nothing on the server will automatically send them. Once that's in, we can add client-side config, which we'll need to sync to the server and act on, that says: > generally, notify me: > 1. Not at all > 2. When my name is mentioned > 3. When any message arrives > For each channel, override the above with one of the same three > options. Later later, we might want to also add "notify me when a new channel is made".
Diffstat (limited to 'ui/lib/components/NotificationSettings.svelte')
-rw-r--r--ui/lib/components/NotificationSettings.svelte35
1 files changed, 19 insertions, 16 deletions
diff --git a/ui/lib/components/NotificationSettings.svelte b/ui/lib/components/NotificationSettings.svelte
index 81c3708..8bc9d8b 100644
--- a/ui/lib/components/NotificationSettings.svelte
+++ b/ui/lib/components/NotificationSettings.svelte
@@ -1,5 +1,6 @@
<script>
import { onMount } from "svelte";
+ import * as api from '$lib/apiServer.js';
import Toggle from '$lib/components/Toggle.svelte';
let subscriptionJson = $state(null);
@@ -22,11 +23,7 @@
p256dh: subJson.keys.p256dh,
auth: subJson.keys.auth,
};
- return fetch("/api/push", {
- method: "post",
- headers: { "Content-type": "application/json" },
- body: JSON.stringify(subscriptionJson),
- });
+ apiServer.createPushSubscription(subscriptionJson);
});
}
@@ -38,11 +35,7 @@
const { endpoint } = subscription.toJSON();
return subscription.unsubscribe()
.then(() => {
- fetch("/api/push", {
- method: "delete",
- headers: { "Content-type": "application/json" },
- body: JSON.stringify({ endpoint }),
- });
+ apiServer.deletePushSubscription({ endpoint });
subscriptionJson = null;
});
});
@@ -56,6 +49,10 @@
}
}
+ function testNotifications() {
+ api.notifyMe();
+ }
+
onMount(() => {
navigator.serviceWorker.ready.then((registration) => {
return registration.pushManager.getSubscription();
@@ -67,25 +64,31 @@
});
</script>
-<h2>Enable notifications</h2>
+<h2>Notify me here</h2>
<p>
{#if subscriptionJson === null}
- Notifications are currently disabled.
+ We won't notify you here.
{:else}
- Notifications are currently enabled.
+ We will notify you here.
{/if}
</p>
-<button class="btn" onclick="{toggleSub}">
+<button class="btn" onclick={toggleSub}>
{#if subscriptionJson === null}
- Enable notifications
+ Notify me!
{:else}
- Disable notifications
+ Stop notifying me!
{/if}
</button>
+<button class="btn" onclick={testNotifications}>
+ Test notifications
+</button>
+
<h2>Notify me when:</h2>
+<p>These are currently unimplemented.</p>
+
<Toggle
name="channel_created"
text="A new channel is created"