@openeventkit/event-site 2.0.143 → 2.0.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +6 -6
- package/src/actions/fetch-entities-actions.js +17 -2
- package/src/actions/update-data-actions.js +17 -1
- package/src/actions/user-actions.js +17 -5
- package/src/components/AttendeeToAttendeeWidgetComponent.js +14 -8
- package/src/components/AuthComponent.js +5 -2
- package/src/components/ClockComponent.js +7 -10
- package/src/components/DisqusComponent.js +69 -94
- package/src/components/FullSchedule.js +1 -1
- package/src/components/Interstitial/index.js +61 -0
- package/src/components/LiteScheduleComponent.js +2 -2
- package/src/components/LiveEventWidgetComponent.js +2 -3
- package/src/components/PrePostEventSlide/index.js +66 -0
- package/src/components/UpcomingEventsComponent.js +2 -2
- package/src/components/VimeoPlayer.js +2 -0
- package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/TicketPopupEditDetailsForm.js +173 -175
- package/src/pages/maintenance.js +2 -4
- package/src/reducers/event-reducer.js +14 -1
- package/src/routes/ShowOpenRoute.js +5 -5
- package/src/routes/WithAuthzRoute.js +5 -5
- package/src/routes/WithBadgeRoute.js +5 -5
- package/src/routes/WithTicketRoute.js +3 -3
- package/src/routes/authorization-callback-route.js +4 -4
- package/src/styles/colors.scss +6 -6
- package/src/styles/fonts.scss +16 -11
- package/src/styles/style.scss +4 -18
- package/src/templates/event-page.js +26 -29
- package/src/templates/extra-questions-page.js +4 -3
- package/src/templates/full-profile-page.js +1 -1
- package/src/templates/lobby-page.js +1 -1
- package/src/templates/marketing-page-template/MainColumn.js +1 -1
- package/src/templates/poster-detail-page.js +5 -5
- package/src/templates/sponsor-page.js +3 -3
- package/src/templates/ticket-error-page.js +4 -4
- package/src/templates/token-expire-page.js +8 -13
- package/src/utils/withScheduleData.js +4 -4
- package/src/workers/sync_strategies/speaker_synch_strategy.js +7 -7
- package/src/components/EventHeroComponent.js +0 -34
- package/src/components/HeroComponent.js +0 -23
- package/src/components/NoTalkComponent.js +0 -33
- package/src/styles/event-hero.module.scss +0 -92
|
@@ -5,7 +5,7 @@ import { connect } from "react-redux";
|
|
|
5
5
|
// these two libraries are client-side only
|
|
6
6
|
import UpcomingEvents from "upcoming-events-widget/dist";
|
|
7
7
|
import "upcoming-events-widget/dist/index.css";
|
|
8
|
-
// awesome-bootstrap-checkbox css dependency
|
|
8
|
+
// awesome-bootstrap-checkbox css dependency
|
|
9
9
|
// https://cdnjs.cloudflare.com/ajax/libs/awesome-bootstrap-checkbox/1.0.2/awesome-bootstrap-checkbox.min.css
|
|
10
10
|
// injected through HeadComponents
|
|
11
11
|
|
|
@@ -27,7 +27,7 @@ const UpcomingEventsComponent = ({
|
|
|
27
27
|
}) => {
|
|
28
28
|
const wrapperClass = page === "marketing-site" ? "schedule-container-marketing" : "schedule-container";
|
|
29
29
|
const { getSettingByKey } = useMarketingSettings();
|
|
30
|
-
const defaultImage = getSettingByKey(MARKETING_SETTINGS_KEYS.
|
|
30
|
+
const defaultImage = getSettingByKey(MARKETING_SETTINGS_KEYS.scheduleDefaultImage);
|
|
31
31
|
const scheduleState = schedules?.find( s => s.key === 'schedule-main');
|
|
32
32
|
|
|
33
33
|
const componentProps = {
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PropTypes from 'prop-types';
|
|
3
3
|
import Player from '@vimeo/player';
|
|
4
|
+
import * as Sentry from "@sentry/react";
|
|
4
5
|
import eventNames from './VimeoPlayerEventNames';
|
|
5
6
|
import Swal from 'sweetalert2';
|
|
6
7
|
|
|
@@ -387,6 +388,7 @@ VimeoPlayer.defaultProps = {
|
|
|
387
388
|
onError: (error) => {
|
|
388
389
|
Swal.fire('Error', 'This video stream will begin momentarily. Please standby.', "warning");
|
|
389
390
|
console.log(error);
|
|
391
|
+
Sentry.captureException(error)
|
|
390
392
|
}
|
|
391
393
|
};
|
|
392
394
|
|
|
@@ -28,13 +28,13 @@ import { DelegatePopup } from '../../DelegatePopup/DelegatePopup';
|
|
|
28
28
|
const noop = () => {};
|
|
29
29
|
|
|
30
30
|
export const TicketPopupEditDetailsForm = ({
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}) => {
|
|
31
|
+
ticket,
|
|
32
|
+
summit,
|
|
33
|
+
order,
|
|
34
|
+
canEditTicketData,
|
|
35
|
+
goToReassignPanel,
|
|
36
|
+
context
|
|
37
|
+
}) => {
|
|
38
38
|
const formRef = useRef(null);
|
|
39
39
|
const { t } = useTranslation();
|
|
40
40
|
const dispatch = useDispatch();
|
|
@@ -53,7 +53,7 @@ export const TicketPopupEditDetailsForm = ({
|
|
|
53
53
|
daysUntilReassignDeadline,
|
|
54
54
|
isUnassigned,
|
|
55
55
|
allowsDelegate
|
|
56
|
-
} = useTicketDetails({ ticket, summit });
|
|
56
|
+
} = useTicketDetails({ ticket, summit });
|
|
57
57
|
|
|
58
58
|
const { onTicketAssignChange } = useTicketAssignedContext();
|
|
59
59
|
|
|
@@ -73,9 +73,9 @@ export const TicketPopupEditDetailsForm = ({
|
|
|
73
73
|
} = ticket.owner || {};
|
|
74
74
|
|
|
75
75
|
const formattedExtraQuestions = extra_questions ?
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
extra_questions.map(({ question_id, value }) => (
|
|
77
|
+
{ question_id, value }
|
|
78
|
+
)) : [];
|
|
79
79
|
|
|
80
80
|
return {
|
|
81
81
|
[TicketKeys.email]: email,
|
|
@@ -129,22 +129,22 @@ export const TicketPopupEditDetailsForm = ({
|
|
|
129
129
|
|
|
130
130
|
if(isDelegating) {
|
|
131
131
|
dispatch(delegateTicket(params))
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
132
|
+
.then(() => toggleSaveMessage())
|
|
133
|
+
.catch((error) => console.error(error))
|
|
134
|
+
.then(() => {
|
|
135
|
+
formikHelpers.resetForm({ values });
|
|
136
|
+
formikHelpers.setSubmitting(false);
|
|
137
|
+
setIsDelegating(false);
|
|
138
|
+
});
|
|
139
139
|
} else {
|
|
140
140
|
dispatch(editOwnedTicket(params))
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
141
|
+
.then(() => toggleSaveMessage())
|
|
142
|
+
.catch((error) => console.error(error))
|
|
143
|
+
.then(() => {
|
|
144
|
+
// Note: Need to do this to persist the extra question values
|
|
145
|
+
formikHelpers.resetForm({ values });
|
|
146
|
+
formikHelpers.setSubmitting(false);
|
|
147
|
+
});
|
|
148
148
|
}
|
|
149
149
|
|
|
150
150
|
};
|
|
@@ -163,16 +163,16 @@ export const TicketPopupEditDetailsForm = ({
|
|
|
163
163
|
|
|
164
164
|
const handleDelegateAccept = () => {
|
|
165
165
|
setShowDelegate(false);
|
|
166
|
-
setIsDelegating(true);
|
|
166
|
+
setIsDelegating(true);
|
|
167
167
|
formik.resetForm({
|
|
168
168
|
values: {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
169
|
+
...formik.values,
|
|
170
|
+
[TicketKeys.firstName]: "",
|
|
171
|
+
[TicketKeys.lastName]: "",
|
|
172
|
+
[TicketKeys.disclaimerAccepted]: false,
|
|
173
|
+
[TicketKeys.extraQuestions]: []
|
|
174
174
|
}
|
|
175
|
-
|
|
175
|
+
});
|
|
176
176
|
};
|
|
177
177
|
|
|
178
178
|
const handleDelegateReject = () => {
|
|
@@ -255,46 +255,46 @@ export const TicketPopupEditDetailsForm = ({
|
|
|
255
255
|
}
|
|
256
256
|
|
|
257
257
|
return (
|
|
258
|
-
|
|
259
|
-
|
|
258
|
+
<div className="ticket-popup-edit-details-form">
|
|
259
|
+
{showSaveMessage &&
|
|
260
260
|
<CSSTransition
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
261
|
+
unmountOnExit
|
|
262
|
+
in={showSaveMessage}
|
|
263
|
+
timeout={2000}
|
|
264
|
+
classNames="fade-in-out"
|
|
265
265
|
>
|
|
266
266
|
<Alert bsStyle="success" className="ticket-popup-form-alert text-center">
|
|
267
267
|
{t("tickets.save_message")}
|
|
268
268
|
</Alert>
|
|
269
269
|
</CSSTransition>
|
|
270
|
-
|
|
270
|
+
}
|
|
271
271
|
|
|
272
|
-
|
|
272
|
+
{showUnassignMessage &&
|
|
273
273
|
<CSSTransition
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
274
|
+
unmountOnExit
|
|
275
|
+
in={showUnassignMessage}
|
|
276
|
+
timeout={2000}
|
|
277
|
+
classNames="fade-in-out"
|
|
278
278
|
>
|
|
279
279
|
<Alert bsStyle="success" className="ticket-popup-form-alert text-center">
|
|
280
280
|
{t("tickets.unassign_success_message")}
|
|
281
281
|
</Alert>
|
|
282
282
|
</CSSTransition>
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
<div className="ticket-popup-form-body columns is-multiline">
|
|
286
|
+
|
|
287
|
+
<div className="attendee-info column is-full">
|
|
288
|
+
<h4 className="pb-3">{t("ticket_popup.edit_basic_info")}</h4>
|
|
289
|
+
<label htmlFor={TicketKeys.email}>Email</label>
|
|
290
|
+
<Input
|
|
291
|
+
id={TicketKeys.email}
|
|
292
|
+
name={TicketKeys.email}
|
|
293
|
+
className="form-control"
|
|
294
|
+
value={initialValues[TicketKeys.email]}
|
|
295
|
+
disabled={true}
|
|
296
|
+
/>
|
|
297
|
+
{isUserTicketOwner && isReassignable &&
|
|
298
298
|
<div className="mt-1">
|
|
299
299
|
<span onClick={() => goToReassignPanel()}>
|
|
300
300
|
<u>Reassign</u>
|
|
@@ -304,124 +304,122 @@ export const TicketPopupEditDetailsForm = ({
|
|
|
304
304
|
<u>Unassign</u>
|
|
305
305
|
</span>
|
|
306
306
|
</div>
|
|
307
|
-
|
|
308
|
-
|
|
307
|
+
}
|
|
308
|
+
</div>
|
|
309
|
+
|
|
310
|
+
<div className="attendee-info column is-full">
|
|
311
|
+
<label htmlFor={TicketKeys.firstName}>
|
|
312
|
+
{t("ticket_popup.edit_first_name")}
|
|
313
|
+
{!initialValues[TicketKeys.firstName] && <b> *</b>}
|
|
314
|
+
</label>
|
|
315
|
+
<Input
|
|
316
|
+
id={TicketKeys.firstName}
|
|
317
|
+
name={TicketKeys.firstName}
|
|
318
|
+
className="form-control"
|
|
319
|
+
placeholder={t("ticket_popup.edit_first_name_placeholder")}
|
|
320
|
+
value={formik.values[TicketKeys.firstName]}
|
|
321
|
+
onBlur={formik.handleBlur}
|
|
322
|
+
onChange={!!initialValues[TicketKeys.firstName] && !isDelegating ? noop : formik.handleChange}
|
|
323
|
+
disabled={!!initialValues[TicketKeys.firstName] && !isDelegating}
|
|
324
|
+
/>
|
|
325
|
+
{(formik.touched[TicketKeys.firstName] || triedSubmitting) && formik.errors[TicketKeys.firstName] &&
|
|
326
|
+
<p className="error-label">{t("ticket_popup.edit_required")}</p>
|
|
327
|
+
}
|
|
328
|
+
</div>
|
|
329
|
+
|
|
330
|
+
<div className="attendee-info column is-full">
|
|
331
|
+
<label htmlFor={TicketKeys.lastName}>
|
|
332
|
+
{t("ticket_popup.edit_last_name")}
|
|
333
|
+
{!initialValues[TicketKeys.lastName] && <b> *</b>}
|
|
334
|
+
</label>
|
|
335
|
+
<Input
|
|
336
|
+
id={TicketKeys.lastName}
|
|
337
|
+
name={TicketKeys.lastName}
|
|
338
|
+
className="form-control"
|
|
339
|
+
placeholder={t("ticket_popup.edit_last_name_placeholder")}
|
|
340
|
+
value={formik.values[TicketKeys.lastName]}
|
|
341
|
+
onBlur={formik.handleBlur}
|
|
342
|
+
onChange={!!initialValues[TicketKeys.lastName] && !isDelegating ? noop : formik.handleChange}
|
|
343
|
+
disabled={!!initialValues[TicketKeys.lastName] && !isDelegating}
|
|
344
|
+
/>
|
|
345
|
+
{(formik.touched[TicketKeys.lastName] || triedSubmitting) && formik.errors[TicketKeys.lastName] &&
|
|
346
|
+
<p className="error-label">{t("ticket_popup.edit_required")}</p>
|
|
347
|
+
}
|
|
348
|
+
</div>
|
|
309
349
|
|
|
350
|
+
{allowsDelegate &&
|
|
310
351
|
<div className="attendee-info column is-full">
|
|
311
|
-
<
|
|
312
|
-
{t("ticket_popup.edit_first_name")}
|
|
313
|
-
{!initialValues[TicketKeys.firstName] && <b> *</b>}
|
|
314
|
-
</label>
|
|
315
|
-
<Input
|
|
316
|
-
id={TicketKeys.firstName}
|
|
317
|
-
name={TicketKeys.firstName}
|
|
318
|
-
className="form-control"
|
|
319
|
-
placeholder={t("ticket_popup.edit_first_name_placeholder")}
|
|
320
|
-
value={formik.values[TicketKeys.firstName]}
|
|
321
|
-
onBlur={formik.handleBlur}
|
|
322
|
-
onChange={!!initialValues[TicketKeys.firstName] && !isDelegating ? noop : formik.handleChange}
|
|
323
|
-
disabled={!!initialValues[TicketKeys.firstName] && !isDelegating}
|
|
324
|
-
/>
|
|
325
|
-
{(formik.touched[TicketKeys.firstName] || triedSubmitting) && formik.errors[TicketKeys.firstName] &&
|
|
326
|
-
<p className="error-label">{t("ticket_popup.edit_required")}</p>
|
|
327
|
-
}
|
|
352
|
+
<button className="button-text" type='button' onClick={() => setShowDelegate(true)}>Delegate</button>
|
|
328
353
|
</div>
|
|
354
|
+
}
|
|
329
355
|
|
|
356
|
+
{showCompanyInput &&
|
|
330
357
|
<div className="attendee-info column is-full">
|
|
331
|
-
<label htmlFor={TicketKeys.
|
|
332
|
-
{t("ticket_popup.
|
|
333
|
-
{!initialValues[TicketKeys.
|
|
358
|
+
<label htmlFor={TicketKeys.company}>
|
|
359
|
+
{t("ticket_popup.edit_company")}
|
|
360
|
+
{!initialValues[TicketKeys.company].name && <b> *</b>}
|
|
334
361
|
</label>
|
|
335
|
-
<
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
362
|
+
<RegistrationCompanyInput
|
|
363
|
+
id={TicketKeys.company}
|
|
364
|
+
name={TicketKeys.company}
|
|
365
|
+
summitId={summit.id}
|
|
366
|
+
placeholder={t("ticket_popup.edit_company_placeholder")}
|
|
367
|
+
value={formik.values[TicketKeys.company]}
|
|
368
|
+
onBlur={formik.handleBlur}
|
|
369
|
+
onChange={!!initialValues[TicketKeys.company].name ? noop : formik.handleChange}
|
|
370
|
+
disabled={!!initialValues[TicketKeys.company].name}
|
|
371
|
+
defaultOptions={showCompanyInputDefaultOptions}
|
|
372
|
+
openMenuOnFocus={showCompanyInputDefaultOptions}
|
|
373
|
+
openMenuOnClick={showCompanyInputDefaultOptions}
|
|
374
|
+
styles={{
|
|
375
|
+
menu: (base) => ({ ...base, zIndex: 9999 }),
|
|
376
|
+
}}
|
|
377
|
+
tabSelectsValue={false}
|
|
344
378
|
/>
|
|
345
|
-
{(formik.touched[TicketKeys.
|
|
346
|
-
|
|
379
|
+
{(formik.touched[TicketKeys.company] || triedSubmitting) && formik.errors[TicketKeys.company] &&
|
|
380
|
+
<p className="error-label">{t("ticket_popup.edit_required")}</p>
|
|
347
381
|
}
|
|
348
382
|
</div>
|
|
383
|
+
}
|
|
349
384
|
|
|
350
|
-
|
|
351
|
-
<div className="attendee-info column is-full">
|
|
352
|
-
<button className="button-text" type='button' onClick={() => setShowDelegate(true)}>Delegate</button>
|
|
353
|
-
</div>
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
{showCompanyInput &&
|
|
357
|
-
<div className="attendee-info column is-full">
|
|
358
|
-
<label htmlFor={TicketKeys.company}>
|
|
359
|
-
{t("ticket_popup.edit_company")}
|
|
360
|
-
{!initialValues[TicketKeys.company].name && <b> *</b>}
|
|
361
|
-
</label>
|
|
362
|
-
<RegistrationCompanyInput
|
|
363
|
-
id={TicketKeys.company}
|
|
364
|
-
name={TicketKeys.company}
|
|
365
|
-
summitId={summit.id}
|
|
366
|
-
placeholder={t("ticket_popup.edit_company_placeholder")}
|
|
367
|
-
value={formik.values[TicketKeys.company]}
|
|
368
|
-
onBlur={formik.handleBlur}
|
|
369
|
-
onChange={!!initialValues[TicketKeys.company].name ? noop : formik.handleChange}
|
|
370
|
-
disabled={!!initialValues[TicketKeys.company].name}
|
|
371
|
-
defaultOptions={showCompanyInputDefaultOptions}
|
|
372
|
-
openMenuOnFocus={showCompanyInputDefaultOptions}
|
|
373
|
-
openMenuOnClick={showCompanyInputDefaultOptions}
|
|
374
|
-
menuPortalTarget={document.body}
|
|
375
|
-
menuPosition="fixed"
|
|
376
|
-
styles={{
|
|
377
|
-
menuPortal: (base) => ({ ...base, zIndex: 9999 }),
|
|
378
|
-
}}
|
|
379
|
-
tabSelectsValue={false}
|
|
380
|
-
/>
|
|
381
|
-
{(formik.touched[TicketKeys.company] || triedSubmitting) && formik.errors[TicketKeys.company] &&
|
|
382
|
-
<p className="error-label">{t("ticket_popup.edit_required")}</p>
|
|
383
|
-
}
|
|
384
|
-
</div>
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
{(initialValues[TicketKeys.firstName] || initialValues[TicketKeys.lastName] || initialValues[TicketKeys.company].name) &&
|
|
385
|
+
{(initialValues[TicketKeys.firstName] || initialValues[TicketKeys.lastName] || initialValues[TicketKeys.company].name) &&
|
|
388
386
|
<div className="column is-full pb-5">
|
|
389
387
|
{t("ticket_popup.assign_note")}
|
|
390
388
|
</div>
|
|
391
|
-
|
|
389
|
+
}
|
|
392
390
|
|
|
393
|
-
|
|
391
|
+
{hasExtraQuestions &&
|
|
394
392
|
<div className="column is-full pt-5">
|
|
395
393
|
<h4 className="pb-2">{t("ticket_popup.edit_preferences")}</h4>
|
|
396
394
|
<ExtraQuestionsForm
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
395
|
+
// This key is added to trigger a new render when the extra questions are resetted on delegation
|
|
396
|
+
key={formik.values[TicketKeys.extraQuestions].length}
|
|
397
|
+
ref={formRef}
|
|
398
|
+
extraQuestions={extraQuestions}
|
|
399
|
+
userAnswers={formik.values[TicketKeys.extraQuestions]}
|
|
400
|
+
onAnswerChanges={onExtraQuestionsAnswersSet}
|
|
401
|
+
allowExtraQuestionsEdit={canEditTicketData || isDelegating}
|
|
402
|
+
questionContainerClassName={`columns is-multiline extra-question pt-3`}
|
|
403
|
+
questionLabelContainerClassName={'column is-full pb-0'}
|
|
404
|
+
questionControlContainerClassName={`column is-full pt-0`}
|
|
405
|
+
shouldScroll2FirstError={false}
|
|
406
|
+
onError={handleExtraQuestionError}
|
|
409
407
|
/>
|
|
410
408
|
</div>
|
|
411
|
-
|
|
409
|
+
}
|
|
412
410
|
|
|
413
|
-
|
|
411
|
+
{summit.registration_disclaimer_content &&
|
|
414
412
|
<div className="column is-full attendee-info abc-checkbox disclaimer mt-3">
|
|
415
413
|
<div className='input-wrapper'>
|
|
416
414
|
<input
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
415
|
+
type="checkbox"
|
|
416
|
+
id={TicketKeys.disclaimerAccepted}
|
|
417
|
+
name={TicketKeys.disclaimerAccepted}
|
|
418
|
+
onBlur={formik.handleBlur}
|
|
419
|
+
onChange={(e) =>
|
|
420
|
+
formik.setFieldTouched(TicketKeys.disclaimerAccepted, true) && formik.handleChange(e)
|
|
421
|
+
}
|
|
422
|
+
checked={formik.values[TicketKeys.disclaimerAccepted]}
|
|
425
423
|
/>
|
|
426
424
|
<label htmlFor={TicketKeys.disclaimerAccepted}>
|
|
427
425
|
{summit.registration_disclaimer_mandatory && <b> *</b>}
|
|
@@ -433,36 +431,36 @@ export const TicketPopupEditDetailsForm = ({
|
|
|
433
431
|
</RawHTML>
|
|
434
432
|
</div>
|
|
435
433
|
{(formik.touched[TicketKeys.disclaimerAccepted] || triedSubmitting) && formik.errors[TicketKeys.disclaimerAccepted] &&
|
|
436
|
-
|
|
434
|
+
<p className="error-label">{t("ticket_popup.edit_required")}</p>
|
|
437
435
|
}
|
|
438
436
|
</div>
|
|
439
|
-
|
|
440
|
-
|
|
437
|
+
}
|
|
438
|
+
</div>
|
|
441
439
|
|
|
442
|
-
|
|
440
|
+
{canSubmitChanges() &&
|
|
443
441
|
<div className="ticket-popup-footer">
|
|
444
442
|
<button
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
443
|
+
type="button"
|
|
444
|
+
className="btn btn-primary"
|
|
445
|
+
disabled={formik.isSubmitting}
|
|
446
|
+
onClick={triggerSubmit}
|
|
449
447
|
>
|
|
450
448
|
{!formik.isSubmitting && <>{t("ticket_popup.save_changes")}</>}
|
|
451
449
|
{formik.isSubmitting && <>{t("ticket_popup.saving_changes")}...</>}
|
|
452
450
|
</button>
|
|
453
451
|
</div>
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
452
|
+
}
|
|
453
|
+
<ConfirmPopup
|
|
454
|
+
isOpen={showConfirm}
|
|
455
|
+
popupCase={CONFIRM_POPUP_CASE.UNASSIGN_TICKET}
|
|
456
|
+
onAccept={handleConfirmAccept}
|
|
457
|
+
onReject={handleConfirmReject}
|
|
458
|
+
/>
|
|
459
|
+
<DelegatePopup
|
|
460
|
+
isOpen={showDelegate}
|
|
461
|
+
onAccept={handleDelegateAccept}
|
|
462
|
+
onReject={handleDelegateReject}
|
|
463
|
+
/>
|
|
464
|
+
</div>
|
|
467
465
|
);
|
|
468
466
|
};
|
package/src/pages/maintenance.js
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import React from "react";
|
|
2
|
-
import
|
|
2
|
+
import Interstitial from "../components/Interstitial";
|
|
3
3
|
import useSiteSettings from "@utils/useSiteSettings";
|
|
4
4
|
|
|
5
|
-
import "../styles/bulma.scss";
|
|
6
|
-
|
|
7
5
|
const MaintenancePage = () => {
|
|
8
6
|
const { maintenanceMode: { title, subtitle } } = useSiteSettings();
|
|
9
7
|
|
|
10
8
|
return (
|
|
11
|
-
<
|
|
9
|
+
<Interstitial
|
|
12
10
|
title={title}
|
|
13
11
|
subtitle={subtitle}
|
|
14
12
|
/>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { START_LOADING, STOP_LOADING } from "openstack-uicore-foundation/lib/utils/actions";
|
|
2
2
|
import { LOGOUT_USER } from "openstack-uicore-foundation/lib/security/actions";
|
|
3
3
|
import {GET_EVENT_DATA, GET_EVENT_DATA_ERROR, RELOAD_EVENT_STATE, SET_EVENT_LAST_UPDATE, GET_EVENT_STREAMING_INFO} from "../actions/event-actions-definitions";
|
|
4
|
-
import {RESET_STATE} from "../actions/base-actions-definitions";
|
|
4
|
+
import {RESET_STATE, SYNC_DATA} from "../actions/base-actions-definitions";
|
|
5
5
|
|
|
6
6
|
const DEFAULT_STATE = {
|
|
7
7
|
loading: false,
|
|
@@ -14,6 +14,7 @@ const eventReducer = (state = DEFAULT_STATE, action) => {
|
|
|
14
14
|
const { type, payload } = action
|
|
15
15
|
|
|
16
16
|
switch (type) {
|
|
17
|
+
|
|
17
18
|
case RESET_STATE:
|
|
18
19
|
case LOGOUT_USER:
|
|
19
20
|
{
|
|
@@ -32,6 +33,18 @@ const eventReducer = (state = DEFAULT_STATE, action) => {
|
|
|
32
33
|
const updatedEvent = event.id === state?.event?.id ? {...state, ...event} : event;
|
|
33
34
|
return { ...state, loading: false, event: updatedEvent, tokens: null };
|
|
34
35
|
}
|
|
36
|
+
case SYNC_DATA:{
|
|
37
|
+
// update current event if we have one on data sync
|
|
38
|
+
const {eventsData, eventsIDXData } = payload;
|
|
39
|
+
if(state?.event){
|
|
40
|
+
const idx = eventsIDXData[state?.event?.id] || null;
|
|
41
|
+
if(idx) {
|
|
42
|
+
const updatedEvent = eventsData[idx];
|
|
43
|
+
return {...state, loading: false, event: updatedEvent, tokens: null};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return state;
|
|
47
|
+
}
|
|
35
48
|
case GET_EVENT_DATA_ERROR: {
|
|
36
49
|
return { ...state, loading: false, event: null, tokens: null }
|
|
37
50
|
}
|
|
@@ -3,7 +3,7 @@ import { connect } from "react-redux";
|
|
|
3
3
|
|
|
4
4
|
import { PHASES } from "../utils/phasesUtils";
|
|
5
5
|
import { requireExtraQuestions, doVirtualCheckIn } from "../actions/user-actions";
|
|
6
|
-
import
|
|
6
|
+
import Interstitial from "../components/Interstitial";
|
|
7
7
|
import FragmentParser from "openstack-uicore-foundation/lib/utils/fragment-parser";
|
|
8
8
|
import moment from "moment-timezone";
|
|
9
9
|
|
|
@@ -37,7 +37,7 @@ const ShowOpenRoute = ({
|
|
|
37
37
|
if(attendee)
|
|
38
38
|
doVirtualCheckIn(attendee);
|
|
39
39
|
}
|
|
40
|
-
},[summitPhase, hasTicket, userProfile, doVirtualCheckIn]);
|
|
40
|
+
}, [summitPhase, hasTicket, userProfile, doVirtualCheckIn]);
|
|
41
41
|
|
|
42
42
|
const userCanByPassAuthz = () => {
|
|
43
43
|
return isAuthorized;
|
|
@@ -61,14 +61,14 @@ const ShowOpenRoute = ({
|
|
|
61
61
|
|
|
62
62
|
// if summit didnt started yet ...
|
|
63
63
|
if (!shouldBypassCheck && !userCanByPassAuthz() && summitPhase === PHASES.BEFORE) {
|
|
64
|
-
return <
|
|
64
|
+
return <Interstitial title="You are now logged in. Additional event info is now available on the website." navigateTo="/" />;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
if (requireExtraQuestions()) {
|
|
68
68
|
return (
|
|
69
|
-
<
|
|
69
|
+
<Interstitial
|
|
70
70
|
title="You need to complete some extra questions before entering the event"
|
|
71
|
-
|
|
71
|
+
navigateTo="/a/extra-questions"
|
|
72
72
|
/>
|
|
73
73
|
);
|
|
74
74
|
}
|
|
@@ -3,7 +3,7 @@ import { connect } from "react-redux";
|
|
|
3
3
|
import { navigate } from "gatsby";
|
|
4
4
|
import { pick } from "@gatsbyjs/reach-router";
|
|
5
5
|
import { getUserProfile, requireExtraQuestions } from "../actions/user-actions";
|
|
6
|
-
import
|
|
6
|
+
import Interstitial from "../components/Interstitial";
|
|
7
7
|
import { userHasAccessLevel, VIRTUAL_ACCESS_LEVEL } from "@utils/authorizedGroups";
|
|
8
8
|
|
|
9
9
|
const pathsRequiringVirtualBadge = [
|
|
@@ -79,20 +79,20 @@ const WithAuthzRoute = ({
|
|
|
79
79
|
}, [fetchedUserProfile, isLoggedIn, hasTicket, isAuthorized, userProfile, getUserProfile, userIsAuthz]);
|
|
80
80
|
|
|
81
81
|
if (!isLoggedIn) {
|
|
82
|
-
navigate("/", {state: {backUrl: `${location.pathname}
|
|
82
|
+
navigate("/", { state: { backUrl: `${location.pathname}` } });
|
|
83
83
|
return null;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
// we are checking credentials if userProfile is being loading yet or
|
|
87
87
|
// if we are re-fetching the user profile to check new data ( user currently is not a authz
|
|
88
88
|
if (!userIsReady() || checkingCredentials()) {
|
|
89
|
-
return <
|
|
89
|
+
return <Interstitial title="Checking credentials..."/>;
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
// has no ticket -> redirect
|
|
93
93
|
if (!userIsAuthz) {
|
|
94
|
-
const options = { state: { error: !hasTicket ?
|
|
95
|
-
return <
|
|
94
|
+
const options = { state: { error: !hasTicket ? "no-ticket" : "no-virtual-access" } };
|
|
95
|
+
return <Interstitial title="Checking credentials..." navigateTo="/authz/ticket" navigateOptions={options} />;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
return children;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React, {useEffect} from "react";
|
|
2
2
|
import { connect } from "react-redux";
|
|
3
3
|
import { isAuthorizedBadge } from "../utils/authorizedGroups";
|
|
4
|
-
import
|
|
5
|
-
import {getEventById, getEventStreamingInfoById} from "../actions/event-actions";
|
|
4
|
+
import Interstitial from "../components/Interstitial";
|
|
5
|
+
import { getEventById, getEventStreamingInfoById } from "../actions/event-actions";
|
|
6
6
|
import { isMuxVideo } from "../utils/videoUtils";
|
|
7
7
|
import {navigate} from "gatsby";
|
|
8
8
|
|
|
@@ -26,7 +26,7 @@ const WithBadgeRoute = ({ children, location, eventId, event, loading, userProfi
|
|
|
26
26
|
getEventById(eventId).then((res) => {
|
|
27
27
|
const { err } = res;
|
|
28
28
|
// check error
|
|
29
|
-
if(err && err?.status === 404){
|
|
29
|
+
if (err && err?.status === 404){
|
|
30
30
|
navigate('/a/schedule');
|
|
31
31
|
}
|
|
32
32
|
getEventStreamingInfoById(eventId)
|
|
@@ -37,11 +37,11 @@ const WithBadgeRoute = ({ children, location, eventId, event, loading, userProfi
|
|
|
37
37
|
}, [eventId, getEventById, event, getEventStreamingInfoById]);
|
|
38
38
|
|
|
39
39
|
if (loading || needsToLoadEvent) {
|
|
40
|
-
return <
|
|
40
|
+
return <Interstitial title="Loading event" />;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
if (!userIsAuthz || !hasBadgeForEvent) {
|
|
44
|
-
return <
|
|
44
|
+
return <Interstitial title={getTitle()} navigateTo={location.state?.previousUrl || "/"} />;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
return children;
|