Add optimistic updates for immediate UI feedback

- ToggleItemButton now uses useOptimistic for instant toggle feedback
- InlineItemCreate clears form immediately before server action
- Both components call router.refresh() after mutations
- UI updates appear instantly, no waiting for server response
This commit is contained in:
2025-12-02 14:33:43 +00:00
parent 0fc8c719b9
commit 78bfcb7ac3
2 changed files with 27 additions and 6 deletions

View File

@@ -37,16 +37,24 @@ export default function InlineItemCreate({ listId }: InlineItemCreateProps) {
setError('')
try {
await createItem(listId, sanitizeString(title))
showToast('Task added successfully', 'success')
// Clear form immediately for better UX
const itemTitle = sanitizeString(title)
setTitle('')
setIsCreating(false)
// Create item and refresh
await createItem(listId, itemTitle)
showToast('Task added successfully', 'success')
// Force immediate refresh
router.refresh()
} catch (error) {
console.error('Error creating item:', error)
const errorMessage = error instanceof Error ? error.message : 'Failed to add task'
setError(errorMessage)
showToast(errorMessage, 'error')
// Restore form on error
setIsCreating(true)
} finally {
setIsSubmitting(false)
}