47 lines
1.0 KiB
TypeScript
47 lines
1.0 KiB
TypeScript
import Store from '.';
|
|
import { ListItem, Settings, TodoListItem } from '../mock';
|
|
|
|
export const setMenuOpen = (open: boolean) => {
|
|
Store.update(s => {
|
|
s.menuOpen = open;
|
|
});
|
|
};
|
|
|
|
export const setNotificationsOpen = (open: boolean) => {
|
|
Store.update(s => {
|
|
s.notificationsOpen = open;
|
|
});
|
|
};
|
|
|
|
export const setSettings = (settings: Settings) => {
|
|
Store.update(s => {
|
|
s.settings = settings;
|
|
});
|
|
};
|
|
|
|
// App-specific actions
|
|
|
|
export const setDone = (
|
|
list: TodoListItem,
|
|
listItem: ListItem,
|
|
done: boolean,
|
|
) => {
|
|
Store.update((s, o) => {
|
|
const listIndex = o.lists.findIndex(l => l === list);
|
|
if (listIndex === -1) return;
|
|
|
|
const items = o.lists[listIndex].items;
|
|
const itemIndex = items?.findIndex(i => i === listItem);
|
|
if (itemIndex === undefined || itemIndex < 0) return;
|
|
|
|
const draftItem = s.lists[listIndex].items?.[itemIndex];
|
|
if (!draftItem) return;
|
|
|
|
draftItem.done = done;
|
|
|
|
if (list === o.selectedList) {
|
|
s.selectedList = s.lists[listIndex];
|
|
}
|
|
});
|
|
};
|