feature: watches on the backend, need frontend implementation for

notifications and unread indicators
This commit is contained in:
Andy Burke 2025-10-25 14:57:28 -07:00
parent 7046bb0389
commit 6293374bb7
28 changed files with 1405 additions and 608 deletions

View file

@ -133,7 +133,7 @@
name="top-level-tabs"
id="blurb-tab-input"
class="tab-switch"
data-view="blurb"
data-view="blurbs"
/>
<label for="blurb-tab-input" class="tab-label"
><div class="icon blurb"></div>
@ -159,8 +159,8 @@
{
const feed = document.currentScript.closest("[data-feed]");
document.addEventListener("topic_changed", () => { feed.__reset && feed.__reset(); });
document.addEventListener("user_logged_in", () => { feed.__reset && feed.__reset(); });
APP.on("topic_changed", () => { feed.__reset && feed.__reset(); });
APP.on("user_logged_in", () => { feed.__reset && feed.__reset(); });
feed.__target_element = (item) => {
return (
@ -195,7 +195,7 @@
return {
event: item,
blurb: item,
creator: await USERS.get(item.creator_id),
creator: await APP.USERS.get(item.creator_id),
blurb_datetime
};
};

View file

@ -62,7 +62,7 @@
<input
type="hidden"
name="creator_id"
generator="() => { return JSON.parse( document.body.dataset.user ?? '{}' ).id; }"
generator="() => { return APP.user?.id; }"
/>
<input

View file

@ -32,12 +32,8 @@
{
const feed = document.currentScript.closest("[data-feed]");
document.addEventListener("topic_changed", () => {
feed.__reset && feed.__reset();
});
document.addEventListener("user_logged_in", () => {
feed.__reset && feed.__reset();
});
APP.on("topic_changed", () => { feed.__reset && feed.__reset(); });
APP.on("user_logged_in", () => { feed.__reset && feed.__reset(); });
const time_tick_tock_timeout = 60_000;
@ -71,7 +67,7 @@
return {
event: item,
creator: await USERS.get(item.creator_id),
creator: await APP.USERS.get(item.creator_id),
event_datetime,
time_tick_tock_class,
user_tick_tock_class,
@ -165,12 +161,9 @@
<script>
{
const form = document.currentScript.closest("form");
document.addEventListener(
"topic_changed",
({ detail: { topic_id } }) => {
form.action = topic_id ? `/api/topics/${topic_id}/events` : "";
},
);
APP.on( "topic_changed", ({ topic_id }) => {
form.action = topic_id ? `/api/topics/${topic_id}/events` : "";
});
}
</script>
@ -192,7 +185,7 @@
<input
type="hidden"
name="creator_id"
generator="() => { return JSON.parse( document.body.dataset.user ?? '{}' ).id; }"
generator="() => { return APP.user?.id; }"
/>
<input

View file

@ -101,7 +101,7 @@
name="top-level-tabs"
id="essay-tab-input"
class="tab-switch"
data-view="essay"
data-view="essays"
/>
<label for="essay-tab-input" class="tab-label"
><div class="icon essay"></div>
@ -126,12 +126,8 @@
{
const feed = document.currentScript.closest("[data-feed]");
document.addEventListener("topic_changed", () => {
feed.__reset && feed.__reset();
});
document.addEventListener("user_logged_in", () => {
feed.__reset && feed.__reset();
});
APP.on("topic_changed", () => { feed.__reset && feed.__reset(); });
APP.on("user_logged_in", () => { feed.__reset && feed.__reset(); });
feed.__target_element = (item) => {
let target = feed;
@ -156,7 +152,7 @@
return {
event: item,
essay: item,
creator: await USERS.get(item.creator_id),
creator: await APP.USERS.get(item.creator_id),
essay_datetime,
};
};

View file

@ -59,7 +59,7 @@
<input
type="hidden"
name="creator_id"
generator="() => { return JSON.parse( document.body.dataset.user ?? '{}' ).id; }"
generator="() => { return APP.user?.id; }"
/>
<input

View file

@ -156,12 +156,8 @@
{
const feed = document.currentScript.closest("[data-feed]");
document.addEventListener("topic_changed", () => {
feed.__reset && feed.__reset();
});
document.addEventListener("user_logged_in", () => {
feed.__reset && feed.__reset();
});
APP.on("topic_changed", () => { feed.__reset && feed.__reset(); });
APP.on("user_logged_in", () => { feed.__reset && feed.__reset(); });
feed.__target_element = (item) => {
let target = feed;
@ -189,7 +185,7 @@
return {
event: item,
post: item,
creator: await USERS.get(item.creator_id),
creator: await APP.USERS.get(item.creator_id),
post_datetime,
};
};

View file

@ -36,7 +36,7 @@
<input
type="hidden"
name="creator_id"
generator="() => { return JSON.parse( document.body.dataset.user ?? '{}' ).id; }"
generator="() => { return APP.user?.id; }"
/>
<input

View file

@ -1,5 +1,5 @@
<script>
document.addEventListener("view_changed", ({ detail: { view } }) => {
APP.on( "view_changed", ({ view }) => {
const target_tab = document.querySelector(`.tab-switch[data-view="${view}"]`);
if (target_tab) {
@ -7,7 +7,7 @@
}
});
document.addEventListener("DOMContentLoaded", () => {
APP.on( 'load', () => {
const tab_switchers = document.querySelectorAll(".tab-switch");
for (const tab_switch of tab_switchers) {
tab_switch.addEventListener("input", (event) => {