diff options
author | Brian Picciano <mediocregopher@gmail.com> | 2022-05-21 14:03:38 -0600 |
---|---|---|
committer | Brian Picciano <mediocregopher@gmail.com> | 2022-05-21 14:03:38 -0600 |
commit | 4dc1683d3ec01eb5030fadab182631e7bbe448c0 (patch) | |
tree | 245497641e867858a3e85220e10624a85341f540 /srv/src/http/tpl/unsubscribe.html | |
parent | 7335295dc0e6470abdbc6860ac567db76f4859fc (diff) |
Serve mailing list finalize and unsubscribe endpoints
Diffstat (limited to 'srv/src/http/tpl/unsubscribe.html')
-rw-r--r-- | srv/src/http/tpl/unsubscribe.html | 44 |
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" . }} |