All files / app/src/entities/task/ui/task-buttons task-buttons.tsx

50% Statements 22/44
25% Branches 1/4
20% Functions 1/5
50% Lines 22/44

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 711x                               1x 2x 2x   2x 2x   2x       2x 2x 2x 2x 2x 2x 2x 2x   2x 2x   2x                       2x         2x                     2x   2x  
import { FC } from 'react'
import { useSetAtom } from 'jotai'
import { Button } from '@tmk/ui-kit'
 
import { Task, taskFormModalConfigAtom, TaskFormMode, useTaskActions, useTaskActionPermissions } from '@/entities/task'
 
import { useTranslate } from '@/shared/lib'
 
import TrashIcon from '@/shared/assets/icons/common/TrashIcon.svg'
import EditIcon from '@/shared/assets/icons/common/edit.svg'
 
export interface TaskButtonsProps {
  task: Task
  isViewerManager: boolean
}
 
export const TaskButtons: FC<TaskButtonsProps> = ({ task, isViewerManager }) => {
  const { t } = useTranslate(['accounting-object'])
  const setTaskFormModalConfig = useSetAtom(taskFormModalConfigAtom)
 
  const { isStartBtn, isCompleteBtn, isEditBtn, isDeleteBtn } = useTaskActionPermissions(task)
  const { isStartingTask, isCompletingTask, isDeletingTask, startTask, completeTask, deleteTask } = useTaskActions()
 
  const onOpenEditTaskModal = () => {
    setTaskFormModalConfig({ isOpen: true, taskId: task.id, formMode: TaskFormMode.EDIT, isViewerManager })
  }
 
  return (
    <div className='flex items-center'>
      {isStartBtn && (
        <Button
          className='w-32 mr-2'
          loading={isStartingTask}
          disabled={isStartingTask}
          onClick={() => startTask({ taskId: task.id })}
        >
          <h3>{t('start')}</h3>
        </Button>
      )}
      {isCompleteBtn && (
        <Button
          variant='outlined'
          color='secondary'
          className='w-32 mr-2'
          loading={isCompletingTask}
          disabled={isCompletingTask}
          onClick={() => completeTask({ taskId: task.id })}
        >
          <h3>{t('complete')}</h3>
        </Button>
      )}
      {isEditBtn && (
        <Button variant='icon' className='p-2' onClick={onOpenEditTaskModal}>
          <EditIcon className='fill-blue-dark' />
        </Button>
      )}
      {isDeleteBtn && (
        <Button
          variant='icon'
          className='p-2'
          onClick={() => deleteTask({ taskId: task.id })}
          disabled={isDeletingTask}
          loading={isDeletingTask}
        >
          <TrashIcon className='fill-blue-dark' />
        </Button>
      )}
    </div>
  )
}