@@ -8,6 +8,7 @@ import { getWorkshopRegistrants } from "@/server/data/registration"
8
8
import { getUserSession } from "@/server/data/user"
9
9
import { getWorkshop , getWorkshopMetadata } from "@/server/data/workshop"
10
10
import { getExactScheduled } from "@/utils/format-scheduled-date"
11
+ import { Badge } from "@/components/ui/badge"
11
12
import { Separator } from "@/components/ui/separator"
12
13
import { CopyButton } from "@/components/copy-button"
13
14
import { Icons } from "@/components/icons"
@@ -16,8 +17,7 @@ import { Shell } from "@/components/shell"
16
17
17
18
import { OrganizerSection } from "./_components/organizer-section"
18
19
import { OrganizerSectionSkeleton } from "./_components/organizer-section-skeleton"
19
- import { RegisterButton } from "./_components/register-button"
20
- import { StartWorkshopButton } from "./_components/start-workshop-button"
20
+ import { WorkshopButton } from "./_components/workshop-button"
21
21
import { WorkshopRegistrants } from "./_components/workshop-registrants"
22
22
import { WorkshopSettings } from "./_components/workshop-settings"
23
23
@@ -62,27 +62,29 @@ export default async function WorkshopPage({ params }: WorkshopPageProps) {
62
62
63
63
const registrants = await getWorkshopRegistrants ( workshop . id )
64
64
65
- const isCurrentUserWorkshop = workshop . organizerId === user . id
66
- const isCurrentUserRegistered = registrants . some (
65
+ const isUserOrganizer = workshop . organizerId === user . id
66
+ const isUserRegistered = registrants . some (
67
67
( registrant ) => registrant . id === user . id
68
68
)
69
69
70
70
return (
71
71
< Shell className = "max-w-xl gap-4" >
72
72
< div className = "flex w-full flex-col items-start space-y-1" >
73
- < div className = "flex w-full items-start justify-between" >
74
- < PageHeader >
75
- < PageHeaderHeading > { workshop . title } </ PageHeaderHeading >
76
- </ PageHeader >
77
-
78
- < div className = "flex items-center gap-1" >
79
- < CopyButton
80
- value = { workshop . accessCode }
81
- size = "icon"
82
- className = "rounded-full "
83
- />
84
- { isCurrentUserWorkshop && < WorkshopSettings workshop = { workshop } /> }
73
+ < div className = "flex w-full items-center justify-between" >
74
+ < div className = "flex items-center gap-2" >
75
+ < PageHeader >
76
+ < PageHeaderHeading > { workshop . title } </ PageHeaderHeading >
77
+ </ PageHeader >
78
+ < Badge >
79
+ { workshop . hasCompleted
80
+ ? "Ended"
81
+ : workshop . hasStarted
82
+ ? "Ongoing "
83
+ : "Open" }
84
+ </ Badge >
85
85
</ div >
86
+
87
+ { isUserOrganizer && < WorkshopSettings workshop = { workshop } /> }
86
88
</ div >
87
89
88
90
< div className = "flex items-center gap-2" >
@@ -123,17 +125,24 @@ export default async function WorkshopPage({ params }: WorkshopPageProps) {
123
125
< OrganizerSection organizerId = { workshop . organizerId } />
124
126
</ React . Suspense >
125
127
126
- < div className = "flex w-full justify-end" >
127
- { ! isCurrentUserWorkshop ? (
128
- < RegisterButton
129
- userId = { user . id }
130
- workshopId = { workshop . id }
131
- isCurrentUserRegistered = { isCurrentUserRegistered }
132
- workshopTitle = { workshop . title }
133
- />
134
- ) : (
135
- < StartWorkshopButton workshopId = { workshop . id } />
136
- ) }
128
+ < div className = "flex w-full justify-end space-x-4" >
129
+ < CopyButton
130
+ variant = "secondary"
131
+ className = "gap-2 text-secondary-foreground"
132
+ value = { workshop . accessCode }
133
+ >
134
+ Copy code
135
+ </ CopyButton >
136
+
137
+ < WorkshopButton
138
+ userId = { user . id }
139
+ workshopId = { workshop . id }
140
+ isUserOrganizer = { isUserOrganizer }
141
+ isUserRegistered = { isUserRegistered }
142
+ workshopTitle = { workshop . title }
143
+ hasWorkshopStarted = { workshop . hasStarted }
144
+ hasWorkshopCompleted = { workshop . hasCompleted }
145
+ />
137
146
</ div >
138
147
</ div >
139
148
</ Shell >
0 commit comments