@openeventkit/event-site 2.1.49 → 2.1.50

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.
Files changed (114) hide show
  1. package/package.json +2 -2
  2. package/src/actions/user-actions.js +9 -10
  3. package/src/components/RegistrationLiteComponent.js +1 -1
  4. package/src/components/VimeoPlayer.js +2 -2
  5. package/src/content/site-settings/index.json +1 -1
  6. package/src/content/sponsors.json +1 -1
  7. package/src/styles/colors.scss +11 -11
  8. package/src/templates/extra-questions-page.js +1 -1
  9. package/src/templates/full-profile-page.js +2 -3
  10. package/src/utils/alerts.js +34 -27
  11. package/src/utils/customErrorHandler.js +4 -4
  12. package/src/utils/ticketConstants.js +10 -0
  13. package/.playwright-mcp/console-2026-02-26T16-44-19-373Z.log +0 -4
  14. package/.playwright-mcp/console-2026-02-26T16-47-01-636Z.log +0 -2
  15. package/.playwright-mcp/console-2026-02-26T16-49-02-149Z.log +0 -4
  16. package/.playwright-mcp/console-2026-02-26T16-49-40-507Z.log +0 -2
  17. package/.playwright-mcp/console-2026-02-26T16-50-19-509Z.log +0 -2
  18. package/.playwright-mcp/console-2026-02-26T16-57-54-251Z.log +0 -3
  19. package/.playwright-mcp/console-2026-02-26T19-57-40-442Z.log +0 -1
  20. package/.playwright-mcp/console-2026-02-26T19-57-58-088Z.log +0 -2
  21. package/.playwright-mcp/console-2026-02-26T20-05-42-541Z.log +0 -2
  22. package/.playwright-mcp/console-2026-02-26T20-06-33-506Z.log +0 -9
  23. package/.playwright-mcp/console-2026-02-26T20-42-10-293Z.log +0 -34
  24. package/.playwright-mcp/console-2026-02-26T20-42-57-262Z.log +0 -65
  25. package/.playwright-mcp/console-2026-02-26T21-01-25-696Z.log +0 -33
  26. package/.playwright-mcp/console-2026-02-26T21-03-18-294Z.log +0 -47
  27. package/.playwright-mcp/console-2026-02-27T00-27-06-325Z.log +0 -131
  28. package/.playwright-mcp/console-2026-02-27T00-49-26-441Z.log +0 -104
  29. package/.playwright-mcp/page-2026-02-26T16-51-33-776Z.png +0 -0
  30. package/src/components/summit-my-orders-tickets/components/ConfirmPopup/ConfirmPopup.js +0 -96
  31. package/src/components/summit-my-orders-tickets/components/ConfirmPopup/confirm-popup.scss +0 -57
  32. package/src/components/summit-my-orders-tickets/components/DelegatePopup/DelegatePopup.js +0 -50
  33. package/src/components/summit-my-orders-tickets/components/DelegatePopup/delegate-popup.scss +0 -57
  34. package/src/components/summit-my-orders-tickets/components/MyOrdersTickets.js +0 -79
  35. package/src/components/summit-my-orders-tickets/components/OrderDetails/OrderDetails.js +0 -112
  36. package/src/components/summit-my-orders-tickets/components/OrderDetails/order-details.scss +0 -128
  37. package/src/components/summit-my-orders-tickets/components/OrderList/OrderList.js +0 -80
  38. package/src/components/summit-my-orders-tickets/components/OrderList/OrderListItem.js +0 -85
  39. package/src/components/summit-my-orders-tickets/components/OrderList/order-list.scss +0 -60
  40. package/src/components/summit-my-orders-tickets/components/OrderOptions/OrderOptions.js +0 -83
  41. package/src/components/summit-my-orders-tickets/components/OrderOptions/order-options.scss +0 -50
  42. package/src/components/summit-my-orders-tickets/components/OrderSummary/OrderSummary.js +0 -64
  43. package/src/components/summit-my-orders-tickets/components/OrderSummary/OrderSummaryTable.js +0 -97
  44. package/src/components/summit-my-orders-tickets/components/OrderSummary/order-summary.scss +0 -178
  45. package/src/components/summit-my-orders-tickets/components/OrderTicketDetails/OrderTicketDetails.js +0 -102
  46. package/src/components/summit-my-orders-tickets/components/OrderTicketDetails/order-ticket-details.scss +0 -129
  47. package/src/components/summit-my-orders-tickets/components/OrderTicketList/OrderTicketList.js +0 -19
  48. package/src/components/summit-my-orders-tickets/components/OrderTicketList/OrderTicketListItem.js +0 -13
  49. package/src/components/summit-my-orders-tickets/components/OrderTicketList/order-ticket-list.scss +0 -21
  50. package/src/components/summit-my-orders-tickets/components/TicketDetails/TicketDetails.js +0 -93
  51. package/src/components/summit-my-orders-tickets/components/TicketDetails/ticket-details.scss +0 -129
  52. package/src/components/summit-my-orders-tickets/components/TicketList/TicketList.js +0 -65
  53. package/src/components/summit-my-orders-tickets/components/TicketList/TicketListItem.js +0 -16
  54. package/src/components/summit-my-orders-tickets/components/TicketList/ticket-list.scss +0 -21
  55. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopup.js +0 -186
  56. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupAssignForm.js +0 -136
  57. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/TicketPopupEditDetailsForm.js +0 -468
  58. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupEditDetailsForm/ticket-popup-edit-details-form.scss +0 -71
  59. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupNotifyForm.js +0 -64
  60. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupReassignForm.js +0 -193
  61. package/src/components/summit-my-orders-tickets/components/TicketPopup/TicketPopupRefundForm.js +0 -64
  62. package/src/components/summit-my-orders-tickets/components/TicketPopup/ticket-popup.scss +0 -416
  63. package/src/components/summit-my-orders-tickets/context/TicketAssignedContext.js +0 -24
  64. package/src/components/summit-my-orders-tickets/global/constants.js +0 -10
  65. package/src/components/summit-my-orders-tickets/i18n/index.js +0 -37
  66. package/src/components/summit-my-orders-tickets/i18n/locales/en.json +0 -296
  67. package/src/components/summit-my-orders-tickets/i18n/locales/es.json +0 -296
  68. package/src/components/summit-my-orders-tickets/index.js +0 -1
  69. package/src/components/summit-my-orders-tickets/store/actions/base-actions.js +0 -7
  70. package/src/components/summit-my-orders-tickets/store/actions/order-actions.js +0 -96
  71. package/src/components/summit-my-orders-tickets/store/actions/summit-actions.js +0 -64
  72. package/src/components/summit-my-orders-tickets/store/actions/ticket-actions.js +0 -666
  73. package/src/components/summit-my-orders-tickets/store/actions/timer-actions.js +0 -29
  74. package/src/components/summit-my-orders-tickets/store/actions/user-actions.js +0 -42
  75. package/src/components/summit-my-orders-tickets/store/history.js +0 -16
  76. package/src/components/summit-my-orders-tickets/store/index.js +0 -117
  77. package/src/components/summit-my-orders-tickets/store/reducers/base-reducer.js +0 -67
  78. package/src/components/summit-my-orders-tickets/store/reducers/clock-reducer.js +0 -31
  79. package/src/components/summit-my-orders-tickets/store/reducers/order-reducer.js +0 -95
  80. package/src/components/summit-my-orders-tickets/store/reducers/summit-reducer.js +0 -52
  81. package/src/components/summit-my-orders-tickets/store/reducers/ticket-reducer.js +0 -92
  82. package/src/components/summit-my-orders-tickets/store/reducers/user-reducer.js +0 -35
  83. package/src/components/summit-my-orders-tickets/styles/_variables.scss +0 -17
  84. package/src/components/summit-my-orders-tickets/styles/general.scss +0 -17
  85. package/src/components/summit-my-orders-tickets/summit-my-orders-tickets.js +0 -86
  86. package/src/components/summit-my-orders-tickets/util/helpers/capitalizeFirstLetter.js +0 -1
  87. package/src/components/summit-my-orders-tickets/util/helpers/createReducer.js +0 -11
  88. package/src/components/summit-my-orders-tickets/util/helpers/formatCurrency.js +0 -15
  89. package/src/components/summit-my-orders-tickets/util/helpers/getDayNumberFromDate.js +0 -9
  90. package/src/components/summit-my-orders-tickets/util/helpers/getDaysBetweenDates.js +0 -16
  91. package/src/components/summit-my-orders-tickets/util/helpers/getDocumentOffset.js +0 -8
  92. package/src/components/summit-my-orders-tickets/util/helpers/getFormattedDate.js +0 -7
  93. package/src/components/summit-my-orders-tickets/util/helpers/getFormattedTime.js +0 -9
  94. package/src/components/summit-my-orders-tickets/util/helpers/getWindowScroll.js +0 -6
  95. package/src/components/summit-my-orders-tickets/util/helpers/index.js +0 -22
  96. package/src/components/summit-my-orders-tickets/util/index.js +0 -5
  97. package/src/components/summit-my-orders-tickets/util/order/calculateOrderTotals.js +0 -28
  98. package/src/components/summit-my-orders-tickets/util/order/getOrderStatusData.js +0 -71
  99. package/src/components/summit-my-orders-tickets/util/order/index.js +0 -2
  100. package/src/components/summit-my-orders-tickets/util/summit/checkSummitPast.js +0 -10
  101. package/src/components/summit-my-orders-tickets/util/summit/checkSummitStarted.js +0 -5
  102. package/src/components/summit-my-orders-tickets/util/summit/getSummitFormattedDate.js +0 -29
  103. package/src/components/summit-my-orders-tickets/util/summit/getSummitFormattedReassignDate.js +0 -8
  104. package/src/components/summit-my-orders-tickets/util/summit/getSummitLocation.js +0 -9
  105. package/src/components/summit-my-orders-tickets/util/summit/getSummitReassignDate.js +0 -7
  106. package/src/components/summit-my-orders-tickets/util/summit/index.js +0 -7
  107. package/src/components/summit-my-orders-tickets/util/summit/useSummitDetails.js +0 -36
  108. package/src/components/summit-my-orders-tickets/util/ticket/getTicketRole.js +0 -11
  109. package/src/components/summit-my-orders-tickets/util/ticket/getTicketStatusData.js +0 -48
  110. package/src/components/summit-my-orders-tickets/util/ticket/getTicketType.js +0 -1
  111. package/src/components/summit-my-orders-tickets/util/ticket/index.js +0 -4
  112. package/src/components/summit-my-orders-tickets/util/ticket/useTicketDetails.js +0 -60
  113. package/src/components/summit-my-orders-tickets/util/timer/index.js +0 -1
  114. package/src/components/summit-my-orders-tickets/util/timer/useNow.js +0 -8
