Todo buttons work

This commit is contained in:
Julien Valverdé
2024-07-13 04:44:52 +02:00
parent e5641924f8
commit 329b9e7c41
2 changed files with 26 additions and 9 deletions

View File

@@ -1,5 +1,5 @@
import { Schema as S } from "@effect/schema" import { Schema as S } from "@effect/schema"
import { ArrowDownward, ArrowUpward } from "@mui/icons-material" import { ArrowDownward, ArrowUpward, Delete } from "@mui/icons-material"
import { observer } from "mobx-react-lite" import { observer } from "mobx-react-lite"
import { Button } from "primereact/button" import { Button } from "primereact/button"
import { JsonifiableTodo, Todo } from "../data" import { JsonifiableTodo, Todo } from "../data"
@@ -17,6 +17,7 @@ export interface VTodoProps {
export const VTodo = observer(({ todo }: VTodoProps) => { export const VTodo = observer(({ todo }: VTodoProps) => {
const updateTodo = trpc.todo.update.useMutation() const updateTodo = trpc.todo.update.useMutation()
const removeTodo = trpc.todo.remove.useMutation()
return ( return (
@@ -30,10 +31,11 @@ export const VTodo = observer(({ todo }: VTodoProps) => {
size="small" size="small"
icon={<ArrowDownward />} icon={<ArrowDownward />}
loading={updateTodo.isLoading}
onClick={() => updateTodo.mutate(encodeTodo( onClick={() => updateTodo.mutate(encodeTodo(
new Todo({ new Todo({
...todo, ...todo,
order: todo.order + 1, order: todo.order + 2,
}, { disableValidation: true }) }, { disableValidation: true })
))} ))}
/> />
@@ -44,13 +46,24 @@ export const VTodo = observer(({ todo }: VTodoProps) => {
size="small" size="small"
icon={<ArrowUpward />} icon={<ArrowUpward />}
loading={updateTodo.isLoading}
onClick={() => updateTodo.mutate(encodeTodo( onClick={() => updateTodo.mutate(encodeTodo(
new Todo({ new Todo({
...todo, ...todo,
order: todo.order - 1, order: todo.order - 2,
}, { disableValidation: true }) }, { disableValidation: true })
))} ))}
/> />
<Button
severity="secondary"
rounded
size="small"
icon={<Delete />}
loading={removeTodo.isLoading}
onClick={() => removeTodo.mutate(encodeTodo(todo))}
/>
</div> </div>
</div> </div>
) )

View File

@@ -1,5 +1,5 @@
import { QueryClient, QueryClientProvider } from "@tanstack/react-query" import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
import { createWSClient, wsLink } from "@trpc/client" import { createWSClient, httpBatchLink, splitLink, wsLink } from "@trpc/client"
import { ReactNode, useState } from "react" import { ReactNode, useState } from "react"
import { trpc } from "./trpc" import { trpc } from "./trpc"
@@ -16,12 +16,16 @@ export function TRPCClientProvider({ children }: TRPCClientProviderProps) {
const [trpcClient] = useState(trpc.createClient({ const [trpcClient] = useState(trpc.createClient({
links: [ links: [
// httpBatchLink({ splitLink({
// url: "http://localhost:8080/rpc", condition: op => op.type === "subscription",
// headers: async () => ({}),
// }),
wsLink({ client: wsClient }), true: wsLink({ client: wsClient }),
false: httpBatchLink({
url: "http://localhost:8080/rpc",
headers: {},
}),
})
] ]
})) }))