0.1.0 #1

Merged
Thilawyn merged 81 commits from next into master 2025-07-17 21:17:57 +02:00
2 changed files with 4 additions and 2 deletions
Showing only changes of commit ae70c7c98a - Show all commits

View File

@@ -42,7 +42,7 @@ export const Todo = Component.make(function* Todo(props: TodoProps) {
), [props._tag, props.index]) ), [props._tag, props.index])
const contentRef = React.useMemo(() => SubscriptionSubRef.makeFromPath(ref, ["content"]), [ref]) const contentRef = React.useMemo(() => SubscriptionSubRef.makeFromPath(ref, ["content"]), [ref])
const [todo] = yield* Hook.useSubscribeRefs(ref) const [todo, todosSize] = yield* Hook.useSubscribeRefs(ref, state.sizeRef)
return ( return (
<Flex direction="column" align="stretch" gap="2"> <Flex direction="column" align="stretch" gap="2">

View File

@@ -2,6 +2,7 @@ import { Todo } from "@/domain"
import { KeyValueStore } from "@effect/platform" import { KeyValueStore } from "@effect/platform"
import { BrowserKeyValueStore } from "@effect/platform-browser" import { BrowserKeyValueStore } from "@effect/platform-browser"
import { Chunk, Console, Effect, Option, Schema, Stream, SubscriptionRef } from "effect" import { Chunk, Console, Effect, Option, Schema, Stream, SubscriptionRef } from "effect"
import { SubscriptionSubRef } from "effect-fc/types"
export class TodosState extends Effect.Service<TodosState>()("TodosState", { export class TodosState extends Effect.Service<TodosState>()("TodosState", {
@@ -31,6 +32,7 @@ export class TodosState extends Effect.Service<TodosState>()("TodosState", {
) )
const ref = yield* SubscriptionRef.make(yield* readFromLocalStorage) const ref = yield* SubscriptionRef.make(yield* readFromLocalStorage)
const sizeRef = SubscriptionSubRef.makeFromPath(ref, ["length"])
yield* Effect.forkScoped(ref.changes.pipe( yield* Effect.forkScoped(ref.changes.pipe(
Stream.debounce("500 millis"), Stream.debounce("500 millis"),
@@ -41,7 +43,7 @@ export class TodosState extends Effect.Service<TodosState>()("TodosState", {
Effect.ignore, Effect.ignore,
)) ))
return { ref } as const return { ref, sizeRef } as const
}), }),
dependencies: [BrowserKeyValueStore.layerLocalStorage], dependencies: [BrowserKeyValueStore.layerLocalStorage],