Get new frontend to type check clean
Epic undertaking.
This commit is contained in:
parent
6f9a511874
commit
21b7b68f50
52 changed files with 1616 additions and 1126 deletions
|
|
@ -1,15 +1,14 @@
|
|||
import { defineStore } from "pinia";
|
||||
import { ref } from "vue";
|
||||
import { ReviewTask } from "../types";
|
||||
import { SSEManager } from "../SSEManager";
|
||||
import { useUserStore } from "./user";
|
||||
import { SSEManager } from "@/SSEManager";
|
||||
import { ReviewTask } from "@/types";
|
||||
import { useSessionStore } from "@/store/session";
|
||||
|
||||
export const useReviewTaskStore = defineStore("review-task", () => {
|
||||
// State
|
||||
const _byID = ref<Map<int, ReviewTask>>(new Map());
|
||||
const all = ref<ReviewTask[] | null>(null);
|
||||
const loading = ref(false);
|
||||
const error = ref(null);
|
||||
const _byID = ref<Map<number, ReviewTask>>(new Map());
|
||||
const loading = ref<boolean>(false);
|
||||
const error = ref<string | null>(null);
|
||||
|
||||
// Subscription
|
||||
SSEManager.subscribe("*", (e) => {
|
||||
|
|
@ -18,12 +17,15 @@ export const useReviewTaskStore = defineStore("review-task", () => {
|
|||
}
|
||||
});
|
||||
// Actions
|
||||
function byID(id: int) {
|
||||
function all(): ReviewTask[] {
|
||||
return Array.from(_byID.value.values());
|
||||
}
|
||||
function byID(id: number) {
|
||||
return _byID.value.get(id);
|
||||
}
|
||||
async function fetchAll(): Promise<void> {
|
||||
const userStore = useUserStore();
|
||||
if (userStore.urls == null) {
|
||||
const session = useSessionStore();
|
||||
if (session.urls == null) {
|
||||
throw new Error("can't fetch without user URL data");
|
||||
}
|
||||
|
||||
|
|
@ -34,15 +36,13 @@ export const useReviewTaskStore = defineStore("review-task", () => {
|
|||
params.append("sort", "-created");
|
||||
//if (typeFilter.value) params.append("type", typeFilter.value);
|
||||
|
||||
const response = await fetch(
|
||||
`${userStore.urls.api.review_task}?${params}`,
|
||||
);
|
||||
const response = await fetch(`${session.urls.api.review_task}?${params}`);
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
}
|
||||
const data = await response.json();
|
||||
all.value = data.tasks;
|
||||
_byID.value = new Map();
|
||||
for (const t of data.tasks) {
|
||||
_byID.value.set(t.id, t);
|
||||
}
|
||||
|
|
@ -54,16 +54,16 @@ export const useReviewTaskStore = defineStore("review-task", () => {
|
|||
loading.value = false;
|
||||
}
|
||||
}
|
||||
async function fetchOne(id: int) {
|
||||
const userStore = useUserStore();
|
||||
if (userStore.urls == null) {
|
||||
async function fetchOne(id: number) {
|
||||
const session = useSessionStore();
|
||||
if (session.urls == null) {
|
||||
throw new Error("can't fetch without user URL data");
|
||||
}
|
||||
|
||||
loading.value = true;
|
||||
error.value = null;
|
||||
try {
|
||||
const response = await fetch(`${userStore.urls.api.review_task}/${id}`);
|
||||
const response = await fetch(`${session.urls.api.review_task}/${id}`);
|
||||
|
||||
if (!response.ok) {
|
||||
throw new Error(`HTTP error! status: ${response.status}`);
|
||||
|
|
@ -76,6 +76,9 @@ export const useReviewTaskStore = defineStore("review-task", () => {
|
|||
throw err;
|
||||
}
|
||||
}
|
||||
function remove(id: number) {
|
||||
_byID.value.delete(id);
|
||||
}
|
||||
|
||||
return {
|
||||
// State
|
||||
|
|
@ -84,5 +87,6 @@ export const useReviewTaskStore = defineStore("review-task", () => {
|
|||
byID,
|
||||
fetchAll,
|
||||
fetchOne,
|
||||
remove,
|
||||
};
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue