]> git.r.bdr.sh - rbdr/forum/blobdiff - src/lib/stores/actions.ts
Update / use typescript
[rbdr/forum] / src / lib / stores / actions.ts
diff --git a/src/lib/stores/actions.ts b/src/lib/stores/actions.ts
new file mode 100644 (file)
index 0000000..95702dc
--- /dev/null
@@ -0,0 +1,41 @@
+import { derived, writable } from 'svelte/store';
+import type { Readable, Writable } from 'svelte/store';
+
+export type Actions = {
+  topic?: TopicAction
+};
+
+export type TopicAction = {
+  id: string
+};
+
+/*
+ * This is a store to set the actions in the top header.
+ */
+
+const actions: Writable<Actions> = writable({});
+
+export const enableTopicActions = (id: string) => {
+
+  actions.update((actionsValue: Actions): Actions => {
+
+    actionsValue.topic = {
+      id
+    };
+    return actionsValue;
+  });
+};
+
+export const disableTopicActions = () => {
+
+  actions.update((actionsValue): Actions => {
+
+    delete actionsValue.topic;
+    return actionsValue;
+  });
+};
+
+export const topicActions: Readable<TopicAction> = derived(
+  actions,
+  ($actions) => $actions.topic
+);