diff --git a/bun.lockb b/bun.lockb index 54f6226..9235380 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/packages/webui/package.json b/packages/webui/package.json index b7abf00..a085bb6 100644 --- a/packages/webui/package.json +++ b/packages/webui/package.json @@ -14,6 +14,9 @@ "@thilawyn/thilalib": "^0.1.5", "@trpc/client": "^10.45.2", "@trpc/react-query": "^10.45.2", + "effect": "^3.4.7", + "mobx": "^6.13.0", + "mobx-react-lite": "^4.0.7", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/packages/webui/src/Index.tsx b/packages/webui/src/Index.tsx index 20f1370..1e33d3b 100644 --- a/packages/webui/src/Index.tsx +++ b/packages/webui/src/Index.tsx @@ -1,15 +1,20 @@ import { Schema as S } from "@effect/schema" import { JsonifiableTodo } from "@todo-tests/common/data" +import { flow } from "effect" +import { observable } from "mobx" import { Todo } from "./data" +import { VTodos } from "./todo/VTodos" import { trpc } from "./trpc/trpc" -const decodeTodos = S.decodeSync( - S.mutable( - S.Array( +const decodeTodos = flow( + S.decodeSync( + S.mutable(S.Array( JsonifiableTodo.pipe(S.compose(Todo)) - ) - ) + )) + ), + + observable.array, ) @@ -22,7 +27,18 @@ export function Index() {
Todos
+ {function() { + switch (todosQuery.status) { + case "success": + returnFailed.
+ + case "loading": + returnLoading...
+ } + }()}{todo.title}
+{todo.content}
+