diff options
Diffstat (limited to 'src/mixins')
-rw-r--r-- | src/mixins/header.pug | 4 | ||||
-rw-r--r-- | src/mixins/subUtils.pug | 49 |
2 files changed, 51 insertions, 2 deletions
diff --git a/src/mixins/header.pug b/src/mixins/header.pug index 4bec1f8..9cf1e1a 100644 --- a/src/mixins/header.pug +++ b/src/mixins/header.pug | |||
@@ -5,9 +5,9 @@ mixin header(user) | |||
5 | div.header-item | 5 | div.header-item |
6 | a(href=`/r/all`) all | 6 | a(href=`/r/all`) all |
7 | div.header-item | 7 | div.header-item |
8 | a(href=`/r/popular`) popular | 8 | a(href=`/search`) search |
9 | div.header-item | 9 | div.header-item |
10 | a(href=`/subs`) subscriptions | 10 | a(href=`/subs`) subs |
11 | if user | 11 | if user |
12 | div.header-item | 12 | div.header-item |
13 | a(href='/dashboard') #{user.username} | 13 | a(href='/dashboard') #{user.username} |
diff --git a/src/mixins/subUtils.pug b/src/mixins/subUtils.pug new file mode 100644 index 0000000..7f40bf4 --- /dev/null +++ b/src/mixins/subUtils.pug | |||
@@ -0,0 +1,49 @@ | |||
1 | - | ||
2 | script(defer). | ||
3 | async function toggleSub(sub) { | ||
4 | let thinger = document.getElementById(`thinger_${sub}`); | ||
5 | if (thinger.innerText === 'unsubscribe') { | ||
6 | await doThing(sub, 'unsubscribe'); | ||
7 | } else { | ||
8 | await doThing(sub, 'subscribe'); | ||
9 | } | ||
10 | } | ||
11 | |||
12 | function getCookie(name) { | ||
13 | const value = `; ${document.cookie}`; | ||
14 | const parts = value.split(`; ${name}=`); | ||
15 | if (parts.length === 2) return parts.pop().split(";").shift(); | ||
16 | } | ||
17 | |||
18 | async function doThing(sub, thing) { | ||
19 | const jwtToken = getCookie("auth_token"); | ||
20 | const response = await fetch(`/${thing}`, { | ||
21 | method: 'POST', | ||
22 | headers: { | ||
23 | 'Authorization': `Bearer ${jwtToken}`, | ||
24 | 'Content-Type': 'application/json', | ||
25 | }, | ||
26 | body: JSON.stringify({ subreddit: sub }), | ||
27 | }); | ||
28 | |||
29 | let thinger = document.getElementById(`thinger_${sub}`); | ||
30 | if (thing === 'subscribe') { | ||
31 | thinger.innerText = 'unsubscribe'; | ||
32 | } else { | ||
33 | thinger.innerText = 'subscribe'; | ||
34 | } | ||
35 | |||
36 | if (!response.ok) { | ||
37 | console.error(response); | ||
38 | console.error(`Failed to do ${thing}`); | ||
39 | } | ||
40 | } | ||
41 | |||
42 | function toggleDetails(details_id) { | ||
43 | var detailsElement = document.getElementById(details_id); | ||
44 | if (detailsElement) { | ||
45 | detailsElement.open = !detailsElement.open; | ||
46 | } | ||
47 | } | ||
48 | |||
49 | |||