summaryrefslogtreecommitdiff
path: root/srv/src/http/tpl/unsubscribe.html
diff options
context:
space:
mode:
Diffstat (limited to 'srv/src/http/tpl/unsubscribe.html')
-rw-r--r--srv/src/http/tpl/unsubscribe.html44
1 files changed, 44 insertions, 0 deletions
diff --git a/srv/src/http/tpl/unsubscribe.html b/srv/src/http/tpl/unsubscribe.html
new file mode 100644
index 0000000..ad01735
--- /dev/null
+++ b/srv/src/http/tpl/unsubscribe.html
@@ -0,0 +1,44 @@
+{{ define "body" }}
+
+<script async type="module" src="{{ StaticURL "api.js" }}"></script>
+
+<style>
+#result.success { color: green; }
+#result.fail { color: red; }
+</style>
+
+<span id="result"></span>
+
+<script>
+
+(async () => {
+
+ const resultSpan = document.getElementById("result");
+
+ try {
+ const urlParams = new URLSearchParams(window.location.search);
+ const unsubToken = urlParams.get('unsubToken');
+
+ if (!unsubToken) throw "No unsubscribe token provided";
+
+ const api = await import("{{ StaticURL "api.js" }}");
+
+ await api.call('/api/mailinglist/unsubscribe', {
+ body: { unsubToken },
+ });
+
+ resultSpan.className = "success";
+ resultSpan.innerHTML = "You have been unsubscribed! Please go on about your day.";
+
+ } catch (e) {
+ resultSpan.className = "fail";
+ resultSpan.innerHTML = e;
+ }
+
+})();
+
+</script>
+
+{{ end }}
+
+{{ template "base.html" . }}