diff --git a/packages/api/src/handlers/queues.ts b/packages/api/src/handlers/queues.ts index de73ee61..1e52023d 100644 --- a/packages/api/src/handlers/queues.ts +++ b/packages/api/src/handlers/queues.ts @@ -12,6 +12,7 @@ import { Status, ValidMetrics, } from '../../typings/app'; +import { STATUSES } from '../constants/statuses'; type MetricName = keyof ValidMetrics; @@ -62,7 +63,14 @@ const formatJob = (job: QueueJob, queue: BaseAdapter): AppJob => { }; }; -const allStatuses: JobStatus[] = ['active', 'completed', 'delayed', 'failed', 'paused', 'waiting']; +const allStatuses: JobStatus[] = [ + STATUSES.active, + STATUSES.completed, + STATUSES.delayed, + STATUSES.failed, + STATUSES.paused, + STATUSES.waiting, +]; const JOB_PER_PAGE = 10; function getPagination(statuses: JobStatus[], counts: JobCounts, currentPage: number): Pagination { diff --git a/packages/api/src/handlers/retryAll.ts b/packages/api/src/handlers/retryAll.ts index 3e3f99dc..534b2993 100644 --- a/packages/api/src/handlers/retryAll.ts +++ b/packages/api/src/handlers/retryAll.ts @@ -1,15 +1,13 @@ -import { - BullBoardRequest, - ControllerHandlerReturnType, -} from '../../typings/app'; +import { BullBoardRequest, ControllerHandlerReturnType } from '../../typings/app'; import { BaseAdapter } from '../queueAdapters/base'; import { queueProvider } from '../providers/queue'; +import { STATUSES } from '../constants/statuses'; async function retryAll( _req: BullBoardRequest, queue: BaseAdapter ): Promise { - const jobs = await queue.getJobs(['failed']); + const jobs = await queue.getJobs([STATUSES.failed]); await Promise.all(jobs.map((job) => job.retry())); return { status: 200, body: {} }; diff --git a/packages/ui/src/components/JobCard/Progress/Progress.tsx b/packages/ui/src/components/JobCard/Progress/Progress.tsx index 1d9d1064..55cdbcaf 100644 --- a/packages/ui/src/components/JobCard/Progress/Progress.tsx +++ b/packages/ui/src/components/JobCard/Progress/Progress.tsx @@ -2,6 +2,7 @@ import React from 'react'; import s from './Progress.module.css'; import cn from 'clsx'; import { Status } from '@bull-board/api/typings/app'; +import { STATUSES } from '@bull-board/api/src/constants/statuses'; export const Progress = ({ percentage, @@ -29,7 +30,7 @@ export const Progress = ({ cy="70" r="70" fill="none" - stroke={status === 'failed' ? '#F56565' : '#48BB78'} + stroke={status === STATUSES.failed ? '#F56565' : '#48BB78'} strokeWidth="8" strokeLinecap="round" strokeDasharray="600" diff --git a/packages/ui/src/components/JobCard/Timeline/Timeline.tsx b/packages/ui/src/components/JobCard/Timeline/Timeline.tsx index 0d28f0f7..d0a853c6 100644 --- a/packages/ui/src/components/JobCard/Timeline/Timeline.tsx +++ b/packages/ui/src/components/JobCard/Timeline/Timeline.tsx @@ -2,6 +2,7 @@ import { format, formatDistance, getYear, isToday } from 'date-fns'; import React from 'react'; import s from './Timeline.module.css'; import { AppJob, Status } from '@bull-board/api/typings/app'; +import { STATUSES } from '@bull-board/api/src/constants/statuses'; type TimeStamp = number | Date; @@ -23,7 +24,7 @@ export const Timeline = function Timeline({ job, status }: { job: AppJob; status Added at - {!!job.delay && job.delay > 0 && status === 'delayed' && ( + {!!job.delay && job.delay > 0 && status === STATUSES.delayed && (
  • Delayed for
  • )} diff --git a/packages/ui/src/components/QueueActions/QueueActions.tsx b/packages/ui/src/components/QueueActions/QueueActions.tsx index 4da38561..fa1a0619 100644 --- a/packages/ui/src/components/QueueActions/QueueActions.tsx +++ b/packages/ui/src/components/QueueActions/QueueActions.tsx @@ -5,6 +5,7 @@ import { TrashIcon } from '../Icons/Trash'; import { Button } from '../JobCard/Button/Button'; import s from './QueueActions.module.css'; import { AppQueue, Status } from '@bull-board/api/typings/app'; +import { STATUSES } from '@bull-board/api/src/constants/statuses'; interface QueueActionProps { queue: AppQueue; @@ -12,9 +13,9 @@ interface QueueActionProps { status: Status; } -const ACTIONABLE_STATUSES = ['failed', 'delayed', 'completed']; +const ACTIONABLE_STATUSES = [STATUSES.failed, STATUSES.delayed, STATUSES.completed] as const; -const isStatusActionable = (status: Status): boolean => ACTIONABLE_STATUSES.includes(status); +const isStatusActionable = (status: Status): boolean => ACTIONABLE_STATUSES.includes(status as any); const CleanAllButton = ({ onClick }: any) => (