0.1.8 #11

Merged
Thilawyn merged 233 commits from next into master 2025-04-21 02:08:14 +02:00
2 changed files with 34 additions and 12 deletions
Showing only changes of commit bebbc1d7de - Show all commits

View File

@@ -1,6 +1,8 @@
import { R } from "@/reffuse" import { R } from "@/reffuse"
import { createFileRoute } from "@tanstack/react-router" import { createFileRoute } from "@tanstack/react-router"
import { GetRandomValues, makeUuid4 } from "@typed/id"
import { Console, Effect } from "effect" import { Console, Effect } from "effect"
import { useEffect, useState } from "react"
export const Route = createFileRoute("/tests")({ export const Route = createFileRoute("/tests")({
@@ -14,10 +16,29 @@ function RouteComponent() {
// ), []) // ), [])
// console.log(value) // console.log(value)
R.useFork(Effect.addFinalizer(() => Console.log("cleanup")).pipe( // R.useFork(Effect.addFinalizer(() => Console.log("cleanup")).pipe(
Effect.andThen(Console.log("ouient")), // Effect.andThen(Console.log("ouient")),
// Effect.delay("1 second"),
// ))
const runPromise = R.useRunPromise()
const [promise, setPromise] = useState<Promise<void> | null>(null)
const [, setValue] = useState("")
useEffect(() => {
makeUuid4.pipe(
Effect.provide(GetRandomValues.CryptoRandom),
Effect.tap(id => Effect.sync(() => setValue(id))),
Effect.andThen(Console.log),
Effect.delay("1 second"), Effect.delay("1 second"),
))
runPromise,
setPromise,
)
}, [runPromise])
console.log(promise)
return <div>Hello "/tests"!</div> return <div>Hello "/tests"!</div>
} }

View File

@@ -5,17 +5,18 @@ import { R } from "../reffuse"
import { TodosState } from "../services" import { TodosState } from "../services"
export function VNewTodo() { const createEmptyTodo = Todo.generateUniqueID.pipe(
const runSync = R.useRunSync()
const createEmptyTodo = Todo.generateUniqueID.pipe(
Effect.map(id => Todo.Todo.make({ Effect.map(id => Todo.Todo.make({
id, id,
content: "", content: "",
completedAt: Option.none(), completedAt: Option.none(),
}, true)) }, true))
) )
export function VNewTodo() {
const runSync = R.useRunSync()
const todoRef = R.useMemo(createEmptyTodo.pipe(Effect.flatMap(SubscriptionRef.make))) const todoRef = R.useMemo(createEmptyTodo.pipe(Effect.flatMap(SubscriptionRef.make)))
const [todo, setTodo] = R.useRefState(todoRef) const [todo, setTodo] = R.useRefState(todoRef)