diff --git a/src/lib/remotes/TasksRemote.remote.ts b/src/lib/remotes/TasksRemote.remote.ts
new file mode 100644
index 0000000..a766f2d
--- /dev/null
+++ b/src/lib/remotes/TasksRemote.remote.ts
@@ -0,0 +1,57 @@
+import { query } from "$app/server";
+import TasksService from "$lib/server/services/TasksService";
+import { error } from "@sveltejs/kit";
+import * as z from "zod";
+
+const service = new TasksService("internal");
+
+export const getAllTasks = query(async () => {
+ const tasksResponse = await service.getAll();
+
+ if (tasksResponse.status === "failure") {
+ const errorMessage = tasksResponse.error instanceof Error
+ ? tasksResponse.error.message
+ : tasksResponse.error ?? "Internal error.";
+ throw new Error(errorMessage);
+ }
+ if (!tasksResponse.data) {
+ throw new Error("Internal error");
+ }
+
+ return tasksResponse.data;
+});
+
+export const getOneTask = query(z.union([z.string(), z.number()]), async (lookup_field: string | number) => {
+ const tasksResponse = typeof lookup_field === "string"
+ ? await service.getByTaskId([lookup_field])
+ : await service.getByDbId([lookup_field]);
+
+ if (tasksResponse.status === "failure") {
+ const errorMessage = tasksResponse.error instanceof Error
+ ? tasksResponse.error.message
+ : tasksResponse.error ?? "Internal error";
+ throw new Error(errorMessage);
+ }
+
+ if (!tasksResponse.data) {
+ error(500, "Internal error. (check the logs)");
+ }
+ const task = tasksResponse.data[0];
+
+ const parentResponse = task.parent ? await service.getByDbId([task.parent]) : null;
+ const parent = (!parentResponse || parentResponse.status === "failure" || !parentResponse.data
+ || parentResponse.data[0].type.prefix)
+ ? null
+ : parentResponse.data[0];
+
+ const childrenResponse = await service.getByParent(task.id);
+ const children = (!childrenResponse || childrenResponse.status === "failure" || !childrenResponse.data)
+ ? []
+ : childrenResponse.data;
+
+ return {
+ task,
+ parent,
+ children,
+ };
+});
diff --git a/src/lib/ui/Tasks/TaskView.svelte b/src/lib/ui/Tasks/TaskView.svelte
index 6750c19..048bd51 100644
--- a/src/lib/ui/Tasks/TaskView.svelte
+++ b/src/lib/ui/Tasks/TaskView.svelte
@@ -1,41 +1,28 @@
-{@render description(task.type.prefix, task.taskId, task.description)}
-{@render details(
- task.status,
- task.priority,
- task.openDate,
- task.closeDate,
- parent,
- children,
- )}
-{@render checklist(task.checklist)}
-{@render body(task.body, task.bodyHistory)}
-{@render integrations(task.integrations)}
+
+ {@const { task, parent, children } = await taskRemote}
+ {@render description(task.type.prefix, task.taskId, task.description)}
+ {@render details(
+ task.status,
+ task.priority,
+ task.openDate,
+ task.closeDate,
+ parent,
+ children,
+ )}
+ {@render checklist(task.checklist)}
+ {@render body(task.body, task.bodyHistory)}
+ {@render integrations(task.integrations)}
+