Skip to content
This repository has been archived by the owner on Jan 5, 2023. It is now read-only.
Permalink

Comparing changes

This is a direct comparison between two commits made in this repository or its related repositories. View the default comparison for this range or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: effect-app/todo-sample
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0078454d8dae122bf98a3ef0ba1353a379a561a1
Choose a base ref
..
head repository: effect-app/todo-sample
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: f326daee9514b60c2fffc3ab09a553abd05449d5
Choose a head ref
Showing with 21 additions and 8 deletions.
  1. +4 −3 apps/frontend/Todo.ts
  2. +15 −4 apps/frontend/features/Tasks/TaskList/index.tsx
  3. +2 −1 apps/frontend/features/Tasks/data.ts
7 changes: 4 additions & 3 deletions apps/frontend/Todo.ts
Original file line number Diff line number Diff line change
@@ -18,6 +18,7 @@ import {
reasonableString,
parseStringE,
leafE,
ReasonableString,
} from "@effect-ts-demo/core/ext/Schema"
import * as Todo from "@effect-ts-demo/todo-client/Tasks"
import { TaskId, TaskListId } from "@effect-ts-demo/todo-client/Tasks"
@@ -202,7 +203,7 @@ export function filterByCategory(category: TaskView | string) {
return ident
}
default:
return A.filter((t: Todo.Task) => t.listId === category)
return A.filter((t: Todo.Task) => t.listId === (category as any))
}
}

@@ -218,8 +219,8 @@ function isSameDay(today: Date) {

export const emptyTasks = [] as readonly Todo.Task[]

export const Category = nonEmptyString
export type Category = NonEmptyString
export const Category = reasonableString
export type Category = ReasonableString

export * from "@effect-ts-demo/todo-types"
export * from "@effect-ts-demo/todo-types/Task"
19 changes: 15 additions & 4 deletions apps/frontend/features/Tasks/TaskList/index.tsx
Original file line number Diff line number Diff line change
@@ -21,7 +21,14 @@ import { TodoClient } from "@/index"
import { Todo } from "@/index"
import { renderIf_, toUpperCaseFirst } from "@/utils"

import { useGetTask, useMe, useModifyMe, useNewTask, useTasks } from "../data"
import {
parseRSunsafe,
useGetTask,
useMe,
useModifyMe,
useNewTask,
useTasks,
} from "../data"
import { useRouting } from "../routing"

import TaskList from "./TaskList"
@@ -81,7 +88,9 @@ const TaskListView = memo(function ({
? category === "tasks"
? meResult.value.right.inboxOrder
: A.findFirstMap_(meResult.value.right.lists, (l) =>
l._tag === "TaskList" && l.id === category ? O.some(l.order) : O.none
l._tag === "TaskList" && l.id === (category as any)
? O.some(l.order)
: O.none
)["|>"](O.getOrElse(() => []))
: []
const tasks = unfilteredTasks["|>"](Todo.filterByCategory(category))
@@ -116,7 +125,9 @@ const TaskListView = memo(function ({
? { inboxOrder: order }
: {
lists: A.map_(r.lists, (l) =>
l.id === category && l._tag === "TaskList" ? { ...l, order } : l
l.id === (category as any) && l._tag === "TaskList"
? { ...l, order }
: l
),
}),
}))
@@ -166,7 +177,7 @@ const TaskListView = memo(function ({
fullWidth
placeholder="Add a Task"
disabled={addTask.loading}
onChange={addTask}
onChange={flow(parseRSunsafe, addTask)}
/>
</Box>
</>
3 changes: 2 additions & 1 deletion apps/frontend/features/Tasks/data.ts
Original file line number Diff line number Diff line change
@@ -224,7 +224,8 @@ export function useTaskCommandsResolved(t: Todo.Task) {
}
}

const parseRS = Parser.for(S.reasonableString)["|>"](S.condemnFail)
export const parseRS = Parser.for(S.reasonableString)["|>"](S.condemnFail)
export const parseRSunsafe = Parser.for(S.reasonableString)["|>"](S.unsafe)

export function useTaskCommands(id: Todo.TaskId) {
const modifyTasks = useModifyTasks()