-
Notifications
You must be signed in to change notification settings - Fork 5
/
wrap-with-provider.js
52 lines (49 loc) · 1.89 KB
/
wrap-with-provider.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import React from 'react';
import CONFIG from './backend-config';
import { AuthProvider } from './src/context/Authentication';
import { MunicipalityProvider } from './src/context/Municipality';
import SurveySaver from './src/components/SurveySaver';
import { OverlayProvider } from './src/context/Overlay';
import { OnboardingModalProvider } from './src/context/OnboardingModal/';
import { StickyBannerProvider } from './src/context/StickyBanner';
import { SnackbarMessageProvider } from './src/context/Snackbar/index.js';
import SnackbarProvider from 'react-simple-snackbar';
// This is used to wrap the page, so we can configure AWS Cognito in this wrapper,
// so it only gets configured once, not every time a page changes
export default (element, extractor) => {
// APP_CLIENT_ID was in onCreateWebpackConfig callback in gatsby-node
const clientId = APP_CLIENT_ID; // eslint-disable-line no-undef
if (clientId) {
if (typeof window !== `undefined`) {
import(/* webpackChunkName: "Amplify" */ '@aws-amplify/auth').then(
({ default: Amplify }) => {
Amplify.configure({
region: CONFIG.COGNITO.REGION,
userPoolId: CONFIG.COGNITO.USER_POOL_ID,
userPoolWebClientId: clientId,
});
}
);
}
} else {
console.log('no userPoolWebClientId provided');
}
const app = (
<AuthProvider>
<MunicipalityProvider>
<SurveySaver>
<OverlayProvider>
<OnboardingModalProvider>
<StickyBannerProvider>
<SnackbarProvider>
<SnackbarMessageProvider>{element}</SnackbarMessageProvider>
</SnackbarProvider>
</StickyBannerProvider>
</OnboardingModalProvider>
</OverlayProvider>
</SurveySaver>
</MunicipalityProvider>
</AuthProvider>
);
return extractor ? extractor.collectChunks(app) : app;
};