@@ -1,6 +1,6 @@
|
|||||||
import { R } from "@/reffuse"
|
import { R } from "@/reffuse"
|
||||||
import { createFileRoute } from "@tanstack/react-router"
|
import { createFileRoute } from "@tanstack/react-router"
|
||||||
import { Ref } from "effect"
|
import { Effect, Ref } from "effect"
|
||||||
|
|
||||||
|
|
||||||
export const Route = createFileRoute("/count")({
|
export const Route = createFileRoute("/count")({
|
||||||
@@ -11,7 +11,7 @@ function Count() {
|
|||||||
|
|
||||||
const runSync = R.useRunSync()
|
const runSync = R.useRunSync()
|
||||||
|
|
||||||
const countRef = R.useRef(0)
|
const countRef = R.useRef(() => Effect.succeed(0))
|
||||||
const [count] = R.useRefState(countRef)
|
const [count] = R.useRefState(countRef)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export const Route = createFileRoute("/query/service")({
|
|||||||
|
|
||||||
function RouteComponent() {
|
function RouteComponent() {
|
||||||
const query = R.useQuery({
|
const query = R.useQuery({
|
||||||
key: R.useStreamFromValues(["uuid4", 10 as number]),
|
key: R.useStreamFromReactiveValues(["uuid4", 10 as number]),
|
||||||
query: ([, count]) => Console.log(`Querying ${ count } IDs...`).pipe(
|
query: ([, count]) => Console.log(`Querying ${ count } IDs...`).pipe(
|
||||||
Effect.andThen(Effect.sleep("500 millis")),
|
Effect.andThen(Effect.sleep("500 millis")),
|
||||||
Effect.andThen(HttpClient.get(`https://www.uuidtools.com/api/generate/v4/count/${ count }`)),
|
Effect.andThen(HttpClient.get(`https://www.uuidtools.com/api/generate/v4/count/${ count }`)),
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ function RouteComponent() {
|
|||||||
const [count, setCount] = useState(1)
|
const [count, setCount] = useState(1)
|
||||||
|
|
||||||
const query = R.useQuery({
|
const query = R.useQuery({
|
||||||
key: R.useStreamFromValues(["uuid4", count]),
|
key: R.useStreamFromReactiveValues(["uuid4", count]),
|
||||||
query: ([, count]) => Console.log(`Querying ${ count } IDs...`).pipe(
|
query: ([, count]) => Console.log(`Querying ${ count } IDs...`).pipe(
|
||||||
Effect.andThen(Effect.sleep("500 millis")),
|
Effect.andThen(Effect.sleep("500 millis")),
|
||||||
Effect.andThen(HttpClient.get(`https://www.uuidtools.com/api/generate/v4/count/${ count }`)),
|
Effect.andThen(HttpClient.get(`https://www.uuidtools.com/api/generate/v4/count/${ count }`)),
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export const Route = createFileRoute("/tests")({
|
|||||||
})
|
})
|
||||||
|
|
||||||
function RouteComponent() {
|
function RouteComponent() {
|
||||||
const deepRef = R.useRef({ value: "poulet" })
|
const deepRef = R.useRef(() => Effect.succeed({ value: "poulet" }))
|
||||||
const deepValueRef = R.useSubRef(deepRef, ["value"])
|
const deepValueRef = R.useSubRef(deepRef, ["value"])
|
||||||
|
|
||||||
// const value = R.useMemoScoped(Effect.addFinalizer(() => Console.log("cleanup")).pipe(
|
// const value = R.useMemoScoped(Effect.addFinalizer(() => Console.log("cleanup")).pipe(
|
||||||
@@ -25,8 +25,8 @@ function RouteComponent() {
|
|||||||
), [])
|
), [])
|
||||||
|
|
||||||
|
|
||||||
const uuidRef = R.useRef("none")
|
const uuidRef = R.useRef(() => Effect.succeed("none"))
|
||||||
const anotherRef = R.useRef(69)
|
const anotherRef = R.useRef(() => Effect.succeed(69))
|
||||||
|
|
||||||
|
|
||||||
const logValue = R.useCallbackSync(Effect.fn(function*(value: string) {
|
const logValue = R.useCallbackSync(Effect.fn(function*(value: string) {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export function VTodos() {
|
|||||||
), [])
|
), [])
|
||||||
|
|
||||||
const todosRef = R.useMemo(() => TodosState.TodosState.pipe(Effect.map(state => state.todos)), [])
|
const todosRef = R.useMemo(() => TodosState.TodosState.pipe(Effect.map(state => state.todos)), [])
|
||||||
const [todos] = R.useRefState(todosRef)
|
const [todos] = R.useSubscribeRefs(todosRef)
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -523,19 +523,19 @@ export abstract class ReffuseNamespace<R> {
|
|||||||
return reactStateValue as InitialA extends A ? Option.Some<A> : Option.Option<A>
|
return reactStateValue as InitialA extends A ? Option.Some<A> : Option.Option<A>
|
||||||
}
|
}
|
||||||
|
|
||||||
usePullStream<A, InitialA extends A | undefined, E, R>(
|
// usePullStream<A, InitialA extends A | undefined, E, R>(
|
||||||
this: ReffuseNamespace<R>,
|
// this: ReffuseNamespace<R>,
|
||||||
stream: Stream.Stream<A, E, R>,
|
// stream: Stream.Stream<A, E, R>,
|
||||||
initialValue?: InitialA,
|
// initialValue?: InitialA,
|
||||||
): [
|
// ): [
|
||||||
latestValue: InitialA extends A ? Option.Some<A> : Option.Option<A>,
|
// latestValue: InitialA extends A ? Option.Some<A> : Option.Option<A>,
|
||||||
pull: () => void,
|
// pull: () => void,
|
||||||
] {
|
// ] {
|
||||||
const [reactStateValue, setReactStateValue] = React.useState<Option.Option<A>>(Option.fromNullable(initialValue))
|
// const [reactStateValue, setReactStateValue] = React.useState<Option.Option<A>>(Option.fromNullable(initialValue))
|
||||||
const pull = this.useMemo(() => Stream.toPull(stream), [stream])
|
// const pull = this.useMemo(() => Stream.toPull(stream), [stream])
|
||||||
|
|
||||||
return reactStateValue as InitialA extends A ? Option.Some<A> : Option.Option<A>
|
// return reactStateValue as InitialA extends A ? Option.Some<A> : Option.Option<A>
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
SubRef<B, const P extends PropertyPath.Paths<B>, R>(
|
SubRef<B, const P extends PropertyPath.Paths<B>, R>(
|
||||||
|
|||||||
Reference in New Issue
Block a user