Files
failwell/src/use-cases/task/stores/useTask.store.ts
Julien Calixte b8cad131b8 get task by id
2023-04-09 11:02:26 +02:00

42 lines
919 B
TypeScript

import { defineStore } from 'pinia'
import type { Taskable } from '../interfaces/taskable'
import { Task } from '../models/task'
interface StoredTaskable extends Omit<Taskable, 'date'> {
date: string
}
export interface TaskStoreState {
tasks: StoredTaskable[]
}
export const useTaskStore = defineStore('task-store', {
persist: true,
state: (): TaskStoreState => ({
tasks: []
}),
actions: {
saveTask(task: Taskable) {
this.tasks.push({
...task,
date: task.date.toISOString()
})
},
reset() {
this.tasks = []
}
},
getters: {
recentTasks(state) {
return state.tasks
.map((task) =>
Task.fromTaskable({ ...task, date: new Date(task.date) })
)
.sort((a, b) => (a.date > b.date ? -1 : 1))
},
getTask(state) {
return (taskId: string) => state.tasks.find((task) => task.id === taskId)
}
}
})