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:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user