blob: 5c7c6e69368eac18f93ebf6a080c9a95e4f6f18d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
import { readable } from 'svelte/store';
import { onMessage } from '../socket_coordinator';
const internals = {
// Constants
kChangeFeedEventName: 'changefeed:forums',
// The exported data structure
forums: [],
// Handles messages from the event
handleChangeFeed(data) {
console.log(data);
// No old value == add
if (!data.old_val) {
console.log('Adding new data');
return internals.forums.push(data.new_val);
}
// We have an old value, let's find it.
const index = internals.forums.findIndex((element) => element.id === data.old_val.id);
if (index > -1) {
console.log(`Found old data at index ${index}`);
if (data.new_val) {
return internals.forums.splice(index, 1, data.new_val || undefined);
}
return internals.forums.splice(index, 1);
}
}
};
export const forums = readable(internals.forums, (set) => {
onMessage((message) => {
if (message.name === internals.kChangeFeedEventName) {
internals.handleChangeFeed(message.data);
set(internals.forums);
}
});
});
|