Skip to content

Commit edd918e

Browse files
nbudinclaude
andcommitted
Explain why the provide ticket modal is empty when nothing is providable
Previously ProvideTicketModal rendered nothing when no ticket type had a nonzero provided-ticket maximum for the event, so clicking the menu item appeared to do nothing. Show a message in the modal instead. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
1 parent b64f183 commit edd918e

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

‎app/javascript/EventsApp/TeamMemberAdmin/ProvideTicketModal.tsx‎

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ function ProvideTicketModal(): React.JSX.Element {
5656

5757
const { convention } = data;
5858

59-
if (getProvidableTicketTypes(data.convention).length < 1) {
60-
return <></>;
61-
}
62-
6359
const mutationInProgress = navigation.state === 'submitting';
6460
const onClose = () => {
6561
navigate(`/events/${eventId}/team_members`);
6662
};
6763

64+
const hasTicket = teamMember?.user_con_profile.ticket != null;
65+
const canProvideTickets = getProvidableTicketTypes(convention).length > 0;
66+
const showCloseOnly = hasTicket || !canProvideTickets;
67+
6868
return (
6969
<Modal visible>
7070
<fetcher.Form action="." method="POST">
@@ -78,21 +78,30 @@ function ProvideTicketModal(): React.JSX.Element {
7878
<TicketingStatusDescription userConProfile={teamMember.user_con_profile} convention={convention} />
7979
</p>
8080

81-
{teamMember && !teamMember.user_con_profile.ticket ? (
81+
{!hasTicket && canProvideTickets ? (
8282
<ProvidableTicketTypeSelection
8383
convention={convention}
8484
value={ticketTypeId}
8585
onChange={setTicketTypeId}
8686
disabled={mutationInProgress}
8787
/>
8888
) : null}
89+
90+
{!hasTicket && !canProvideTickets ? (
91+
<p>
92+
{t('events.teamMemberAdmin.noProvidableTickets', {
93+
eventTitle: convention.event.title,
94+
ticketNamePlural: convention.ticketNamePlural,
95+
})}
96+
</p>
97+
) : null}
8998
</>
9099
) : null}
91100

92101
<ErrorDisplay graphQLError={error} />
93102
</div>
94103
<div className="modal-footer">
95-
{teamMember && teamMember.user_con_profile.ticket ? (
104+
{showCloseOnly ? (
96105
<button type="button" className="btn btn-primary" onClick={onClose}>
97106
{t('buttons.ok')}
98107
</button>

‎locales/en.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,7 @@
995995
"nameHeader": "Name",
996996
"newHeader": "Add {{ teamMemberName }}",
997997
"newPageTitle": "Add {{ teamMemberName }} - {{ eventTitle }}",
998+
"noProvidableTickets": "{{ eventTitle }} is not able to provide any {{ ticketNamePlural }}.",
998999
"nonEventProvidedTicketDescription": "{{ name }} has a {{ ticketType }} {{ ticketName }}.",
9991000
"provideTicketButton": "Provide {{ ticketName }}",
10001001
"provideTicketChoice_one": "Provide {{ ticketType }} {{ ticketName }} ({{ count }} remaining)",

0 commit comments

Comments
 (0)