{"version":3,"sources":["theme.js","components/api-authorization/ApiAuthorizationConstants.js","components/api-authorization/AuthorizeService.js","components/api-authorization/AuthorizeRoute.js","components/Loader.js","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/api-authorization/ApiAuthorizationRoutes.js","assets/img/error-image.png","components/Error.js","components/Rewards.js","components/api-authorization/LoginMenu.js","components/hooks/useAuthenticated.js","assets/img/logo.png","components/NavMenu.js","components/Footer.js","components/Layout.js","query.js","components/RewardDetails.js","App.js","index.js"],"names":["theme","createMuiTheme","palette","primary","light","main","dark","contrastText","secondary","text","typography","body1","fontFamily","spacing","ApplicationName","QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","authService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","this","getUser","user","profile","ensureUserManagerInitialized","userManager","access_token","state","signinSilent","createArguments","silentUser","updateState","success","console","log","Error","signinPopup","popUpUser","message","error","signinRedirect","redirect","url","signinCallback","signoutPopup","undefined","signoutRedirect","signoutCallback","response","data","notifySubscribers","callback","push","subscription","subscriptionId","subscriptionIndex","map","element","index","found","filter","length","splice","i","useReplaceToNavigate","status","AuthenticationResultStatus","Fail","Success","Redirect","fetch","ok","json","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","a","removeUser","AuthorizeRoute","props","ready","authenticated","_subscription","subscribe","authenticationChanged","populateAuthenticationState","unsubscribe","link","document","createElement","href","window","location","returnUrl","protocol","host","pathname","search","hash","redirectUrl","encodeURI","Component","component","rest","render","to","isAuthenticated","setState","Loader","LinearProgress","color","myStyles","errorMessage","textAlign","fontSize","fontWeight","marginTop","action","login","getReturnUrl","processLoginCallback","URLSearchParams","get","redirectToProfile","redirectToRegister","style","signIn","result","navigateToReturnUrl","completeSignIn","fromQuery","startsWith","origin","redirectToApiAuthorizationPath","apiAuthorizationPath","replace","Logout","isReady","history","local","logout","processLogoutCallback","signOut","completeSignOut","process","ApiAuthorizationRoutes","path","loginAction","logoutAction","name","useStyles","makeStyles","root","marginLeft","verticalAlign","errorImage","maxWidth","height","classes","Container","Box","display","justifyContent","src","className","m","Typography","variant","ul","margin","padding","listStyle","toolbarTitle","flexGrow","toolbarSubtitle","cardMedia","Rewards","useHistory","useQuery","isLoading","rewards","handleCardClick","event","reward","target","id","generatePath","Grid","container","alignItems","r","item","xs","sm","lg","Card","md","CardActionArea","onClick","CardMedia","image","smallImageUrl","title","CardContent","align","noWrap","textTransform","linkLogin","LoginMenu","useState","auth","setAuth","useEffect","fetchData","useAuthenticated","userName","setUserName","fetchUserName","getAccessToken","token","headers","then","d","fullName","catch","err","View","profilePath","logoutPath","Button","Link","toUpperCase","authenticatedView","body","toolbar","flexWrap","backgroundColor","logo","marginRight","NavMenu","NavBar","AppBar","position","appBar","Toolbar","alt","footerContainer","borderTop","footerLink","textDecoration","Footer","Date","getFullYear","flexDirection","minHeight","footer","Layout","disableGutters","children","DefaultQueryFn","queryKey","Post","postData","options","method","JSON","stringify","redeemBtn","backBtn","Redeem","type","RedeemButton","mutation","useMutation","mt","isError","isSuccess","disabled","mutate","startIcon","fullWidth","RedeemResult","partnerSiteUrl","open","GenericCode","gutterBottom","code","FaqAndTncDialog","faqOpen","setFaqOpen","tncOpen","setTncOpen","faqContent","p","faqHeader","termsContent","termsHeader","Dialog","onClose","DialogTitle","DialogContent","source","DialogActions","autoFocus","useParams","rewardObj","goBack","largeImageUrl","description","queryClient","QueryClient","defaultOptions","queries","queryFn","refetchOnWindowFocus","retry","App","QueryClientProvider","client","ThemeProvider","CssBaseline","exact","RewardDetails","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","basename"],"mappings":"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","file":"static/js/main.e733c890.chunk.js","sourcesContent":["import { createMuiTheme } from '@material-ui/core/styles';\r\n\r\nconst theme = createMuiTheme({\r\n palette: {\r\n primary: {\r\n light: '#373d3d',\r\n main: '#111717',\r\n dark: '#000000',\r\n contrastText: '#fff',\r\n },\r\n secondary: {\r\n light: '#ff66a4',\r\n main: '#ed2776',\r\n dark: '#b5004b',\r\n contrastText: '#fff',\r\n },\r\n text: {\r\n secondary: '#fff'\r\n },\r\n },\r\n typography: {\r\n body1: {\r\n fontFamily: \"Roboto\"\r\n },\r\n },\r\n spacing: 6\r\n});\r\n\r\nexport default theme;","export const ApplicationName = 'SuperpetClub';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: '/Identity/Account/Register',\r\n IdentityManagePath: '/Identity/Account/Manage'\r\n};\r\n","import { UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName } from './ApiAuthorizationConstants';\r\n\r\nexport class AuthorizeService {\r\n _callbacks = [];\r\n _nextSubscriptionId = 0;\r\n _user = null;\r\n _isAuthenticated = false;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser();\r\n return !!user;\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile;\r\n }\r\n\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.profile;\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.access_token;\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const silentUser = await this.userManager.signinSilent(this.createArguments());\r\n this.updateState(silentUser);\r\n return this.success(state);\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n console.log(\"Silent authentication error: \", silentError);\r\n\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\r\n this.updateState(popUpUser);\r\n return this.success(state);\r\n } catch (popUpError) {\r\n if (popUpError.message === \"Popup window closed\") {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error(\"The user closed the window.\");\r\n } else if (!this._popUpDisabled) {\r\n console.log(\"Popup authentication error: \", popUpError);\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectError) {\r\n console.log(\"Redirect authentication error: \", redirectError);\r\n return this.error(redirectError);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.signinCallback(url);\r\n this.updateState(user);\r\n return this.success(user && user.state);\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error);\r\n return this.error('There was an error signing in.');\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments());\r\n this.updateState(undefined);\r\n return this.success(state);\r\n } catch (popupSignOutError) {\r\n console.log(\"Popup signout error: \", popupSignOutError);\r\n try {\r\n await this.userManager.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError) {\r\n console.log(\"Redirect signout error: \", redirectSignOutError);\r\n return this.error(redirectSignOutError);\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const response = await this.userManager.signoutCallback(url);\r\n this.updateState(null);\r\n return this.success(response && response.data);\r\n } catch (error) {\r\n console.log(`There was an error trying to log out '${error}'.`);\r\n return this.error(error);\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user;\r\n this._isAuthenticated = !!this._user;\r\n this.notifySubscribers();\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\r\n return this._nextSubscriptionId - 1;\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\r\n .filter(element => element.found === true);\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1);\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback;\r\n callback();\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message };\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state };\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return;\r\n }\r\n\r\n let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`);\r\n }\r\n\r\n let settings = await response.json();\r\n settings.automaticSilentRenew = true;\r\n settings.includeIdTokenInSilentRenew = true;\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n });\r\n\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser();\r\n this.updateState(undefined);\r\n });\r\n }\r\n\r\n static get instance() { return authService }\r\n}\r\n\r\nconst authService = new AuthorizeService();\r\n\r\nexport default authService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n};\r\n","import React from 'react'\r\nimport { Component } from 'react'\r\nimport { Route, Redirect } from 'react-router-dom'\r\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants'\r\nimport authService from './AuthorizeService'\r\n\r\nexport default class AuthorizeRoute extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n ready: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.authenticationChanged());\r\n this.populateAuthenticationState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n render() {\r\n const { ready, authenticated } = this.state;\r\n var link = document.createElement(\"a\");\r\n link.href = window.location.href;\r\n const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(returnUrl)}`\r\n if (!ready) {\r\n return
;\r\n } else {\r\n const { component: Component, ...rest } = this.props;\r\n return {\r\n if (authenticated) {\r\n return \r\n } else {\r\n return \r\n }\r\n }} />\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ ready: true, authenticated });\r\n }\r\n\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false });\r\n await this.populateAuthenticationState();\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { LinearProgress } from \"@material-ui/core\";\r\n\r\nfunction Loader() {\r\n return ;\r\n}\r\n\r\nexport default Loader;","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\r\nimport Loader from '../Loader';\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\n\r\nconst myStyles = {\r\n errorMessage: {\r\n textAlign: 'center',\r\n fontSize: '1.5rem',\r\n fontWeight: 'bolder',\r\n marginTop: '25vh'\r\n }\r\n};\r\n\r\nexport class Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LoginActions.Login:\r\n this.login(this.getReturnUrl());\r\n break;\r\n case LoginActions.LoginCallback:\r\n this.processLoginCallback();\r\n break;\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search);\r\n const error = params.get(QueryParameterNames.Message);\r\n this.setState({ message: error });\r\n break;\r\n case LoginActions.Profile:\r\n this.redirectToProfile();\r\n break;\r\n case LoginActions.Register:\r\n this.redirectToRegister();\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n render() {\r\n const action = this.props.action;\r\n const { message } = this.state;\r\n\r\n if (!!message) {\r\n return
{message}
\r\n } else {\r\n switch (action) {\r\n case LoginActions.Login:\r\n return (
Processing Login...

);\r\n case LoginActions.LoginCallback:\r\n return (
Checking Your Login Information...

);\r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return (
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async login(returnUrl) {\r\n const state = { returnUrl };\r\n const result = await authService.signIn(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`);\r\n }\r\n }\r\n\r\n async processLoginCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignIn(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid authentication result status '${result.status}'.`);\r\n }\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\r\n }\r\n\r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\r\n }\r\n\r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\r\n }\r\n\r\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\r\n const redirectUrl = `${window.location.origin}${apiAuthorizationPath}`;\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser he gets sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl);\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React, { Component } from 'react'\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { LogoutActions } from './ApiAuthorizationConstants';\r\nimport Loader from './../Loader';\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\n\r\nconst myStyles = {\r\n errorMessage: {\r\n textAlign: 'center',\r\n fontSize: '1.5rem',\r\n fontWeight: 'bolder',\r\n marginTop: '25vh'\r\n }\r\n};\r\n\r\nexport class Logout extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined,\r\n isReady: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n if (!!window.history.state.state.local) {\r\n this.logout(this.getReturnUrl());\r\n } else {\r\n // This prevents regular links to /authentication/logout from triggering a logout\r\n this.setState({ isReady: true, message: \"The logout was not initiated from within the page.\" });\r\n }\r\n break;\r\n case LogoutActions.LogoutCallback:\r\n this.processLogoutCallback();\r\n break;\r\n case LogoutActions.LoggedOut:\r\n this.setState({ isReady: true, message: \"You successfully logged out!\" });\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n\r\n this.populateAuthenticationState();\r\n }\r\n\r\n render() {\r\n const { isReady, message } = this.state;\r\n\r\n if (!isReady) {\r\n return
\r\n }\r\n if (!!message) {\r\n return (
{message}
);\r\n } else {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n case LogoutActions.LogoutCallback:\r\n return (
Processing logout...

);\r\n case LogoutActions.LoggedOut:\r\n return (
{message}
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async logout(returnUrl) {\r\n const state = { returnUrl };\r\n const isauthenticated = await authService.isAuthenticated();\r\n if (isauthenticated) {\r\n const result = await authService.signOut(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n } else {\r\n this.setState({ message: \"You successfully logged out!\" });\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignOut(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ isReady: true, authenticated });\r\n }\r\n\r\n getReturnUrl() {\r\n return process.env.REACT_APP_MAIN_PORTAL_URL;\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n return window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Login } from './Login'\r\nimport { Logout } from './Logout'\r\nimport { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants';\r\n\r\nexport default class ApiAuthorizationRoutes extends Component {\r\n\r\n render() {\r\n return (\r\n <>\r\n loginAction(LoginActions.Login)} />\r\n loginAction(LoginActions.LoginFailed)} />\r\n loginAction(LoginActions.LoginCallback)} />\r\n loginAction(LoginActions.Profile)} />\r\n loginAction(LoginActions.Register)} />\r\n logoutAction(LogoutActions.Logout)} />\r\n logoutAction(LogoutActions.LogoutCallback)} />\r\n logoutAction(LogoutActions.LoggedOut)} />\r\n \r\n );\r\n }\r\n}\r\n\r\nfunction loginAction(name){\r\n return ();\r\n}\r\n\r\nfunction logoutAction(name) {\r\n return ();\r\n}\r\n","export default __webpack_public_path__ + \"static/media/error-image.d1979954.png\";","import React from \"react\";\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Typography, Container, Box } from '@material-ui/core';\r\nimport { Link } from 'react-router-dom';\r\nimport errorImage from '../assets/img/error-image.png';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n '& > * + *': {\r\n marginLeft: theme.spacing(20),\r\n },\r\n verticalAlign: 'middle',\r\n textAlign: 'center',\r\n },\r\n errorImage: {\r\n maxWidth: '100%',\r\n height: 'auto'\r\n }\r\n}));\r\n\r\nconst Error = () => {\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n There has been an error, please return to the \r\n home page\r\n  and try again.\r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default Error;\r\n","import React from 'react';\r\nimport { useQuery } from \"react-query\";\r\nimport { useHistory, generatePath } from 'react-router-dom';\r\n\r\nimport { Typography, Container, Grid, Card, CardMedia, CardContent, CardActionArea } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport Loader from './Loader';\r\n\r\nconst rewardThumbnailImagePath = 'assets/img/rewards-thumbnail/'\r\n\r\nconst useStyles = makeStyles(() => ({\r\n '@global': {\r\n ul: {\r\n margin: 0,\r\n padding: 0,\r\n listStyle: 'none',\r\n }\r\n },\r\n toolbarTitle: {\r\n flexGrow: 1,\r\n margin: '20px 20px 10px 20px'\r\n },\r\n toolbarSubtitle: {\r\n flexGrow: 1,\r\n margin: '0 20px 20px 20px'\r\n },\r\n cardMedia: {\r\n height: '290px'\r\n },\r\n}));\r\n\r\nconst Rewards = () => {\r\n\r\n const history = useHistory();\r\n const { isLoading, error, data: rewards } = useQuery(`/rewards/all`);\r\n\r\n const handleCardClick = (event) => {\r\n let reward = encodeURI(event.target.id);\r\n let url = generatePath(\"/details/:reward\", { reward });\r\n history.push(url);\r\n }\r\n\r\n const classes = useStyles();\r\n\r\n if (isLoading) return ;\r\n\r\n if (error) return ;\r\n\r\n return (\r\n \r\n \r\n {\r\n rewards.map((r) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {r.title}\r\n \r\n \r\n \r\n \r\n \r\n ))\r\n }\r\n \r\n \r\n );\r\n}\r\n\r\nexport default function () {\r\n\r\n const classes = useStyles();\r\n\r\n document.title = `Super Pet Club | Rewards`;\r\n \r\n return (\r\n
\r\n \r\n Member Benefits\r\n \r\n \r\n Save up to £500 per year on all your pet needs.\r\n \r\n\r\n \r\n
\r\n );\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Button from '@material-ui/core/Button';\r\n\r\nimport authService from './AuthorizeService';\r\nimport useAuthenticated from './../hooks/useAuthenticated';\r\nimport { ApplicationPaths } from './ApiAuthorizationConstants'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n link: {\r\n margin: theme.spacing(1, 1.5),\r\n color: '#f5f5f5',\r\n textTransform: 'none'\r\n },\r\n linkLogin: {\r\n margin: theme.spacing(1, 1.5),\r\n color: '#f5f5f5'\r\n },\r\n}));\r\n\r\nexport default function LoginMenu() {\r\n\r\n const classes = useStyles();\r\n\r\n const { isAuthenticated } = useAuthenticated();\r\n const [userName, setUserName] = useState('');\r\n\r\n const fetchUserName = async () => {\r\n const token = await authService.getAccessToken();\r\n\r\n fetch('/api/user', {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n })\r\n .then(r => r.json())\r\n .then(d => setUserName(d.fullName))\r\n .catch((err) => console.log(err));\r\n }\r\n\r\n useEffect(() => {\r\n fetchUserName();\r\n }, []);\r\n\r\n function authenticatedView(profilePath, logoutPath) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n function View() {\r\n if (isAuthenticated) {\r\n const profilePath = `${ApplicationPaths.Profile}`;\r\n const logoutPath = { pathname: `${ApplicationPaths.LogOut}`, state: { local: true } };\r\n return authenticatedView(profilePath, logoutPath);\r\n }\r\n return ();\r\n }\r\n\r\n return ();\r\n}\r\n\r\n","import { useEffect, useState } from 'react';\r\nimport authService from './../api-authorization/AuthorizeService';\r\n\r\nexport default function useAuthenticated() {\r\n const [auth, setAuth] = useState({ isAuthenticated: false, ready: false });\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n const isAuthenticated = await authService.isAuthenticated();\r\n\r\n setAuth({ isAuthenticated: isAuthenticated, ready: true });\r\n }\r\n\r\n let subscription = authService.subscribe(() => fetchData());\r\n\r\n fetchData(); \r\n \r\n return () => authService.unsubscribe(subscription);\r\n\r\n }, [setAuth]);\r\n\r\n return auth;\r\n}\r\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ4AAACbCAYAAACTbXXhAAAACXBIWXMAAAsTAAALEwEAmpwYAAAHLGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNy4wLWMwMDAgNzkuMTM1N2M5ZSwgMjAyMS8wNy8xNC0wMDozOTo1NiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCAyMi4zIChXaW5kb3dzKSIgeG1wOkNyZWF0ZURhdGU9IjIwMjEtMDgtMzFUMTQ6NTk6MzcrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDIxLTA4LTMxVDE1OjMwOjM2KzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDIxLTA4LTMxVDE1OjMwOjM2KzAxOjAwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmJhYzlmMDE3LWUwZTktZTc0Zi05ZTkwLWViOGEwYWVlZjFjYyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNTMzNTlFQzgzMkExMUVCODA1NkM2MkZCODBFNzZERCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjM1MzM1OUVDODMyQTExRUI4MDU2QzYyRkI4MEU3NkREIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgcGhvdG9zaG9wOkNvbG9yTW9kZT0iMyIgcGhvdG9zaG9wOklDQ1Byb2ZpbGU9InNSR0IgSUVDNjE5NjYtMi4xIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MzUzMzU5RTk4MzJBMTFFQjgwNTZDNjJGQjgwRTc2REQiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MzUzMzU5RUE4MzJBMTFFQjgwNTZDNjJGQjgwRTc2REQiLz4gPHhtcE1NOkluZ3JlZGllbnRzPiA8cmRmOkJhZz4gPHJkZjpsaSBzdFJlZjpsaW5rRm9ybT0iUmVmZXJlbmNlU3RyZWFtIiBzdFJlZjpmaWxlUGF0aD0iY2xvdWQtYXNzZXQ6Ly9jYy1hcGktc3RvcmFnZS5hZG9iZS5pby9hc3NldHMvYWRvYmUtbGlicmFyaWVzLzI1N2Q2OWE0LTE3OTQtNGMyMC04NGIxLWYzYmMxMjZjY2JkZDtub2RlPTM3NjZjYzg1LTY5MGQtNGIxMi1iMmYwLWFmMWYyNjJmNTQ4OCIgc3RSZWY6RG9jdW1lbnRJRD0idXVpZDo5MmNkNTY0OS02YWU1LTQ1M2QtYTU0NS1lYWE5OWIwZTI4ZTIiLz4gPC9yZGY6QmFnPiA8L3htcE1NOkluZ3JlZGllbnRzPiA8eG1wTU06SGlzdG9yeT4gPHJkZjpTZXE+IDxyZGY6bGkgc3RFdnQ6YWN0aW9uPSJzYXZlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDpiYWM5ZjAxNy1lMGU5LWU3NGYtOWU5MC1lYjhhMGFlZWYxY2MiIHN0RXZ0OndoZW49IjIwMjEtMDgtMzFUMTU6MzA6MzYrMDE6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMi41IChXaW5kb3dzKSIgc3RFdnQ6Y2hhbmdl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\"","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport { Button, AppBar, Toolbar, Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport LoginMenu from './api-authorization/LoginMenu';\r\nimport logo from \"../assets/img/logo.png\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n '@global': {\r\n ul: {\r\n margin: 0,\r\n padding: 0,\r\n listStyle: 'none'\r\n },\r\n body: {\r\n margin: 0\r\n },\r\n },\r\n toolbar: {\r\n flexWrap: 'wrap',\r\n backgroundColor: '#222'\r\n },\r\n toolbarTitle: {\r\n flexGrow: 1,\r\n color: '#f5f5f5'\r\n },\r\n link: {\r\n margin: theme.spacing(1, 1.5),\r\n color: '#f5f5f5'\r\n },\r\n logo: {\r\n maxWidth: 150,\r\n marginRight: 10,\r\n marginTop: 7\r\n },\r\n}));\r\n\r\nexport default function NavMenu() {\r\n\r\n const classes = useStyles();\r\n\r\n function NavBar() {\r\n return (\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \"Super\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { Typography, Container } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n '@global': {\r\n ul: {\r\n margin: 0,\r\n padding: 0,\r\n listStyle: 'none'\r\n },\r\n body: {\r\n margin: 0\r\n },\r\n },\r\n footerContainer: {\r\n color: '#fff',\r\n marginTop: 40,\r\n padding: '35px 10px',\r\n backgroundColor: '#222',\r\n textAlign: 'center',\r\n borderTop: 'solid #e51767 5px'\r\n },\r\n footerLink: {\r\n color: '#9ed1e6',\r\n textDecoration: 'none',\r\n '&:hover': { //Hover\r\n textDecoration: 'underline'\r\n }\r\n },\r\n}));\r\n\r\nexport default function Footer() {\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n\r\n \r\n\r\n \r\n \r\n © {new Date().getFullYear()} Super Pet Club. All Rights Reserved. All trademarks are the property of their respective owners.\r\n \r\n\r\n \r\n
\r\n Need a hand? Have some questions? We're here for you! Call Us: 0330 460 9565 or Email Us: hello@superpetclub.co.uk. We're open Monday - Friday, 09:00 - 17:30 (exc. bank holidays).\r\n
\r\n
\r\n\r\n
\r\n\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Container from '@material-ui/core/Container';\r\n\r\nimport NavMenu from './NavMenu';\r\nimport Footer from './Footer';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n minHeight: '100vh'\r\n },\r\n main: {\r\n },\r\n footer: {\r\n marginTop: 'auto'\r\n },\r\n}));\r\n\r\nexport default function Layout(props) {\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n {props.children}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n\r\n","import authService from './components/api-authorization/AuthorizeService';\r\nimport { ApplicationPaths, QueryParameterNames } from './components/api-authorization/ApiAuthorizationConstants';\r\n\r\nexport const DefaultQueryFn = async ({ queryKey }) => {\r\n const token = await authService.getAccessToken();\r\n\r\n const response = await fetch(`/api${queryKey[0]}`, {\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n });\r\n\r\n if (response.status === 401) {\r\n window.location.href = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\r\n }\r\n if (!response.ok) {\r\n throw new Error(\"Network response was not Ok\");\r\n }\r\n\r\n return await response.json();\r\n}\r\n\r\nexport const Post = async (url, postData) => {\r\n const token = await authService.getAccessToken();\r\n\r\n let options = {\r\n method: 'POST',\r\n headers: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n };\r\n\r\n if (postData) {\r\n options[\"body\"] = JSON.stringify(postData);\r\n }\r\n\r\n try {\r\n const response = await fetch(`/api${url}`, options);\r\n\r\n if (response.status === 401) {\r\n window.location.href = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\r\n }\r\n\r\n return await response.json().catch(() => response);\r\n }\r\n catch (err) {\r\n return await response;\r\n }\r\n}","import React, { useState } from 'react';\r\nimport { useQuery, useMutation } from \"react-query\";\r\nimport { useParams, useHistory } from 'react-router-dom';\r\nimport ReactMarkdown from \"react-markdown\";\r\nimport StarIcon from '@material-ui/icons/Star';\r\nimport NavigateBeforeIcon from '@material-ui/icons/NavigateBefore';\r\nimport {\r\n Typography,\r\n Container,\r\n Card,\r\n CardMedia,\r\n CardContent,\r\n Button,\r\n Grid,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n Box\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nimport { Post } from '../query';\r\nimport Loader from './Loader';\r\nimport Error from './Error';\r\n\r\nconst rewardHeroImagePath = 'assets/img/rewards-hero/'\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n '@global': {\r\n ul: {\r\n margin: 0,\r\n padding: 0,\r\n listStyle: 'none',\r\n }\r\n },\r\n root: {\r\n flexGrow: 1,\r\n },\r\n toolbarTitle: {\r\n flexGrow: 1,\r\n margin: '25px 20px 20px 20px',\r\n fontWeight: 'bold'\r\n },\r\n cardMedia: {\r\n minHeight: '520px',\r\n maxWidth: '100%'\r\n },\r\n redeemBtn: {\r\n marginTop: theme.spacing(1)\r\n },\r\n backBtn: {\r\n margin: '0 20px 20px 20px'\r\n }\r\n}));\r\n\r\nconst Redeem = (props) => {\r\n switch (props.reward.type) {\r\n case \"PartnerSite\":\r\n case \"MotorEasy\":\r\n case \"RciHotel\":\r\n case \"UniqueCode\":\r\n case \"GenericCode\":\r\n return \r\n default:\r\n return (
Please call our customer service team on the number listed below.
);\r\n }\r\n}\r\n\r\nconst RedeemButton = ({ reward }) => {\r\n\r\n const classes = useStyles();\r\n const mutation = useMutation(() => Post(`/rewards/${reward.id}/redeem`));\r\n\r\n const handleRedeem = () => {\r\n mutation.mutate();\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {mutation.isLoading && }\r\n {mutation.isError && }\r\n\r\n {mutation.isSuccess && }\r\n\r\n
\r\n }\r\n fullWidth>\r\n {\r\n mutation.isLoading\r\n ? '...' : mutation.isSuccess\r\n ? 'Redeemed' : 'Redeem'\r\n }\r\n \r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nconst RedeemResult = (props) => {\r\n switch (props.data.type) {\r\n case \"PartnerSite\":\r\n case \"MotorEasy\":\r\n case \"RciHotel\":\r\n return \r\n case \"UniqueCode\":\r\n case \"GenericCode\":\r\n return \r\n default:\r\n return (
Reward Type not found
);\r\n }\r\n};\r\n\r\nconst Link = ({ data }) => {\r\n\r\n const openNewTab = (url) => {\r\n if (url) {\r\n window.open(url, '_blank');\r\n }\r\n }\r\n\r\n return (
{openNewTab(data.partnerSiteUrl)}
);\r\n}\r\n\r\nconst GenericCode = ({ data }) => {\r\n return (\r\n <>\r\n \r\n Your unique code is: \r\n \r\n \r\n {data.code}\r\n \r\n \r\n );\r\n}\r\n\r\nconst FaqAndTncDialog = ({ data }) => {\r\n\r\n const classes = useStyles();\r\n\r\n const [faqOpen, setFaqOpen] = useState(false);\r\n const [tncOpen, setTncOpen] = useState(false);\r\n\r\n return (\r\n <>\r\n
\r\n \r\n \r\n {\r\n data.faqContent &&\r\n ()\r\n }\r\n \r\n \r\n {\r\n data.termsContent &&\r\n ()\r\n }\r\n \r\n \r\n
\r\n\r\n setFaqOpen(p => !p)}\r\n fullWidth={true}\r\n maxWidth=\"md\"\r\n >\r\n {data.faqHeader}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n setTncOpen(p => !p)}\r\n fullWidth={true}\r\n maxWidth=\"md\"\r\n >\r\n {data.termsHeader}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n}\r\n\r\nexport default function () {\r\n\r\n const history = useHistory();\r\n const { reward } = useParams();\r\n const { isLoading, error, data: rewardObj } = useQuery(`/rewards/${reward}`);\r\n\r\n const classes = useStyles();\r\n\r\n\r\n \r\n\r\n if (isLoading) return ;\r\n\r\n if (error) return ;\r\n\r\n document.title = `Super Pet Club \\u00bb ${rewardObj.title}`;\r\n return <>\r\n\r\n \r\n {rewardObj.title}\r\n \r\n\r\n }\r\n onClick={() => history.goBack()}\r\n >\r\n Back to All Rewards\r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n ;\r\n}","import React from 'react';\r\nimport { Route, Switch } from 'react-router';\r\nimport { QueryClient, QueryClientProvider } from \"react-query\";\r\n\r\nimport { ThemeProvider } from '@material-ui/core/styles';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\n\r\nimport theme from './theme';\r\nimport './custom.css';\r\n\r\nimport AuthorizeRoute from './components/api-authorization/AuthorizeRoute';\r\nimport ApiAuthorizationRoutes from './components/api-authorization/ApiAuthorizationRoutes';\r\nimport { ApplicationPaths } from './components/api-authorization/ApiAuthorizationConstants';\r\n\r\nimport Error from './components/Error';\r\nimport Rewards from './components/Rewards';\r\nimport Layout from './components/Layout';\r\nimport RewardDetails from './components/RewardDetails';\r\nimport { DefaultQueryFn } from './query';\r\n\r\nconst queryClient = new QueryClient({\r\n defaultOptions: {\r\n queries: {\r\n queryFn: DefaultQueryFn,\r\n refetchOnWindowFocus: false,\r\n retry: false\r\n }\r\n }\r\n});\r\n\r\nexport default function App() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\n//import registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\n// Uncomment the line above that imports the registerServiceWorker function\r\n// and the line below to register the generated service worker.\r\n// By default create-react-app includes a service worker to improve the\r\n// performance of the application by caching static assets. This service\r\n// worker can interfere with the Identity UI, so it is\r\n// disabled by default when Identity is being used.\r\n//\r\n//registerServiceWorker();\r\n\r\n"],"sourceRoot":""}