0.1.0 #1

Merged
Thilawyn merged 87 commits from next into master 2025-01-18 00:54:42 +01:00
2 changed files with 10 additions and 9 deletions
Showing only changes of commit 7e239b0d1e - Show all commits

View File

@@ -1,7 +1,6 @@
import { Reffuse } from "@/reffuse"
import { createFileRoute } from "@tanstack/react-router"
import { Console, DateTime, Effect, Ref, Schedule, Stream, SubscriptionRef } from "effect"
import { useMemo } from "react"
import { Console, DateTime, Effect, Ref, Schedule, Stream } from "effect"
const timeEverySecond = Stream.repeatEffectWithSchedule(
@@ -16,13 +15,7 @@ export const Route = createFileRoute("/time")({
function Time() {
const runtime = Reffuse.useRuntime()
const timeRef = useMemo(() => DateTime.now.pipe(
Effect.flatMap(SubscriptionRef.make),
runtime.runSync,
// eslint-disable-next-line react-hooks/exhaustive-deps
), [])
const timeRef = Reffuse.useRefFromEffect(DateTime.now)
Reffuse.useFork(Effect.addFinalizer(() => Console.log("Cleanup")).pipe(
Effect.flatMap(() =>

View File

@@ -75,6 +75,14 @@ export class Reffuse<R, ER> {
return React.useMemo(() => runtime.runSync(SubscriptionRef.make(value)), [])
}
useRefFromEffect<A, E>(effect: Effect.Effect<A, E, R>): SubscriptionRef.SubscriptionRef<A> {
const runtime = this.useRuntime()
return React.useMemo(() => runtime.runSync(effect.pipe(
Effect.flatMap(SubscriptionRef.make)
)), [])
}
useRefState<A>(ref: SubscriptionRef.SubscriptionRef<A>): [A, React.Dispatch<React.SetStateAction<A>>] {
const runtime = this.useRuntime()