1
1
import { useEffect , useMemo , useState } from 'react' ;
2
2
import { PersonalQueue , TicketStatus , UserRole } from '@prisma/client' ;
3
- import { Flex , Skeleton , SkeletonText , Tab , TabList , TabPanel , TabPanels , Tabs , Text } from '@chakra-ui/react' ;
3
+ import { Button , Flex , Skeleton , SkeletonText , Tab , TabList , TabPanel , TabPanels , Tabs , Text } from '@chakra-ui/react' ;
4
4
import { trpc } from '../../utils/trpc' ;
5
5
import { useChannel } from '@ably-labs/react-hooks' ;
6
6
import { uppercaseFirstLetter } from '../../utils/utils' ;
@@ -26,6 +26,7 @@ export type TabType = TicketStatus | 'Priority' | 'Public';
26
26
*/
27
27
const TicketQueue = ( props : TicketQueueProps ) => {
28
28
const { userRole, isPendingStageEnabled, isQueueOpen, userId, personalQueue } = props ;
29
+ const clearQueueMutation = trpc . ticket . clearQueue . useMutation ( ) ;
29
30
const [ tabIndex , setTabIndex ] = useState ( 0 ) ;
30
31
31
32
const context = trpc . useContext ( ) ;
@@ -222,13 +223,27 @@ const TicketQueue = (props: TicketQueueProps) => {
222
223
return - 1 ;
223
224
} ;
224
225
226
+ const clearQueue = async ( ) => {
227
+ await clearQueueMutation . mutateAsync ( { personalQueueName : personalQueue ?. name } ) ;
228
+ context . ticket . getTicketsWithStatus . invalidate ( ) ;
229
+ } ;
230
+
231
+ const totalTicketsLength =
232
+ getTickets ( TicketStatus . OPEN ) . length +
233
+ getTickets ( TicketStatus . PENDING ) . length +
234
+ getTickets ( TicketStatus . ASSIGNED ) . length +
235
+ getTickets ( TicketStatus . ABSENT ) . length ;
236
+
225
237
return (
226
238
< Flex width = 'full' align = 'left' flexDir = 'column' p = { 4 } >
227
239
{ ! isQueueOpen ? (
228
- < Flex alignItems = 'center' justifyContent = 'center' width = '100%' mt = { 5 } >
240
+ < Flex flexDir = 'column' alignItems = 'center' justifyContent = 'center' width = '100%' mt = { 5 } >
229
241
< Text fontSize = '2xl' fontWeight = 'bold' >
230
242
Queue is currently closed
231
243
</ Text >
244
+ < Button hidden = { totalTicketsLength === 0 } onClick = { clearQueue } ml = { 5 } colorScheme = 'green' >
245
+ Clear Queue
246
+ </ Button >
232
247
</ Flex >
233
248
) : (
234
249
< > </ >
0 commit comments