]> git.r.bdr.sh - rbdr/forum/blame - app/stores/forums.js
Add internationalized error block
[rbdr/forum] / app / stores / forums.js
CommitLineData
38416066
BB
1import { readable } from 'svelte/store';
2import { onMessage } from '../socket_coordinator';
890274a7 3
e749c95b
BB
4const internals = {
5
6 // Constants
7
8 kChangeFeedEventName: 'changefeed:forums',
9
10 // The exported data structure
11
12 forums: [],
13
14 // Handles messages from the event
15
16 handleChangeFeed(data) {
17
e749c95b
BB
18 // No old value == add
19 if (!data.old_val) {
e749c95b
BB
20 return internals.forums.push(data.new_val);
21 }
22
23 // We have an old value, let's find it.
24 const index = internals.forums.findIndex((element) => element.id === data.old_val.id);
25
26 if (index > -1) {
e749c95b
BB
27 if (data.new_val) {
28 return internals.forums.splice(index, 1, data.new_val || undefined);
29 }
30
31 return internals.forums.splice(index, 1);
32 }
890274a7 33 }
e749c95b 34};
890274a7 35
38416066 36export const forums = readable(internals.forums, (set) => {
890274a7 37
38416066 38 onMessage((message) => {
41247723 39
e749c95b
BB
40 if (message.name === internals.kChangeFeedEventName) {
41 internals.handleChangeFeed(message.data);
42 set(internals.forums);
43 }
38416066
BB
44 });
45});