filter and layout improvements. added created at and modified at date/time stamps
This commit is contained in:
+15
-4
@@ -23,6 +23,8 @@ export interface Task {
|
||||
tags: string[];
|
||||
content?: string; // HTML content from Tiptap
|
||||
deletedAt?: number; // Timestamp of soft delete
|
||||
created: string; // ISO string from PB
|
||||
updated: string; // ISO string from PB
|
||||
}
|
||||
|
||||
export interface Filter {
|
||||
@@ -212,7 +214,9 @@ export const initStore = async () => {
|
||||
completed: r.completed,
|
||||
tags: r.tags || [],
|
||||
content: r.content,
|
||||
deletedAt: r.deletedAt ? new Date(r.deletedAt).getTime() : undefined
|
||||
deletedAt: r.deletedAt ? new Date(r.deletedAt).getTime() : undefined,
|
||||
created: r.created,
|
||||
updated: r.updated
|
||||
}));
|
||||
|
||||
// Use reconcile for efficient store update (keeps observers happy)
|
||||
@@ -254,7 +258,9 @@ export const addTask = async (title: string, options?: { dueDate?: Date | string
|
||||
priority,
|
||||
completed: false,
|
||||
tags,
|
||||
content
|
||||
content,
|
||||
created: new Date().toISOString(),
|
||||
updated: new Date().toISOString()
|
||||
};
|
||||
|
||||
// Optimistic UI update
|
||||
@@ -272,8 +278,13 @@ export const addTask = async (title: string, options?: { dueDate?: Date | string
|
||||
content
|
||||
});
|
||||
|
||||
// Replace temp task with real record
|
||||
setStore("tasks", (t) => t.map(task => task.id === tempId ? { ...task, id: record.id } : task));
|
||||
// Replace temp task with real record (merging server fields like id, created, updated)
|
||||
setStore("tasks", (t) => t.map(task => task.id === tempId ? {
|
||||
...task,
|
||||
id: record.id,
|
||||
created: record.created,
|
||||
updated: record.updated
|
||||
} : task));
|
||||
} catch (err) {
|
||||
console.error("create failed", err);
|
||||
toast.error("Failed to save task.");
|
||||
|
||||
Reference in New Issue
Block a user