first commit
This commit is contained in:
@@ -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;
|
||||
@@ -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();
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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();
|
||||
Reference in New Issue
Block a user