import { itGet, itPost } from "@/fetchHelpers"; import type { CourseCompletion, CourseWagtailPage } from "@/types"; import { defineStore } from "pinia"; export type CompletionStoreState = { completionData: CourseCompletion[] | undefined; }; export const useCompletionStore = defineStore({ id: "completion", state: () => { return { completionData: undefined, } as CompletionStoreState; }, getters: {}, actions: { async loadCompletionData(courseId: number, reload = false) { if (this.completionData && !reload) { return this.completionData; } const completionData = await itGet(`/api/course/completion/${courseId}/`); if (!completionData) { throw `No completionData found with: ${courseId}`; } this.completionData = completionData; return this.completionData || []; }, async markPage(page: CourseWagtailPage) { const completionData = await itPost("/api/course/completion/mark/", { page_key: page.translation_key, completion_status: page.completion_status, }); if (completionData) { this.completionData = completionData; } return this.completionData || []; }, }, });