@@ -1,666 +0,0 @@
1
- /**
2
- * Copyright 2022
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- * http://www.apache.org/licenses/LICENSE-2.0
7
- * Unless required by applicable law or agreed to in writing, software
8
- * distributed under the License is distributed on an "AS IS" BASIS,
9
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- * See the License for the specific language governing permissions and
11
- * limitations under the License.
12
- **/
13
-
14
- import i18n from '../../i18n';
15
- import IdTokenVerifier from 'idtoken-verifier';
16
- import Swal from 'sweetalert2';
17
- import {
18
- authErrorHandler,
19
- getRequest,
20
- putRequest,
21
- deleteRequest,
22
- createAction,
23
- stopLoading,
24
- startLoading
25
- } from 'openstack-uicore-foundation/lib/utils/actions';
26
- import { objectToQueryString } from 'openstack-uicore-foundation/lib/utils/methods';
27
- import { getIdToken } from 'openstack-uicore-foundation/lib/security/methods';
28
- import { getUserOrders } from "./order-actions";
29
- import { updateProfile } from './user-actions';
30
- import { processActionError } from './../../util/helpers/index';
31
-
32
- export const GET_TICKETS = 'GET_TICKETS';
33
- export const ASSIGN_TICKET = 'ASSIGN_TICKET';
34
- export const REMOVE_TICKET_ATTENDEE = 'REMOVE_TICKET_ATTENDEE';
35
- export const REFUND_TICKET = 'REFUND_TICKET';
36
- export const RESEND_NOTIFICATION = 'RESEND_NOTIFICATION';
37
- export const GET_TICKETS_BY_ORDER = 'GET_TICKETS_BY_ORDER';
38
- export const GET_TICKETS_BY_ORDER_ERROR = 'GET_TICKETS_BY_ORDER_ERROR';
39
- export const GET_ORDER_TICKET_DETAILS = 'GET_ORDER_TICKET_DETAILS';
40
- export const GET_TICKET_DETAILS = 'GET_TICKET_DETAILS';
41
- export const DELEGATE_TICKET = 'DELEGATE_TICKET';
42
-
43
- export const TICKET_ATTENDEE_KEYS = {
44
- email: 'attendee_email',
45
- firstName: 'attendee_first_name',
46
- lastName: 'attendee_last_name',
47
- company: 'attendee_company',
48
- disclaimerAccepted: 'disclaimer_accepted',
49
- extraQuestions: 'extra_questions'
50
- }
51
-
52
- const customFetchErrorHandler = (response) => (dispatch) => {
53
- let code = response.status;
54
- let msg = response.statusText;
55
- dispatch(stopLoading());
56
- switch (code) {
57
- case 403:
58
- Swal.fire('ERROR', i18n.t('errors.user_not_authz'), 'warning');
59
- break;
60
- case 401:
61
- Swal.fire('ERROR', i18n.t('errors.session_expired'), 'error');
62
- break;
63
- case 412:
64
- msg = '';
65
- for (var [key, value] of Object.entries(response.errors)) {
66
- if (isNaN(key)) {
67
- msg += key + ': ';
68
- }
69
-
70
- msg += value + '<br>';
71
- }
72
- Swal.fire('Validation error', msg, 'warning');
73
- break;
74
- case 500:
75
- Swal.fire('ERROR', i18n.t('errors.server_error'), 'error');
76
- }
77
- };
78
-
79
- const customWithout412ErrorHandler = (
80
- err
81
- ) => (dispatch) => {
82
- dispatch(stopLoading());
83
- switch (err.status) {
84
- case 403:
85
- Swal.fire('ERROR', i18n.t('errors.user_not_authz'), 'warning');
86
- break;
87
- case 401:
88
- Swal.fire('ERROR', i18n.t('errors.session_expired'), 'error');
89
- break;
90
- case 500:
91
- Swal.fire('ERROR', i18n.t('errors.server_error'), 'error');
92
- break;
93
- }
94
- };
95
-
96
-
97
- export const getUserTickets = ({ page = 1, perPage = 5 }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
98
- const { userState: { userProfile }, summitState: { summit } } = getState();
99
-
100
- if (!summit) return Promise.reject();
101
-
102
- const accessToken = await getAccessToken().catch(() => {
103
- dispatch(stopLoading());
104
- console.log('REJECTING PROMISE AFTER STOP LOADING')
105
- return Promise.reject();
106
- });
107
-
108
- if (!accessToken) return Promise.reject();
109
-
110
- if (!userProfile.id) return Promise.reject();
111
-
112
- dispatch(startLoading());
113
-
114
- const params = {
115
- access_token: accessToken,
116
- expand: 'order,owner,owner.manager,promo_code,ticket_type',
117
- order: '-id',
118
- fields: 'order.id,order.owner_first_name,order.owner_last_name,order.owner_email,owner.first_name,owner.last_name,owner.email,owner.company,owner.status,owner.manager.id',
119
- 'filter[]': [`status==Paid`, `order_owner_id<>${userProfile.id}`],
120
- relations: 'none',
121
- page: page,
122
- per_page: perPage,
123
- };
124
-
125
- return getRequest(
126
- null,
127
- createAction(GET_TICKETS),
128
- `${apiBaseUrl}/api/v1/summits/${summit.id}/orders/all/tickets/me`,
129
- authErrorHandler
130
- )(params)(dispatch).then(() => {
131
- dispatch(stopLoading());
132
- }).catch(e => {
133
- dispatch(stopLoading());
134
- return (e);
135
- });
136
- };
137
-
138
- export const getTicketById = ({order, ticket}) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
139
- const { userState: { userProfile }, summitState: { summit } } = getState();
140
-
141
- const { id: orderId } = order;
142
- const { id: ticketId } = ticket;
143
-
144
- const fromOrderList = order.hasOwnProperty('tickets_excerpt_by_ticket_type');
145
-
146
- if (!summit) return
147
-
148
- const accessToken = await getAccessToken().catch(() => {
149
- dispatch(stopLoading());
150
- console.log('REJECTING PROMISE AFTER STOP LOADING')
151
- return Promise.reject();
152
- });
153
-
154
- if (!accessToken) return Promise.reject();
155
-
156
- dispatch(startLoading());
157
-
158
- const params = {
159
- access_token: accessToken,
160
- expand: `${fromOrderList ? 'order' : ''},owner,owner.extra_questions,badge,badge.features,refund_requests,promo_code,ticket_type`,
161
- fields: 'order.id, order.owner_first_name, order.owner_last_name, order.owner_email'
162
- };
163
-
164
- return getRequest(
165
- null,
166
- createAction(fromOrderList ? GET_ORDER_TICKET_DETAILS : GET_TICKET_DETAILS),
167
- `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticketId}`,
168
- authErrorHandler
169
- )(params)(dispatch).then(() => {
170
- dispatch(stopLoading());
171
- }).catch(e => {
172
- dispatch(stopLoading());
173
- return (e);
174
- });
175
- };
176
-
177
- export const getTicketsByOrder = ({ orderId, page = 1, perPage = 5 }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
178
-
179
- dispatch(startLoading());
180
-
181
- const accessToken = await getAccessToken().catch(() => {
182
- dispatch(stopLoading());
183
- console.log('REJECTING PROMISE AFTER STOP LOADING')
184
- return Promise.reject();
185
- });
186
-
187
- if (!accessToken) return Promise.reject();
188
-
189
- const params = {
190
- access_token: accessToken,
191
- expand: 'refund_requests,owner,owner.extra_questions,badge,badge.features,promo_code,ticket_type',
192
- order: '+id',
193
- page: page,
194
- per_page: perPage
195
- };
196
-
197
- return getRequest(
198
- null,
199
- createAction(GET_TICKETS_BY_ORDER),
200
- `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets`,
201
- authErrorHandler
202
- )(params)(dispatch).then(() => {
203
- dispatch(stopLoading());
204
- }).catch(e => {
205
- dispatch(stopLoading());
206
- dispatch(createAction(GET_TICKETS_BY_ORDER_ERROR));
207
- return (e);
208
- });
209
- }
210
-
211
- export const assignAttendee = ({
212
- ticket,
213
- message,
214
- order,
215
- context,
216
- data: {
217
- attendee_email,
218
- attendee_first_name,
219
- attendee_last_name,
220
- attendee_company,
221
- disclaimer_accepted,
222
- extra_questions,
223
- reassignOrderId = null
224
- }
225
- }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
226
- const accessToken = await getAccessToken().catch(() => {
227
- dispatch(stopLoading());
228
- console.log('REJECTING PROMISE AFTER STOP LOADING')
229
- return Promise.reject();
230
- });
231
-
232
- if (!accessToken) return Promise.reject();
233
-
234
- dispatch(startLoading());
235
-
236
- const {
237
- orderState: { current_page: orderPage },
238
- ticketState: { current_page: ticketPage, orderTickets: { current_page : orderTicketsCurrentPage } }
239
- } = getState();
240
-
241
- const params = {
242
- access_token: accessToken,
243
- expand: 'owner,owner.extra_questions,badge,badge.type,badge.type.access_levels'
244
- };
245
-
246
- const normalizedEntity =
247
- (!attendee_first_name & !attendee_last_name)
248
- ? { attendee_email, message }
249
- : {
250
- attendee_email,
251
- attendee_first_name,
252
- attendee_last_name,
253
- attendee_company,
254
- extra_questions,
255
- disclaimer_accepted,
256
- message
257
- }
258
-
259
- const orderId = reassignOrderId ? reassignOrderId : order.id;
260
-
261
- return putRequest(
262
- null,
263
- createAction(ASSIGN_TICKET),
264
- `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/attendee`,
265
- normalizedEntity,
266
- customWithout412ErrorHandler
267
- )(params)(dispatch).then((newTicket) => {
268
- if (reassignOrderId && context === 'ticket-list') {
269
- dispatch(getUserTickets({ page: ticketPage }));
270
- } else {
271
- dispatch(getUserOrders({ page: orderPage }));
272
- dispatch(getTicketsByOrder({ orderId, page: orderTicketsCurrentPage }));
273
- }
274
- return newTicket;
275
- }).catch(({err}) => {
276
- processActionError(err);
277
- });
278
- }
279
-
280
- export const editOwnedTicket = ({
281
- ticket,
282
- context,
283
- data: {
284
- attendee_email,
285
- attendee_first_name,
286
- attendee_last_name,
287
- attendee_company,
288
- disclaimer_accepted,
289
- extra_questions,
290
- }
291
- }) => async (dispatch, getState, { getAccessToken, getUserProfile, apiBaseUrl, loginUrl }) => {
292
- const accessToken = await getAccessToken().catch(() => {
293
- dispatch(stopLoading());
294
- console.log('REJECTING PROMISE AFTER STOP LOADING')
295
- return Promise.reject();
296
- });
297
-
298
- if (!accessToken) return Promise.reject();
299
-
300
- dispatch(startLoading());
301
-
302
- const {
303
- userState: { userProfile },
304
- orderState: { current_page: orderPage },
305
- ticketState: { current_page: ticketPage, orderTickets: { current_page : orderTicketsCurrentPage } }
306
- } = getState();
307
-
308
- const params = {
309
- access_token: accessToken,
310
- expand: 'owner, owner.extra_questions'
311
- };
312
-
313
- const idToken = getIdToken();
314
- let company = '';
315
- if (idToken) {
316
- try {
317
- const verifier = new IdTokenVerifier();
318
- let jwt = verifier.decode(idToken);
319
- company = jwt.payload.company;
320
- }
321
- catch (e) {
322
- console.log('error', e);
323
- }
324
- }
325
-
326
- const normalizedEntity = normalizeTicket({
327
- attendee_email,
328
- attendee_first_name,
329
- attendee_last_name,
330
- attendee_company,
331
- disclaimer_accepted,
332
- extra_questions
333
- });
334
-
335
- return putRequest(
336
- null,
337
- createAction(ASSIGN_TICKET),
338
- `${apiBaseUrl}/api/v1/summits/all/orders/all/tickets/${ticket.id}`,
339
- normalizedEntity,
340
- authErrorHandler
341
- )(params)(dispatch).then(async () => {
342
- const hasManager = ticket.owner?.manager?.id || ticket.owner?.manager_id;
343
- // email should match ( only update my profile is ticket belongs to me!)
344
- // and if the ticket doesn't have a manager
345
- // Check if there's changes in the ticket data to update the profile
346
- if (userProfile.email == attendee_email && !hasManager && (
347
- attendee_company.name !== company ||
348
- attendee_first_name !== userProfile.first_name ||
349
- attendee_last_name !== userProfile.last_name)) {
350
-
351
- const newProfile = {
352
- first_name: attendee_first_name,
353
- last_name: attendee_last_name,
354
- company: attendee_company.name
355
- };
356
- dispatch(updateProfile(newProfile));
357
- }
358
-
359
- // Note: make sure we re-fetch the user profile for the parent app.
360
- await getUserProfile();
361
-
362
- // Note: refresh the list view after updating the ticket.
363
- if (context === 'ticket-list') {
364
- dispatch(getUserTickets({ page: ticketPage }));
365
- } else {
366
- dispatch(getUserOrders({ page: orderPage })).then(() =>
367
- dispatch(getTicketsByOrder({ orderId: ticket.order_id, page: orderTicketsCurrentPage }))
368
- );
369
- }
370
-
371
- dispatch(stopLoading());
372
- }).catch(e => {
373
- dispatch(stopLoading());
374
- return (e);
375
- });
376
- };
377
-
378
- export const resendNotification = (ticket) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
379
- const accessToken = await getAccessToken().catch(() => {
380
- dispatch(stopLoading());
381
- console.log('REJECTING PROMISE AFTER STOP LOADING')
382
- return Promise.reject();
383
- });
384
-
385
- if (!accessToken) return Promise.reject();
386
-
387
- const { message } = ticket;
388
-
389
- dispatch(startLoading());
390
-
391
- const orderId = ticket.order ? ticket.order.id : ticket.order_id;
392
-
393
- const params = {
394
- access_token: accessToken
395
- };
396
-
397
- return putRequest(
398
- null,
399
- createAction(RESEND_NOTIFICATION),
400
- `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/attendee/reinvite`,
401
- {message},
402
- authErrorHandler
403
- )(params)(dispatch).then(() => {
404
- dispatch(stopLoading());
405
- }).catch(e => {
406
- dispatch(stopLoading());
407
- return (e);
408
- });
409
- };
410
-
411
- export const changeTicketAttendee = ({
412
- ticket,
413
- message,
414
- order,
415
- context,
416
- data: { attendee_email }
417
- }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
418
- const accessToken = await getAccessToken().catch(() => {
419
- dispatch(stopLoading());
420
- console.log('REJECTING PROMISE AFTER STOP LOADING')
421
- return Promise.reject();
422
- });
423
-
424
- if (!accessToken) return Promise.reject();
425
-
426
- dispatch(startLoading());
427
-
428
- const params = {
429
- access_token: accessToken,
430
- expand: 'order, owner, owner.extra_questions, order.summit'
431
- };
432
-
433
- const orderId = ticket.order ? ticket.order.id : ticket.order_id;
434
-
435
- return deleteRequest(
436
- null,
437
- createAction(REMOVE_TICKET_ATTENDEE),
438
- `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/attendee`,
439
- {},
440
- customWithout412ErrorHandler
441
- )(params)(dispatch).then(() => {
442
- return dispatch(assignAttendee({
443
- ticket,
444
- message,
445
- order,
446
- context,
447
- data: {
448
- attendee_email,
449
- attendee_first_name: '',
450
- attendee_last_name: '',
451
- attendee_company: '',
452
- disclaimer_accepted: false,
453
- extra_questions: [],
454
- reassignOrderId: orderId,
455
- }
456
- }));
457
- }).catch(({err}) => {
458
- processActionError(err);
459
- });
460
- };
461
-
462
- export const removeAttendee = ({ticket, context}) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
463
-
464
- const {
465
- orderState: { current_page: orderPage },
466
- ticketState: { current_page: ticketPage, orderTickets: { current_page : orderTicketsCurrentPage } }
467
- } = getState();
468
-
469
- const accessToken = await getAccessToken().catch(() => {
470
- dispatch(stopLoading());
471
- console.log('REJECTING PROMISE AFTER STOP LOADING')
472
- return Promise.reject();
473
- });
474
-
475
- if (!accessToken) return Promise.reject();
476
-
477
- dispatch(startLoading());
478
-
479
- const params = {
480
- access_token: accessToken,
481
- expand: 'order, owner, owner.extra_questions, order.summit'
482
- };
483
-
484
- const orderId = ticket.order ? ticket.order.id : ticket.order_id;
485
-
486
- return deleteRequest(
487
- null,
488
- createAction(REMOVE_TICKET_ATTENDEE),
489
- `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/attendee`,
490
- {},
491
- authErrorHandler
492
- )(params)(dispatch).then((removedTicket) => {
493
- if (context === 'ticket-list') {
494
- dispatch(getUserTickets({ page: ticketPage }));
495
- } else {
496
- dispatch(getUserOrders({ page: orderPage }));
497
- dispatch(getTicketsByOrder({ orderId, page: orderTicketsCurrentPage }));
498
- }
499
- return removedTicket;
500
- }).catch((e) => {
501
- console.log('error', e)
502
- dispatch(stopLoading());
503
- return (e);
504
- });
505
- };
506
-
507
- export const getTicketPDF = ({ ticket }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
508
- const accessToken = await getAccessToken().catch(() => {
509
- dispatch(stopLoading());
510
- console.log('REJECTING PROMISE AFTER STOP LOADING')
511
- return Promise.reject();
512
- });
513
-
514
- if (!accessToken) return Promise.reject();
515
-
516
- dispatch(startLoading());
517
-
518
- const params = {
519
- access_token: accessToken
520
- };
521
-
522
- const orderId = ticket.order ? ticket.order.id : ticket.order_id;
523
-
524
- const queryString = objectToQueryString(params);
525
- const apiUrl = `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/pdf?${queryString}`;
526
-
527
- return fetch(apiUrl, { responseType: 'Blob', headers: { 'Content-Type': 'application/pdf' } })
528
- .then((response) => {
529
- if (!response.ok) {
530
- dispatch(stopLoading());
531
- throw response;
532
- } else {
533
- return response.blob();
534
- }
535
- })
536
- .then((pdf) => {
537
- dispatch(stopLoading());
538
- let link = document.createElement('a');
539
- const url = window.URL.createObjectURL(pdf);
540
- link.href = url;
541
- link.download = 'ticket.pdf';
542
- link.dispatchEvent(new MouseEvent('click'));
543
- })
544
- .catch(customFetchErrorHandler);
545
- };
546
-
547
- export const refundTicket = ({ ticket, order }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
548
- const accessToken = await getAccessToken().catch(() => {
549
- dispatch(stopLoading());
550
- console.log('REJECTING PROMISE AFTER STOP LOADING')
551
- return Promise.reject();
552
- });
553
-
554
- if (!accessToken) return Promise.reject();
555
-
556
- dispatch(startLoading());
557
-
558
- const {
559
- orderState: { current_page: orderPage },
560
- ticketState: { current_page: ticketPage }
561
- } = getState();
562
-
563
- const orderId = ticket.order ? ticket.order.id : ticket.order_id;
564
-
565
- const params = {
566
- access_token: accessToken
567
- };
568
-
569
- return deleteRequest(
570
- null,
571
- createAction(REFUND_TICKET),
572
- `${apiBaseUrl}/api/v1/summits/all/orders/${orderId}/tickets/${ticket.id}/refund`,
573
- {},
574
- authErrorHandler
575
- )(params)(dispatch).then((payload) => {
576
- dispatch(stopLoading());
577
-
578
- if (ticket.order_id) {
579
- dispatch(getUserOrders({ page: orderPage }));
580
- } else {
581
- dispatch(getUserTickets({ page: ticketPage }));
582
- }
583
- }).catch(e => {
584
- dispatch(stopLoading());
585
- throw (e);
586
- });
587
- };
588
-
589
- export const delegateTicket = ({
590
- ticket,
591
- context,
592
- data: {
593
- attendee_email,
594
- attendee_first_name,
595
- attendee_last_name,
596
- attendee_company,
597
- disclaimer_accepted,
598
- extra_questions,
599
- }
600
- }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
601
- const accessToken = await getAccessToken().catch(() => {
602
- dispatch(stopLoading());
603
- console.log('REJECTING PROMISE AFTER STOP LOADING')
604
- return Promise.reject();
605
- });
606
-
607
- if (!accessToken) return Promise.reject();
608
-
609
- dispatch(startLoading());
610
-
611
- const {
612
- orderState: { current_page: orderPage },
613
- ticketState: { current_page: ticketPage, orderTickets: { current_page : orderTicketsCurrentPage }},
614
- summitState: { summit: { id : summitId } }
615
- } = getState();
616
-
617
- const orderId = ticket.order ? ticket.order.id : ticket.order_id;
618
-
619
- const params = {
620
- access_token: accessToken
621
- };
622
-
623
- const normalizedEntity = normalizeTicket({
624
- attendee_email,
625
- attendee_first_name,
626
- attendee_last_name,
627
- attendee_company,
628
- disclaimer_accepted,
629
- extra_questions
630
- });
631
-
632
- return putRequest(
633
- null,
634
- createAction(DELEGATE_TICKET),
635
- `${apiBaseUrl}/api/v1/summits/${summitId}/orders/${orderId}/tickets/${ticket.id}/delegate`,
636
- normalizedEntity,
637
- authErrorHandler
638
- )(params)(dispatch).then(() => {
639
- dispatch(stopLoading());
640
- // Note: refresh the list view after updating the ticket.
641
- if (context === 'ticket-list') {
642
- dispatch(getUserTickets({ page: ticketPage }));
643
- } else {
644
- dispatch(getUserOrders({ page: orderPage })).then(() =>
645
- dispatch(getTicketsByOrder({ orderId: ticket.order_id, page: orderTicketsCurrentPage }))
646
- );
647
- }
648
- }).catch(e => {
649
- dispatch(stopLoading());
650
- throw (e);
651
- });
652
- }
653
-
654
- const normalizeTicket = (entity) => {
655
- const normalizedEntity = {...entity};
656
-
657
- if(!entity.attendee_company.id) {
658
- normalizedEntity['attendee_company'] = entity.attendee_company.name;
659
- } else {
660
- delete(normalizedEntity['attendee_company']);
661
- normalizedEntity['attendee_company_id'] = entity.attendee_company.id;
662
- }
663
-
664
- return normalizedEntity;
665
-
666
- }
@@ -1,29 +0,0 @@
1
- /**
2
- * Copyright 2022
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- * http://www.apache.org/licenses/LICENSE-2.0
7
- * Unless required by applicable law or agreed to in writing, software
8
- * distributed under the License is distributed on an "AS IS" BASIS,
9
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- * See the License for the specific language governing permissions and
11
- * limitations under the License.
12
- **/
13
- import {createAction} from "openstack-uicore-foundation/lib/utils/actions";
14
-
15
- export const UPDATE_CLOCK = 'UPDATE_CLOCK';
16
-
17
- export const defaultCurrentTime = () => {
18
- // fallback, depends on user clock better than nothing
19
- return Math.round(+new Date() / 1000);
20
- };
21
-
22
- export const updateClock = (timestamp) => (dispatch) => {
23
- dispatch(createAction(UPDATE_CLOCK)({ timestamp }));
24
- };
25
-
26
- export const getNow = () => (dispatch, getState) => {
27
- let { timerState } = getState();
28
- return timerState.nowUtc == null ? defaultCurrentTime() : timerState.nowUtc;
29
- };