33import { useMemo , useState } from 'react'
44import { Chip , ChipInput , ChipModalTabs } from '@sim/emcn'
55import { Search } from '@sim/emcn/icons'
6- import { toError } from '@sim/utils/errors'
76import { formatDate } from '@sim/utils/formatting'
87import { useParams , useRouter } from 'next/navigation'
98import { useQueryStates } from 'nuqs'
@@ -27,7 +26,10 @@ import {
2726 recentlyDeletedSortParams ,
2827 recentlyDeletedUrlKeys ,
2928} from '@/app/workspace/[workspaceId]/settings/components/recently-deleted/search-params'
30- import { SettingsEmptyState } from '@/app/workspace/[workspaceId]/settings/components/settings-empty-state'
29+ import {
30+ SettingsEmptyState ,
31+ SettingsQueryErrorState ,
32+ } from '@/app/workspace/[workspaceId]/settings/components/settings-empty-state'
3133import { SettingsPanel } from '@/app/workspace/[workspaceId]/settings/components/settings-panel'
3234import {
3335 RESOURCE_LIST_STACK ,
@@ -232,9 +234,13 @@ export function RecentlyDeleted() {
232234 const restoreWorkspaceFileFolder = useRestoreWorkspaceFileFolder ( )
233235 const restoreChat = useRestoreMothershipChat ( workspaceId )
234236
235- const { hasNextPage, isFetchingNextPage, fetchNextPage, isLoading, error } = deletedQuery
237+ const { hasNextPage, isFetchingNextPage, isFetchNextPageError, fetchNextPage, isLoading, error } =
238+ deletedQuery
236239
237- const loadMoreRef = useLoadMoreSentinel ( fetchNextPage , hasNextPage && ! isFetchingNextPage )
240+ const loadMoreRef = useLoadMoreSentinel ( {
241+ onLoadMore : fetchNextPage ,
242+ enabled : hasNextPage && ! isFetchingNextPage && ! isFetchNextPageError ,
243+ } )
238244
239245 const filtered = useMemo ( ( ) => {
240246 const items : DeletedResource [ ] = ( deletedQuery . data ?. pages ?? [ ] ) . flatMap ( ( page ) =>
@@ -374,10 +380,13 @@ export function RecentlyDeleted() {
374380 onChange = { ( v ) => setRecentlyDeletedFilters ( { tab : v as RecentlyDeletedFilter } ) }
375381 />
376382
377- { error ? (
378- < SettingsEmptyState >
379- { toError ( error ) . message || 'Failed to load deleted items' }
380- </ SettingsEmptyState >
383+ { error && ! deletedQuery . data ? (
384+ < SettingsQueryErrorState
385+ error = { error }
386+ fallback = 'Failed to load deleted items'
387+ isRetrying = { deletedQuery . isFetching }
388+ onRetry = { ( ) => void deletedQuery . refetch ( ) }
389+ />
381390 ) : isLoading && filtered . length === 0 ? null : filtered . length === 0 ? (
382391 showNoResults ? (
383392 < SettingsEmptyState variant = 'inline' >
@@ -435,7 +444,17 @@ export function RecentlyDeleted() {
435444 />
436445 )
437446 } ) }
438- < div ref = { loadMoreRef } aria-hidden />
447+ { isFetchNextPageError ? (
448+ < SettingsQueryErrorState
449+ error = { error }
450+ fallback = 'Failed to load more deleted items'
451+ isRetrying = { isFetchingNextPage }
452+ onRetry = { ( ) => void fetchNextPage ( ) }
453+ variant = 'inline'
454+ />
455+ ) : (
456+ < div ref = { loadMoreRef } aria-hidden />
457+ ) }
439458 </ div >
440459 ) }
441460 </ SettingsPanel >
0 commit comments