first commit

This commit is contained in:
2020-12-31 17:49:54 +01:00
commit 2240985aa1
120 changed files with 11574 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
import { writable } from "svelte/store";
import { checkSession } from "../clients/amplify";
function createAuthStore() {
const {set, subscribe} = writable({checked: false, loggedIn: false})
return {
subscribe,
async check() {
try {
const loggedIn = await checkSession();
set({checked: true, loggedIn });
} catch(err) {
set({checked: true, loggedIn: false });
}
}
}
}
const authStore = createAuthStore();
export default authStore;
+36
View File
@@ -0,0 +1,36 @@
import { writable } from "svelte/store";
import stuffLogClient from "../clients/stufflog";
import type { GoalFilter, GoalResult } from "../models/goal";
interface GoalStoreData {
loading: boolean
stale: boolean
goals: GoalResult[]
}
function createGoalStore() {
const {update, subscribe} = writable<GoalStoreData>({
loading: false,
stale: true,
goals: [],
});
return {
subscribe,
markStale() {
update(v => ({...v, stale: true}));
},
async load(filter: GoalFilter) {
update(v => ({...v, loading: true, filter}));
const goals = await stuffLogClient.listGoals(filter);
update(v => ({...v, loading: false, stale: false, goals: goals.reverse()}));
},
}
}
const goalStore = createGoalStore();
export default goalStore;
export const fpGoalStore = createGoalStore();
+35
View File
@@ -0,0 +1,35 @@
import { writable } from "svelte/store";
import stuffLogClient from "../clients/stufflog";
import type { GroupResult } from "../models/group";
interface GroupStoreData {
loading: boolean
stale: boolean
groups: GroupResult[]
}
function createGroupStore() {
const {update, subscribe} = writable<GroupStoreData>({
loading: false,
stale: true,
groups: [],
});
return {
subscribe,
markStale() {
update(v => ({...v, stale: true}));
},
async load() {
update(v => ({...v, loading: true}));
const groups = await stuffLogClient.listGroups();
update(v => ({...v, loading: false, stale: false, groups}));
},
}
}
const groupStore = createGroupStore();
export default groupStore;
+37
View File
@@ -0,0 +1,37 @@
import { writable } from "svelte/store";
import stuffLogClient from "../clients/stufflog";
import type { LogFilter, LogResult } from "../models/log";
interface ProjectStoreData {
loading: boolean
stale: boolean
logs: LogResult[]
filter: LogFilter
}
function createProjectStore() {
const {update, subscribe} = writable<ProjectStoreData>({
loading: false,
stale: true,
logs: [],
filter: {},
});
return {
subscribe,
markStale() {
update(v => ({...v, stale: true}));
},
async load(filter: LogFilter) {
update(v => ({...v, loading: true, filter}));
const logs = await stuffLogClient.listLogs(filter);
update(v => ({...v, loading: false, stale: false, logs: logs.reverse()}));
},
}
}
const logStore = createProjectStore();
export default logStore;
+46
View File
@@ -0,0 +1,46 @@
import { writable } from "svelte/store";
import type { GoalResult } from "../models/goal";
import type { GroupResult } from "../models/group";
import type Item from "../models/item";
import type { LogResult } from "../models/log";
import type { ProjectResult } from "../models/project";
import type { TaskResult } from "../models/task";
export type ModalData =
| { name: "none" }
| { name: "log.add", task: TaskResult }
| { name: "log.edit", log: LogResult }
| { name: "log.delete", log: LogResult }
| { name: "task.add", project: ProjectResult }
| { name: "task.edit", task: TaskResult }
| { name: "task.delete", task: TaskResult }
| { name: "project.add" }
| { name: "project.edit", project: ProjectResult }
| { name: "project.delete", project: ProjectResult }
| { name: "group.add" }
| { name: "group.edit", group: GroupResult }
| { name: "group.delete", group: GroupResult }
| { name: "item.add", group: GroupResult }
| { name: "item.edit", item: Item, group: GroupResult }
| { name: "item.delete", item: Item, group: GroupResult }
| { name: "goal.add" }
| { name: "goal.edit", goal: GoalResult }
| { name: "goal.delete", goal: GoalResult }
function createModalStore() {
const {set, subscribe} = writable<ModalData>({name: "none"});
return {
subscribe,
set,
close() {
set({name: "none"})
},
}
}
const modalStore = createModalStore();
export default modalStore;
+36
View File
@@ -0,0 +1,36 @@
import { writable } from "svelte/store";
import stuffLogClient from "../clients/stufflog";
import type { ProjectFilter, ProjectResult } from "../models/project";
interface ProjectStoreData {
loading: boolean
stale: boolean
projects: ProjectResult[]
}
function createProjectStore() {
const {update, subscribe} = writable<ProjectStoreData>({
loading: false,
stale: true,
projects: [],
});
return {
subscribe,
markStale() {
update(v => ({...v, stale: true}));
},
async load(filter: ProjectFilter) {
update(v => ({...v, loading: true, filter}));
const projects = await stuffLogClient.listProjects(filter);
update(v => ({...v, loading: false, stale: false, projects: projects.reverse()}));
},
}
}
const projectStore = createProjectStore();
export default projectStore;
export const fpProjectStore = createProjectStore();