1
- import { useState , useEffect } from "react" ;
1
+ import { useState , useEffect , lazy } from "react" ;
2
2
import { useParams } from "react-router-dom" ;
3
3
import useGlobalError from "../../../components/error/ErrorHooks" ;
4
4
import DefaultLayout from "../../../components/kb/DefaultLayout" ;
@@ -8,7 +8,10 @@ import { format, parseISO } from "date-fns";
8
8
import TicketStatusLabel from "../../../components/support/TicketStatusLabel" ;
9
9
import TicketMessaging from "../../../components/support/TicketMessaging" ;
10
10
import { useTypedSelector } from "../../../state/hooks" ;
11
- import { Button , Icon } from "semantic-ui-react" ;
11
+ import { Button , Icon , Label } from "semantic-ui-react" ;
12
+ const AssignTicketModal = lazy (
13
+ ( ) => import ( "../../../components/support/AssignTicketModal" )
14
+ ) ;
12
15
13
16
const SupportTicketView = ( ) => {
14
17
const { handleGlobalError } = useGlobalError ( ) ;
@@ -17,6 +20,7 @@ const SupportTicketView = () => {
17
20
18
21
const [ loading , setLoading ] = useState ( false ) ;
19
22
const [ ticket , setTicket ] = useState < SupportTicket | null > ( null ) ;
23
+ const [ showAssignModal , setShowAssignModal ] = useState ( false ) ;
20
24
21
25
useEffect ( ( ) => {
22
26
document . title = "LibreTexts | Support Ticket" ;
@@ -70,7 +74,7 @@ const SupportTicketView = () => {
70
74
71
75
const AdminOptions = ( ) => (
72
76
< div className = "flex flex-row" >
73
- < Button color = "blue" >
77
+ < Button color = "blue" onClick = { ( ) => setShowAssignModal ( true ) } >
74
78
< Icon name = "user plus" />
75
79
Assign Ticket
76
80
</ Button >
@@ -99,7 +103,17 @@ const SupportTicketView = () => {
99
103
< div className = "flex flex-col basis-1/2" >
100
104
< p className = "text-xl" >
101
105
< span className = "font-semibold" > Requester:</ span > { " " }
102
- { ticket ?. title }
106
+ { ticket . user && (
107
+ < >
108
+ < span >
109
+ `${ ticket . user . firstName } ${ ticket . user . lastName } ($
110
+ { ticket . user . email } )`
111
+ </ span >
112
+ < Label > Authenticated</ Label >
113
+ </ >
114
+ ) }
115
+ { ticket . guest &&
116
+ `${ ticket . guest . firstName } ${ ticket . guest . lastName } (${ ticket . guest . email } )` }
103
117
</ p >
104
118
< p className = "text-xl" >
105
119
< span className = "font-semibold" > Subject:</ span > { " " }
@@ -133,6 +147,11 @@ const SupportTicketView = () => {
133
147
</ >
134
148
) }
135
149
</ div >
150
+ < AssignTicketModal
151
+ open = { showAssignModal }
152
+ onClose = { ( ) => setShowAssignModal ( false ) }
153
+ ticketId = { id }
154
+ />
136
155
</ DefaultLayout >
137
156
) ;
138
157
} ;
0 commit comments