@openeventkit/event-site 2.0.79 → 2.0.80

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/env.template CHANGED
@@ -31,5 +31,4 @@ GATSBY_SENTRY_RELEASE=
31
31
  GATSBY_METADATA_TITLE=
32
32
  GATSBY_METADATA_DESCRIPTION=
33
33
  GATSBY_CMS_BACKEND_REPO=
34
- GATSBY_CMS_BACKEND_BRANCH=
35
- GATSBY_URL=
34
+ GATSBY_CMS_BACKEND_BRANCH=
package/gatsby-ssr.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import ReduxSSRWrapper from "./src/state/ReduxSSRWrapper";
2
+ import ReduxWrapper from "./src/state/ReduxWrapper";
3
3
  import {
4
4
  HtmlAttributes,
5
5
  HeadComponents,
@@ -9,7 +9,7 @@ import {
9
9
  import { JSDOM } from "jsdom";
10
10
  import { XMLHttpRequest } from "xmlhttprequest";
11
11
 
12
- export const wrapRootElement = ReduxSSRWrapper;
12
+ export const wrapRootElement = ReduxWrapper;
13
13
 
14
14
  export const onRenderBody = ({
15
15
  setHtmlAttributes,
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.79",
4
+ "version": "2.0.80",
5
5
  "author": "Tipit LLC",
6
6
  "dependencies": {
7
7
  "@mui/base": "^5.0.0-alpha.114",
@@ -1,34 +1,29 @@
1
1
  import * as React from "react";
2
2
  import PropTypes from "prop-types";
3
- import useSiteMetadata from "@utils/useSiteMetadata";
4
3
  import useSiteSettings from "@utils/useSiteSettings";
4
+ import { Helmet } from "react-helmet";
5
5
  import { getSrc } from "gatsby-plugin-image";
6
- import { buildUrl } from "@utils/urlFormating";
7
- import { getEnvVariable, SITE_URL } from "@utils/envVariables";
6
+ import { getUrl } from "@utils/urlFormating";
8
7
 
9
8
  const Seo = ({ title, description, location, children }) => {
10
9
  const {
11
- title: siteTitle,
12
- description: defaultDescription
13
- } = useSiteMetadata();
14
-
15
- const siteSettings = useSiteSettings();
16
- const image = siteSettings.siteMetadata?.image
17
-
18
- const siteUrl = getEnvVariable(SITE_URL);
19
- const siteUrlInfo = siteUrl ? new URL(siteUrl) : null;
20
- const scheme = siteUrlInfo ? siteUrlInfo.protocol.replace(":", "") : "https";
21
- const host = siteUrlInfo ? siteUrlInfo.host : null;
10
+ siteMetadata: {
11
+ title: siteTitle,
12
+ description: defaultDescription,
13
+ image
14
+ }
15
+ } = useSiteSettings();
16
+ const host = typeof window !== "undefined" ? window.location.host : null;
17
+ const scheme = typeof window !== "undefined" ? window.location.protocol.replace(":", "") : "https";
22
18
  const { pathname } = location;
23
-
24
19
  const seo = {
25
20
  title: title ? `${siteTitle} - ${title}` : siteTitle,
26
21
  description: description || defaultDescription,
27
- url: buildUrl(scheme, host, pathname),
28
- image: host && image ? buildUrl(scheme, host, getSrc(image)) : null,
22
+ url: getUrl(scheme, host, pathname),
23
+ image: host && image ? getUrl(scheme, host, getSrc(image)) : null,
29
24
  };
30
25
  return (
31
- <>
26
+ <Helmet>
32
27
  {seo.title && <title>{seo.title}</title>}
33
28
  {seo.description && <meta name="description" content={seo.description} />}
34
29
  {seo.url && <meta property="og:url" content={seo.url} />}
@@ -43,7 +38,7 @@ const Seo = ({ title, description, location, children }) => {
43
38
  {seo.description && <meta name="twitter:description" content={seo.description} />}
44
39
  {seo.image && <meta name="twitter:image" content={seo.image} />}
45
40
  {children}
46
- </>
41
+ </Helmet>
47
42
  );
48
43
  };
49
44
 
@@ -1,4 +1,4 @@
1
- import React, { useContext, useEffect, useMemo, useRef, useState } from 'react';
1
+ import React, { useEffect, useMemo, useRef, useState } from 'react';
2
2
  import { useDispatch, useSelector } from "react-redux";
3
3
  import { useTranslation } from "react-i18next";
4
4
  import { CSSTransition } from "react-transition-group";
@@ -30,7 +30,7 @@ export const TicketPopupEditDetailsForm = ({
30
30
  order,
31
31
  canEditTicketData,
32
32
  goToReassignPanel,
33
- context
33
+ context
34
34
  }) => {
35
35
  const formRef = useRef(null);
36
36
  const { t } = useTranslation();
@@ -126,7 +126,7 @@ export const TicketPopupEditDetailsForm = ({
126
126
  };
127
127
 
128
128
  const handleConfirmAccept = async () => {
129
- setShowConfirm(false);
129
+ setShowConfirm(false);
130
130
  dispatch(removeAttendee({ticket, context})).then((updatedTicket) => {
131
131
  onTicketAssignChange(updatedTicket);
132
132
  toggleUnassignMessage()
@@ -160,7 +160,10 @@ export const TicketPopupEditDetailsForm = ({
160
160
  }
161
161
  // extra question
162
162
  if (knownErrorRef) {
163
- knownErrorRef.scrollIntoView(ScrollBehaviour);
163
+ knownErrorRef.scrollIntoView({
164
+ behavior: 'smooth',
165
+ block: 'center',
166
+ });
164
167
  return;
165
168
  }
166
169
  // disclaimer
@@ -207,10 +210,10 @@ export const TicketPopupEditDetailsForm = ({
207
210
  };
208
211
 
209
212
  const canSubmitChanges = () => {
210
- const qs = new QuestionsSet(extraQuestions, initialValues[TicketKeys.extraQuestions]);
213
+ const qs = new QuestionsSet(extraQuestions, initialValues[TicketKeys.extraQuestions]);
211
214
  const unansweredExtraQuestions = !qs.completed();
212
215
  return canEditTicketData || isReassignable || unansweredExtraQuestions;
213
- }
216
+ }
214
217
 
215
218
  return (
216
219
  <div className="ticket-popup-edit-details-form">
@@ -252,7 +255,7 @@ export const TicketPopupEditDetailsForm = ({
252
255
  value={initialValues[TicketKeys.email]}
253
256
  disabled={true}
254
257
  />
255
- {isUserTicketOwner && isReassignable &&
258
+ {isUserTicketOwner && isReassignable &&
256
259
  <div className="mt-1">
257
260
  <span onClick={() => goToReassignPanel()}>
258
261
  <u>Reassign</u>
@@ -332,7 +335,7 @@ export const TicketPopupEditDetailsForm = ({
332
335
  </div>
333
336
  }
334
337
 
335
- {hasExtraQuestions &&
338
+ {hasExtraQuestions &&
336
339
  <div className="column is-full pt-5">
337
340
  <h4 className="pb-2">{t("ticket_popup.edit_preferences")}</h4>
338
341
  <ExtraQuestionsForm
@@ -398,4 +401,4 @@ export const TicketPopupEditDetailsForm = ({
398
401
  />
399
402
  </div>
400
403
  );
401
- };
404
+ };
@@ -1,16 +1 @@
1
- {
2
- "widgets": {
3
- "chat": {
4
- "enabled": true,
5
- "showQA": false,
6
- "showHelp": false,
7
- "defaultScope": "page"
8
- },
9
- "schedule": {
10
- "allowClick": true
11
- }
12
- },
13
- "favicon": {
14
- "asset": "icon.png"
15
- }
16
- }
1
+ {"widgets":{"chat":{"enabled":true,"showQA":false,"showHelp":false,"defaultScope":"page"},"schedule":{"allowClick":true}},"favicon":{"asset":"icon.png"},"staticJsonFilesBuildTime":[{"file":"src/data/summit.json","build_time":1701469138106},{"file":"src/data/events.json","build_time":1701469139680},{"file":"src/data/events.idx.json","build_time":1701469139682},{"file":"src/data/speakers.json","build_time":1701469140132},{"file":"src/data/speakers.idx.json","build_time":1701469140132},{"file":"src/content/sponsors.json","build_time":1701469140775},{"file":"src/data/voteable-presentations.json","build_time":1701469141157}],"lastBuild":1701469141157}
@@ -1 +1 @@
1
- [{"id":228,"created":1691602669,"last_edited":1691602669,"order":1,"summit_id":49,"is_published":false,"side_image":null,"header_image":null,"header_image_mobile":null,"carousel_advertise_image":null,"marquee":"","intro":"","external_link":"","video_link":"","chat_link":"","featured_event_id":0,"header_image_alt_text":"","side_image_alt_text":"","header_image_mobile_alt_text":"","carousel_advertise_image_alt_text":"","show_logo_in_event_page":true,"members":[90654],"company":{"id":3,"created":1580138376,"last_edited":1580138376,"name":"Tipit , LLC","url":null,"display_on_site":false,"featured":false,"city":null,"state":null,"country":null,"description":null,"industry":null,"contributions":null,"contact_email":null,"member_level":"None","admin_email":null,"overview":null,"products":null,"commitment":null,"commitment_author":null,"logo":null,"big_logo":null,"color":"#f0f0ee","sponsorships":[616],"project_sponsorships":[]},"sponsorship":{"id":2048,"widget_title":"","lobby_template":null,"expo_hall_template":null,"sponsor_page_template":null,"event_page_template":null,"sponsor_page_use_disqus_widget":false,"sponsor_page_use_live_event_widget":false,"sponsor_page_use_schedule_widget":false,"sponsor_page_use_banner_widget":false,"badge_image":null,"badge_image_alt_text":"","summit_id":49,"order":1,"should_display_on_expo_hall_page":false,"should_display_on_lobby_page":false,"type":{"id":3,"created":1579890943,"last_edited":1579890943,"name":"Gold","label":"not sure??","order":3,"size":"Medium"}},"ads":[],"materials":[],"social_networks":[]}]
1
+ []
@@ -1,21 +1,31 @@
1
- import * as React from "react";
2
- import { navigate } from "gatsby";
1
+ import React from "react";
2
+ import {connect} from "react-redux";
3
+ import {navigate} from "gatsby";
3
4
 
4
5
  /**
5
- * @param {boolean} isLoggedIn - Indicates whether the user is logged in.
6
- * @param {object} location - The location object from React Router.
7
- * @param {ReactNode} children - The children components to be rendered.
8
- * @returns {ReactNode|null} - Returns children if isLoggedIn is true, otherwise redirects to login.
6
+ *
7
+ * @param isLoggedIn
8
+ * @param location
9
+ * @param children
10
+ * @returns {null|*}
11
+ * @constructor
9
12
  */
10
- const WithAuthRoute = ({ isLoggedIn, location, children }) => {
11
- React.useEffect(() => {
13
+ const WithAuthRoute = ({
14
+
15
+ isLoggedIn,
16
+ location,
17
+ children
18
+ }) => {
19
+
12
20
  if (!isLoggedIn) {
13
- // Use navigate with state to redirect and add data to navigation state
14
- navigate("/#login=1", { state: { backUrl: `${location.pathname}` } });
21
+ // reject it and redirect with current location to login
22
+ navigate("/#login=1", {state: {backUrl: `${location.pathname}`,},});
23
+ return null;
15
24
  }
16
- }, [isLoggedIn, location.pathname]);
17
25
 
18
- return isLoggedIn ? children : null;
26
+ return children;
19
27
  };
20
28
 
21
- export default WithAuthRoute;
29
+ const mapStateToProps = ({}) => ({});
30
+
31
+ export default connect(mapStateToProps, {})(WithAuthRoute);
@@ -1,23 +1,23 @@
1
- import * as React from "react";
1
+ import React from "react";
2
2
  import { Provider } from "react-redux";
3
3
  import { PersistGate } from "redux-persist/integration/react";
4
- import { store, persistor } from "./store";
4
+ import store, { persistor } from "./store";
5
5
 
6
6
  import { RESET_STATE } from "../actions/base-actions-definitions";
7
7
 
8
8
  const onBeforeLift = () => {
9
- const params = new URLSearchParams(window.location.search);
10
- const flush = params.has("flushState");
9
+ const params = new URLSearchParams(window.location.search);
10
+ const flush = params.has("flushState");
11
11
 
12
- if (flush) {
13
- store.dispatch({ type: RESET_STATE, payload: null });
14
- }
12
+ if (flush) {
13
+ store.dispatch({ type: RESET_STATE, payload: null });
14
+ }
15
15
  };
16
16
 
17
17
  export default ({ element }) => (
18
- <Provider store={store}>
19
- <PersistGate onBeforeLift={onBeforeLift} persistor={persistor}>
20
- {element}
21
- </PersistGate>
22
- </Provider>
18
+ <Provider store={store}>
19
+ <PersistGate onBeforeLift={onBeforeLift} persistor={persistor}>
20
+ {element}
21
+ </PersistGate>
22
+ </Provider>
23
23
  );
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Create dummy storage on the server-side and wrapper for localStorage on the client-side.
3
+ * @see https://github.com/rt2zz/redux-persist/issues/1208#issuecomment-658695446
4
+ * @see https://stackoverflow.com/questions/57781527/how-to-solve-console-error-redux-persist-failed-to-create-sync-storage-falli
5
+ * @see https://github.com/vercel/next.js/discussions/15687#discussioncomment-45319
6
+ */
7
+
8
+ import createWebStorage from 'redux-persist/lib/storage/createWebStorage';
9
+
10
+ const createNoopStorage = () => {
11
+ return {
12
+ getItem(_key) {
13
+ return Promise.resolve(null);
14
+ },
15
+ setItem(_key, value) {
16
+ return Promise.resolve(value);
17
+ },
18
+ removeItem(_key) {
19
+ return Promise.resolve();
20
+ },
21
+ };
22
+ };
23
+
24
+ const storage = typeof window !== 'undefined' ? createWebStorage('local') : createNoopStorage();
25
+
26
+ export default storage;
@@ -1,67 +1,68 @@
1
- import { applyMiddleware, compose, createStore, combineReducers } from "redux";
1
+ import { applyMiddleware, compose, createStore } from "redux";
2
2
  import { persistCombineReducers, persistStore } from "redux-persist";
3
- import storage from "redux-persist/lib/storage";
4
3
  import thunk from "redux-thunk";
4
+ import storage from "./reduxPersistStorage";
5
5
 
6
- import * as reducers from "../reducers";
6
+ import { loggedUserReducer } from "openstack-uicore-foundation/lib/security/reducers";
7
+ import settingReducer from "../reducers/setting-reducer";
8
+ import userReducer from "../reducers/user-reducer";
9
+ import clockReducer from "../reducers/clock-reducer";
10
+ import summitReducer from "../reducers/summit-reducer";
11
+ import allSchedulesReducer from "../reducers/all-schedules-reducer";
12
+ import presentationsReducer from "../reducers/presentations-reducer";
13
+ import eventReducer from "../reducers/event-reducer";
14
+ import speakerReducer from "../reducers/speaker-reducer";
15
+ import sponsorReducer from "../reducers/sponsor-reducer";
16
+ import extraQuestionReducer from "../reducers/extra-questions-reducer";
7
17
 
8
- // Get from process.env because window is not set yet
18
+ // get from process.env bc window is not set yet
9
19
  const clientId = process.env.GATSBY_OAUTH2_CLIENT_ID;
10
20
  const summitID = process.env.GATSBY_SUMMIT_ID;
11
21
 
12
22
  const config = {
13
23
  key: `root_${clientId}_${summitID}`,
14
- storage,
24
+ storage: storage,
15
25
  blacklist: [
16
26
  // this will be not saved to persistent storage see
17
27
  // https://github.com/rt2zz/redux-persist#blacklist--whitelist
18
- "summitState",
19
- "allSchedulesState",
20
- "presentationsState",
21
- "eventState",
22
- "speakerState",
23
- "sponsorState",
24
- ],
28
+ 'summitState',
29
+ 'allSchedulesState',
30
+ 'presentationsState',
31
+ 'eventState',
32
+ 'speakerState',
33
+ 'sponsorState',
34
+ ]
25
35
  };
26
36
 
27
- const states = {
28
- loggedUserState: reducers.loggedUserReducer,
29
- settingState: reducers.settingReducer,
30
- userState: reducers.userReducer,
31
- clockState: reducers.clockReducer,
32
- summitState: reducers.summitReducer,
33
- allSchedulesState: reducers.allSchedulesReducer,
34
- presentationsState: reducers.presentationsReducer,
35
- eventState: reducers.eventReducer,
36
- speakerState: reducers.speakerReducer,
37
- sponsorState: reducers.sponsorReducer,
38
- };
39
-
40
- const appendLoggedUser = ({ getState }) => (next) => (action) => {
41
- const { userState: { userProfile } } = getState();
42
- action.userProfile = userProfile;
43
- return next(action);
44
- };
37
+ const persistedReducers = persistCombineReducers(config, {
38
+ loggedUserState: loggedUserReducer,
39
+ settingState: settingReducer,
40
+ userState: userReducer,
41
+ allSchedulesState: allSchedulesReducer,
42
+ clockState: clockReducer,
43
+ eventState: eventReducer,
44
+ presentationsState: presentationsReducer,
45
+ summitState: summitReducer,
46
+ speakerState: speakerReducer,
47
+ sponsorState: sponsorReducer,
48
+ extraQuestionState: extraQuestionReducer
49
+ });
45
50
 
46
- const composeEnhancers = typeof window === "object" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
47
- ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__
48
- : compose;
51
+ function appendLoggedUser({ getState }) {
52
+ return next => action => {
53
+ const { userState: { userProfile } } = getState();
54
+ // Call the next dispatch method in the middleware chain.
55
+ action.userProfile = userProfile;
56
+ return next(action);
57
+ }
58
+ }
49
59
 
50
- const enhancer = composeEnhancers(applyMiddleware(appendLoggedUser, thunk));
60
+ const composeEnhancers = typeof window === 'object' && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : compose;
51
61
 
52
- // Create store without persistor
53
- export const storeWithoutPersistor = createStore(
54
- combineReducers(states),
55
- enhancer
56
- );
62
+ const store = createStore(persistedReducers, composeEnhancers(applyMiddleware(appendLoggedUser, thunk)));
57
63
 
58
- // Create store with persistor
59
- export const { store, persistor } = (() => {
60
- const persistedReducers = persistCombineReducers(config, states);
64
+ const onRehydrateComplete = () => {};
61
65
 
62
- const store = createStore(persistedReducers, enhancer);
63
- const onRehydrateComplete = () => {};
64
- const persistor = persistStore(store, null, onRehydrateComplete);
66
+ export const persistor = persistStore(store, null, onRehydrateComplete);
65
67
 
66
- return { store, persistor };
67
- })();
68
+ export default store;
@@ -99,7 +99,10 @@ export const ExtraQuestionsPageTemplate = ({ user, summit, extraQuestions, atten
99
99
  }
100
100
  // extra question
101
101
  if (knownErrorRef) {
102
- knownErrorRef.scrollIntoView(ScrollBehaviour);
102
+ knownErrorRef.scrollIntoView({
103
+ behavior: 'smooth',
104
+ block: 'center',
105
+ });
103
106
  return;
104
107
  }
105
108
  // disclaimer
@@ -159,7 +162,7 @@ export const ExtraQuestionsPageTemplate = ({ user, summit, extraQuestions, atten
159
162
  <div className={styles.extraQuestionsAttendeeWarning}>
160
163
  {`Attention: The info below is for ${getAttendeeFullname(attendee)}. No additional action is required if you
161
164
  prefer ${attendee.first_name || attendee.email} to complete this info; they have received an email with instructions.
162
- You can manage this ticket on the "My Orders / Tickets" page.`}
165
+ You can manage this ticket on the "My Orders / Tickets" page.`}
163
166
  </div>
164
167
  }
165
168
  <div className={`content columns ${styles.extraQuestionsContainer}`}>
@@ -242,7 +245,7 @@ export const ExtraQuestionsPageTemplate = ({ user, summit, extraQuestions, atten
242
245
  questionContainerClassName={`columns is-multiline ${styles.extraQuestion} pt-3`}
243
246
  questionLabelContainerClassName={'column is-full pb-0'}
244
247
  questionControlContainerClassName={`column is-full pt-0`}
245
- shouldScroll2FirstError={false}
248
+ shouldScroll2FirstError={true}
246
249
  onError={handleExtraQuestionError}
247
250
  />
248
251
  </>
@@ -1,16 +1,16 @@
1
- import * as React from "react";
2
- import { connect } from "react-redux";
3
- import PropTypes from "prop-types";
4
- import { Redirect } from "@gatsbyjs/reach-router";
5
- import { getEnvVariable, REGISTRATION_BASE_URL } from "../utils/envVariables";
6
- import HeroComponent from "../components/HeroComponent";
1
+ import React from 'react'
2
+ import {connect} from "react-redux";
3
+ import PropTypes from 'prop-types'
4
+ import {navigate} from 'gatsby'
5
+ import {getEnvVariable, REGISTRATION_BASE_URL} from '../utils/envVariables'
6
+ import HeroComponent from '../components/HeroComponent'
7
7
 
8
8
  export const TicketErrorPageTemplate = class extends React.Component {
9
9
 
10
10
  constructor(props) {
11
11
  super(props);
12
12
 
13
- const { location } = this.props;
13
+ const {location} = this.props;
14
14
 
15
15
  this.state = {
16
16
  error: location.state?.error
@@ -18,21 +18,21 @@ export const TicketErrorPageTemplate = class extends React.Component {
18
18
  }
19
19
 
20
20
  redirect() {
21
- const { error } = this.state;
21
+ const {error} = this.state;
22
22
 
23
23
  if (getEnvVariable(REGISTRATION_BASE_URL)) {
24
24
 
25
25
  let targetUrl = null;
26
26
 
27
27
  switch (error) {
28
- case "no-virtual-access":
29
- targetUrl = "/";
28
+ case 'no-virtual-access':
29
+ targetUrl = `/`;
30
30
  break
31
- case "no-ticket":
32
- targetUrl = "/#registration=1";
31
+ case 'no-ticket':
32
+ targetUrl = `/#registration=1`;
33
33
  break;
34
- case "incomplete":
35
- targetUrl = "/a/extra-questions";
34
+ case 'incomplete':
35
+ targetUrl = `/a/extra-questions`;
36
36
  break;
37
37
  default:
38
38
  break;
@@ -46,23 +46,25 @@ export const TicketErrorPageTemplate = class extends React.Component {
46
46
  return;
47
47
  }
48
48
 
49
- setTimeout(() => navigate("/"), 5000);
49
+ setTimeout(() => {
50
+ navigate('/')
51
+ }, 5000);
50
52
  }
51
53
 
52
54
  getErrorMessage() {
53
- const { error } = this.state;
55
+ const {error} = this.state;
54
56
 
55
- let message = "";
57
+ let message = '';
56
58
 
57
59
  switch (error) {
58
- case "no-virtual-access":
59
- message = "I’m sorry your badge does not allow access to this section.";
60
+ case 'no-virtual-access':
61
+ message = 'I’m sorry your badge does not allow access to this section.';
60
62
  break;
61
- case "no-ticket":
62
- message = "I’m sorry you are not registered for this event.";
63
+ case 'no-ticket':
64
+ message = 'I’m sorry you are not registered for this event.';
63
65
  break;
64
- case "incomplete":
65
- message = "You have not answered questions required to join the event.";
66
+ case 'incomplete':
67
+ message = 'You have not answered questions required to join the event.';
66
68
  break;
67
69
  default:
68
70
  break;
@@ -72,13 +74,11 @@ export const TicketErrorPageTemplate = class extends React.Component {
72
74
  }
73
75
 
74
76
  getRedirectMessage() {
75
- const { error } = this.state;
76
-
77
- let message = "";
78
-
77
+ const {error} = this.state;
78
+ let message = '';
79
79
  switch (error) {
80
- case "no-ticket":
81
- message = getEnvVariable(REGISTRATION_BASE_URL) ? "You will be redirected to registration." : "";
80
+ case 'no-ticket':
81
+ message = getEnvVariable(REGISTRATION_BASE_URL) ? 'You will be redirected to registration.' : '';
82
82
  break;
83
83
  default:
84
84
  break;
@@ -88,7 +88,7 @@ export const TicketErrorPageTemplate = class extends React.Component {
88
88
  }
89
89
 
90
90
  render() {
91
- const { error } = this.state;
91
+ const {error} = this.state;
92
92
 
93
93
  if (error) {
94
94
  this.redirect();
@@ -100,7 +100,8 @@ export const TicketErrorPageTemplate = class extends React.Component {
100
100
  )
101
101
  }
102
102
 
103
- return <Redirect to={"/"} noThrow />;
103
+ navigate('/');
104
+ return null
104
105
  }
105
106
  };
106
107
 
@@ -108,19 +109,23 @@ TicketErrorPageTemplate.propTypes = {
108
109
  location: PropTypes.object,
109
110
  };
110
111
 
111
- const TicketErrorPage = ({ location, summit }) => (
112
- <TicketErrorPageTemplate
113
- location={location}
114
- summit={summit}
115
- />
116
- );
112
+ const TicketErrorPage = ({location, summit}) => {
113
+
114
+ return (
115
+ <TicketErrorPageTemplate
116
+ location={location}
117
+ summit={summit}
118
+ />
119
+ )
120
+
121
+ };
117
122
 
118
123
  TicketErrorPage.propTypes = {
119
124
  location: PropTypes.object,
120
125
  };
121
126
 
122
- const mapStateToProps = ({ summitState }) => ({
127
+ const mapStateToProps = ({summitState}) => ({
123
128
  summit: summitState.summit,
124
129
  });
125
130
 
126
- export default connect(mapStateToProps, null)(TicketErrorPage);
131
+ export default connect(mapStateToProps, {})(TicketErrorPage);
@@ -1,4 +1,3 @@
1
- export const SITE_URL = 'SITE_URL';
2
1
  export const IDP_BASE_URL = 'IDP_BASE_URL';
3
2
  export const SUMMIT_API_BASE_URL = 'SUMMIT_API_BASE_URL';
4
3
  export const SUMMIT_ID = 'SUMMIT_ID';
@@ -27,15 +26,6 @@ export const TIMEINTERVALSINCE1970_API_URL = 'TIMEINTERVALSINCE1970_API_URL';
27
26
  export const ABLY_API_KEY = 'ABLY_API_KEY';
28
27
 
29
28
  const processEnv = {
30
- /**
31
- * Retrieve the site URL from environment variable set by the deploy provider.
32
- * See documentation for more details:
33
- * - Netlify: {@link https://docs.netlify.com/configure-builds/environment-variables/#deploy-urls-and-metadata}
34
- * - Cloudflare Pages: {@link https://developers.cloudflare.com/pages/platform/build-configuration#environment-variables}
35
- *
36
- * If not available, fallback to user-defined GATSBY_SITE_URL env var.
37
- */
38
- SITE_URL: process.env.GATSBY_URL || process.env.GATSBY_CF_PAGES_URL || process.env.GATSBY_SITE_URL,
39
29
  IDP_BASE_URL: process.env.GATSBY_IDP_BASE_URL,
40
30
  SUMMIT_API_BASE_URL: process.env.GATSBY_SUMMIT_API_BASE_URL,
41
31
  API_BASE_URL: process.env.GATSBY_SUMMIT_API_BASE_URL,
@@ -72,7 +62,6 @@ export const getEnvVariable = (name) => {
72
62
  }
73
63
 
74
64
  if (typeof window === 'object') {
75
- window.SITE_URL = processEnv[SITE_URL];
76
65
  window.OAUTH2_FLOW = processEnv[OAUTH2_FLOW];
77
66
  window.OAUTH2_CLIENT_ID = processEnv[OAUTH2_CLIENT_ID];
78
67
  window.SCOPES = processEnv[SCOPES];
@@ -1,5 +1,5 @@
1
1
 
2
- export const buildUrl = (scheme, host, pathname) => {
2
+ export const getUrl = (scheme, host, pathname) => {
3
3
  if (!host) return null;
4
4
  const domain = `${scheme}://${host}`;
5
5
  return `${domain}${pathname ?? "/"}`;
@@ -1,23 +0,0 @@
1
- import { loggedUserReducer } from "openstack-uicore-foundation/lib/security/reducers";
2
- import settingReducer from "./setting-reducer";
3
- import userReducer from "./user-reducer";
4
- import clockReducer from "./clock-reducer";
5
- import summitReducer from "./summit-reducer";
6
- import allSchedulesReducer from "./all-schedules-reducer";
7
- import presentationsReducer from "./presentations-reducer";
8
- import eventReducer from "./event-reducer";
9
- import speakerReducer from "./speaker-reducer";
10
- import sponsorReducer from "./sponsor-reducer";
11
-
12
- export {
13
- loggedUserReducer,
14
- settingReducer,
15
- userReducer,
16
- clockReducer,
17
- summitReducer,
18
- allSchedulesReducer,
19
- presentationsReducer,
20
- eventReducer,
21
- speakerReducer,
22
- sponsorReducer,
23
- };
@@ -1,9 +0,0 @@
1
- import * as React from "react";
2
- import { Provider } from "react-redux";
3
- import { storeWithoutPersistor } from "./store";
4
-
5
- export default ({ element }) => (
6
- <Provider store={storeWithoutPersistor}>
7
- {element}
8
- </Provider>
9
- );