From d737bda473e5f8fa5e76f087aa77c9b1989d56e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Sat, 13 Jul 2024 01:27:39 +0200 Subject: [PATCH] Refactoring --- packages/webui/src/routes/__root.tsx | 4 +- packages/webui/src/routes/index.lazy.tsx | 52 +++++++++++++++++-- packages/webui/src/todo/VTodos.tsx | 29 ----------- .../webui/src/todo/VTodosSubscription.tsx | 39 -------------- 4 files changed, 49 insertions(+), 75 deletions(-) delete mode 100644 packages/webui/src/todo/VTodos.tsx delete mode 100644 packages/webui/src/todo/VTodosSubscription.tsx diff --git a/packages/webui/src/routes/__root.tsx b/packages/webui/src/routes/__root.tsx index 0b18730..8a63141 100644 --- a/packages/webui/src/routes/__root.tsx +++ b/packages/webui/src/routes/__root.tsx @@ -9,8 +9,6 @@ const TanStackRouterDevtools = process.env.NODE_ENV === "production" }))) -export const Route = createRootRoute({ component: Root }) - export function Root() { return <>
@@ -20,3 +18,5 @@ export function Root() { } + +export const Route = createRootRoute({ component: Root }) diff --git a/packages/webui/src/routes/index.lazy.tsx b/packages/webui/src/routes/index.lazy.tsx index 1e3dbc7..02682ee 100644 --- a/packages/webui/src/routes/index.lazy.tsx +++ b/packages/webui/src/routes/index.lazy.tsx @@ -1,9 +1,51 @@ +import { Schema as S } from "@effect/schema" import { createLazyFileRoute } from "@tanstack/react-router" -import { VTodosSubscription } from "../todo/VTodosSubscription" +import { JsonifiableTodo } from "@todo-tests/common/data" +import { Option, flow, identity } from "effect" +import { IObservableArray, observable } from "mobx" +import { observer } from "mobx-react-lite" +import { useState } from "react" +import { Todo } from "../data" +import { VTodo } from "../todo/VTodo" +import { trpc } from "../trpc/trpc" +const decodeTodos = flow( + S.decodeSync( + S.mutable(S.Array( + JsonifiableTodo.pipe(S.compose(Todo)) + )) + ), + + observable.array, +) + + +export const Index = observer(() => { + + const [todos, setTodos] = useState>(observable.array()) + + trpc.todos.changes.useSubscription(undefined, { + onData: data => { + setTodos(decodeTodos(data)) + } + }) + + return ( +
+ {todos.map(todo => ( + todo.order, + })} + + todo={todo} + /> + ))} +
+ ) + +}) + export const Route = createLazyFileRoute("/")({ component: Index }) - -export function Index() { - return -} diff --git a/packages/webui/src/todo/VTodos.tsx b/packages/webui/src/todo/VTodos.tsx deleted file mode 100644 index bed7c34..0000000 --- a/packages/webui/src/todo/VTodos.tsx +++ /dev/null @@ -1,29 +0,0 @@ -import { Option, identity } from "effect" -import { IObservableArray } from "mobx" -import { observer } from "mobx-react-lite" -import { Todo } from "../data" -import { VTodo } from "./VTodo" - - -export interface VTodosProps { - todos: IObservableArray -} - - -/** - * Shows a vertical list of todos - */ -export const VTodos = observer(({ todos }: VTodosProps) => ( -
- {todos.map(todo => ( - todo.order, - })} - - todo={todo} - /> - ))} -
-)) diff --git a/packages/webui/src/todo/VTodosSubscription.tsx b/packages/webui/src/todo/VTodosSubscription.tsx deleted file mode 100644 index 59f9204..0000000 --- a/packages/webui/src/todo/VTodosSubscription.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { Schema as S } from "@effect/schema" -import { JsonifiableTodo } from "@todo-tests/common/data" -import { flow } from "effect" -import { IObservableArray, observable } from "mobx" -import { observer } from "mobx-react-lite" -import { useState } from "react" -import { Todo } from "../data" -import { trpc } from "../trpc/trpc" -import { VTodos } from "./VTodos" - - -const decodeTodos = flow( - S.decodeSync( - S.mutable(S.Array( - JsonifiableTodo.pipe(S.compose(Todo)) - )) - ), - - observable.array, -) - - -/** - * Shows a vertical list of todos - */ -export const VTodosSubscription = observer(() => { - - const [todos, setTodos] = useState>(observable.array()) - - trpc.todos.changes.useSubscription(undefined, { - onData: data => { - setTodos(decodeTodos(data)) - } - }) - - - return - -})