This commit is contained in:
marshennikovaolga
2024-11-22 12:28:26 +01:00
parent 05018f4df1
commit 3629515bd4
3 changed files with 18 additions and 8 deletions

View File

@@ -2,7 +2,7 @@ import { useCallback } from "react"
import { toast } from "sonner" import { toast } from "sonner"
import { LaAccount } from "@/lib/schema" import { LaAccount } from "@/lib/schema"
import { ID } from "jazz-tools" import { ID } from "jazz-tools"
import { ListOfTasks, Task } from "~/lib/schema/task" import { Task } from "~/lib/schema/task"
export const useTaskActions = () => { export const useTaskActions = () => {
const newTask = useCallback((me: LaAccount): Task | null => { const newTask = useCallback((me: LaAccount): Task | null => {
@@ -12,7 +12,7 @@ export const useTaskActions = () => {
} }
if (!me.root.tasks) { if (!me.root.tasks) {
me.root.tasks = ListOfTasks.create([], { owner: me }) me.root.tasks = []
} }
const newTask = Task.create( const newTask = Task.create(
@@ -33,7 +33,9 @@ export const useTaskActions = () => {
const deleteTask = useCallback((me: LaAccount, taskId: ID<Task>): void => { const deleteTask = useCallback((me: LaAccount, taskId: ID<Task>): void => {
if (!me.root?.tasks) return if (!me.root?.tasks) return
const index = me.root.tasks.findIndex((item) => item?.id === taskId) const index: number = me.root.tasks.findIndex(
(item: Task) => item?.id === taskId,
)
if (index === -1) { if (index === -1) {
toast.error("Task not found") toast.error("Task not found")
return return

View File

@@ -12,6 +12,14 @@ export const TaskList: React.FC<TaskListProps> = ({
onUpdateTask, onUpdateTask,
onDeleteTask, onDeleteTask,
}) => { }) => {
if (tasks.length === 0) {
return (
<div className="flex flex-col items-center justify-center py-8">
<p className="text-sm text-muted-foreground">You have no tasks yet</p>
</div>
)
}
return ( return (
<ul className="flex flex-col gap-y-2"> <ul className="flex flex-col gap-y-2">
{tasks?.map( {tasks?.map(

View File

@@ -86,7 +86,7 @@ function TaskComponent() {
const tasks = me?.root.tasks const tasks = me?.root.tasks
const { deleteTask } = useTaskActions() const { deleteTask } = useTaskActions()
const filteredTasks = tasks?.filter((task) => { const filteredTasks = tasks?.filter((task: Task) => {
if (!task) return false if (!task) return false
if (filter === "today") { if (filter === "today") {
return task.status !== "done" && task.dueDate && isToday(task.dueDate) return task.status !== "done" && task.dueDate && isToday(task.dueDate)
@@ -98,7 +98,9 @@ function TaskComponent() {
const updateTask = (taskId: string, updates: Partial<Task>) => { const updateTask = (taskId: string, updates: Partial<Task>) => {
if (me?.root?.tasks) { if (me?.root?.tasks) {
const taskIndex = me.root.tasks.findIndex((task) => task?.id === taskId) const taskIndex = me.root.tasks.findIndex(
(task: Task) => task?.id === taskId,
)
if (taskIndex !== -1) { if (taskIndex !== -1) {
Object.assign(me.root.tasks[taskIndex]!, updates) Object.assign(me.root.tasks[taskIndex]!, updates)
} }
@@ -135,9 +137,7 @@ function TaskComponent() {
</div> */} </div> */}
<TaskForm /> <TaskForm />
<TaskList <TaskList
tasks={ tasks={filteredTasks?.filter((task: Task) => task !== null) || []}
filteredTasks?.filter((task): task is Task => task !== null) || []
}
onUpdateTask={updateTask} onUpdateTask={updateTask}
onDeleteTask={onDeleteTask} onDeleteTask={onDeleteTask}
/> />