@openeventkit/event-site 2.0.48 → 2.0.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.
package/gatsby-node.js CHANGED
@@ -225,7 +225,7 @@ exports.onPreBootstrap = async () => {
225
225
 
226
226
  const summitId = process.env.GATSBY_SUMMIT_ID;
227
227
  const summitApiBaseUrl = process.env.GATSBY_SUMMIT_API_BASE_URL;
228
- const marketingSettings = await SSR_getMarketingSettings(process.env.GATSBY_MARKETING_API_BASE_URL, summitId);
228
+ let marketingSettings = await SSR_getMarketingSettings(process.env.GATSBY_MARKETING_API_BASE_URL, summitId);
229
229
  const colorSettings = fs.existsSync(COLORS_FILE_PATH) ? JSON.parse(fs.readFileSync(COLORS_FILE_PATH)) : require(`./${DEFAULT_COLORS_FILE_PATH}`);
230
230
  const globalSettings = fs.existsSync(SITE_SETTINGS_FILE_PATH) ? JSON.parse(fs.readFileSync(SITE_SETTINGS_FILE_PATH)) : {};
231
231
  const lobbyPageSettings = fs.existsSync(LOBBY_PAGE_FILE_PATH) ? JSON.parse(fs.readFileSync(LOBBY_PAGE_FILE_PATH)) : {};
@@ -247,9 +247,12 @@ exports.onPreBootstrap = async () => {
247
247
 
248
248
  const accessToken = await getAccessToken(config, process.env.GATSBY_BUILD_SCOPES).then(({ token }) => token.access_token);
249
249
 
250
+ const FileType = 'FILE';
250
251
  // extract colors from marketing settings
251
- marketingSettings.map(({ key, value }) => {
252
- if (key.startsWith("color_")) colorSettings[key] = value;
252
+ marketingSettings = marketingSettings.map( entry => {
253
+ if (entry.key.startsWith("color_")) colorSettings[entry.key] = entry.value;
254
+ if(entry.type === FileType) return {...entry, value: entry.file};
255
+ return {...entry};
253
256
  });
254
257
 
255
258
  // create required directories
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.50",
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,6 +21,7 @@ export const MARKETING_SETTINGS_KEYS = {
21
21
  regLiteNoAllowedTicketsMessage: "REG_LITE_NO_ALLOWED_TICKETS_MESSAGE",
22
22
  }
23
23
 
24
+
24
25
  const marketingSettingsQuery = graphql`
25
26
  query {
26
27
  allMarketingSettingsJson {
@@ -35,7 +36,7 @@ const marketingSettingsQuery = graphql`
35
36
  const useMarketingSettings = () => {
36
37
  const { allMarketingSettingsJson } = useStaticQuery(marketingSettingsQuery);
37
38
  const getSettingByKey = (key) =>
38
- allMarketingSettingsJson.nodes.find(setting => setting.key === key)?.value;
39
+ allMarketingSettingsJson.nodes.find(setting => setting.key === key)?.value;
39
40
  return { getSettingByKey };
40
41
  };
41
42
 
@@ -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
- };