@@ -1,8 +1,7 @@
|
||||
import { GlobalContext } from "@/reffuse"
|
||||
import { ReffuseContext } from "@thilawyn/reffuse"
|
||||
import { make } from "@thilawyn/reffuse/Reffuse"
|
||||
import { Reffuse, ReffuseContext } from "@thilawyn/reffuse"
|
||||
import { TodosState } from "./services"
|
||||
|
||||
|
||||
export const TodosContext = ReffuseContext.make<TodosState.TodosState>()
|
||||
export const Reffuse = make(GlobalContext, TodosContext)
|
||||
export const R = Reffuse.make(GlobalContext, TodosContext)
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import { Todo } from "@/domain"
|
||||
import { Box, Button, Card, Flex, TextArea } from "@radix-ui/themes"
|
||||
import { Effect, Option } from "effect"
|
||||
import { Reffuse } from "../reffuse"
|
||||
import { R } from "../reffuse"
|
||||
import { TodosState } from "../services"
|
||||
|
||||
|
||||
export function VNewTodo() {
|
||||
|
||||
const runSync = Reffuse.useRunSync()
|
||||
const runSync = R.useRunSync()
|
||||
|
||||
const createEmptyTodo = Todo.generateUniqueID.pipe(
|
||||
Effect.map(id => Todo.Todo.make({
|
||||
@@ -17,8 +17,8 @@ export function VNewTodo() {
|
||||
}, true))
|
||||
)
|
||||
|
||||
const todoRef = Reffuse.useRefFromEffect(createEmptyTodo)
|
||||
const [todo, setTodo] = Reffuse.useRefState(todoRef)
|
||||
const todoRef = R.useRefFromEffect(createEmptyTodo)
|
||||
const [todo, setTodo] = R.useRefState(todoRef)
|
||||
|
||||
|
||||
return (
|
||||
|
||||
@@ -3,7 +3,7 @@ import { Box, Card, Flex, IconButton, TextArea } from "@radix-ui/themes"
|
||||
import { Effect } from "effect"
|
||||
import { Delete } from "lucide-react"
|
||||
import { useState } from "react"
|
||||
import { Reffuse } from "../reffuse"
|
||||
import { R } from "../reffuse"
|
||||
import { TodosState } from "../services"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ export interface VTodoProps {
|
||||
|
||||
export function VTodo({ index, todo }: VTodoProps) {
|
||||
|
||||
const runSync = Reffuse.useRunSync()
|
||||
const runSync = R.useRunSync()
|
||||
const editorMode = useState(false)
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Box, Flex } from "@radix-ui/themes"
|
||||
import { Chunk, Effect, Stream } from "effect"
|
||||
import { Reffuse } from "../reffuse"
|
||||
import { R } from "../reffuse"
|
||||
import { TodosState } from "../services"
|
||||
import { VNewTodo } from "./VNewTodo"
|
||||
import { VTodo } from "./VTodo"
|
||||
@@ -9,14 +9,14 @@ import { VTodo } from "./VTodo"
|
||||
export function VTodos() {
|
||||
|
||||
// Sync changes to the todos with the local storage
|
||||
Reffuse.useFork(TodosState.TodosState.pipe(
|
||||
R.useFork(TodosState.TodosState.pipe(
|
||||
Effect.flatMap(state =>
|
||||
Stream.runForEach(state.todos.changes, () => state.saveToLocalStorage)
|
||||
)
|
||||
))
|
||||
|
||||
const todosRef = Reffuse.useMemo(TodosState.TodosState.pipe(Effect.map(state => state.todos)))
|
||||
const [todos] = Reffuse.useRefState(todosRef)
|
||||
const todosRef = R.useMemo(TodosState.TodosState.pipe(Effect.map(state => state.todos)))
|
||||
const [todos] = R.useRefState(todosRef)
|
||||
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user