@openeventkit/event-site 1.0.44 → 1.0.47
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 +1 -1
- package/src/cms/config/collections/defaultPagesCollection/lobbyPage/typeDefs.js +1 -1
- package/src/components/AttendeeToAttendeeWidgetComponent.js +1 -1
- package/src/components/AuthComponent.js +8 -3
- package/src/content/site-settings/index.json +1 -17
- package/src/content/sponsors.json +1 -187
- package/src/pages/a/[...].js +15 -17
- package/src/pages/a/index.js +75 -0
- package/src/reducers/setting-reducer.js +0 -2
- package/src/routes/ShowOpenRoute.js +7 -7
- package/src/styles/colors.scss +7 -7
- package/src/templates/lobby-page.js +15 -11
package/package.json
CHANGED
|
@@ -199,7 +199,7 @@ const AccessTracker = ({ user, isLoggedUser, summitPhase }) => {
|
|
|
199
199
|
return user.isAuthorized;
|
|
200
200
|
};
|
|
201
201
|
|
|
202
|
-
// if
|
|
202
|
+
// if summitPhase wasn't initialized yet (eg: due to a delay in the reducer),
|
|
203
203
|
// this render shouldn't continue
|
|
204
204
|
if (summitPhase === null) return null;
|
|
205
205
|
|
|
@@ -50,7 +50,8 @@ const AuthComponent = ({
|
|
|
50
50
|
|
|
51
51
|
useEffect(() => {
|
|
52
52
|
const fragmentParser = new FragmentParser();
|
|
53
|
-
|
|
53
|
+
// to show the login dialog check if we are already logged or not
|
|
54
|
+
setIsActive(fragmentParser.getParam('login') && !isLoggedUser);
|
|
54
55
|
const paramInitialEmailValue = fragmentParser.getParam('email');
|
|
55
56
|
if (paramInitialEmailValue)
|
|
56
57
|
setInitialEmailValue(paramInitialEmailValue);
|
|
@@ -104,7 +105,6 @@ const AuthComponent = ({
|
|
|
104
105
|
};
|
|
105
106
|
|
|
106
107
|
const loginPasswordless = (code, email) => {
|
|
107
|
-
|
|
108
108
|
const params = {
|
|
109
109
|
connection: "email",
|
|
110
110
|
otp: code,
|
|
@@ -141,7 +141,12 @@ const AuthComponent = ({
|
|
|
141
141
|
const passwordlessLoginProps = {
|
|
142
142
|
email: userEmail,
|
|
143
143
|
codeLength: otpLength,
|
|
144
|
-
passwordlessLogin: (code) => loginPasswordless(code, userEmail).then(() =>
|
|
144
|
+
passwordlessLogin: (code) => loginPasswordless(code, userEmail).then(() => {
|
|
145
|
+
// close popup and then navigate bc its its the same origin page
|
|
146
|
+
// it would not reload and closed the popup automatically
|
|
147
|
+
handleClosePopup();
|
|
148
|
+
navigate(getBackURL(false))
|
|
149
|
+
}).catch((e) => console.log(e)),
|
|
145
150
|
codeError: otpError,
|
|
146
151
|
goToLogin: () => setOtpLogin(false),
|
|
147
152
|
getLoginCode: (email) => sendCode(email),
|
|
@@ -1,17 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"widgets": {
|
|
3
|
-
"chat": {
|
|
4
|
-
"showQA": false,
|
|
5
|
-
"showHelp": false,
|
|
6
|
-
"defaultScope": "page"
|
|
7
|
-
},
|
|
8
|
-
"schedule": {
|
|
9
|
-
"allowClick": true
|
|
10
|
-
}
|
|
11
|
-
},
|
|
12
|
-
"favicons": {
|
|
13
|
-
"favicon180": "/img/favicon.png",
|
|
14
|
-
"favicon32": "/img/favicon.png",
|
|
15
|
-
"favicon16": "/img/favicon.png"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
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":1691631481693},{"file":"src/data/events.json","build_time":1691631485833},{"file":"src/data/events.idx.json","build_time":1691631485837},{"file":"src/data/speakers.json","build_time":1691631489381},{"file":"src/data/speakers.idx.json","build_time":1691631489382},{"file":"src/content/sponsors.json","build_time":1691631489753},{"file":"src/data/voteable-presentations.json","build_time":1691631490212}],"lastBuild":1691631490212}
|
|
@@ -1,187 +1 @@
|
|
|
1
|
-
|
|
2
|
-
"tierSponsors": [
|
|
3
|
-
{
|
|
4
|
-
"tier": [
|
|
5
|
-
{
|
|
6
|
-
"value": "tier-cYGYq5-ae",
|
|
7
|
-
"label": "Top-Tier"
|
|
8
|
-
}
|
|
9
|
-
],
|
|
10
|
-
"sponsors": [
|
|
11
|
-
{
|
|
12
|
-
"marquee": "Your text here! (150-characters max)",
|
|
13
|
-
"sponsorColor": "#414042",
|
|
14
|
-
"logo": {
|
|
15
|
-
"file": "/img/tier1-default-sponsor-logo.png"
|
|
16
|
-
},
|
|
17
|
-
"name": "Top-Tier",
|
|
18
|
-
"intro": "Sponsor Description (1000-character max) Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget ipsum tempor lorem interdum volutpat eu et elit. Sed eleifend justo et semper ultrices. Fusce porta ut sapien at posuere. Donec placerat, lacus eget imperdiet maximus, nunc lectus viverra ligula, in sodales tortor justo vel sem. Vestibulum eleifend, nibh a dapibus rhoncus, tortor dui venenatis enim, ac euismod augue velit at justo. Cras porta lacus est, nec rhoncus augue luctus quis. Pellentesque justo risus, scelerisque laoreet tortor quis, TOP TIER TEXT.",
|
|
19
|
-
"headerImage": "/img/tier1-default-sponsor-headerimage-toptier.png",
|
|
20
|
-
"socialNetworks": [],
|
|
21
|
-
"sponsorId": 24,
|
|
22
|
-
"title": "Top-Tier Sponsor Test ",
|
|
23
|
-
"companyId": 22,
|
|
24
|
-
"documents": {
|
|
25
|
-
"links": [
|
|
26
|
-
{
|
|
27
|
-
"class_name": "PresentationLink",
|
|
28
|
-
"name": "Your social media links here ",
|
|
29
|
-
"order": 1,
|
|
30
|
-
"link": "https://www.facebook.com/FNTECH"
|
|
31
|
-
}
|
|
32
|
-
],
|
|
33
|
-
"videos": [
|
|
34
|
-
{
|
|
35
|
-
"class_name": "PresentationVideo",
|
|
36
|
-
"name": "Your external video links here ",
|
|
37
|
-
"order": 2,
|
|
38
|
-
"link": "https://www.youtube.com/channel/UC81WrqqnYmigub0fTNKT-Mw"
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
"columnAds": [
|
|
43
|
-
{
|
|
44
|
-
"image": "/img/tier1-default-sponsor-space1.png",
|
|
45
|
-
"link": "https://fntech.com"
|
|
46
|
-
}
|
|
47
|
-
],
|
|
48
|
-
"id": 24,
|
|
49
|
-
"email": "support@fntech.com",
|
|
50
|
-
"usesSponsorPage": true
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"marquee": "Your event one-stop-shop, no matter the scope or size. Production + Event Management + Creative. We have you covered. ",
|
|
54
|
-
"sponsorColor": "#0C64C8",
|
|
55
|
-
"logo": {
|
|
56
|
-
"file": "/img/logo-top-tier-fntech.png"
|
|
57
|
-
},
|
|
58
|
-
"name": "FNTECH",
|
|
59
|
-
"intro": "**WE SPEAK EVENTS: In-person, virtual, and everything in-between.**\\\nOver the past 20+ years, we’ve successfully partnered with top-tier companies like Apple, Facebook, Wells Fargo, Vans, and Volcom on events of all sizes, types and budgets. Domestic and abroad. Intimate and straightforward to extremely complex and expansive. We have two large headquarters—one in the Northern California Bay Area and another in Southern California, which includes a virtual reality lab, 3D printing hub, and robust wood/metal fabrication shop. We’re a people-first company, which to us means treating every employee, client, vendor, partner, and community member with honesty, integrity, and respect. It’s part of our corporate ethos. People power our mission and we are eternally grateful to know and work with some of the best in the business. And as always, we make sure to have a lot of fun along the way. For more FNinfo, visit us at [fntech.com](http://fntech.com/).",
|
|
60
|
-
"headerVideo": "https://fntech.sfo2.cdn.digitaloceanspaces.com/Yoco/FNTECH%20animated%20logo_Black_012021.mp4",
|
|
61
|
-
"advertiseImage": "",
|
|
62
|
-
"sponsorId": 44,
|
|
63
|
-
"title": "",
|
|
64
|
-
"companyId": 4,
|
|
65
|
-
"columnAds": [],
|
|
66
|
-
"id": 44,
|
|
67
|
-
"email": "info@fntech.com",
|
|
68
|
-
"usesSponsorPage": true
|
|
69
|
-
}
|
|
70
|
-
]
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
"tier": [
|
|
74
|
-
{
|
|
75
|
-
"value": "tier-DHcI3dWGk",
|
|
76
|
-
"label": "Mid-Tier"
|
|
77
|
-
}
|
|
78
|
-
],
|
|
79
|
-
"sponsors": [
|
|
80
|
-
{
|
|
81
|
-
"marquee": "Your text here! (150-characters max)",
|
|
82
|
-
"sideImage": "",
|
|
83
|
-
"externalLink": "",
|
|
84
|
-
"sponsorColor": "#58595b",
|
|
85
|
-
"logo": {
|
|
86
|
-
"file": "/img/tier1-default-sponsor-logo.png"
|
|
87
|
-
},
|
|
88
|
-
"name": "Mid-Tier",
|
|
89
|
-
"intro": "Sponsor Description (1000-character max) Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget ipsum tempor lorem interdum volutpat eu et elit. Sed eleifend justo et semper ultrices. Fusce porta ut sapien at posuere. Donec placerat, lacus eget imperdiet maximus, nunc lectus viverra ligula, in sodales tortor justo vel sem. Vestibulum eleifend, nibh a dapibus rhoncus, tortor dui venenatis enim, ac euismod augue velit at justo. Cras porta lacus est, nec rhoncus augue luctus quis. Pellentesque justo risus, scelerisque laoreet tortor quis, Test Text",
|
|
90
|
-
"headerVideo": "",
|
|
91
|
-
"headerImage": "/img/tier1-default-sponsor-headerimage-middletier.png",
|
|
92
|
-
"socialNetworks": [],
|
|
93
|
-
"chatLink": "",
|
|
94
|
-
"sponsorId": 25,
|
|
95
|
-
"title": "Mid-Tier Sponsor",
|
|
96
|
-
"companyId": 23,
|
|
97
|
-
"documents": {
|
|
98
|
-
"slides": [],
|
|
99
|
-
"links": [
|
|
100
|
-
{
|
|
101
|
-
"class_name": "PresentationLink",
|
|
102
|
-
"name": "Your social media links here ",
|
|
103
|
-
"order": 1,
|
|
104
|
-
"link": "https://www.facebook.com/FNTECH"
|
|
105
|
-
}
|
|
106
|
-
],
|
|
107
|
-
"videos": [
|
|
108
|
-
{
|
|
109
|
-
"class_name": "PresentationVideo",
|
|
110
|
-
"name": "Your external video links here ",
|
|
111
|
-
"link": "https://www.youtube.com/channel/UC81WrqqnYmigub0fTNKT-Mw",
|
|
112
|
-
"order": 2
|
|
113
|
-
}
|
|
114
|
-
]
|
|
115
|
-
},
|
|
116
|
-
"columnAds": [
|
|
117
|
-
{
|
|
118
|
-
"image": "/img/tier1-default-sponsor-space1.png",
|
|
119
|
-
"button": "",
|
|
120
|
-
"link": "https://fntech.com"
|
|
121
|
-
}
|
|
122
|
-
],
|
|
123
|
-
"id": 25,
|
|
124
|
-
"email": "support@fntech.com",
|
|
125
|
-
"usesSponsorPage": true
|
|
126
|
-
}
|
|
127
|
-
]
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"tier": [
|
|
131
|
-
{
|
|
132
|
-
"value": "tier-U_wEwGX8a",
|
|
133
|
-
"label": "Lower-Tier"
|
|
134
|
-
}
|
|
135
|
-
],
|
|
136
|
-
"sponsors": [
|
|
137
|
-
{
|
|
138
|
-
"marquee": "Your text here! (150-characters max)",
|
|
139
|
-
"sideImage": "/img/tier1-default-sponsor-sideimage.png",
|
|
140
|
-
"externalLink": "",
|
|
141
|
-
"sponsorColor": "#6d6e71",
|
|
142
|
-
"logo": {
|
|
143
|
-
"file": "/img/tier1-default-sponsor-logo.png"
|
|
144
|
-
},
|
|
145
|
-
"name": "Lower-Tier",
|
|
146
|
-
"intro": "Sponsor Description (1000-character max) Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eget ipsum tempor lorem interdum volutpat eu et elit. Sed eleifend justo et semper ultrices. Fusce porta ut sapien at posuere. Donec placerat, lacus eget imperdiet maximus, nunc lectus viverra ligula, in sodales tortor justo vel sem. Vestibulum eleifend, nibh a dapibus rhoncus, tortor dui venenatis enim, ac euismod augue velit at justo. Cras porta lacus est, nec rhoncus augue luctus quis. Pellentesque justo risus, scelerisque laoreet tortor quis, vehicula volutpat ipsum.",
|
|
147
|
-
"headerVideo": "",
|
|
148
|
-
"headerImage": "/img/tier1-default-sponsor-headerimage-lowertier.png",
|
|
149
|
-
"socialNetworks": [],
|
|
150
|
-
"chatLink": "",
|
|
151
|
-
"sponsorId": 26,
|
|
152
|
-
"title": "Lower-Tier Sponsor",
|
|
153
|
-
"companyId": 24,
|
|
154
|
-
"documents": {
|
|
155
|
-
"slides": [],
|
|
156
|
-
"links": [
|
|
157
|
-
{
|
|
158
|
-
"class_name": "PresentationLink",
|
|
159
|
-
"name": "Your social media links here ",
|
|
160
|
-
"link": "https://www.facebook.com/FNTECH",
|
|
161
|
-
"order": 1
|
|
162
|
-
}
|
|
163
|
-
],
|
|
164
|
-
"videos": [
|
|
165
|
-
{
|
|
166
|
-
"class_name": "PresentationVideo",
|
|
167
|
-
"link": "https://www.youtube.com/channel/UC81WrqqnYmigub0fTNKT-Mw",
|
|
168
|
-
"order": 2,
|
|
169
|
-
"name": "Your external video links here "
|
|
170
|
-
}
|
|
171
|
-
]
|
|
172
|
-
},
|
|
173
|
-
"columnAds": [
|
|
174
|
-
{
|
|
175
|
-
"image": "/img/tier1-default-sponsor-space1.png",
|
|
176
|
-
"button": "",
|
|
177
|
-
"link": "https://www.fntech.com"
|
|
178
|
-
}
|
|
179
|
-
],
|
|
180
|
-
"id": 26,
|
|
181
|
-
"email": "support@fntech.com",
|
|
182
|
-
"usesSponsorPage": true
|
|
183
|
-
}
|
|
184
|
-
]
|
|
185
|
-
}
|
|
186
|
-
]
|
|
187
|
-
}
|
|
1
|
+
[]
|
package/src/pages/a/[...].js
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { Router, Location } from "@reach/router";
|
|
3
3
|
import { connect } from "react-redux";
|
|
4
|
-
import LobbyPage from "../../templates/lobby-page";
|
|
5
4
|
import EventPage from "../../templates/event-page";
|
|
6
5
|
import PostersPage from "../../templates/posters-page";
|
|
7
6
|
import SchedulePage from "../../templates/schedule-page";
|
|
8
|
-
import SponsorPage from "../../templates/sponsor-page"
|
|
9
|
-
import ExpoHallPage from "../../templates/expo-hall-page"
|
|
10
|
-
import FullProfilePage from "../../templates/full-profile-page"
|
|
11
|
-
import WithAuthzRoute from "../../routes/WithAuthzRoute"
|
|
7
|
+
import SponsorPage from "../../templates/sponsor-page";
|
|
8
|
+
import ExpoHallPage from "../../templates/expo-hall-page";
|
|
9
|
+
import FullProfilePage from "../../templates/full-profile-page";
|
|
10
|
+
import WithAuthzRoute from "../../routes/WithAuthzRoute";
|
|
12
11
|
import WithAuthRoute from "../../routes/WithAuthRoute";
|
|
13
|
-
import ExtraQuestionsPage from "../../templates/extra-questions-page"
|
|
12
|
+
import ExtraQuestionsPage from "../../templates/extra-questions-page";
|
|
14
13
|
import ShowOpenRoute from "../../routes/ShowOpenRoute";
|
|
15
14
|
import WithBadgeRoute from "../../routes/WithBadgeRoute";
|
|
16
15
|
import PosterDetailPage from "../../templates/poster-detail-page";
|
|
@@ -22,7 +21,7 @@ import Seo from "../../components/Seo";
|
|
|
22
21
|
import Link from "../../components/Link";
|
|
23
22
|
import { titleFromPathname } from "../../utils/urlFormating";
|
|
24
23
|
|
|
25
|
-
const App = ({ isLoggedUser, user,
|
|
24
|
+
const App = ({ isLoggedUser, user, summitPhase, allowClick = true }) => {
|
|
26
25
|
return (
|
|
27
26
|
<Location>
|
|
28
27
|
{({ location }) => (
|
|
@@ -38,18 +37,18 @@ const App = ({ isLoggedUser, user, summit_phase, allowClick = true }) => {
|
|
|
38
37
|
/>
|
|
39
38
|
<WithAuthRoute path="/" isLoggedIn={isLoggedUser} location={location}>
|
|
40
39
|
<MyTicketsPage path="/my-tickets" isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
41
|
-
<FullProfilePage path="/profile"
|
|
40
|
+
<FullProfilePage path="/profile" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
42
41
|
<WithTicketRoute path="/extra-questions" location={location}>
|
|
43
42
|
<ExtraQuestionsPage path="/" isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
44
43
|
</WithTicketRoute>
|
|
45
|
-
<WithAuthzRoute path="/"
|
|
44
|
+
<WithAuthzRoute path="/" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location}>
|
|
46
45
|
<PostersPage path="/posters" trackGroupId={0} location={location} />
|
|
47
46
|
<PostersPage path="/posters/:trackGroupId" location={location} />
|
|
48
47
|
<PosterDetailPage path="/poster/:presentationId/" isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
49
48
|
<SchedulePage
|
|
50
49
|
path="/my-schedule"
|
|
51
50
|
location={location}
|
|
52
|
-
|
|
51
|
+
summitPhase={summitPhase}
|
|
53
52
|
isLoggedIn={isLoggedUser}
|
|
54
53
|
user={user}
|
|
55
54
|
scheduleProps={{
|
|
@@ -60,13 +59,12 @@ const App = ({ isLoggedUser, user, summit_phase, allowClick = true }) => {
|
|
|
60
59
|
schedKey="my-schedule-main"
|
|
61
60
|
allowClick={allowClick}
|
|
62
61
|
/>
|
|
63
|
-
<ShowOpenRoute path="/"
|
|
64
|
-
<WithBadgeRoute path="/event/:eventId"
|
|
65
|
-
<EventPage path="/"
|
|
62
|
+
<ShowOpenRoute path="/" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location}>
|
|
63
|
+
<WithBadgeRoute path="/event/:eventId" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location}>
|
|
64
|
+
<EventPage path="/" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
66
65
|
</WithBadgeRoute>
|
|
67
|
-
<
|
|
68
|
-
<
|
|
69
|
-
<ExpoHallPage path="/sponsors/" summit_phase={summit_phase} isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
66
|
+
<SponsorPage path="/sponsor/:sponsorId" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
67
|
+
<ExpoHallPage path="/sponsors/" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
70
68
|
</ShowOpenRoute>
|
|
71
69
|
</WithAuthzRoute>
|
|
72
70
|
</WithAuthRoute>
|
|
@@ -78,7 +76,7 @@ const App = ({ isLoggedUser, user, summit_phase, allowClick = true }) => {
|
|
|
78
76
|
|
|
79
77
|
const mapStateToProps = ({ loggedUserState, userState, clockState, settingState, summitState }) => ({
|
|
80
78
|
isLoggedUser: loggedUserState.isLoggedUser,
|
|
81
|
-
|
|
79
|
+
summitPhase: clockState.summit_phase,
|
|
82
80
|
user: userState,
|
|
83
81
|
summitId: summitState?.summit?.id,
|
|
84
82
|
lastBuild: settingState.lastBuild,
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { graphql } from "gatsby";
|
|
3
|
+
import { Router, Location } from "@reach/router";
|
|
4
|
+
import { connect } from "react-redux";
|
|
5
|
+
import LobbyPage from "../../templates/lobby-page";
|
|
6
|
+
import WithAuthzRoute from "../../routes/WithAuthzRoute";
|
|
7
|
+
import WithAuthRoute from "../../routes/WithAuthRoute";
|
|
8
|
+
import ShowOpenRoute from "../../routes/ShowOpenRoute";
|
|
9
|
+
import withRealTimeUpdates from "../../utils/real_time_updates/withRealTimeUpdates";
|
|
10
|
+
import withFeedsWorker from "../../utils/withFeedsWorker";
|
|
11
|
+
import Seo from "../../components/Seo";
|
|
12
|
+
|
|
13
|
+
export const lobbyPageQuery = graphql`
|
|
14
|
+
query {
|
|
15
|
+
lobbyPageJson {
|
|
16
|
+
hero {
|
|
17
|
+
title
|
|
18
|
+
subTitle
|
|
19
|
+
background {
|
|
20
|
+
src {
|
|
21
|
+
childImageSharp {
|
|
22
|
+
gatsbyImageData (
|
|
23
|
+
quality: 100
|
|
24
|
+
placeholder: BLURRED
|
|
25
|
+
)
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
alt
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
centerColumn {
|
|
32
|
+
speakers {
|
|
33
|
+
showTodaySpeakers
|
|
34
|
+
showFeatureSpeakers
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
liveNowFeaturedEventId
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
`;
|
|
41
|
+
|
|
42
|
+
const App = ({ data, isLoggedUser, user, summitPhase }) => {
|
|
43
|
+
return (
|
|
44
|
+
<Location>
|
|
45
|
+
{({ location }) => (
|
|
46
|
+
<Router basepath="/a" >
|
|
47
|
+
<WithAuthRoute path="/" isLoggedIn={isLoggedUser} location={location}>
|
|
48
|
+
<WithAuthzRoute path="/" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location}>
|
|
49
|
+
<ShowOpenRoute path="/" summitPhase={summitPhase} isLoggedIn={isLoggedUser} user={user} location={location}>
|
|
50
|
+
<LobbyPage path="/" data={data} isLoggedIn={isLoggedUser} user={user} location={location} />
|
|
51
|
+
</ShowOpenRoute>
|
|
52
|
+
</WithAuthzRoute>
|
|
53
|
+
</WithAuthRoute>
|
|
54
|
+
</Router>
|
|
55
|
+
)}
|
|
56
|
+
</Location>
|
|
57
|
+
);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
const mapStateToProps = ({ loggedUserState, userState, clockState }) => ({
|
|
61
|
+
isLoggedUser: loggedUserState.isLoggedUser,
|
|
62
|
+
summitPhase: clockState.summit_phase,
|
|
63
|
+
user: userState
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
export default connect(mapStateToProps, {})(withFeedsWorker(withRealTimeUpdates(App)));
|
|
67
|
+
|
|
68
|
+
export const Head = ({
|
|
69
|
+
location
|
|
70
|
+
}) => (
|
|
71
|
+
<Seo
|
|
72
|
+
title={"Lobby"}
|
|
73
|
+
pathname={location.pathname}
|
|
74
|
+
/>
|
|
75
|
+
);
|
|
@@ -5,7 +5,6 @@ import { RESET_STATE, SYNC_DATA, UPDATE_LAST_CHECK_FOR_NOVELTIES } from "../acti
|
|
|
5
5
|
import colors from "data/colors.json";
|
|
6
6
|
// TODO: dont store build timestamps in site-settings, use another file
|
|
7
7
|
import settings from "content/site-settings/index.json";
|
|
8
|
-
import lobbyPageSettings from "content/lobby-page/index.json";
|
|
9
8
|
// TODO: should this live in reducer or should be accessed though graphql?
|
|
10
9
|
import marketingPageSettings from "content/marketing-page/index.json";
|
|
11
10
|
import postersPages from "content/posters-pages.json";
|
|
@@ -20,7 +19,6 @@ const DEFAULT_STATE = {
|
|
|
20
19
|
widgets: settings.widgets,
|
|
21
20
|
colorSettings: colors,
|
|
22
21
|
marketingPageSettings: marketingPageSettings,
|
|
23
|
-
lobbyPageSettings: lobbyPageSettings,
|
|
24
22
|
posterPagesSettings: postersPages,
|
|
25
23
|
// this keeps tracks of last data synch
|
|
26
24
|
lastDataSync: settings.lastBuild,
|
|
@@ -11,7 +11,7 @@ import moment from "moment-timezone";
|
|
|
11
11
|
*
|
|
12
12
|
* @param children
|
|
13
13
|
* @param isAuthorized
|
|
14
|
-
* @param
|
|
14
|
+
* @param summitPhase
|
|
15
15
|
* @param requireExtraQuestions
|
|
16
16
|
* @param hasTicket
|
|
17
17
|
* @param userProfile
|
|
@@ -22,7 +22,7 @@ import moment from "moment-timezone";
|
|
|
22
22
|
const ShowOpenRoute = ({
|
|
23
23
|
children,
|
|
24
24
|
isAuthorized,
|
|
25
|
-
|
|
25
|
+
summitPhase,
|
|
26
26
|
requireExtraQuestions,
|
|
27
27
|
hasTicket,
|
|
28
28
|
userProfile,
|
|
@@ -31,21 +31,21 @@ const ShowOpenRoute = ({
|
|
|
31
31
|
|
|
32
32
|
// if we are at show time, and we have an attendee, perform virtual check-in
|
|
33
33
|
useEffect(() => {
|
|
34
|
-
if(hasTicket &&
|
|
34
|
+
if(hasTicket && summitPhase === PHASES.DURING){
|
|
35
35
|
// verify if we have an attendee , and if so do the virtual check in
|
|
36
36
|
let attendee = userProfile?.summit_tickets[0]?.owner || null;
|
|
37
37
|
if(attendee)
|
|
38
38
|
doVirtualCheckIn(attendee);
|
|
39
39
|
}
|
|
40
|
-
},[
|
|
40
|
+
},[summitPhase, hasTicket, userProfile, doVirtualCheckIn]);
|
|
41
41
|
|
|
42
42
|
const userCanByPassAuthz = () => {
|
|
43
43
|
return isAuthorized;
|
|
44
44
|
};
|
|
45
45
|
|
|
46
|
-
// if
|
|
46
|
+
// if summitPhase wasn't initialized yet (eg: due to a delay in the reducer),
|
|
47
47
|
// this render shouldn't continue
|
|
48
|
-
if (
|
|
48
|
+
if (summitPhase === null) return null;
|
|
49
49
|
|
|
50
50
|
// if we are providing the now fragment param then let the clock
|
|
51
51
|
// component set it, so we need to bypass this next check
|
|
@@ -60,7 +60,7 @@ const ShowOpenRoute = ({
|
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
// if summit didnt started yet ...
|
|
63
|
-
if (!shouldBypassCheck && !userCanByPassAuthz() &&
|
|
63
|
+
if (!shouldBypassCheck && !userCanByPassAuthz() && summitPhase === PHASES.BEFORE) {
|
|
64
64
|
return <HeroComponent title="You are now logged in. Additional event info is now available on the website." redirectTo="/" />;
|
|
65
65
|
}
|
|
66
66
|
|
package/src/styles/colors.scss
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
$color_primary : #
|
|
2
|
-
$color_primary_contrast : #
|
|
3
|
-
$color_secondary : #
|
|
4
|
-
$color_secondary_contrast : #
|
|
5
|
-
$color_accent : #
|
|
6
|
-
$color_text_dark : #
|
|
1
|
+
$color_primary : #000000;
|
|
2
|
+
$color_primary_contrast : #CCCDD3;
|
|
3
|
+
$color_secondary : #181818;
|
|
4
|
+
$color_secondary_contrast : #181818;
|
|
5
|
+
$color_accent : #00A2FF;
|
|
6
|
+
$color_text_dark : #000000;
|
|
7
7
|
$color_text_med : #828282;
|
|
8
8
|
$color_text_light : #ffffff;
|
|
9
9
|
$color_gray_darker : #4A4A4A;
|
|
10
10
|
$color_gray_dark : #999999;
|
|
11
11
|
$color_gray_light : #DFDFDF;
|
|
12
12
|
$color_gray_lighter : #F2F2F2;
|
|
13
|
-
$color_text_input_hints : #
|
|
13
|
+
$color_text_input_hints : #131313;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import PropTypes from "prop-types";
|
|
3
3
|
import { navigate } from "gatsby";
|
|
4
|
+
import { getSrc } from "gatsby-plugin-image";
|
|
4
5
|
import { connect } from "react-redux";
|
|
5
6
|
|
|
6
7
|
import Layout from "../components/Layout";
|
|
@@ -41,13 +42,15 @@ export const LobbyPageTemplate = class extends React.Component {
|
|
|
41
42
|
const {
|
|
42
43
|
user,
|
|
43
44
|
summit,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
data: {
|
|
46
|
+
lobbyPageJson: {
|
|
47
|
+
hero,
|
|
48
|
+
centerColumn,
|
|
49
|
+
liveNowFeaturedEventId
|
|
50
|
+
}
|
|
48
51
|
},
|
|
49
52
|
lastDataSync
|
|
50
|
-
|
|
53
|
+
} = this.props;
|
|
51
54
|
|
|
52
55
|
return (
|
|
53
56
|
<>
|
|
@@ -55,7 +58,7 @@ export const LobbyPageTemplate = class extends React.Component {
|
|
|
55
58
|
<PageHeader
|
|
56
59
|
title={hero.title}
|
|
57
60
|
subtitle={hero.subTitle}
|
|
58
|
-
backgroundImageSrc={hero.background
|
|
61
|
+
backgroundImageSrc={hero.background ? getSrc(hero.background.src) : null}
|
|
59
62
|
/>
|
|
60
63
|
}
|
|
61
64
|
<div className="px-5 py-5 mb-6">
|
|
@@ -139,31 +142,33 @@ const OrchestedTemplate = withOrchestra(LobbyPageTemplate);
|
|
|
139
142
|
const LobbyPage = (
|
|
140
143
|
{
|
|
141
144
|
location,
|
|
145
|
+
data,
|
|
142
146
|
user,
|
|
143
147
|
getUserProfile,
|
|
144
148
|
summit,
|
|
145
|
-
lastDataSync
|
|
146
|
-
lobbyPageSettings
|
|
149
|
+
lastDataSync
|
|
147
150
|
}
|
|
148
151
|
) => (
|
|
149
152
|
<Layout location={location}>
|
|
150
153
|
<AttendanceTrackerComponent sourceName="LOBBY"/>
|
|
151
154
|
<OrchestedTemplate
|
|
152
155
|
user={user}
|
|
156
|
+
data={data}
|
|
153
157
|
getUserProfile={getUserProfile}
|
|
154
158
|
summit={summit}
|
|
155
159
|
lastDataSync={lastDataSync}
|
|
156
|
-
lobbyPageSettings={lobbyPageSettings}
|
|
157
160
|
/>
|
|
158
161
|
</Layout>
|
|
159
162
|
);
|
|
160
163
|
|
|
161
164
|
LobbyPage.propTypes = {
|
|
165
|
+
data: PropTypes.object,
|
|
162
166
|
user: PropTypes.object,
|
|
163
167
|
getUserProfile: PropTypes.func
|
|
164
168
|
};
|
|
165
169
|
|
|
166
170
|
LobbyPageTemplate.propTypes = {
|
|
171
|
+
data: PropTypes.object,
|
|
167
172
|
user: PropTypes.object,
|
|
168
173
|
getUserProfile: PropTypes.func
|
|
169
174
|
};
|
|
@@ -171,8 +176,7 @@ LobbyPageTemplate.propTypes = {
|
|
|
171
176
|
const mapStateToProps = ({userState, summitState, settingState}) => ({
|
|
172
177
|
user: userState,
|
|
173
178
|
summit: summitState.summit,
|
|
174
|
-
lastDataSync: settingState.lastDataSync
|
|
175
|
-
lobbyPageSettings: settingState.lobbyPageSettings,
|
|
179
|
+
lastDataSync: settingState.lastDataSync
|
|
176
180
|
});
|
|
177
181
|
|
|
178
182
|
export default connect(mapStateToProps, {getUserProfile})(LobbyPage);
|