|  | @@ -32,6 +32,9 @@ import Checkbox from '@/app/components/base/checkbox'
 | 
	
		
			
				|  |  |  import {
 | 
	
		
			
				|  |  |    useChildSegmentList,
 | 
	
		
			
				|  |  |    useChildSegmentListKey,
 | 
	
		
			
				|  |  | +  useChunkListAllKey,
 | 
	
		
			
				|  |  | +  useChunkListDisabledKey,
 | 
	
		
			
				|  |  | +  useChunkListEnabledKey,
 | 
	
		
			
				|  |  |    useDeleteChildSegment,
 | 
	
		
			
				|  |  |    useDeleteSegment,
 | 
	
		
			
				|  |  |    useDisableSegment,
 | 
	
	
		
			
				|  | @@ -156,18 +159,18 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |          page: isFullDocMode ? 1 : currentPage,
 | 
	
		
			
				|  |  |          limit: isFullDocMode ? 10 : limit,
 | 
	
		
			
				|  |  |          keyword: isFullDocMode ? '' : searchValue,
 | 
	
		
			
				|  |  | -        enabled: selectedStatus === 'all' ? 'all' : !!selectedStatus,
 | 
	
		
			
				|  |  | +        enabled: selectedStatus,
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    currentPage === 0,
 | 
	
		
			
				|  |  |    )
 | 
	
		
			
				|  |  |    const invalidSegmentList = useInvalid(useSegmentListKey)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    useEffect(() => {
 | 
	
		
			
				|  |  |      if (segmentListData) {
 | 
	
		
			
				|  |  |        setSegments(segmentListData.data || [])
 | 
	
		
			
				|  |  | -      if (segmentListData.total_pages < currentPage)
 | 
	
		
			
				|  |  | -        setCurrentPage(segmentListData.total_pages)
 | 
	
		
			
				|  |  | +      const totalPages = segmentListData.total_pages
 | 
	
		
			
				|  |  | +      if (totalPages < currentPage)
 | 
	
		
			
				|  |  | +        setCurrentPage(totalPages === 0 ? 1 : totalPages)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
	
		
			
				|  |  |    }, [segmentListData])
 | 
	
	
		
			
				|  | @@ -185,12 +188,12 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |        documentId,
 | 
	
		
			
				|  |  |        segmentId: segments[0]?.id || '',
 | 
	
		
			
				|  |  |        params: {
 | 
	
		
			
				|  |  | -        page: currentPage,
 | 
	
		
			
				|  |  | +        page: currentPage === 0 ? 1 : currentPage,
 | 
	
		
			
				|  |  |          limit,
 | 
	
		
			
				|  |  |          keyword: searchValue,
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    !isFullDocMode || segments.length === 0 || currentPage === 0,
 | 
	
		
			
				|  |  | +    !isFullDocMode || segments.length === 0,
 | 
	
		
			
				|  |  |    )
 | 
	
		
			
				|  |  |    const invalidChildSegmentList = useInvalid(useChildSegmentListKey)
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -204,21 +207,20 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |    useEffect(() => {
 | 
	
		
			
				|  |  |      if (childChunkListData) {
 | 
	
		
			
				|  |  |        setChildSegments(childChunkListData.data || [])
 | 
	
		
			
				|  |  | -      if (childChunkListData.total_pages < currentPage)
 | 
	
		
			
				|  |  | -        setCurrentPage(childChunkListData.total_pages)
 | 
	
		
			
				|  |  | +      const totalPages = childChunkListData.total_pages
 | 
	
		
			
				|  |  | +      if (totalPages < currentPage)
 | 
	
		
			
				|  |  | +        setCurrentPage(totalPages === 0 ? 1 : totalPages)
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
	
		
			
				|  |  |    }, [childChunkListData])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const resetList = useCallback(() => {
 | 
	
		
			
				|  |  | -    setSegments([])
 | 
	
		
			
				|  |  |      setSelectedSegmentIds([])
 | 
	
		
			
				|  |  |      invalidSegmentList()
 | 
	
		
			
				|  |  |      // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
	
		
			
				|  |  |    }, [])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const resetChildList = useCallback(() => {
 | 
	
		
			
				|  |  | -    setChildSegments([])
 | 
	
		
			
				|  |  |      invalidChildSegmentList()
 | 
	
		
			
				|  |  |      // eslint-disable-next-line react-hooks/exhaustive-deps
 | 
	
		
			
				|  |  |    }, [])
 | 
	
	
		
			
				|  | @@ -244,6 +246,20 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const { mutateAsync: enableSegment } = useEnableSegment()
 | 
	
		
			
				|  |  |    const { mutateAsync: disableSegment } = useDisableSegment()
 | 
	
		
			
				|  |  | +  const invalidChunkListAll = useInvalid(useChunkListAllKey)
 | 
	
		
			
				|  |  | +  const invalidChunkListEnabled = useInvalid(useChunkListEnabledKey)
 | 
	
		
			
				|  |  | +  const invalidChunkListDisabled = useInvalid(useChunkListDisabledKey)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  const refreshChunkListWithStatusChanged = () => {
 | 
	
		
			
				|  |  | +    switch (selectedStatus) {
 | 
	
		
			
				|  |  | +      case 'all':
 | 
	
		
			
				|  |  | +        invalidChunkListDisabled()
 | 
	
		
			
				|  |  | +        invalidChunkListEnabled()
 | 
	
		
			
				|  |  | +        break
 | 
	
		
			
				|  |  | +      default:
 | 
	
		
			
				|  |  | +        invalidSegmentList()
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const onChangeSwitch = useCallback(async (enable: boolean, segId?: string) => {
 | 
	
		
			
				|  |  |      const operationApi = enable ? enableSegment : disableSegment
 | 
	
	
		
			
				|  | @@ -255,6 +271,7 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |              seg.enabled = enable
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          setSegments([...segments])
 | 
	
		
			
				|  |  | +        refreshChunkListWithStatusChanged()
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        onError: () => {
 | 
	
		
			
				|  |  |          notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') })
 | 
	
	
		
			
				|  | @@ -281,6 +298,23 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const { mutateAsync: updateSegment } = useUpdateSegment()
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  const refreshChunkListDataWithDetailChanged = () => {
 | 
	
		
			
				|  |  | +    switch (selectedStatus) {
 | 
	
		
			
				|  |  | +      case 'all':
 | 
	
		
			
				|  |  | +        invalidChunkListDisabled()
 | 
	
		
			
				|  |  | +        invalidChunkListEnabled()
 | 
	
		
			
				|  |  | +        break
 | 
	
		
			
				|  |  | +      case true:
 | 
	
		
			
				|  |  | +        invalidChunkListAll()
 | 
	
		
			
				|  |  | +        invalidChunkListDisabled()
 | 
	
		
			
				|  |  | +        break
 | 
	
		
			
				|  |  | +      case false:
 | 
	
		
			
				|  |  | +        invalidChunkListAll()
 | 
	
		
			
				|  |  | +        invalidChunkListEnabled()
 | 
	
		
			
				|  |  | +        break
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    const handleUpdateSegment = useCallback(async (
 | 
	
		
			
				|  |  |      segmentId: string,
 | 
	
		
			
				|  |  |      question: string,
 | 
	
	
		
			
				|  | @@ -330,6 +364,7 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          setSegments([...segments])
 | 
	
		
			
				|  |  | +        refreshChunkListDataWithDetailChanged()
 | 
	
		
			
				|  |  |          eventEmitter?.emit('update-segment-success')
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        onSettled() {
 | 
	
	
		
			
				|  | @@ -442,6 +477,7 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |            seg.child_chunks?.push(newChildChunk!)
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |        setSegments([...segments])
 | 
	
		
			
				|  |  | +      refreshChunkListDataWithDetailChanged()
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      else {
 | 
	
		
			
				|  |  |        resetChildList()
 | 
	
	
		
			
				|  | @@ -506,17 +542,10 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  |            setSegments([...segments])
 | 
	
		
			
				|  |  | +          refreshChunkListDataWithDetailChanged()
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          else {
 | 
	
		
			
				|  |  | -          for (const childSeg of childSegments) {
 | 
	
		
			
				|  |  | -            if (childSeg.id === childChunkId) {
 | 
	
		
			
				|  |  | -              childSeg.content = res.data.content
 | 
	
		
			
				|  |  | -              childSeg.type = res.data.type
 | 
	
		
			
				|  |  | -              childSeg.word_count = res.data.word_count
 | 
	
		
			
				|  |  | -              childSeg.updated_at = res.data.updated_at
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          setChildSegments([...childSegments])
 | 
	
		
			
				|  |  | +          resetChildList()
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  |        onSettled: () => {
 | 
	
	
		
			
				|  | @@ -554,12 +583,13 @@ const Completed: FC<ICompletedProps> = ({
 | 
	
		
			
				|  |  |          <SimpleSelect
 | 
	
		
			
				|  |  |            onSelect={onChangeStatus}
 | 
	
		
			
				|  |  |            items={statusList.current}
 | 
	
		
			
				|  |  | -          defaultValue={'all'}
 | 
	
		
			
				|  |  | +          defaultValue={selectedStatus === 'all' ? 'all' : selectedStatus ? 1 : 0}
 | 
	
		
			
				|  |  |            className={s.select}
 | 
	
		
			
				|  |  |            wrapperClassName='h-fit mr-2'
 | 
	
		
			
				|  |  |            optionWrapClassName='w-[160px]'
 | 
	
		
			
				|  |  |            optionClassName='p-0'
 | 
	
		
			
				|  |  |            renderOption={({ item, selected }) => <StatusItem item={item} selected={selected} />}
 | 
	
		
			
				|  |  | +          notClearable
 | 
	
		
			
				|  |  |          />
 | 
	
		
			
				|  |  |          <Input
 | 
	
		
			
				|  |  |            showLeftIcon
 |