@openeventkit/event-site 2.0.48 → 2.0.49

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@openeventkit/event-site",
3
3
  "description": "Event Site",
4
- "version": "2.0.48",
4
+ "version": "2.0.49",
5
5
  "author": "Tipit LLC",
6
6
  "dependencies": {
7
7
  "@mui/base": "^5.0.0-alpha.114",
@@ -42,7 +42,7 @@
42
42
  "font-awesome": "^4.7.0",
43
43
  "formik": "^2.2.9",
44
44
  "fs-extra": "^9.0.1",
45
- "full-schedule-widget": "3.0.1",
45
+ "full-schedule-widget": "3.0.2",
46
46
  "gatsby": "^5.8.1",
47
47
  "gatsby-alias-imports": "^1.0.6",
48
48
  "gatsby-plugin-image": "^3.8.0",
@@ -117,7 +117,7 @@
117
117
  "stream-browserify": "^3.0.0",
118
118
  "stream-chat": "^2.7.2",
119
119
  "stream-chat-react": "3.1.7",
120
- "summit-registration-lite": "5.0.5",
120
+ "summit-registration-lite": "5.0.6",
121
121
  "superagent": "8.0.9",
122
122
  "sweetalert2": "^9.17.0",
123
123
  "upcoming-events-widget": "3.0.4",
@@ -28,6 +28,7 @@ const FullSchedule = ({
28
28
  }) => {
29
29
  const { getSettingByKey } = useMarketingSettings();
30
30
  const defaultImage = getSettingByKey(MARKETING_SETTINGS_KEYS.schedultDefaultImage);
31
+ const summitLogoPrint = getSettingByKey(MARKETING_SETTINGS_KEYS.fullScheduleSummitLogoPrint);
31
32
  const componentProps = {
32
33
  title: "Schedule",
33
34
  summit,
@@ -35,6 +36,7 @@ const FullSchedule = ({
35
36
  userProfile,
36
37
  withThumbs: false,
37
38
  defaultImage: defaultImage,
39
+ summitLogoPrint: summitLogoPrint ? summitLogoPrint : null,
38
40
  showSendEmail: false,
39
41
  onStartChat: null,
40
42
  shareLink: getShareLink(filters, view),
@@ -111,7 +111,6 @@ const RegistrationLiteComponent = ({
111
111
 
112
112
  const inPersonDisclaimer = getSettingByKey(MARKETING_SETTINGS_KEYS.registrationInPersonDisclaimer);
113
113
  const allowPromoCodes = !!Number(getSettingByKey(MARKETING_SETTINGS_KEYS.regLiteAllowPromoCodes));
114
- const companyInputPlaceholder = getSettingByKey(MARKETING_SETTINGS_KEYS.regLiteCompanyInputPlaceholder);
115
114
  const companyDDLPlaceholder = getSettingByKey(MARKETING_SETTINGS_KEYS.regLiteCompanyDDLPlaceholder);
116
115
  const initialOrderComplete1stParagraph = getSettingByKey(MARKETING_SETTINGS_KEYS.regLiteInitialOrderComplete1stParagraph)
117
116
  const initialOrderComplete2ndParagraph = getSettingByKey(MARKETING_SETTINGS_KEYS.regLiteInitialOrderComplete2ndParagraph)
@@ -178,7 +177,6 @@ const RegistrationLiteComponent = ({
178
177
  });
179
178
  },
180
179
  allowPromoCodes: allowPromoCodes,
181
- companyInputPlaceholder: companyInputPlaceholder,
182
180
  companyDDLPlaceholder: companyDDLPlaceholder,
183
181
  supportEmail: getEnvVariable(SUPPORT_EMAIL),
184
182
  initialOrderComplete1stParagraph: initialOrderComplete1stParagraph,
@@ -6,7 +6,6 @@ import { AjaxLoader } from "openstack-uicore-foundation/lib/components";
6
6
  import { getUserOrders } from '../store/actions/order-actions';
7
7
  import { getUserTickets } from '../store/actions/ticket-actions';
8
8
  import { OrderList } from './OrderList/OrderList';
9
- import { OrderListContextProvider } from './OrderList/OrderList.helpers';
10
9
  import { TicketList } from './TicketList/TicketList';
11
10
 
12
11
  export const MyOrdersTickets = ({ className }) => {
@@ -63,10 +62,8 @@ export const MyOrdersTickets = ({ className }) => {
63
62
  )}
64
63
 
65
64
  <div className={classNames('my-orders-tickets', className)}>
66
- {hasOrders && (
67
- <OrderListContextProvider>
68
- <OrderList />
69
- </OrderListContextProvider>
65
+ {hasOrders && (
66
+ <OrderList />
70
67
  )}
71
68
 
72
69
  {(hasOrders && hasTickets) && (
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useRef } from "react"
2
- import { useDispatch } from "react-redux";
2
+ import { useDispatch, useSelector } from "react-redux";
3
3
  import { useTranslation } from "react-i18next";
4
4
  import classNames from 'classnames';
5
5
  import { getNow } from "../../store/actions/timer-actions";
@@ -11,7 +11,7 @@ import {
11
11
  getSummitFormattedDate,
12
12
  formatCurrency
13
13
  } from "../../util";
14
- import { useOrderListContext } from "../OrderList/OrderList.helpers";
14
+ import { setActiveOrderId } from "../../store/actions/order-actions";
15
15
 
16
16
  import './order-details.scss';
17
17
 
@@ -20,16 +20,21 @@ export const OrderDetails = ({ order, summit, className }) => {
20
20
 
21
21
  const { t } = useTranslation();
22
22
  const dispatch = useDispatch();
23
- const { state, actions } = useOrderListContext();
23
+
24
+ const {
25
+ activeOrderId
26
+ } = useSelector(state => state.orderState || {});
24
27
 
25
28
  const isSummitPast = checkSummitPast(summit, dispatch(getNow()));
26
29
  const statusData = getOrderStatusData(order, isSummitPast);
27
- const isActive = state.activeOrderId === order.id;
30
+ const isActive = activeOrderId === order.id;
31
+
32
+ const handleSetOrderActive = (orderId) => dispatch(setActiveOrderId( orderId ));
28
33
 
29
34
  const handleClick = (event) => {
30
- if (isActive) return actions.setActiveOrderId(null);
35
+ if (isActive) return handleSetOrderActive(null);
31
36
 
32
- actions.setActiveOrderId(order.id);
37
+ handleSetOrderActive(order.id);
33
38
 
34
39
  setTimeout(() => {
35
40
  const offset = getDocumentOffset(elementRef.current);
@@ -42,7 +47,7 @@ export const OrderDetails = ({ order, summit, className }) => {
42
47
  };
43
48
 
44
49
  // Clear active order on unmount (i.e., when page pagination changes)
45
- useEffect(() => () => actions.setActiveOrderId(null), []);
50
+ useEffect(() => () => setActiveOrderId(null), []);
46
51
 
47
52
  return (
48
53
  <div
@@ -6,7 +6,6 @@ import classNames from 'classnames';
6
6
  import { getUserOrders } from "../../store/actions/order-actions";
7
7
  import { getTicketsByOrder } from "../../store/actions/ticket-actions";
8
8
  import { OrderListItem } from './OrderListItem';
9
- import { useOrderListContext } from "./OrderList.helpers";
10
9
 
11
10
  import './order-list.scss';
12
11
 
@@ -19,6 +18,7 @@ export const OrderList = ({ className }) => {
19
18
  current_page: currentPage,
20
19
  last_page: lastPage,
21
20
  per_page: perPage,
21
+ activeOrderId,
22
22
  total
23
23
  } = useSelector(state => state.orderState || {});
24
24
 
@@ -28,8 +28,6 @@ export const OrderList = ({ className }) => {
28
28
  }
29
29
  } = useSelector(state => state.ticketState || {});
30
30
 
31
- const { state : { activeOrderId } } = useOrderListContext();
32
-
33
31
  const handlePageChange = (page) => dispatch(getUserOrders({ page, perPage }));
34
32
 
35
33
  const handleTicketPageChange = (orderId, page) => dispatch(getTicketsByOrder({ orderId, page }));
@@ -5,21 +5,24 @@ import { OrderDetails } from '../OrderDetails/OrderDetails';
5
5
  import { OrderSummary } from '../OrderSummary/OrderSummary';
6
6
  import { OrderTicketList } from '../OrderTicketList/OrderTicketList';
7
7
  import { OrderOptions } from "../OrderOptions/OrderOptions";
8
- import { useOrderListContext } from "./OrderList.helpers";
9
8
  import Pager from "../../../Pager";
10
9
 
11
10
  export const OrderListItem = ({ order, className, changeTicketsPage }) => {
12
11
  const summit = useSelector(state => state.summitState.summit);
13
- const { state } = useOrderListContext();
14
12
 
15
13
  const {
16
14
  orderTickets: {
17
15
  total, per_page, current_page, last_page, tickets
18
16
  },
19
- loading
17
+ loading,
20
18
  } = useSelector(state => state.ticketState || {});
21
19
 
22
- const isActive = state.activeOrderId === order.id;
20
+ const {
21
+ activeOrderId,
22
+ isOrderLoading
23
+ } = useSelector(state => state.orderState || {});
24
+
25
+ const isActive = activeOrderId === order.id;
23
26
 
24
27
  return (
25
28
  <li className={classNames('order-list__item', { 'order-list__item--active': isActive }, className)}>
@@ -27,7 +30,7 @@ export const OrderListItem = ({ order, className, changeTicketsPage }) => {
27
30
  <div className="col-md-8">
28
31
  <OrderDetails order={order} summit={summit} />
29
32
 
30
- {isActive && tickets.length > 0 && (
33
+ {!isOrderLoading && isActive && tickets.length > 0 && (
31
34
  <>
32
35
  <OrderSummary type="mobile" order={order} summit={summit} tickets={tickets}/>
33
36
 
@@ -23,6 +23,7 @@ import history from '../history';
23
23
 
24
24
  export const GET_USER_ORDERS = 'GET_ORDERS';
25
25
  export const REFUND_ORDER = 'REFUND_ORDER';
26
+ export const SET_ACTIVE_ORDER_ID = 'SET_ACTIVE_ORDER_ID';
26
27
 
27
28
  export const getUserOrders = ({ page = 1, perPage = 5 }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
28
29
  const { summitState: { summit } } = getState();
@@ -81,4 +82,8 @@ export const cancelOrder = ({ order }) => async (dispatch, getState, { getAccess
81
82
  dispatch(stopLoading());
82
83
  return e;
83
84
  });
84
- };
85
+ };
86
+
87
+ export const setActiveOrderId = (orderId) => async (dispatch, getState) => {
88
+ return dispatch(createAction(SET_ACTIVE_ORDER_ID)(orderId));
89
+ }
@@ -35,6 +35,7 @@ export const REMOVE_TICKET_ATTENDEE = 'REMOVE_TICKET_ATTENDEE';
35
35
  export const REFUND_TICKET = 'REFUND_TICKET';
36
36
  export const RESEND_NOTIFICATION = 'RESEND_NOTIFICATION';
37
37
  export const GET_TICKETS_BY_ORDER = 'GET_TICKETS_BY_ORDER';
38
+ export const GET_TICKETS_BY_ORDER_ERROR = 'GET_TICKETS_BY_ORDER_ERROR';
38
39
  export const GET_ORDER_TICKET_DETAILS = 'GET_ORDER_TICKET_DETAILS';
39
40
  export const GET_TICKET_DETAILS = 'GET_TICKET_DETAILS';
40
41
 
@@ -148,12 +149,12 @@ export const getTicketById = ({order, ticket}) => async (dispatch, getState, { g
148
149
 
149
150
  export const getTicketsByOrder = ({ orderId, page = 1, perPage = 5 }) => async (dispatch, getState, { getAccessToken, apiBaseUrl, loginUrl }) => {
150
151
 
152
+ dispatch(startLoading());
153
+
151
154
  const accessToken = await getAccessToken().catch(_ => history.replace(loginUrl));
152
155
 
153
156
  if (!accessToken) return;
154
157
 
155
- dispatch(startLoading());
156
-
157
158
  const params = {
158
159
  access_token: accessToken,
159
160
  expand: 'refund_requests, owner, owner.extra_questions, badge, badge.features',
@@ -171,6 +172,7 @@ export const getTicketsByOrder = ({ orderId, page = 1, perPage = 5 }) => async (
171
172
  dispatch(stopLoading());
172
173
  }).catch(e => {
173
174
  dispatch(stopLoading());
175
+ dispatch(createAction(GET_TICKETS_BY_ORDER_ERROR));
174
176
  return (e);
175
177
  });
176
178
  }
@@ -17,8 +17,10 @@ import { RESET_STATE } from "../actions/base-actions";
17
17
 
18
18
  import {
19
19
  GET_USER_ORDERS,
20
+ SET_ACTIVE_ORDER_ID,
20
21
  REFUND_ORDER,
21
22
  } from "../actions/order-actions";
23
+ import { GET_TICKETS_BY_ORDER, GET_TICKETS_BY_ORDER_ERROR } from "../actions/ticket-actions";
22
24
 
23
25
  const DEFAULT_ENTITY = {
24
26
  first_name: '',
@@ -47,6 +49,8 @@ const DEFAULT_STATE = {
47
49
  stripeForm: false,
48
50
  loaded: false,
49
51
  loading: false,
52
+ activeOrderId: null,
53
+ isOrderLoading: false,
50
54
  current_page: 1,
51
55
  last_page: 1,
52
56
  per_page: 5,
@@ -69,6 +73,13 @@ const orderReducer = (state = DEFAULT_STATE, action) => {
69
73
  case STOP_LOADING:
70
74
  return { ...state, loading: false };
71
75
  break;
76
+ case SET_ACTIVE_ORDER_ID:
77
+ return { ...state, activeOrderId: payload, isOrderLoading: true };
78
+ break;
79
+ case GET_TICKETS_BY_ORDER_ERROR:
80
+ case GET_TICKETS_BY_ORDER:
81
+ return { ...state, isOrderLoading: false };
82
+ break;
72
83
  case GET_USER_ORDERS:
73
84
  let { data, current_page, total, last_page } = payload.response;
74
85
  return { ...state, memberOrders: data, current_page, total, last_page };
@@ -1 +1 @@
1
- {"widgets":{"chat":{"showQA":false,"showHelp":false,"defaultScope":"page"},"schedule":{"allowClick":true}},"favicons":{"favicon180":"/img/favicon.png","favicon32":"/img/favicon.png","favicon16":"/img/favicon.png"},"staticJsonFilesBuildTime":[{"file":"src/data/summit.json","build_time":1692900122710},{"file":"src/data/events.json","build_time":1692900127255},{"file":"src/data/events.idx.json","build_time":1692900127260},{"file":"src/data/speakers.json","build_time":1692900131183},{"file":"src/data/speakers.idx.json","build_time":1692900131185},{"file":"src/content/sponsors.json","build_time":1692900134268},{"file":"src/data/voteable-presentations.json","build_time":1692900134602}],"lastBuild":1692900134603}
1
+ {"widgets":{"chat":{"showQA":false,"showHelp":false,"defaultScope":"page"},"schedule":{"allowClick":true}},"favicons":{"favicon180":"/img/favicon.png","favicon32":"/img/favicon.png","favicon16":"/img/favicon.png"},"staticJsonFilesBuildTime":[{"file":"src/data/summit.json","build_time":1692922259099},{"file":"src/data/events.json","build_time":1692922264079},{"file":"src/data/events.idx.json","build_time":1692922264084},{"file":"src/data/speakers.json","build_time":1692922268263},{"file":"src/data/speakers.idx.json","build_time":1692922268264},{"file":"src/content/sponsors.json","build_time":1692922271753},{"file":"src/data/voteable-presentations.json","build_time":1692922272661}],"lastBuild":1692922272663}
@@ -435,7 +435,7 @@ export const FullProfilePageTemplate = ({ user, getIDPProfile, updateProfile, up
435
435
  <br />
436
436
  <label className={styles.checkbox}>
437
437
  <input type="checkbox" checked={allowChatWithMe} onChange={e => setAllowChatWithMe(e.target.checked)} />
438
- Allow people to chat with me ?
438
+ Allow people to chat with me?
439
439
  </label>
440
440
  <div className={`columns is-mobile ${styles.buttons}`}>
441
441
  <div className={`column is-half`}>
@@ -7,10 +7,10 @@ export const MARKETING_SETTINGS_KEYS = {
7
7
  disqusExcludeTracks: "disqus_exclude_tracks",
8
8
  registrationInPersonDisclaimer: "registration_in_person_disclaimer",
9
9
  scheduleDefaultImage: "schedule_default_image",
10
+ fullScheduleSummitLogoPrint: "FULL_SCHEDULE_SUMMIT_LOGO_PRINT",
10
11
  summitDeltaStartTime: "summit_delta_start_time",
11
12
  activityCtaText: "ACTIVITY_CTA_TEXT",
12
13
  regLiteAllowPromoCodes: "REG_LITE_ALLOW_PROMO_CODES",
13
- regLiteCompanyInputPlaceholder: "REG_LITE_COMPANY_INPUT_PLACEHOLDER",
14
14
  regLiteCompanyDDLPlaceholder: "REG_LITE_COMPANY_DDL_PLACEHOLDER",
15
15
  regLiteInitialOrderComplete1stParagraph: "REG_LITE_INITIAL_ORDER_COMPLETE_STEP_1ST_PARAGRAPH",
16
16
  regLiteInitialOrderComplete2ndParagraph: "REG_LITE_INITIAL_ORDER_COMPLETE_STEP_2ND_PARAGRAPH",
@@ -21,12 +21,15 @@ export const MARKETING_SETTINGS_KEYS = {
21
21
  regLiteNoAllowedTicketsMessage: "REG_LITE_NO_ALLOWED_TICKETS_MESSAGE",
22
22
  }
23
23
 
24
+ const FileType = 'FILE';
24
25
  const marketingSettingsQuery = graphql`
25
26
  query {
26
27
  allMarketingSettingsJson {
27
28
  nodes {
28
29
  key
30
+ type
29
31
  value
32
+ file
30
33
  }
31
34
  }
32
35
  }
@@ -34,8 +37,11 @@ const marketingSettingsQuery = graphql`
34
37
 
35
38
  const useMarketingSettings = () => {
36
39
  const { allMarketingSettingsJson } = useStaticQuery(marketingSettingsQuery);
37
- const getSettingByKey = (key) =>
38
- allMarketingSettingsJson.nodes.find(setting => setting.key === key)?.value;
40
+ const getSettingByKey = (key) => {
41
+ const node = allMarketingSettingsJson.nodes.find(setting => setting.key === key);
42
+ if(!node) return null;
43
+ return node.type === FileType ? node?.file : node?.value;
44
+ }
39
45
  return { getSettingByKey };
40
46
  };
41
47
 
@@ -1,36 +0,0 @@
1
- import React, { createContext, useContext, useReducer } from "react";
2
- import { createReducer } from '../../util/helpers/createReducer';
3
-
4
- const initialState = {
5
- activeOrderId: null,
6
- };
7
-
8
- const actions = ({ state, dispatch }) => ({
9
- setActiveOrderId: (orderId) => dispatch({ type: 'setActiveOrderId', payload: orderId }),
10
- });
11
-
12
- const actionHandlers = {
13
- setActiveOrderId: (state, orderId) => ({ ...state, activeOrderId: orderId })
14
- };
15
-
16
- const reducer = createReducer({ actionHandlers });
17
-
18
- export const OrderListContext = createContext(null);
19
-
20
- export const OrderListContextProvider = ({ children }) => {
21
- const [state, dispatch] = useReducer(reducer, {}, () => initialState);
22
-
23
- return (
24
- <OrderListContext.Provider value={{ state, dispatch }}>
25
- {children}
26
- </OrderListContext.Provider>
27
- )
28
- };
29
-
30
- export const useOrderListContext = () => {
31
- const context = useContext(OrderListContext);
32
-
33
- if (!context) throw new Error('useOrderListContext must be used within a OrderListContextProvider');
34
-
35
- return { ...context, actions: actions(context) };
36
- };
@@ -1,38 +0,0 @@
1
- import React, { createContext, useContext, useReducer } from 'react';
2
- import { createReducer } from '../util/helpers/createReducer';
3
-
4
- const initialState = {
5
- orders: []
6
- };
7
-
8
- const actions = ({ state, dispatch }) => ({
9
- setOrders: (orders) => dispatch({ type: 'setOrders', payload: orders }),
10
- setLoading: (loading) => dispatch({ type: 'setLoading', payload: loading })
11
- });
12
-
13
- const actionHandlers = {
14
- setOrders: (state, orders) => ({ ...state, orders }),
15
- setLoading: (state, loading) => ({ ...state, loading })
16
- };
17
-
18
- const reducer = createReducer({ actionHandlers });
19
-
20
- export const OrdersTicketsContext = createContext(null);
21
-
22
- export const OrdersTicketsProvider = ({ children }) => {
23
- const [state, dispatch] = useReducer(reducer, {}, () => initialState);
24
-
25
- return (
26
- <OrdersTicketsContext.Provider value={{ state, dispatch }}>
27
- {children}
28
- </OrdersTicketsContext.Provider>
29
- );
30
- };
31
-
32
- export const useOrdersTicketsContext = () => {
33
- const context = useContext(OrdersTicketsContext);
34
-
35
- if (!context) throw new Error('useOrdersTicketsContext must be used within a OrdersTicketsProvider');
36
-
37
- return { ...context, actions: actions(context) };
38
- };