{"version":3,"sources":["assets/images/logosbeneficaireserasmusright_bg_0.jpg","assets/images/logosbeneficaireserasmusright_de_0.jpg","assets/images/logosbeneficaireserasmusright_en_0.jpg","assets/images/logosbeneficaireserasmusright_es_0.jpg","app/PrivateRoute.js","config.js","services/globalize.js","services/iclarityApiClient.js","features/auth/authSlice.js","components/formControls/Input.js","services/utils.js","components/formControls/DateTimeInput.js","components/formControls/Radio.js","components/formControls/Checkbox.js","components/formControls/CheckboxGroup.js","services/validators.js","features/auth/LoginForm.js","components/LanguageSelector.js","layouts/main/NavDropdownHover.js","layouts/main/AccountMenu.js","features/account/accountSlice.js","assets/images/logo.png","layouts/main/Header.js","layouts/main/Footer.js","layouts/main/index.js","layouts/index.js","layouts/auth/Header.js","layouts/auth/index.js","features/auth/Login.js","features/auth/RegisterForm.js","components/Dialog.js","components/InformationMessage.js","features/cmsPages/cmsPagesSlice.js","features/auth/Register.js","features/auth/ForgottenPasswordForm.js","features/auth/ForgottenPassword.js","features/activities/activitiesSlice.js","features/categories/categoriesSlice.js","components/Pagination.js","features/activities/ActivityListItem.js","features/activities/ActivitiesList.js","components/ConfirmationMessage.js","features/activities/EnterCodeForm.js","features/activities/EnterCodeDialog.js","features/rewards/rewardsSlice.js","features/rewards/RewardCodeDialog.js","features/activities/ActivityDetails.js","features/account/personalInfo/PersonalInfoForm.js","features/account/personalInfo/PersonalInfoPage.js","features/account/security/ChangePasswordForm.js","features/account/security/SecurityPage.js","features/rewards/RewardListItem.js","features/rewards/RewardsList.js","features/points/pointsSlice.js","features/points/PointListItem.js","assets/images/points_high.png","assets/images/points_low.png","features/points/InviteCodeDialog.js","features/points/PointsList.js","features/account/routes.js","assets/svg/components/abstract-shapes-20.svg","features/account/BreadcrumbSection.js","features/account/Sidebar.js","features/home/routes.js","features/account/index.js","features/cmsPages/CmsPageDetails.js","features/home/index.js","app/App.js","app/rootReducer.js","app/store.js","serviceWorker.js","index.js","assets/images sync nonrecursive /logosbeneficaireserasmusright_[a-z]{2}_0.jpg$"],"names":["PrivateRoute","Component","component","rest","isAuthenticated","useSelector","state","auth","render","props","to","pathname","search","location","from","visibleCategories","process","config","ICLARITY_API_URL","ICLARITY_API_KEY","APP_URL","VISIBLE_CATEGORIES","split","map","id","Number","init","currentCulture","getCurrentCulture","i18n","changeLanguage","error","t","moment","locale","getSelectedCulture","localStorage","getItem","globalize","setCurrentCulture","lang","selectedLanguage","languages","find","x","culture","toLowerCase","name","setItem","use","XHR","initReactI18next","whitelist","fallbackLng","lng","ns","defaultNS","interpolation","escapeValue","formatSeparator","format","value","toUpperCase","backend","loadPath","PackageJson","version","API_ROOT","Config","API_KEY","TOKEN_URL","getDefaultRequestHeaders","onRequestRefreshToken","onRequestRefreshTokenSuccess","onRequestRefreshTokenFailure","currentAccessToken","currentRefreshToken","makeRequest","method","endpoint","data","isRetry","a","body","undefined","queryParams","encodeQueryParams","JSON","stringify","key","initialValue","Date","fullUrl","indexOf","options","headers","fetch","response","get","includes","text","then","ok","status","refreshToken","json","processErrorResponse","params","queryString","Object","keys","flatMap","k","paramValue","values","Array","isArray","encodeURIComponent","filter","queryParam","join","login","credentials","username","password","defaultHeaders","errorMessage","error_description","Error","access_token","refresh_token","accessToken","isRefreshingToken","refreshTokenPromise","initializing","Promise","reject","catch","errorResponse","FORM_ERROR","message","modelState","validationErrors","validationErrorMessage","forEach","dotPosition","lastIndexOf","propName","substring","charAt","slice","formErrorMessage","iclarityApiClient","setTokens","post","put","delete","FORGOTTEN_PASSWORD_URL","REGISTER_USER_URL","loginUser","createAsyncThunk","rejectWithValue","forgottenPassword","email","registerUser","dispatch","referralCode","marketingChannelsOptIn","signUpForLoyaltyProgram","cultureName","loginAction","unwrapResult","initialState","passwordResetEmail","createSlice","reducers","requestRefreshToken","action","payload","receiveRefreshToken","refreshTokenError","logoutUser","removeItem","extraReducers","builder","addCase","fulfilled","rejected","pending","forgotPasswordSent","actions","Input","horizontal","icon","required","input","labelCol","valueCol","label","help","meta","touched","warning","submitError","children","isInvalid","formControl","FormControl","InputGroup","Prepend","Text","errorBlock","Feedback","type","helpBlock","FormText","muted","labelHint","style","color","FormGroup","className","Col","as","FormLabel","sm","utils","getAvatarName","firstName","lastName","substr","parseDateTime","toDate","formatDateTime","isValid","DateTimeInput","showTime","dateFormat","onChange","disabled","dateValue","inputProps","timeFormat","Radio","entries","entry","onClick","checked","Checkbox","staticLabel","Form","Check","custom","e","target","feedback","span","offset","CheckboxGroup","inline","checkedValues","Set","formControls","index","add","has","pattern","regex","messageI18nKey","test","validators","requiredArray","length","requiredCheckbox","minLength","min","maxLength","max","number","isNaN","minValue","maxValue","range","dateInThePast","isDate","isMoment","isAfter","equalPassword","equalTo","composeValidators","reduce","validator","LoginForm","onSubmit","useTranslation","handleSubmit","pristine","submitting","Alert","variant","placeholder","validate","Row","Button","Spinner","animation","size","CustomToggle","React","forwardRef","ref","preventDefault","LanguageSelector","onSelect","useState","useLocation","history","useHistory","Dropdown","language","URLSearchParams","set","toLocaleLowerCase","replace","toString","go","Toggle","Menu","Item","eventKey","NavDropdownHover","openOnHover","isOpen","setIsOpen","NavDropdown","onMouseEnter","onMouseLeave","onToggle","open","show","AccountMenu","user","onLogout","avatarName","alignRight","title","Card","Header","Body","Divider","href","fetchCurrentAccount","changePassword","updatePersonalDetails","dateOfBirth","responseData","accountSlice","pointsBalance","rewards","updateAccountState","account","utc","selectCurrentAccount","useDispatch","showNavigation","setShowNavigation","activeMenuItem","setActiveMenuItem","languageSelector","src","LogoImage","alt","aria-label","aria-expanded","aria-controls","width","height","viewBox","xmlns","fill","d","Collapse","in","rel","requestErasmusImageFile","require","Footer","erasmusImage","default","lg","maxWidth","md","MainLayout","withLayout","Layout","heightClassName","AuthPageLayout","xl","passwordMinLength","RegisterForm","showTermsAndConditions","marketingChannelEntries","Dialog","footer","this","content","Modal","header","closeButton","Title","onHide","block","unblock","renderHeader","renderBody","renderFooter","InformationMessage","onClose","fetchCmsPage","slug","condition","getState","cmsPages","cmsPageSlice","arg","loading","setShowTermnsAndCOnditions","legalInfoPageSlug","cmsPageLegalInfo","push","dangerouslySetInnerHTML","__html","ForgottenPasswordForm","activitiesAdapter","createEntityAdapter","getInitialState","query","categoryIds","pagination","sortKey","sortDirection","pageSize","pageNumber","totalPages","totalCount","hasNext","hasPrevious","ids","ui","initialActivityUiState","fetchRequestStatus","redeemRequestStatus","redeemRequestError","eventRequestStatus","eventRequestError","loadActivities","onlyNotReachLimit","labelIds","fetchActivity","redeemActivity","sendGenericEvent","activityId","activitiesSlice","addMany","entity","updateActivityUiState","upsertOne","newState","currentActivityState","getSelectors","activities","selectActivityById","selectAll","selectById","selectPagedActivities","createSelector","entities","categoriesAdapter","loadCategories","categories","categoriesSlice","setAll","selectAllCategories","visibleCategoryIds","createUltimatePagination","WrapperComponent","Pagination","itemTypeToComponent","ITEM_TYPES","PAGE","isActive","active","ELLIPSIS","Ellipsis","FIRST_PAGE_LINK","First","PREVIOUS_PAGE_LINK","Prev","NEXT_PAGE_LINK","Next","LAST_PAGE_LINK","Last","ActivityListItem","activity","store","retailer","storeName","Img","imageUrl","awardType","startDate","ActivitiesList","useEffect","setQuery","showFilter","setShowFilter","Container","order","categoryId","checkedCategoryIds","handleCategorySelect","count","event","Append","currentPage","selectedPageNumber","ConfirmationMessage","onConfirm","onCancel","bsStyle","EnterCodeForm","EnterCodeDialog","rewardsAdapter","initialRewardUiState","loadRewards","redeemReward","rewardsSlice","upsertMany","updateRewardUiState","rewardId","currentRewardState","selectPagedRewards","RewardCodeDialog","code","onRedeem","redeemPending","selectRewardUiStateById","handleRedeem","redeemResultAction","toast","onCopy","success","cursor","ActivityDetails","match","showConfirmRedeem","setShowConfirmRedeem","showEnterCodeDialog","setShowEnterCodeDialog","showRewardCodeDialog","setShowRewardCodeDialog","receivedReward","setReceivedReward","setRedeemPending","selectActivityUiStateById","handleDone","doneEvent","qualificationEvents","startsWith","genericEvent","storeReference","reference","retailerId","eventCode","tags","genericEventAction","awardAmount","handleEnterCode","pinEvent","cashierPin","reward","valueText","valueIcon","conversionType","Intl","NumberFormat","currency","description","showDoneBtn","some","showPinButton","eventRequestPending","linkUrl","window","alert","allowRedeem","renderActionButtons","endDate","identity","ProfileForm","initialValues","genderEntries","submitSucceeded","parse","PersonalInfoPage","gender","mobileTelephone","town","country","PersonalInfoForm","ChangePasswordForm","newPassword","SecurityPage","RewardListItem","item","showDescription","setShowDescription","created","validFromDate","expirationDate","redemptionDate","formattedRewardValue","expired","isBefore","used","role","fromNow","onlyActive","RewardsList","setOnlyActive","loadRewardsByStatus","Nav","blocking","hideFirstAndLastPageLinks","pointsAdapter","loadPoints","pointsSlice","selectPagedPoints","points","PointListItem","amount","valueDate","offer","absAmount","Math","abs","sign","InviteCodeDialog","friendReferralCode","inviteMessage","app_url","invite_code","PointsList","showInviteCodeDialog","setShowInviteCodeDialog","ROUTES","path","exact","pageTitleResourceKey","mainContent","BreadcrumbSection","routes","onToggleNavigation","backgroundImage","BackgroundImage","route","aria-current","xs","Sidebar","Routes","pageSlug","cmsPage","library","fas","fab","App","queryLang","fallback","Login","Register","ForgottenPassword","Dashboard","rootReducer","combineReducers","configureStore","reducer","middleware","getDefaultMiddleware","concat","Boolean","hostname","ReactDOM","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister","webpackContext","req","webpackContextResolve","__webpack_require__","o","resolve","module","exports"],"mappings":"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","file":"static/js/main.bf185cef.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/logosbeneficaireserasmusright_bg_0.4969b6c0.jpg\";","export default __webpack_public_path__ + \"static/media/logosbeneficaireserasmusright_de_0.d7ef07c8.jpg\";","export default __webpack_public_path__ + \"static/media/logosbeneficaireserasmusright_en_0.43cdecb1.jpg\";","export default __webpack_public_path__ + \"static/media/logosbeneficaireserasmusright_es_0.96a9cb34.jpg\";","import React from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport { Route, Redirect } from 'react-router-dom';\r\n\r\nconst PrivateRoute = ({ component: Component, ...rest }) => {\r\n const { isAuthenticated } = useSelector(state => state.auth);\r\n\r\n return (\r\n isAuthenticated ? (\r\n \r\n ) : (\r\n \r\n )\r\n )} />\r\n};\r\n\r\nexport default PrivateRoute;","const visibleCategories = process.env.REACT_APP_VISIBLE_CATEGORIES\r\n\r\nconst config = {\r\n ICLARITY_API_URL: process.env.REACT_APP_ICLARITY_API_URL,\r\n ICLARITY_API_KEY: process.env.REACT_APP_ICLARITY_API_KEY,\r\n APP_URL: process.env.REACT_APP_URL,\r\n VISIBLE_CATEGORIES: visibleCategories ? visibleCategories.split(',').map(id => Number(id)) : []\r\n};\r\n\r\nexport default config;","import i18n from 'i18next';\r\nimport XHR from 'i18next-xhr-backend';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport moment from 'moment';\r\nimport PackageJson from '../../package.json';\r\n\r\n// Load only required locales\r\nimport 'moment/locale/en-gb';\r\nimport 'moment/locale/bg';\r\nimport 'moment/locale/de';\r\nimport 'moment/locale/es';\r\n\r\nconst init = () => {\r\n const currentCulture = getCurrentCulture();\r\n\r\n // init i18next\r\n i18n.changeLanguage(currentCulture, (error, t) => {\r\n });\r\n\r\n // localize moment\r\n moment.locale(currentCulture);\r\n};\r\n\r\nconst getSelectedCulture = () => {\r\n return localStorage.getItem('i18n_lng');\r\n};\r\n\r\nconst getCurrentCulture = () => {\r\n var currentCulture = getSelectedCulture();\r\n if (!currentCulture) {\r\n currentCulture = 'en-GB';\r\n }\r\n return currentCulture;\r\n};\r\n\r\nconst setCurrentCulture = (lang) => {\r\n const selectedLanguage = languages.find(x => x.culture.toLowerCase() === lang.toLowerCase() || x.name.toLowerCase() === lang.toLowerCase());\r\n if (selectedLanguage) {\r\n localStorage.setItem('i18n_lng', selectedLanguage.culture);\r\n init();\r\n }\r\n};\r\n\r\nconst globalize = {\r\n init,\r\n getSelectedCulture,\r\n getCurrentCulture,\r\n setCurrentCulture\r\n};\r\n\r\nexport default globalize;\r\n\r\nconst languages = [\r\n { culture: 'en-GB', name: 'EN' },\r\n { culture: 'bg-BG', name: 'BG' },\r\n { culture: 'de-DE', name: 'DE' },\r\n { culture: 'es-ES', name: 'ES' }\r\n];\r\n\r\ni18n\r\n .use(XHR)\r\n .use(initReactI18next)\r\n .init({\r\n whitelist: languages.map(x => x.culture), // Specify array of allowed languages\r\n fallbackLng: 'en-GB',\r\n lng: getCurrentCulture(),\r\n ns: ['resources'],\r\n defaultNS: 'resources',\r\n interpolation: {\r\n escapeValue: false, // not needed for react\r\n formatSeparator: ',',\r\n format: function (value, format, lng) {\r\n if (format === 'uppercase') return value.toUpperCase();\r\n return value;\r\n }\r\n },\r\n backend: {\r\n loadPath: (lng, ns) => {\r\n return `/locales/{{lng}}/{{ns}}.json?v=${PackageJson.version}`;\r\n }\r\n }\r\n //,debug: true\t\t// use debug info for missing keys to generate replacement tags for component\r\n });\r\n\r\nexport {\r\n i18n,\r\n languages\r\n};","import fetch from 'isomorphic-fetch';\r\nimport moment from 'moment';\r\nimport Config from '../config';\r\nimport globalize, { i18n } from './globalize';\r\nimport { FORM_ERROR } from 'final-form';\r\n\r\nexport const API_ROOT = Config.ICLARITY_API_URL;\r\nexport const API_KEY = Config.ICLARITY_API_KEY;\r\n\r\nconst TOKEN_URL = `${Config.ICLARITY_API_URL}/token`;\r\n\r\nexport const getDefaultRequestHeaders = () => ({\r\n 'Content-Type': 'application/json',\r\n 'X-iClarity-Api-Key': API_KEY,\r\n 'X-Accept-Language': globalize.getCurrentCulture()\r\n});\r\n\r\nlet onRequestRefreshToken = null;\r\nlet onRequestRefreshTokenSuccess = null;\r\nlet onRequestRefreshTokenFailure = null;\r\n\r\nconst init = options => {\r\n if (options) {\r\n if (options.onRequestRefreshToken && typeof options.onRequestRefreshToken === 'function') {\r\n onRequestRefreshToken = options.onRequestRefreshToken;\r\n }\r\n if (options.onRequestRefreshTokenSuccess && typeof options.onRequestRefreshTokenSuccess === 'function') {\r\n onRequestRefreshTokenSuccess = options.onRequestRefreshTokenSuccess;\r\n }\r\n if (options.onRequestRefreshTokenFailure && typeof options.onRequestRefreshTokenFailure === 'function') {\r\n onRequestRefreshTokenFailure = options.onRequestRefreshTokenFailure;\r\n }\r\n }\r\n}\r\n\r\nlet currentAccessToken = '';\r\nlet currentRefreshToken = '';\r\n\r\nconst setTokens = ({ accessToken, refreshToken }) => {\r\n currentAccessToken = accessToken;\r\n currentRefreshToken = refreshToken;\r\n}\r\n\r\nconst makeRequest = async (method, endpoint, data, isRetry) => {\r\n let body = undefined;\r\n if (method === 'GET') {\r\n const queryParams = encodeQueryParams(data);\r\n endpoint = `${endpoint}?${queryParams}`;\r\n } else {\r\n if (data) {\r\n body = JSON.stringify(data, (key, value) => {\r\n var initialValue = data[key];\r\n if (initialValue instanceof Date) {\r\n // call format to include timezone info - \"2015-09-16T00:00:00+01:00\" (moment().toJSON() or default behaviour \r\n // of JSON.stringify returns UTC time)\r\n return moment(initialValue).format();\r\n }\r\n return value;\r\n });\r\n }\r\n }\r\n\r\n const fullUrl = endpoint.indexOf(API_ROOT) === -1 ? `${API_ROOT}/${endpoint}` : endpoint;\r\n\r\n const options = {\r\n method,\r\n headers: getDefaultRequestHeaders(),\r\n body\r\n };\r\n\r\n if (currentAccessToken) {\r\n options.headers['Authorization'] = `Bearer ${currentAccessToken}`;\r\n }\r\n\r\n let json;\r\n try {\r\n const response = await fetch(fullUrl, options);\r\n\r\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').includes('text/html')) {\r\n return response.text().then(text => {\r\n if (!response.ok) {\r\n if (response.status === 401 && !isRetry) {\r\n // refresh access token and retry current API call\r\n return refreshToken(false)\r\n .then(async () => await makeRequest(method, endpoint, data, true));\r\n }\r\n else {\r\n throw text;\r\n }\r\n }\r\n return text;\r\n });\r\n }\r\n else {\r\n try {\r\n json = await response.json();\r\n } catch (jsonError) { }\r\n\r\n if (!response.ok) {\r\n if (response.status === 401 && !isRetry) {\r\n // refresh access token and retry current API call\r\n return refreshToken(false)\r\n .then(async () => await makeRequest(method, endpoint, data, true));\r\n }\r\n else {\r\n throw json;\r\n }\r\n }\r\n\r\n return json;\r\n }\r\n }\r\n catch (error) {\r\n const errors = processErrorResponse(error);\r\n throw errors;\r\n }\r\n};\r\n\r\nconst encodeQueryParams = (params) => {\r\n let queryString = '';\r\n\r\n if (params) {\r\n queryString = Object.keys(params)\r\n .flatMap(k => {\r\n const paramValue = params[k];\r\n let values = [paramValue];\r\n if (Array.isArray(paramValue)) {\r\n values = [...paramValue];\r\n }\r\n return values.map(value => {\r\n if (value instanceof Date) {\r\n value = moment(value).format();\r\n }\r\n\r\n return value !== null && value !== undefined && value !== '' ? encodeURIComponent(k) + '=' + encodeURIComponent(value) : null;\r\n });\r\n })\r\n .filter(queryParam => queryParam !== null && queryParam !== undefined)\r\n .join('&');\r\n }\r\n\r\n return queryString;\r\n};\r\n\r\nconst login = async (credentials) => {\r\n const { username, password } = credentials;\r\n const defaultHeaders = getDefaultRequestHeaders();\r\n const config = {\r\n method: 'POST',\r\n headers: {\r\n ...defaultHeaders,\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n },\r\n body: `grant_type=password&username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}&client_id=${encodeURIComponent(Config.ICLARITY_API_KEY)}`\r\n };\r\n\r\n let json;\r\n try {\r\n const response = await fetch(TOKEN_URL, config);\r\n json = await response.json();\r\n\r\n if (!response.ok) {\r\n const errorMessage = json.error_description ? json.error_description : json.error;\r\n throw new Error(errorMessage);\r\n } else {\r\n currentAccessToken = json.access_token;\r\n currentRefreshToken = json.refresh_token;\r\n\r\n return {\r\n accessToken: json.access_token,\r\n refreshToken: json.refresh_token\r\n };\r\n }\r\n } catch (error) {\r\n const errors = processErrorResponse(error);\r\n throw errors;\r\n }\r\n};\r\n\r\nlet isRefreshingToken = false;\r\nlet refreshTokenPromise = null;\r\n\r\nconst refreshToken = initializing => {\r\n if (!isRefreshingToken) {\r\n if (!currentRefreshToken) {\r\n const errorMessage = 'Refresh token is missing';\r\n if (onRequestRefreshTokenFailure) {\r\n onRequestRefreshTokenFailure(errorMessage);\r\n }\r\n return Promise.reject(errorMessage);\r\n }\r\n\r\n isRefreshingToken = true;\r\n\r\n const defaultHeaders = getDefaultRequestHeaders();\r\n\r\n const config = {\r\n method: 'POST',\r\n headers: {\r\n ...defaultHeaders,\r\n 'Content-Type': 'application/x-www-form-urlencoded'\r\n },\r\n body: `grant_type=refresh_token&refresh_token=${encodeURIComponent(currentRefreshToken)}&client_id=${encodeURIComponent(Config.ICLARITY_API_KEY)}`\r\n };\r\n\r\n if (onRequestRefreshToken) {\r\n onRequestRefreshToken(initializing);\r\n }\r\n\r\n refreshTokenPromise = fetch(TOKEN_URL, config)\r\n .then(async response => {\r\n isRefreshingToken = false;\r\n\r\n try {\r\n const json = await response.json();\r\n if (!response.ok) {\r\n const errorMessage = json.error_description ? json.error_description : json.error;\r\n if (onRequestRefreshTokenFailure) {\r\n onRequestRefreshTokenFailure(errorMessage);\r\n }\r\n throw new Error(errorMessage);\r\n } else {\r\n const { access_token: accessToken, refresh_token: refreshToken } = json;\r\n\r\n currentAccessToken = accessToken;\r\n currentRefreshToken = refreshToken;\r\n\r\n if (onRequestRefreshTokenSuccess) {\r\n onRequestRefreshTokenSuccess({ accessToken, refreshToken });\r\n }\r\n return { accessToken, refreshToken };\r\n }\r\n } catch (error) {\r\n return Promise.reject(processErrorResponse(error));\r\n }\r\n }).catch((error) => {\r\n isRefreshingToken = false;\r\n return Promise.reject(processErrorResponse(error));\r\n });\r\n }\r\n\r\n return refreshTokenPromise;\r\n};\r\n\r\nexport const processErrorResponse = (errorResponse) => {\r\n if (typeof errorResponse === 'string') {\r\n return {\r\n [FORM_ERROR]: errorResponse,\r\n validationErrorMessage: errorResponse\r\n };\r\n }\r\n\r\n const { message, modelState } = errorResponse;\r\n const validationErrors = {};\r\n\r\n let validationErrorMessage = '';\r\n\r\n if (modelState) {\r\n Object.keys(modelState).forEach(key => {\r\n const dotPosition = key.lastIndexOf('.');\r\n let propName = key.substring(dotPosition + 1);\r\n propName = propName.charAt(0).toLowerCase() + propName.slice(1);\r\n\r\n validationErrors[propName] = modelState[key][0];\r\n });\r\n validationErrorMessage = Object.values(validationErrors)[0]\r\n }\r\n\r\n const formErrorMessage = message === \"The request is invalid.\" ? i18n.t('BadRequest_Message') : message;\r\n\r\n return {\r\n [FORM_ERROR]: formErrorMessage,\r\n validationErrorMessage,//first validation error\r\n ...validationErrors\r\n };\r\n};\r\n\r\nconst iclarityApiClient = {\r\n init,\r\n login,\r\n refreshToken,\r\n setTokens,\r\n\r\n makeRequest,\r\n get: async (endpoint, data) => await makeRequest('GET', endpoint, data),\r\n post: async (endpoint, data) => await makeRequest('POST', endpoint, data),\r\n put: async (endpoint, data) => await makeRequest('PUT', endpoint, data),\r\n delete: async (endpoint, data) => await makeRequest('DELETE', endpoint, data),\r\n};\r\n\r\nexport default iclarityApiClient;","import { createAsyncThunk, createSlice, unwrapResult } from '@reduxjs/toolkit';\r\nimport Config from '../../config';\r\nimport globalize from '../../services/globalize';\r\nimport iclarityApiClient from '../../services/iclarityApiClient';\r\n\r\nconst FORGOTTEN_PASSWORD_URL = `${Config.ICLARITY_API_URL}/api/customers/forgotPassword`;\r\nconst REGISTER_USER_URL = `${Config.ICLARITY_API_URL}/api/customers`;\r\n\r\nexport const loginUser = createAsyncThunk('auth/loginUser', async (credentials, { rejectWithValue }) => {\r\n try {\r\n const response = await iclarityApiClient.login(credentials);\r\n return response;\r\n } catch (errors) {\r\n return rejectWithValue(errors);\r\n }\r\n});\r\n\r\nexport const forgottenPassword = createAsyncThunk('auth/forgotPassword', async (email, { rejectWithValue }) => {\r\n try {\r\n return await iclarityApiClient.post(FORGOTTEN_PASSWORD_URL, { email });\r\n } catch (errors) {\r\n return rejectWithValue(errors);\r\n }\r\n});\r\n\r\nexport const registerUser = createAsyncThunk('auth/registerUser', async (data, { dispatch, rejectWithValue }) => {\r\n const { username, password, referralCode, marketingChannelsOptIn } = data;\r\n try {\r\n const response = await iclarityApiClient.post(REGISTER_USER_URL, {\r\n username, password, referralCode, marketingChannelsOptIn,\r\n email: username, signUpForLoyaltyProgram: true, cultureName: globalize.getCurrentCulture()\r\n });\r\n\r\n const loginAction = await dispatch(loginUser({ username, password }));\r\n unwrapResult(loginAction);// unwrap to throw error if any\r\n\r\n return response;\r\n } catch (errors) {\r\n return rejectWithValue(errors);\r\n }\r\n});\r\n\r\nconst initialState = {\r\n initializing: true,\r\n isAuthenticated: false,\r\n accessToken: localStorage['accessToken'],\r\n refreshToken: localStorage['refreshToken'],\r\n passwordResetEmail: ''\r\n};\r\n\r\nconst auth = createSlice({\r\n name: 'auth',\r\n initialState,\r\n reducers: {\r\n requestRefreshToken: (state, action) => {\r\n state.initializing = action.payload.initializing;\r\n },\r\n receiveRefreshToken: (state, action) => {\r\n localStorage['accessToken'] = action.payload.accessToken;\r\n localStorage['refreshToken'] = action.payload.refreshToken;\r\n\r\n state.initializing = false;\r\n state.isAuthenticated = true;\r\n state.accessToken = action.payload.accessToken;\r\n state.refreshToken = action.payload.refreshToken;\r\n },\r\n refreshTokenError: (state, action) => {\r\n state.initializing = false;\r\n state.isAuthenticated = false;\r\n },\r\n logoutUser: (state) => {\r\n localStorage.removeItem('accessToken');\r\n localStorage.removeItem('refreshToken');\r\n state.isAuthenticated = false;\r\n state.accessToken = '';\r\n state.refreshToken = '';\r\n\r\n iclarityApiClient.setTokens({ accessToken: '', refreshToken: '' });\r\n }\r\n },\r\n extraReducers: builder => {\r\n builder\r\n .addCase(loginUser.fulfilled, (state, action) => {\r\n const { accessToken, refreshToken } = action.payload;\r\n\r\n localStorage['accessToken'] = accessToken;\r\n localStorage['refreshToken'] = refreshToken;\r\n\r\n state.isAuthenticated = true;\r\n state.accessToken = accessToken;\r\n state.refreshToken = refreshToken;\r\n })\r\n .addCase(loginUser.rejected, (state, action) => {\r\n state.isAuthenticated = false;\r\n })\r\n .addCase(forgottenPassword.pending, (state, action) => {\r\n state.forgotPasswordSent = false;\r\n })\r\n .addCase(forgottenPassword.fulfilled, (state, action) => {\r\n state.forgotPasswordSent = true;\r\n })\r\n }\r\n});\r\n\r\nexport const {\r\n requestRefreshToken, receiveRefreshToken, refreshTokenError,\r\n logoutUser\r\n} = auth.actions;\r\n\r\nexport default auth.reducer;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Col, FormGroup, FormLabel, FormControl, InputGroup, FormText } from 'react-bootstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nconst Input = ({ horizontal, icon, required, input, labelCol = 3, valueCol = 9, label, help, meta: { touched, error, warning, submitError }, children, ...props }) => {\r\n const isInvalid = touched && (error || submitError || warning);\r\n\r\n var formControl = {children};\r\n if (icon) {\r\n formControl = \r\n \r\n \r\n \r\n {formControl}\r\n ;\r\n }\r\n const errorBlock = isInvalid && {error || submitError || warning};\r\n const helpBlock = help && {help};\r\n const labelHint = required && *;\r\n\r\n if (horizontal) {\r\n return (\r\n \r\n \r\n {label}{labelHint}\r\n \r\n \r\n {formControl}\r\n {errorBlock}\r\n {helpBlock}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {label}{labelHint}\r\n {formControl}\r\n {errorBlock}\r\n {helpBlock}\r\n \r\n );\r\n};\r\n\r\nInput.propTypes = {\r\n horizontal: PropTypes.bool,\r\n input: PropTypes.object,\r\n label: PropTypes.string,\r\n help: PropTypes.string,\r\n meta: PropTypes.object,\r\n placeholder: PropTypes.string,\r\n disabled: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\r\n componentClass: PropTypes.string,\r\n value: PropTypes.string,\r\n icon: PropTypes.string,\r\n};\r\n\r\nexport default Input;","import moment from 'moment';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nconst getAvatarName = (firstName, lastName) => {\r\n if (!firstName && !lastName) {\r\n return ;\r\n }\r\n\r\n if (firstName && !lastName) {\r\n return firstName.substr(0, 2).toUpperCase();\r\n }\r\n\r\n return (firstName[0] + lastName[0]).toUpperCase();\r\n};\r\n\r\nconst parseDateTime = (text, format) => {\r\n if (text) {\r\n if (format) {\r\n return moment(text, format).toDate();\r\n } else {\r\n return new Date(text);\r\n }\r\n }\r\n return new Date();\r\n};\r\n\r\nconst formatDateTime = (data, format) => {\r\n if (data) {\r\n if (moment(data).isValid()) {\r\n return moment(data).format(format || 'L HH:mm');\r\n }\r\n else {\r\n return data;\r\n }\r\n }\r\n return '';\r\n};\r\n\r\nconst utils = {\r\n getAvatarName,\r\n parseDateTime,\r\n formatDateTime\r\n};\r\n\r\nexport default utils;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Col, FormGroup, FormLabel, FormControl, FormText } from 'react-bootstrap';\r\nimport utils from '../../services/utils';\r\nimport Datetime from 'react-datetime';\r\nimport 'react-datetime/css/react-datetime.css';\r\nimport globalize from '../../services/globalize';\r\n\r\nconst DateTimeInput = ({ showTime = false, dateFormat, horizontal, required, input: { onChange, value, name },\r\n labelCol = 3, valueCol = 9, label, type, help, meta: { touched, error, warning, submitError }, disabled, ...props }) => {\r\n const isInvalid = touched && (error || submitError || warning);\r\n\r\n var dateValue = null;\r\n if (value) {\r\n dateValue = utils.parseDateTime(value, dateFormat);\r\n }\r\n\r\n const inputProps = {\r\n disabled,\r\n className: `form-control ${isInvalid ? 'is-invalid' : ''}`\r\n };\r\n const formControl = ;\r\n\r\n const errorBlock = isInvalid && {error || submitError || warning};\r\n const helpBlock = help && {help};\r\n const labelHint = required && *;\r\n\r\n if (horizontal) {\r\n return (\r\n \r\n \r\n {label}{labelHint}\r\n \r\n \r\n {formControl}\r\n {errorBlock}\r\n {helpBlock}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {label}{labelHint}\r\n {formControl}\r\n {errorBlock}\r\n {helpBlock}\r\n \r\n );\r\n};\r\n\r\nDateTimeInput.propTypes = {\r\n showTime: PropTypes.bool,\r\n horizontal: PropTypes.bool,\r\n input: PropTypes.object,\r\n label: PropTypes.string,\r\n help: PropTypes.string,\r\n meta: PropTypes.object,\r\n placeholder: PropTypes.string,\r\n disabled: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\r\n componentClass: PropTypes.string,\r\n value: PropTypes.string,\r\n containerClassName: PropTypes.string\r\n};\r\n\r\nexport default DateTimeInput;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Col, FormGroup, FormLabel, FormControl, FormText } from 'react-bootstrap';\r\n\r\nconst Radio = ({ entries, horizontal, required, input: { name, onChange, value = '' },\r\n labelCol = 3, valueCol = 9, label, help, meta: { touched, error, warning, submitError }, disabled, ...props }) => {\r\n const isInvalid = touched && (error || submitError || warning);\r\n\r\n const formControl =
\r\n {entries && entries.map(entry =>
\r\n
{\r\n if (!disabled) {\r\n onChange(entry.value);\r\n }\r\n }}>\r\n \r\n \r\n
\r\n
)}\r\n
;\r\n\r\n const errorBlock = isInvalid && {error || submitError || warning};\r\n const helpBlock = help && {help};\r\n const labelHint = required && *;\r\n\r\n if (horizontal) {\r\n return (\r\n \r\n \r\n {label}{labelHint}\r\n \r\n \r\n {formControl}\r\n {errorBlock}\r\n {helpBlock}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n {label}{labelHint}\r\n {formControl}\r\n {errorBlock}\r\n {helpBlock}\r\n \r\n );\r\n};\r\n\r\nRadio.propTypes = {\r\n entries: PropTypes.array,\r\n horizontal: PropTypes.bool,\r\n input: PropTypes.object,\r\n label: PropTypes.string,\r\n help: PropTypes.string,\r\n meta: PropTypes.object,\r\n disabled: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\r\n value: PropTypes.string\r\n};\r\n\r\nexport default Radio;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Col, FormGroup, FormText, Form } from 'react-bootstrap';\r\n\r\nconst Checkbox = ({ horizontal, labelCol = 3, valueCol = 9, input: { name, onChange, checked }, required, label, staticLabel, help, meta: { touched, error, warning, submitError }, ...props }) => {\r\n\tconst isInvalid = touched && (error || submitError || warning);\r\n\r\n\t//const errorBlock = isInvalid && {error || submitError || warning};\r\n\tconst labelHint = required && *;\r\n\tconst controlLabel = () => {label} {labelHint}\r\n\tconst formControl = onChange(e.target.checked)}\r\n\t\tisInvalid={isInvalid}\r\n\t\tfeedback={error || submitError || warning}\r\n\t\t{...props} />\r\n\r\n\tconst helpBlock = help && {help};\r\n\r\n\tif (horizontal) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{formControl}\r\n\t\t\t\t\t{helpBlock}\r\n\t\t\t\t\r\n\t\t\t)\r\n\t}\r\n\r\n\treturn \r\n\t\t{formControl}\r\n\t\t{helpBlock}\r\n\t\r\n};\r\n\r\nCheckbox.propTypes = {\r\n\thorizontal: PropTypes.bool,\r\n\tinput: PropTypes.object,\r\n\tlabel: PropTypes.string,\r\n\thelp: PropTypes.string,\r\n\tmeta: PropTypes.object,\r\n\tplaceholder: PropTypes.string,\r\n\tdisabled: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\r\n\tcomponentClass: PropTypes.string,\r\n\tvalue: PropTypes.string\r\n};\r\n\r\nexport default Checkbox;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Col, FormGroup, FormText, Form, FormLabel, FormControl } from 'react-bootstrap';\r\n\r\nconst CheckboxGroup = ({ horizontal, className, labelCol = 3, valueCol = 9, input, entries, required, inline, label, staticLabel, help, meta: { touched, error, warning, submitError }, ...props }) => {\r\n\tconst isInvalid = touched && (error || submitError || warning);\r\n\r\n\tconst checkedValues = new Set(input.value || []);\r\n\tconst entryOnChange = (value, checked) => {\r\n\t\tif (checked) {\r\n\t\t\tcheckedValues.add(value);\r\n\t\t} else {\r\n\t\t\tcheckedValues.delete(value);\r\n\t\t}\r\n\t\tinput.onChange([...checkedValues]);\r\n\t};\r\n\r\n\tconst formControls = entries && entries.map((x, index) => entryOnChange(x.value, e.target.checked)}\r\n\t\tchecked={checkedValues.has(x.value)} {...props}\r\n\t/>);\r\n\r\n\tconst errorBlock = isInvalid && {error || submitError || warning};\r\n\tconst helpBlock = help && {help};\r\n\tconst labelHint = required && *;\r\n\r\n\tif (horizontal) {\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{label}{labelHint}\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{formControls}\r\n\t\t\t\t\t{errorBlock}\r\n\t\t\t\t\t{helpBlock}\r\n\t\t\t\t\r\n\t\t\t);\r\n\t}\r\n\r\n\treturn (\r\n\t\t\r\n\t\t\t{label}{labelHint}\r\n\t\t\t{formControls}\r\n\t\t\t{errorBlock}\r\n\t\t\t{helpBlock}\r\n\t\t\r\n\t);\r\n};\r\n\r\nCheckboxGroup.propTypes = {\r\n\thorizontal: PropTypes.bool,\r\n\tinput: PropTypes.object,\r\n\tlabel: PropTypes.string,\r\n\thelp: PropTypes.string,\r\n\tmeta: PropTypes.object,\r\n\tplaceholder: PropTypes.string,\r\n\tdisabled: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\r\n\tcomponentClass: PropTypes.string,\r\n\tvalue: PropTypes.string\r\n};\r\n\r\nexport default CheckboxGroup;","import { i18n } from './globalize';\r\nimport moment from 'moment';\r\n\r\nconst required = value => (value || value === '0') ? undefined : i18n.t('Validator_Required');\r\n\r\nconst requiredArray = value => (value && value.length > 0) ? undefined : i18n.t('Validator_Required');\r\n\r\nconst requiredCheckbox = value => (value && value === true) ? undefined : i18n.t('Validator_Required');\r\n\r\nconst length = length => value =>\r\n\tvalue && value.length !== length ? i18n.t('Validator_Length', { length }) : undefined;\r\n\r\nconst minLength = min => value =>\r\n\tvalue && value.length < min ? i18n.t('Validator_MinLength', { min }) : undefined;\r\n\r\nconst maxLength = max => value =>\r\n\tvalue && value.length > max ? i18n.t('Validator_MaxLength', { max }) : undefined;\r\n\r\nconst number = value => value && isNaN(Number(value)) ? i18n.t('Validator_Number') : undefined;\r\n\r\nconst minValue = min => value =>\r\n\tvalue && value < min ? i18n.t('Validator_MinValue', { min }) : undefined;\r\n\r\nconst maxValue = max => value =>\r\n\tvalue && value > max ? i18n.t('Validator_MaxValue', { max }) : undefined;\r\n\r\nconst range = (min, max) => value =>\r\n\tvalue && (value < min || value > max) ? i18n.t('Validator_Range', { min, max }) : undefined;\r\n\r\nconst pattern = (regex, messageI18nKey) => value =>\r\n\tvalue && !/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i.test(value) ?\r\n\t\ti18n.t(messageI18nKey || 'Validator_Pattern') : undefined;\r\n\r\nconst email = pattern(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i, 'Validator_Email');\r\n\r\nconst dateInThePast = value => value && (moment.isDate(value) || moment.isMoment(value)) && moment(value).isAfter() ? i18n.t('Validator_DateInThePast') : undefined;\r\n\r\nconst equalPassword = equalTo => value => equalTo !== value ? i18n.t('Validator_EqualPassword') : undefined\r\n\r\nconst validators = {\r\n\trequired,\r\n\trequiredArray,\r\n\trequiredCheckbox,\r\n\tminLength,\r\n\tmaxLength,\r\n\tlength,\r\n\tnumber,\r\n\tminValue,\r\n\tmaxValue,\r\n\trange,\r\n\tpattern,\r\n\temail,\r\n\tdateInThePast,\r\n\tequalPassword\r\n};\r\n\r\nexport default validators;\r\n\r\nexport const composeValidators = (...validators) => value =>\r\n\tvalidators.reduce((error, validator) => error || validator(value), undefined);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form, Field } from 'react-final-form';\r\nimport { Row, Col, Button, Alert, Spinner } from 'react-bootstrap';\r\nimport { Input } from '../../components/formControls';\r\nimport validators from '../../services/validators';\r\nimport { Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst LoginForm = ({ onSubmit }) => {\r\n const { t } = useTranslation();\r\n return (\r\n
\r\n {({ submitError, handleSubmit, pristine, submitting }) => (\r\n \r\n {submitError && {submitError}}\r\n \r\n {t('Login_Password')}{t('Login_ForgotPassword')}}\r\n placeholder={t('Login_Password')} validate={validators.required}\r\n />\r\n \r\n \r\n {t('Login_NoAccount')} \r\n {t('Login_Register')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nLoginForm.propTypes = {\r\n onSubmit: PropTypes.func.isRequired\r\n};\r\n\r\nexport default LoginForm;","import React, { useState } from 'react';\r\nimport globalize, { languages } from '../services/globalize';\r\nimport { Dropdown } from 'react-bootstrap';\r\nimport './LanguageSelector.css';\r\nimport { useLocation, useHistory } from 'react-router-dom';\r\n\r\nconst CustomToggle = React.forwardRef(({ children, onClick }, ref) => (\r\n \r\n));\r\n\r\nconst LanguageSelector = ({ onSelect }) => {\r\n const [currentCulture, setCurrentCulture] = useState(globalize.getCurrentCulture());\r\n\r\n const location = useLocation();\r\n const history = useHistory();\r\n\r\n const selectedLanguage = languages.find(x => x.culture === currentCulture);\r\n\r\n const selectLanguage = culture => {\r\n setCurrentCulture(culture);\r\n if (onSelect) {\r\n onSelect(culture);\r\n }\r\n // globalize.setCurrentCulture(culture);\r\n const language = languages.find(x => x.culture === culture);\r\n const queryParams = new URLSearchParams(location.search);\r\n queryParams.set('lang', language.name.toLocaleLowerCase());\r\n history.replace({ ...location, search: queryParams.toString() });\r\n history.go();\r\n }\r\n\r\n return \r\n \r\n {selectedLanguage.name}\r\n \r\n\r\n \r\n {languages.map(x => \r\n {x.name}\r\n )}\r\n \r\n \r\n};\r\n\r\nexport default LanguageSelector;","import React, { useState } from 'react';\r\nimport { NavDropdown } from 'react-bootstrap';\r\n\r\nconst NavDropdownHover = ({ openOnHover, children, ...rest }) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n\r\n const handleMouseEnter = () => {\r\n if (openOnHover) {\r\n setIsOpen(true);\r\n }\r\n }\r\n const handleMouseLeave = () => {\r\n if (openOnHover) {\r\n setIsOpen(false);\r\n }\r\n }\r\n const handleToggle = (open) => {\r\n if (!openOnHover) {\r\n setIsOpen(open);\r\n }\r\n }\r\n\r\n return \r\n {children}\r\n ;\r\n}\r\n\r\nexport default NavDropdownHover;","import React from 'react';\r\nimport { Card, NavDropdown } from 'react-bootstrap';\r\nimport utils from '../../services/utils';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { Link } from 'react-router-dom';\r\nimport NavDropdownHover from './NavDropdownHover';\r\nimport './AccountMenu.css';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst AccountMenu = ({ user, onLogout }) => {\r\n const { t } = useTranslation();\r\n\r\n const avatarName = user && utils.getAvatarName(user.firstName, user.lastName);\r\n return \r\n {avatarName}\r\n }\r\n >\r\n \r\n \r\n \r\n
\r\n {avatarName}\r\n
\r\n
\r\n {user.firstName} {user.lastName}\r\n {user.email}\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n {t('Account_RewardHistory')}\r\n \r\n \r\n \r\n \r\n {t('Account_PointsHistory')}\r\n \r\n \r\n \r\n \r\n {t('Account_Account')}\r\n \r\n\r\n \r\n\r\n \r\n \r\n
\r\n
;\r\n}\r\n\r\nexport default AccountMenu;","import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'\r\nimport iclarityApiClient from '../../services/iclarityApiClient';\r\nimport moment from 'moment';\r\n\r\nconst initialState = {\r\n id: 0,\r\n pointsBalance: 0,\r\n rewards: []\r\n};\r\n\r\n// Thunk functions\r\nexport const fetchCurrentAccount = createAsyncThunk('account/fetchCurrentAccount',\r\n async () => await iclarityApiClient.get('api/loyaltyMember')\r\n);\r\n\r\nexport const changePassword = createAsyncThunk('account/changePassword', async (data, { rejectWithValue }) => {\r\n try {\r\n return await iclarityApiClient.put('api/customers/changePassword', data);\r\n } catch (errors) {\r\n return rejectWithValue(errors);\r\n }\r\n});\r\n\r\nexport const updatePersonalDetails = createAsyncThunk('account/updatePersonalDetails', async (data, { rejectWithValue }) => {\r\n try {\r\n if (data.dateOfBirth === undefined) {\r\n data.dateOfBirth = null; // clear birth date if not entered\r\n }\r\n\r\n const responseData = await iclarityApiClient.put('api/customers', data);\r\n return responseData;\r\n } catch (errors) {\r\n return rejectWithValue(errors); // return errors in react-final-form format\r\n }\r\n});\r\n\r\nconst accountSlice = createSlice({\r\n name: 'account',\r\n initialState,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(fetchCurrentAccount.fulfilled, (state, action) => updateAccountState(state, action))\r\n .addCase(updatePersonalDetails.fulfilled, (state, action) => updateAccountState(state, action))\r\n }\r\n});\r\n\r\nconst updateAccountState = (state, action) => {\r\n let account = action.payload;\r\n if (account && account.dateOfBirth) {\r\n account.dateOfBirth = moment.utc(account.dateOfBirth).format();\r\n }\r\n return { ...state, ...account };\r\n}\r\n\r\nexport default accountSlice.reducer;\r\n\r\nexport const selectCurrentAccount = state => state.account;\r\n","export default \"data:image/png;base64,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UmVhZHlxyWU8AAADKGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCOEY3RDYxQTc3NDIxMUVCQTVGQkNBMzYzM0ZEMEVGNiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCOEY3RDYxOTc3NDIxMUVCQTVGQkNBMzYzM0ZEMEVGNiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjYxMjMwNjNCNjlFRjExRUJBMTYxRkRFRkUxNkJGRDEyIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjYxMjMwNjNDNjlFRjExRUJBMTYxRkRFRkUxNkJGRDEyIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+ao2gewAAEyNJREFUeNrsXXl0VFWa/9WWqlRS2SuVpRIIS8IeaGHEtgFFUBt1XA7ac47bqIPjcqZbe8YedWbU8fRpbbv1tP+g44a4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\"","import React, { useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Link } from 'react-router-dom';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport LanguageSelector from '../../components/LanguageSelector';\r\nimport { Collapse } from 'react-bootstrap';\r\nimport AccountMenu from './AccountMenu';\r\nimport { selectCurrentAccount, updatePersonalDetails } from '../../features/account/accountSlice';\r\nimport { logoutUser } from '../../features/auth/authSlice';\r\nimport { useTranslation } from 'react-i18next';\r\nimport LogoImage from '../../assets/images/logo.png';\r\n\r\nconst Header = () => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const user = useSelector(selectCurrentAccount);\r\n const [showNavigation, setShowNavigation] = useState(false);\r\n const [activeMenuItem, setActiveMenuItem] = useState('home');\r\n\r\n const handleSelectLanguage = (culture) => {\r\n dispatch(updatePersonalDetails({ cultureName: culture }));\r\n }\r\n\r\n const languageSelector = ;\r\n\r\n return
\r\n
\r\n\r\n
\r\n {/* Nav */}\r\n \r\n {/* End Nav */}\r\n
\r\n
\r\n
;\r\n};\r\n\r\nexport default Header;","import React, { useEffect, useState } from 'react';\nimport globalize from '../../services/globalize';\nimport { Row, Col } from 'react-bootstrap';\nimport { Link } from 'react-router-dom';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport LogoImage from '../../assets/images/logo.png';\nimport { useTranslation } from 'react-i18next';\n\nconst requestErasmusImageFile = require.context('../../assets/images', false, /logosbeneficaireserasmusright_[a-z]{2}_0.jpg$/);\n\nconst Footer = () => {\n const { t } = useTranslation();\n\n const erasmusImage = requestErasmusImageFile(`./logosbeneficaireserasmusright_${globalize.getCurrentCulture().substring(0, 2)}_0.jpg`).default;\n\n return
\n
\n \n \n Erasmus+ Logo\n \n \n {t('Erasmus_Disclaimer')}\n \n \n\n
\n\n \n \n \n Logo\n \n \n\n \n
\n
{t('App_Download')}
\n
\n\n \n \n \n \n \n \n \n\n \n {/* Social Networks */}\n \n {/* End Social Networks */}\n \n
\n
\n
;\n}\n\nexport default Footer;","import React from 'react';\r\nimport Header from './Header';\r\nimport Footer from './Footer';\r\n\r\nconst MainLayout = ({ children }) => {\r\n return
\r\n
\r\n {children}\r\n
\r\n
\r\n};\r\n\r\nexport default MainLayout;","import React from 'react';\r\nimport MainLayout from './main';\r\n\r\nexport const withLayout = (Component, Layout, heightClassName) => (props) => {\r\n if (!Layout) {\r\n Layout = MainLayout;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport LanguageSelector from '../../components/LanguageSelector';\r\nimport LogoImage from '../../assets/images/logo.png';\r\n\r\nconst Header = () => (\r\n \r\n);\r\n\r\nexport default Header;","import React from 'react';\r\nimport Header from './Header';\r\nimport { useTranslation } from 'react-i18next';\r\nimport globalize from '../../services/globalize';\r\nimport { Row, Col } from 'react-bootstrap';\r\n\r\nconst requestErasmusImageFile = require.context('../../assets/images', false, /logosbeneficaireserasmusright_[a-z]{2}_0.jpg$/);\r\n\r\nconst AuthPageLayout = ({ children, heightClassName }) => {\r\n const { t } = useTranslation();\r\n\r\n const erasmusImage = requestErasmusImageFile(`./logosbeneficaireserasmusright_${globalize.getCurrentCulture().substring(0, 2)}_0.jpg`).default;\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{t('Auth_Description')}
\r\n
\r\n
\r\n \r\n \r\n Erasmus+ Logo\r\n \r\n \r\n {t('Erasmus_Disclaimer')}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n {children}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default AuthPageLayout;","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { loginUser } from './authSlice';\r\nimport LoginForm from './LoginForm';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { withLayout } from '../../layouts';\r\nimport AuthPageLayout from '../../layouts/auth';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\n\r\nconst Login = ({ location }) => {\r\n const { isAuthenticated } = useSelector(state => state.auth);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n if (isAuthenticated) {\r\n //const { from } = location.state;\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

{t('Login_Title')}

\r\n

{t('Login_Text')}

\r\n
\r\n {\r\n try {\r\n const action = await dispatch(loginUser(credentials));\r\n unwrapResult(action)\r\n } catch (errors) {\r\n return errors;\r\n }\r\n }} />\r\n
\r\n );\r\n};\r\n\r\nexport default withLayout(Login, AuthPageLayout);","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form, Field } from 'react-final-form';\r\nimport { Row, Col, Button, Alert, Card, FormText, Spinner } from 'react-bootstrap';\r\nimport { Input, Checkbox, CheckboxGroup } from '../../components/formControls';\r\nimport validators, { composeValidators } from '../../services/validators';\r\nimport { Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst passwordMinLength = validators.minLength(6);\r\n\r\nconst RegisterForm = ({ onSubmit, showTermsAndConditions }) => {\r\n const { t } = useTranslation();\r\n\r\n const marketingChannelEntries = [\r\n { label: t('MarketingChannel_Email'), value: 'Email' },\r\n { label: t('MarketingChannel_Mobile'), value: 'Mobile' }\r\n ];\r\n\r\n const renderTermsAndConditionsLabel = () => {\r\n return \r\n {t('Register_AgreeTermsAndConditions')} showTermsAndConditions()}>{t('Register_TermsAndConditions')}\r\n \r\n }\r\n return (\r\n
\r\n {({ submitError, handleSubmit, pristine, submitting, values }) => (\r\n \r\n {submitError && {submitError}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{t('MarketingConsent_Title')}

\r\n {t('MarketingConsent_Info')}\r\n \r\n
\r\n
\r\n \r\n \r\n {t('Register_HasAccount')} \r\n {t('Register_Login')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nRegisterForm.propTypes = {\r\n onSubmit: PropTypes.func.isRequired\r\n};\r\n\r\nexport default RegisterForm;","import React, { Component } from 'react';\r\nimport { Modal } from 'react-bootstrap';\r\nimport PropTypes from 'prop-types';\r\nimport ReduxBlockUi from 'react-block-ui/redux';\r\nimport 'react-block-ui/style.css';\r\n\r\nclass Dialog extends Component {\r\n\trenderFooter() {\r\n\t\tconst { footer } = this.props.content;\r\n\r\n\t\treturn footer &&\r\n\t\t\t\r\n\t\t\t\t{footer}\r\n\t\t\t;\r\n\t}\r\n\r\n\trenderHeader() {\r\n\t\tconst { header } = this.props.content;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{header}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\trenderBody() {\r\n\t\tconst { body } = this.props.content;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t{body}\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { show, onHide, block, unblock, ...rest } = this.props;\r\n\t\treturn \r\n\t\t\t\r\n\t\t\t\t{this.renderHeader()}\r\n\t\t\t\t{this.renderBody()}\r\n\t\t\t\t{this.renderFooter()}\r\n\t\t\t\r\n\t\t;\r\n\t}\r\n}\r\n\r\nDialog.propTypes = {\r\n\tcontent: PropTypes.shape({\r\n\t\theader: PropTypes.node.isRequired,\r\n\t\tbody: PropTypes.node.isRequired,\r\n\t\tfooter: PropTypes.node\r\n\t}),\r\n\tshow: PropTypes.bool,\r\n\tonHide: PropTypes.func.isRequired\r\n};\r\n\r\nexport default Dialog;","import React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport Dialog from './Dialog';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst InformationMessage = ({ title, message, onClose, ...rest }) => {\r\n\tconst { t } = useTranslation();\r\n\tconst footer = (\r\n\t\t
\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\treturn ;\r\n};\r\n\r\nexport default InformationMessage;","import { createSlice, createAsyncThunk } from '@reduxjs/toolkit'\r\nimport iclarityApiClient from '../../services/iclarityApiClient';\r\n\r\n// Thunk functions\r\nexport const fetchCmsPage = createAsyncThunk('cmsPages/fetchCmsPage',\r\n async (slug) => await iclarityApiClient.get(`api/cmsPages/content/${slug}`),\r\n {\r\n condition: (slug, { getState }) => {\r\n const { cmsPages } = getState();\r\n if (cmsPages[slug]) {\r\n // Already fetched or in progress, don't need to re-fetch\r\n return false;\r\n }\r\n }\r\n }\r\n);\r\n\r\nconst cmsPageSlice = createSlice({\r\n name: 'cmsPages',\r\n initialState: {},\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(fetchCmsPage.pending, (state, action) => {\r\n const slug = action.meta.arg;\r\n state[slug] = {\r\n loading: true,\r\n content: null,\r\n error: false\r\n };\r\n })\r\n .addCase(fetchCmsPage.fulfilled, (state, action) => {\r\n const slug = action.meta.arg;\r\n state[slug].loading = false;\r\n state[slug].content = action.payload;\r\n })\r\n .addCase(fetchCmsPage.rejected, (state, action) => {\r\n const slug = action.meta.arg;\r\n state[slug].loading = false;\r\n state[slug].error = true;\r\n })\r\n }\r\n});\r\n\r\nexport default cmsPageSlice.reducer;\r\n","import React, { useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { registerUser } from './authSlice';\r\nimport RegisterForm from './RegisterForm';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { withLayout } from '../../layouts';\r\nimport AuthPageLayout from '../../layouts/auth';\r\nimport InformationMessage from '../../components/InformationMessage';\r\nimport { fetchCmsPage } from '../cmsPages/cmsPagesSlice';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\n\r\nconst Register = () => {\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const { t } = useTranslation();\r\n\r\n const [showTermsAndConditions, setShowTermnsAndCOnditions] = useState(false);\r\n\r\n const legalInfoPageSlug = 'legal-information';\r\n\r\n const loadTermsAndConditions = () => {\r\n dispatch(fetchCmsPage(legalInfoPageSlug));\r\n setShowTermnsAndCOnditions(true);\r\n }\r\n\r\n const cmsPageLegalInfo = useSelector(state => state.cmsPages[legalInfoPageSlug]);\r\n\r\n return (\r\n\r\n
\r\n
\r\n

{t('Register_Title')}

\r\n

{t('Register_Text')}

\r\n
\r\n {\r\n try {\r\n const action = await dispatch(registerUser(credentials));\r\n unwrapResult(action);\r\n history.push('/')\r\n } catch (errors) {\r\n return errors;\r\n }\r\n }}\r\n showTermsAndConditions={() => loadTermsAndConditions()} />\r\n }\r\n onClose={() => setShowTermnsAndCOnditions(false)} />\r\n
\r\n );\r\n};\r\n\r\nexport default withLayout(Register, AuthPageLayout, 'vh-lg-120');","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form, Field } from 'react-final-form';\r\nimport { Row, Col, Button, Alert, Spinner } from 'react-bootstrap';\r\nimport { Input } from '../../components/formControls';\r\nimport validators, { composeValidators } from '../../services/validators';\r\nimport { Link } from 'react-router-dom';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nconst ForgottenPasswordForm = ({ onSubmit }) => {\r\n const { t } = useTranslation();\r\n return (\r\n
\r\n {({ submitError, handleSubmit, pristine, submitting }) => (\r\n \r\n {submitError && {submitError}}\r\n \r\n \r\n \r\n \r\n {t('ForgottenPassword_Login')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nForgottenPasswordForm.propTypes = {\r\n onSubmit: PropTypes.func.isRequired\r\n};\r\n\r\nexport default ForgottenPasswordForm;","import React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { forgottenPassword } from './authSlice';\r\nimport ForgottenPasswordForm from './ForgottenPasswordForm';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { withLayout } from '../../layouts';\r\nimport AuthPageLayout from '../../layouts/auth';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\n\r\nconst ForgottenPassword = () => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const { forgotPasswordSent } = useSelector(state => state.auth);\r\n\r\n return (\r\n
\r\n
\r\n

{t('ForgottenPassword_Title')}

\r\n

{t('ForgottenPassword_Text')}

\r\n
\r\n {forgotPasswordSent &&
{t('ForgottenPassword_SubmitSuccess')}
}\r\n {\r\n try {\r\n const action = await dispatch(forgottenPassword(data.email));\r\n unwrapResult(action);\r\n } catch (errors) {\r\n return errors;\r\n }\r\n }} />\r\n
\r\n );\r\n};\r\n\r\nexport default withLayout(ForgottenPassword, AuthPageLayout);","import {\r\n createSlice,\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSelector\r\n} from '@reduxjs/toolkit'\r\nimport config from '../../config';\r\nimport iclarityApiClient from '../../services/iclarityApiClient';\r\n\r\nconst activitiesAdapter = createEntityAdapter();\r\n\r\nconst initialState = activitiesAdapter.getInitialState({\r\n loading: false,\r\n filter: { query: '', categoryIds: [] },\r\n pagination: {\r\n sortKey: '',\r\n sortDirection: '',\r\n pageSize: 10,\r\n pageNumber: 1,\r\n totalPages: 0,\r\n totalCount: 0,\r\n hasNext: false,\r\n hasPrevious: false,\r\n ids: []\r\n },\r\n ui: {} // keep UI required state per activity ID\r\n});\r\n\r\nconst initialActivityUiState = {\r\n fetchRequestStatus: 'idle',\r\n redeemRequestStatus: 'idle',\r\n redeemRequestError: null,\r\n eventRequestStatus: 'idle',\r\n eventRequestError: null\r\n};\r\n\r\n// Thunk functions\r\nexport const loadActivities = createAsyncThunk('activities/loadActivities', async (options) => {\r\n const { query, categoryIds, ...pagination } = options;\r\n const response = await iclarityApiClient.get('api/loyaltyMember/offers', {\r\n query,\r\n onlyNotReachLimit: true,\r\n labelIds: categoryIds && categoryIds.length > 0 ? categoryIds : config.VISIBLE_CATEGORIES,\r\n ...pagination\r\n });\r\n return response;\r\n});\r\n\r\nexport const fetchActivity = createAsyncThunk('activities/fetchActivity',\r\n async (id) => await iclarityApiClient.get(`api/loyaltyMember/offers/${id}`));\r\n\r\nexport const redeemActivity = createAsyncThunk('activities/redeemActivity', async (id, { rejectWithValue }) => {\r\n try {\r\n const response = await iclarityApiClient.put(`api/loyaltyMember/offers/${id}`);\r\n return response;\r\n } catch (errors) {\r\n return rejectWithValue(errors); // errors are set as action.payload and can be used in catch after unwrapResult\r\n }\r\n});\r\n\r\nexport const sendGenericEvent = createAsyncThunk('activities/sendGenericEvent', async ({ activityId, data }, { rejectWithValue }) => {\r\n try {\r\n const response = await iclarityApiClient.post('api/genericEvents', data);\r\n return response;\r\n } catch (errors) {\r\n return rejectWithValue(errors); // errors are set as action.payload and can be used in catch after unwrapResult\r\n }\r\n});\r\n\r\nconst activitiesSlice = createSlice({\r\n name: 'activities',\r\n initialState,\r\n reducers: {},\r\n extraReducers: builder => {\r\n builder\r\n .addCase(loadActivities.pending, (state, action) => {\r\n const { sortKey, sortDirection, pageSize, pageNumber, ...filter } = action.meta.arg;\r\n state.loading = true;\r\n state.filter = filter;\r\n state.pagination.sortKey = sortKey;\r\n state.pagination.sortDirection = sortDirection;\r\n state.pagination.pageSize = pageSize;\r\n state.pagination.pageNumber = pageNumber;\r\n })\r\n .addCase(loadActivities.fulfilled, (state, action) => {\r\n const { data, totalCount, totalPages, hasNext, hasPrevious } = action.payload;\r\n activitiesAdapter.addMany(state, data);\r\n state.loading = false;\r\n state.pagination.totalPages = totalPages;\r\n state.pagination.totalCount = totalCount;\r\n state.pagination.hasNext = hasNext;\r\n state.pagination.hasPrevious = hasPrevious;\r\n state.pagination.ids = data.map(entity => entity.id);\r\n })\r\n .addCase(loadActivities.rejected, (state, action) => {\r\n state.loading = false;\r\n })\r\n .addCase(fetchActivity.pending, (state, action) => {\r\n updateActivityUiState(state, action.meta.arg, { fetchRequestStatus: 'loading' });\r\n })\r\n .addCase(fetchActivity.fulfilled, (state, action) => {\r\n activitiesAdapter.upsertOne(state, action.payload);\r\n updateActivityUiState(state, action.meta.arg, { fetchRequestStatus: 'succeeded' });\r\n })\r\n .addCase(fetchActivity.rejected, (state, action) => {\r\n updateActivityUiState(state, action.meta.arg, { fetchRequestStatus: 'failed' });\r\n })\r\n .addCase(redeemActivity.pending, (state, action) => {\r\n updateActivityUiState(state, action.meta.arg, { redeemRequestStatus: 'loading', redeemRequestError: null });\r\n })\r\n .addCase(redeemActivity.fulfilled, (state, action) => {\r\n updateActivityUiState(state, action.meta.arg, { redeemRequestStatus: 'succeeded' });\r\n })\r\n .addCase(redeemActivity.rejected, (state, action) => {\r\n updateActivityUiState(state, action.meta.arg, { redeemRequestStatus: 'failed', redeemRequestError: action.payload.validationErrorMessage });\r\n })\r\n .addCase(sendGenericEvent.pending, (state, action) => {\r\n const { activityId } = action.meta.arg;\r\n updateActivityUiState(state, activityId, { eventRequestStatus: 'loading', eventRequestError: null });\r\n })\r\n .addCase(sendGenericEvent.fulfilled, (state, action) => {\r\n const { activityId } = action.meta.arg;\r\n updateActivityUiState(state, activityId, { eventRequestStatus: 'succeeded' });\r\n })\r\n .addCase(sendGenericEvent.rejected, (state, action) => {\r\n const { activityId } = action.meta.arg;\r\n updateActivityUiState(state, activityId, { eventRequestStatus: 'failed', eventRequestError: action.payload.validationErrorMessage });\r\n })\r\n }\r\n});\r\n\r\nconst updateActivityUiState = (state, activityId, newState) => {\r\n const currentActivityState = state.ui[activityId] || initialActivityUiState;\r\n state.ui[activityId] = { ...currentActivityState, ...newState };\r\n}\r\n\r\nexport default activitiesSlice.reducer;\r\n\r\nexport const {\r\n selectAll: selectAllActivities,\r\n selectById: selectActivityById\r\n} = activitiesAdapter.getSelectors(state => state.activities);\r\n\r\nexport const selectPagedActivities = createSelector(\r\n state => state.activities.entities,\r\n state => state.activities.pagination,\r\n (entities, pagination) => pagination.ids.map(id => entities[id])\r\n);\r\n\r\nexport const selectActivityUiStateById = (state, id) => state.activities.ui[id] || initialActivityUiState;","import {\r\n createSlice,\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSelector\r\n} from '@reduxjs/toolkit'\r\nimport config from '../../config';\r\nimport iclarityApiClient from '../../services/iclarityApiClient';\r\n\r\nconst categoriesAdapter = createEntityAdapter();\r\n\r\nconst initialState = categoriesAdapter.getInitialState({\r\n status: ''\r\n})\r\n\r\n// Thunk functions\r\nexport const loadCategories = createAsyncThunk(\r\n 'categories/loadCategories',\r\n async () => {\r\n const response = await iclarityApiClient.get('api/labels');\r\n return response;\r\n },\r\n {\r\n condition: (arg, { getState }) => {\r\n const { status } = getState().categories;\r\n if (status === 'loading' || status === 'loaded') {\r\n // Already fetched or in progress, don't need to re-fetch\r\n return false;\r\n }\r\n }\r\n }\r\n);\r\n\r\nconst categoriesSlice = createSlice({\r\n name: 'categories',\r\n initialState,\r\n reducers: {\r\n },\r\n extraReducers: builder => {\r\n builder\r\n .addCase(loadCategories.pending, (state, action) => {\r\n state.status = 'loading';\r\n })\r\n .addCase(loadCategories.fulfilled, (state, action) => {\r\n categoriesAdapter.setAll(state, action.payload);\r\n state.status = 'loaded';\r\n })\r\n .addCase(loadCategories.rejected, (state, action) => {\r\n state.status = '';\r\n })\r\n }\r\n});\r\n\r\nexport default categoriesSlice.reducer;\r\n\r\nexport const {\r\n // selectAll: selectAllCategories,\r\n selectById: selectCategoryById\r\n} = categoriesAdapter.getSelectors(state => state.categories);\r\n\r\nexport const selectAllCategories = createSelector(\r\n state => state.categories.entities,\r\n state => state.categories.ids,\r\n () => config.VISIBLE_CATEGORIES,\r\n (entities, ids, visibleCategoryIds) => ids.filter(id => visibleCategoryIds.length === 0 || visibleCategoryIds.includes(id)).map(id => entities[id])\r\n);","import React from 'react';\r\nimport { Pagination } from 'react-bootstrap';\r\nimport { createUltimatePagination, ITEM_TYPES } from 'react-ultimate-pagination';\r\n\r\nexport default createUltimatePagination({\r\n WrapperComponent: Pagination,\r\n itemTypeToComponent: {\r\n [ITEM_TYPES.PAGE]: ({ value, isActive, onClick }) => (\r\n {value}\r\n ),\r\n [ITEM_TYPES.ELLIPSIS]: ({ isActive, onClick }) => (\r\n \r\n ),\r\n [ITEM_TYPES.FIRST_PAGE_LINK]: ({ isActive, onClick }) => (\r\n \r\n ),\r\n [ITEM_TYPES.PREVIOUS_PAGE_LINK]: ({ isActive, onClick }) => (\r\n \r\n ),\r\n [ITEM_TYPES.NEXT_PAGE_LINK]: ({ isActive, onClick }) => (\r\n \r\n ),\r\n [ITEM_TYPES.LAST_PAGE_LINK]: ({ isActive, onClick }) => (\r\n \r\n )\r\n }\r\n});","import React from 'react';\r\nimport { Row, Col, Card } from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport moment from 'moment';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst ActivityListItem = ({ activity }) => {\r\n const { t } = useTranslation();\r\n const { store, retailer } = activity;\r\n const storeName = store ? store.name : retailer ? retailer.name : null;\r\n\r\n return \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{t(`AwardType_${activity.awardType}`)}
\r\n \r\n

{activity.name}

\r\n \r\n {/*

*/}\r\n

\r\n
\r\n {storeName && \r\n \r\n {storeName}\r\n \r\n }\r\n {moment(activity.startDate).format('L')}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
;\r\n};\r\n\r\nexport default ActivityListItem;","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { loadActivities, selectPagedActivities } from './activitiesSlice';\r\nimport { loadCategories, selectAllCategories } from '../categories/categoriesSlice';\r\nimport Pagination from '../../components/Pagination';\r\nimport ActivityListItem from './ActivityListItem';\r\nimport { Container, Row, Col, InputGroup, Form, FormControl, Button, Collapse } from 'react-bootstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst ActivitiesList = () => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const filter = useSelector(state => state.activities.filter);\r\n const pagination = useSelector(state => state.activities.pagination);\r\n const activities = useSelector(selectPagedActivities);\r\n const categories = useSelector(selectAllCategories);\r\n\r\n useEffect(() => dispatch(loadCategories()), []);\r\n useEffect(() => {\r\n const { sortKey, sortDirection, pageNumber, pageSize } = pagination;\r\n dispatch(loadActivities({ ...filter, sortKey, sortDirection, pageSize, pageNumber }));\r\n }, []);\r\n\r\n const [query, setQuery] = useState(filter.query);\r\n const handleQuerySearchSubmit = (event) => {\r\n event.preventDefault();\r\n // search with new query\r\n const { sortKey, sortDirection, pageNumber, pageSize } = pagination;\r\n dispatch(loadActivities({ ...filter, query, sortKey, sortDirection, pageSize, pageNumber }));\r\n };\r\n\r\n const handleCategorySelect = (categoryId, checked) => {\r\n const checkedCategoryIds = new Set([...filter.categoryIds]);\r\n if (checked) {\r\n checkedCategoryIds.add(categoryId);\r\n } else {\r\n checkedCategoryIds.delete(categoryId);\r\n }\r\n // search with new category Ids\r\n const { sortKey, sortDirection, pageNumber, pageSize } = pagination;\r\n dispatch(loadActivities({ ...filter, categoryIds: [...checkedCategoryIds], sortKey, sortDirection, pageSize, pageNumber }));\r\n };\r\n\r\n const handlePageSelect = selectedPageNumber => {\r\n // search with new page number\r\n const { sortKey, sortDirection, pageSize } = pagination;\r\n dispatch(loadActivities({ ...filter, sortKey, sortDirection, pageSize, pageNumber: selectedPageNumber }));\r\n };\r\n\r\n const [showFilter, setShowFilter] = useState(false);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

{t('Activity_Count', {count: pagination.totalCount })}

\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n setQuery(e.target.value)} />\r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n {activities && activities.map(x => )}\r\n
\r\n {pagination.totalCount > 0 && }\r\n {pagination.totalCount > 0 && Page {pagination.pageNumber} out of {pagination.totalPages}}\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default ActivitiesList;","import React from 'react';\r\nimport { Button } from 'react-bootstrap';\r\nimport Dialog from './Dialog';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst ConfirmationMessage = ({ title, message, onConfirm, onCancel, ...rest }) => {\r\n\tconst { t } = useTranslation();\r\n\tconst footer = (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\r\n\t\t
\r\n\t);\r\n\treturn ;\r\n};\r\n\r\nexport default ConfirmationMessage;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form, Field } from 'react-final-form';\r\nimport { Alert, Button, Spinner } from 'react-bootstrap';\r\nimport { Input } from '../../components/formControls';\r\nimport { useTranslation } from 'react-i18next';\r\nimport validators, { composeValidators } from '../../services/validators';\r\n\r\nconst EnterCodeForm = ({ error, onSubmit, onCancel }) => {\r\n const { t } = useTranslation();\r\n return (
\r\n {({ submitError, handleSubmit, pristine, submitting }) => (\r\n \r\n {submitError && {submitError}}\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n )}\r\n );\r\n};\r\n\r\nEnterCodeForm.propTypes = {\r\n onSubmit: PropTypes.func.isRequired\r\n};\r\nexport default EnterCodeForm;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Dialog from '../../components/Dialog';\r\nimport EnterCodeForm from './EnterCodeForm';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst EnterCodeDialog = ({ show, onSubmit, onCancel }) => {\r\n\tconst { t } = useTranslation();\r\n\r\n\tconst dialogContent = () => {\r\n\t\treturn {\r\n\t\t\theader: t('Activity_EnterCode'),\r\n\t\t\tbody: renderBody()\r\n\t\t};\r\n\t}\r\n\r\n\tconst renderBody = () => {\r\n\t\treturn ;\r\n\t}\r\n\r\n\treturn ;\r\n}\r\n\r\nEnterCodeDialog.propTypes = {\r\n\tshow: PropTypes.bool,\r\n\tonCancel: PropTypes.func.isRequired,\r\n\tonSubmit: PropTypes.func.isRequired\r\n};\r\n\r\nexport default EnterCodeDialog;","import {\r\n createSlice,\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSelector\r\n} from '@reduxjs/toolkit'\r\nimport iclarityApiClient from '../../services/iclarityApiClient'\r\n\r\nconst rewardsAdapter = createEntityAdapter();\r\n\r\nconst initialState = rewardsAdapter.getInitialState({\r\n loading: false,\r\n pagination: {\r\n sortKey: '',\r\n sortDirection: '',\r\n pageSize: 10,\r\n pageNumber: 1,\r\n totalPages: 0,\r\n totalCount: 0,\r\n hasNext: false,\r\n hasPrevious: false,\r\n ids: []\r\n },\r\n ui: {}\r\n})\r\n\r\nconst initialRewardUiState = {\r\n redeemRequestStatus: 'idle',\r\n redeemRequestError: null\r\n};\r\n\r\n// Thunk functions\r\nexport const loadRewards = createAsyncThunk('rewards/loadRewards', async (options) => {\r\n const { ...pagination } = options;\r\n const response = await iclarityApiClient.get('api/loyaltyMember/rewards', { ...pagination });\r\n return response;\r\n});\r\n\r\nexport const redeemReward = createAsyncThunk('rewards/redeemReward', async (id, { rejectWithValue }) => {\r\n try {\r\n const response = await iclarityApiClient.put(`api/loyaltyMember/rewards/${id}`);\r\n return response;\r\n } catch (errors) {\r\n return rejectWithValue(errors); // errors are set as action.payload and can be used in catch after unwrapResult\r\n }\r\n});\r\n\r\nconst rewardsSlice = createSlice({\r\n name: 'rewards',\r\n initialState,\r\n reducers: {\r\n },\r\n extraReducers: builder => {\r\n builder\r\n .addCase(loadRewards.pending, (state, action) => {\r\n const { sortKey, sortDirection, pageSize, pageNumber } = action.meta.arg;\r\n state.loading = true;\r\n state.pagination.sortKey = sortKey;\r\n state.pagination.sortDirection = sortDirection;\r\n state.pagination.pageSize = pageSize;\r\n state.pagination.pageNumber = pageNumber;\r\n })\r\n .addCase(loadRewards.fulfilled, (state, action) => {\r\n const { data, totalCount, totalPages, hasNext, hasPrevious } = action.payload;\r\n rewardsAdapter.upsertMany(state, data);\r\n state.loading = false;\r\n state.pagination.totalPages = totalPages;\r\n state.pagination.totalCount = totalCount;\r\n state.pagination.hasNext = hasNext;\r\n state.pagination.hasPrevious = hasPrevious;\r\n state.pagination.ids = data.map(entity => entity.id);\r\n })\r\n .addCase(loadRewards.rejected, (state, action) => {\r\n state.loading = false;\r\n })\r\n .addCase(redeemReward.pending, (state, action) => {\r\n updateRewardUiState(state, action.meta.arg, { redeemRequestStatus: 'loading', redeemRequestError: null });\r\n })\r\n .addCase(redeemReward.fulfilled, (state, action) => {\r\n updateRewardUiState(state, action.meta.arg, { redeemRequestStatus: 'succeeded' });\r\n })\r\n .addCase(redeemReward.rejected, (state, action) => {\r\n updateRewardUiState(state, action.meta.arg, { redeemRequestStatus: 'failed', redeemRequestError: action.payload.validationErrorMessage });\r\n })\r\n }\r\n});\r\n\r\nconst updateRewardUiState = (state, rewardId, newState) => {\r\n const currentRewardState = state.ui[rewardId] || initialRewardUiState;\r\n state.ui[rewardId] = { ...currentRewardState, ...newState };\r\n}\r\n\r\nexport default rewardsSlice.reducer;\r\n\r\nexport const {\r\n selectAll: selectAllRewards\r\n} = rewardsAdapter.getSelectors(state => state.rewards);\r\n\r\nexport const selectPagedRewards = createSelector(\r\n state => state.rewards.entities,\r\n state => state.rewards.pagination,\r\n (entities, pagination) => pagination.ids.map(id => entities[id])\r\n);\r\n\r\nexport const selectRewardUiStateById = (state, id) => state.rewards.ui[id] || initialRewardUiState;","import React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport Dialog from '../../components/Dialog';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Button, Card, Spinner } from 'react-bootstrap';\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nimport { toast, ToastContainer } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { redeemReward, selectRewardUiStateById } from './rewardsSlice';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\n\r\nconst RewardCodeDialog = ({ show, id, code, onCancel, onRedeem }) => {\r\n const { t } = useTranslation();\r\n const dispatch = useDispatch();\r\n const dialogContent = () => {\r\n return {\r\n header: t('Reward_Code_Title'),\r\n body: renderBody()\r\n };\r\n };\r\n\r\n const { redeemRequestStatus } = useSelector(state => selectRewardUiStateById(state, id));\r\n const redeemPending = redeemRequestStatus === 'loading';\r\n\r\n const handleRedeem = async () => {\r\n try {\r\n const redeemResultAction = await dispatch(redeemReward(id));\r\n // unwrap createAsyncThunk action result to get the actual payload (if fulfilled) or throw and error (if rejected)\r\n unwrapResult(redeemResultAction);\r\n if (onRedeem) {\r\n onRedeem();\r\n }\r\n } catch (errors) {\r\n toast.error(errors.validationErrorMessage || t('Common_Error'));\r\n }\r\n }\r\n\r\n const renderBody = () => {\r\n return
\r\n

{t('Reward_Code_Description')}

\r\n \r\n \r\n toast.success(t('Reward_Code_Copied'))}>\r\n
{code}
\r\n
\r\n
\r\n
\r\n

{t('Reward_UseInfo')}

\r\n\r\n
\r\n \r\n \r\n
\r\n \r\n
;\r\n };\r\n\r\n return ;\r\n}\r\n\r\nRewardCodeDialog.propTypes = {\r\n id: PropTypes.number.isRequired,\r\n code: PropTypes.string.isRequired,\r\n show: PropTypes.bool,\r\n onCancel: PropTypes.func.isRequired,\r\n onRedeem: PropTypes.func.isRequired\r\n};\r\n\r\nexport default RewardCodeDialog;","import React, { useEffect, useState } from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { fetchActivity, selectActivityById, sendGenericEvent, redeemActivity, selectActivityUiStateById } from './activitiesSlice';\r\nimport { Container, Row, Col, Button, Card, Spinner } from 'react-bootstrap';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport moment from 'moment';\r\nimport globalize from '../../services/globalize';\r\nimport { useTranslation } from 'react-i18next';\r\nimport ConfirmationMessage from '../../components/ConfirmationMessage';\r\nimport EnterCodeDialog from './EnterCodeDialog';\r\nimport { toast, ToastContainer } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport RewardCodeDialog from '../rewards/RewardCodeDialog';\r\nimport { unwrapResult } from '@reduxjs/toolkit';\r\nimport { FORM_ERROR } from 'final-form';\r\n\r\nconst ActivityDetails = ({ match }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n const history = useHistory();\r\n\r\n const [showConfirmRedeem, setShowConfirmRedeem] = useState(false);\r\n const [showEnterCodeDialog, setShowEnterCodeDialog] = useState(false);\r\n const [showRewardCodeDialog, setShowRewardCodeDialog] = useState(false);\r\n const [receivedReward, setReceivedReward] = useState(null);\r\n const [redeemPending, setRedeemPending] = useState(false);\r\n\r\n const activityId = Number(match.params.id);\r\n const activity = useSelector(state => selectActivityById(state, activityId));\r\n const { eventRequestStatus } = useSelector(state => selectActivityUiStateById(state, activityId));\r\n\r\n useEffect(() => {\r\n dispatch(fetchActivity(activityId));\r\n }, []);\r\n\r\n const handleDone = async () => {\r\n const doneEvent = activity.qualificationEvents.filter(a => a.code.startsWith('done-'))[0];\r\n if (doneEvent) {\r\n const genericEvent = {\r\n storeReference: activity.store && activity.store.reference,\r\n retailerId: activity.retailer && activity.retailer.id,\r\n eventCode: doneEvent.code,\r\n tags: { \"offer_id\": activity.id }\r\n };\r\n\r\n try {\r\n const genericEventAction = await dispatch(sendGenericEvent({ activityId, data: genericEvent }));\r\n unwrapResult(genericEventAction);\r\n\r\n toast.success(t('Activity_DoneInformationMessage', { count: activity.awardAmount }),\r\n { onClose: () => history.push('/') });\r\n } catch (errors) {\r\n toast.error(errors.validationErrorMessage || t('Common_Error'));\r\n }\r\n }\r\n };\r\n\r\n const handleEnterCode = async values => {\r\n const pinEvent = activity.qualificationEvents.find(a => a.code.toLowerCase().startsWith('pin-'));\r\n if (pinEvent && values.cashierPin) {\r\n const genericEvent = {\r\n storeReference: activity.store && activity.store.reference,\r\n retailerId: activity.retailer && activity.retailer.id,\r\n eventCode: pinEvent.code,\r\n cashierPin: values.cashierPin,\r\n tags: { \"offer_id\": activity.id }\r\n }\r\n\r\n try {\r\n const genericEventAction = await dispatch(sendGenericEvent({ activityId, data: genericEvent }));\r\n unwrapResult(genericEventAction);\r\n\r\n setShowEnterCodeDialog(false);\r\n toast.success(t('Activity_CodeAccepted'), { onClose: () => history.push('/') });\r\n } catch (errors) {\r\n return errors;\r\n }\r\n }\r\n }\r\n\r\n const handleRedeem = async () => {\r\n try {\r\n setShowConfirmRedeem(false);\r\n setRedeemPending(true);\r\n\r\n const redeemResultAction = await dispatch(redeemActivity(activity.id));\r\n // unwrap createAsyncThunk action result to get the actual payload (if fulfilled) or throw and error (if rejected)\r\n const reward = unwrapResult(redeemResultAction);\r\n if (reward) {\r\n setReceivedReward(reward);\r\n setShowRewardCodeDialog(true);\r\n toast.success(t('Activity_Redeemed'));\r\n }\r\n else {\r\n toast.success(t('Activity_PrizedrawParticipate'), { onClose: () => history.push('/') });\r\n }\r\n } catch (errors) {\r\n toast.error(errors.validationErrorMessage || t('Common_Error'));\r\n } finally {\r\n setRedeemPending(false);\r\n }\r\n }\r\n\r\n let valueText = '';\r\n let valueIcon = '';\r\n if (activity) {\r\n switch (activity.awardType) {\r\n case 'Points':\r\n valueIcon = 'plus-circle';\r\n valueText = t('Activity_Points', { count: activity.awardAmount })\r\n break;\r\n case 'Reward':\r\n if (activity.conversionType === 'Points' && (activity.value ?? 0) > 0) {\r\n valueIcon = 'minus-circle';\r\n valueText = t('Activity_Points', { count: activity.value })\r\n }\r\n else if (activity.conversionType === 'Money' && (activity.value ?? 0) > 0) {\r\n let reward = activity.reward;\r\n const locale = globalize.getCurrentCulture();\r\n valueText = new Intl.NumberFormat(locale, { style: 'currency', currency: reward.currency })\r\n .format(activity.value);\r\n valueIcon = 'minus-circle';\r\n }\r\n break;\r\n case 'Information':\r\n case 'PointsPerMoney':\r\n case 'PrizeDraw':\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n const renderActionButtons = () => {\r\n const showDoneBtn = activity.qualificationEvents.some(event => event.code.toLowerCase().startsWith('done-'));\r\n const showPinButton = activity.qualificationEvents.some(event => event.code.toLowerCase().startsWith('pin-'));\r\n\r\n const eventRequestPending = eventRequestStatus === 'loading';\r\n\r\n if (showDoneBtn) {\r\n return ;\r\n }\r\n\r\n if (showPinButton) {\r\n return ;\r\n }\r\n\r\n if (activity.awardType.toLowerCase() === 'information' && activity.linkUrl) {\r\n return ;\r\n }\r\n else if (activity.conversionType === 'Money' && activity.awardType === 'Reward') {\r\n return ;\r\n }\r\n else if (activity.allowRedeem) {\r\n return ;\r\n }\r\n }\r\n\r\n return
{activity &&
\r\n
\r\n \r\n \r\n \r\n {t(`AwardType_${activity.awardType}`)}\r\n

{activity.name}

\r\n
\r\n

\r\n

\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {activity.store && activity.store.name}\r\n
\r\n
\r\n {renderActionButtons()}\r\n
\r\n {valueText &&
\r\n
\r\n \r\n
\r\n
{valueText}
\r\n
}\r\n
\r\n
\r\n \r\n
\r\n
{t('Activity_Start')} {moment(activity.startDate).format('LL')}
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{t('Activity_End')} {moment(activity.endDate).format('LL')}
\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 handleEnterCode(values)}\r\n onCancel={() => setShowEnterCodeDialog(false)}\r\n />\r\n setShowConfirmRedeem(false)}\r\n />\r\n { setShowRewardCodeDialog(false); history.push('/'); }}\r\n onCancel={() => { setShowRewardCodeDialog(false); history.push('/'); }} />\r\n \r\n
}\r\n
;\r\n};\r\n\r\nexport default ActivityDetails;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form, Field } from 'react-final-form';\r\nimport { Card, Button, Alert, FormText, Spinner } from 'react-bootstrap';\r\nimport { Input, DateTimeInput, Radio, CheckboxGroup } from '../../../components/formControls';\r\nimport { useTranslation } from 'react-i18next';\r\nimport validators from '../../../services/validators';\r\n\r\nconst identity = value => (value); // ensures form value is set to empty string instead of null when cleared, react-final-form ignores nulls\r\n\r\nconst ProfileForm = ({ onSubmit, initialValues }) => {\r\n const { t } = useTranslation();\r\n const genderEntries = [\r\n { label: t('GenderType_Male'), value: 'Male' },\r\n { label: t('GenderType_Female'), value: 'Female' },\r\n { label: t('GenderType_Unknown'), value: 'Unknown' },\r\n ];\r\n const marketingChannelEntries = [\r\n { label: t('MarketingChannel_Email'), value: 'Email' },\r\n { label: t('MarketingChannel_Mobile'), value: 'Mobile' }\r\n ];\r\n return
\r\n {({ submitError, submitSucceeded, handleSubmit, pristine, submitting }) => (\r\n \r\n \r\n \r\n
{t('PersonalInfo_Title')}
\r\n
\r\n \r\n {submitError && {submitError}}\r\n {submitSucceeded && {t('Common_UpdateSuccess')}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n

{t('MarketingConsent_Title')}

\r\n {t('MarketingConsent_Info')}\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\nProfileForm.propTypes = {\r\n onSubmit: PropTypes.func.isRequired\r\n};\r\n\r\nexport default ProfileForm;","import { unwrapResult } from '@reduxjs/toolkit';\r\nimport React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { selectCurrentAccount, updatePersonalDetails } from '../accountSlice';\r\nimport PersonalInfoForm from './PersonalInfoForm';\r\n\r\nconst PersonalInfoPage = () => {\r\n const dispatch = useDispatch();\r\n\r\n const user = useSelector(selectCurrentAccount);\r\n\r\n const initialValues = user && {\r\n firstName: user.firstName,\r\n lastName: user.lastName,\r\n dateOfBirth: user.dateOfBirth,\r\n gender: user.gender,\r\n mobileTelephone: user.mobileTelephone,\r\n town: user.town,\r\n country: user.country,\r\n marketingChannelsOptIn: user.marketingChannelsOptIn && user.marketingChannelsOptIn.map(x => x.name)\r\n };\r\n\r\n return {\r\n try {\r\n const action = await dispatch(updatePersonalDetails(data));\r\n unwrapResult(action); // unwrap to catch errors but do not return actual result here - react-final-form would interprets this as error response\r\n } catch (errors) {\r\n return errors; // return validation errors for react-final-form to show\r\n }\r\n }} />;\r\n\r\n};\r\n\r\nexport default PersonalInfoPage;","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form, Field } from 'react-final-form';\r\nimport { Card, Button, Alert, Spinner } from 'react-bootstrap';\r\nimport { Input } from '../../../components/formControls';\r\nimport { useTranslation } from 'react-i18next';\r\nimport validators, { composeValidators } from '../../../services/validators';\r\n\r\nconst passwordMinLength = validators.minLength(6);\r\n\r\nconst ChangePasswordForm = ({ onSubmit, initialValues }) => {\r\n const { t } = useTranslation();\r\n return
\r\n {({ submitError, submitSucceeded, handleSubmit, pristine, submitting, values }) => (\r\n \r\n \r\n \r\n
{t('ChangePassword_Title')}
\r\n
\r\n \r\n {submitError && {submitError}}\r\n {submitSucceeded && {t('Common_UpdateSuccess')}}\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\nChangePasswordForm.propTypes = {\r\n onSubmit: PropTypes.func.isRequired\r\n};\r\n\r\nexport default ChangePasswordForm;","import { unwrapResult } from '@reduxjs/toolkit';\r\nimport React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { changePassword } from '../accountSlice';\r\nimport ChangePasswordForm from './ChangePasswordForm';\r\n\r\nconst SecurityPage = () => {\r\n const dispatch = useDispatch();\r\n\r\n return {\r\n try {\r\n const action = await dispatch(changePassword(data));\r\n unwrapResult(action);\r\n } catch (errors) {\r\n return errors;\r\n }\r\n }} />;\r\n};\r\n\r\nexport default SecurityPage;","import React, { useState } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { Card, Row, Col } from 'react-bootstrap';\r\nimport moment from 'moment';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport globalize from '../../services/globalize';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { ToastContainer } from 'react-toastify';\r\nimport RewardCodeDialog from './RewardCodeDialog';\r\nimport { loadRewards } from './rewardsSlice';\r\n\r\nconst RewardListItem = ({ item }) => {\r\n const { t } = useTranslation();\r\n\r\n const dispatch = useDispatch();\r\n const [showRewardCodeDialog, setShowRewardCodeDialog] = useState(false);\r\n const [showDescription, setShowDescription] = useState(false);\r\n\r\n const { reward, store, retailer, created, validFromDate, expirationDate, redemptionDate, code, id } = item;\r\n\r\n const storeName = store ? store.name : retailer ? retailer.name : null;\r\n\r\n let formattedRewardValue = reward.value;\r\n const locale = globalize.getCurrentCulture();\r\n switch (reward.type) {\r\n case 'MoneyOff':\r\n formattedRewardValue = new Intl.NumberFormat(locale, { style: 'currency', currency: reward.currency })\r\n .format(reward.value);\r\n break;\r\n case 'PercentOff':\r\n formattedRewardValue = new Intl.NumberFormat(locale, { style: 'percent' })\r\n .format(reward.value / 100);\r\n break;\r\n case 'Gift':\r\n formattedRewardValue = '';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n const expired = moment(expirationDate).isBefore(moment());\r\n const used = redemptionDate !== null && redemptionDate !== undefined;\r\n const active = !expired && !used;\r\n\r\n return
\r\n \r\n
\r\n
\r\n Reward\r\n {storeName &&
\r\n
\r\n {storeName}\r\n
\r\n
}\r\n
\r\n\r\n
\r\n \r\n \r\n

{reward.name}

\r\n {storeName &&
\r\n
\r\n {storeName}\r\n
\r\n
}\r\n {reward.description && }\r\n {showDescription &&

}\r\n \r\n \r\n {active && code && }\r\n {!used && expired && {t('Reward_Expired')}}\r\n {used && {t('Reward_Used')}}\r\n \r\n \r\n {formattedRewardValue}\r\n {t(`RewardType_${reward.type}`)}\r\n \r\n \r\n

\r\n
\r\n
\r\n \r\n
    \r\n
  • {moment(created).fromNow()}
  • \r\n {validFromDate &&
  • {`${t('Reward_ValidFrom')} ${moment(validFromDate).format('L')}`}
  • }\r\n {expirationDate &&
  • {`${t('Reward_UseBy')} ${moment(expirationDate).format('L')}`}
  • }\r\n
\r\n
\r\n
\r\n {\r\n code && showRewardCodeDialog && {\r\n setShowRewardCodeDialog(false);\r\n dispatch(loadRewards({ onlyActive: true, sortKey: \"\", sortDirection: \"\", pageSize: 10, pageNumber: 1 }))\r\n }}\r\n onCancel={() => setShowRewardCodeDialog(false)} />\r\n }\r\n \r\n
;\r\n};\r\n\r\nexport default RewardListItem;","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Card, Nav } from 'react-bootstrap';\r\nimport { loadRewards, selectPagedRewards } from './rewardsSlice';\r\nimport Pagination from '../../components/Pagination';\r\nimport { useTranslation } from 'react-i18next';\r\nimport BlockUi from 'react-block-ui';\r\nimport 'react-block-ui/style.css';\r\nimport RewardListItem from './RewardListItem';\r\n\r\nconst RewardsList = ({ }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const loading = useSelector(state => state.rewards.loading);\r\n const pagination = useSelector(state => state.rewards.pagination);\r\n const rewards = useSelector(selectPagedRewards);\r\n const [onlyActive, setOnlyActive] = useState(true);\r\n\r\n useEffect(() => {\r\n const { sortKey, sortDirection, pageNumber, pageSize } = pagination;\r\n dispatch(loadRewards({ onlyActive, sortKey, sortDirection, pageSize, pageNumber }));\r\n }, []);\r\n\r\n const loadRewardsByStatus = active => {\r\n setOnlyActive(active);\r\n const { sortKey, sortDirection, pageSize } = pagination;\r\n dispatch(loadRewards({ onlyActive: active, sortKey, sortDirection, pageSize, pageNumber: 1 }));\r\n };\r\n\r\n const handlePageSelect = selectedPageNumber => {\r\n // search with new page number\r\n const { sortKey, sortDirection, pageSize } = pagination;\r\n dispatch(loadRewards({ sortKey, sortDirection, pageSize, pageNumber: selectedPageNumber }));\r\n };\r\n\r\n return \r\n \r\n
{t(\"Rewards_History\")}
\r\n
\r\n \r\n \r\n \r\n {!loading && rewards.length === 0 &&

{onlyActive ? t('Rewards_OnlyActive_None') : t('Rewards_All_None')}

}\r\n {rewards.map(item => )}\r\n
\r\n {pagination.totalCount > 0 && }\r\n
\r\n
\r\n
\r\n
\r\n};\r\n\r\nexport default RewardsList;","import {\r\n createSlice,\r\n createAsyncThunk,\r\n createEntityAdapter,\r\n createSelector\r\n} from '@reduxjs/toolkit'\r\nimport iclarityApiClient from '../../services/iclarityApiClient'\r\n\r\nconst pointsAdapter = createEntityAdapter();\r\n\r\nconst initialState = pointsAdapter.getInitialState({\r\n loading: false,\r\n pagination: {\r\n sortKey: '',\r\n sortDirection: '',\r\n pageSize: 10,\r\n pageNumber: 1,\r\n totalPages: 0,\r\n totalCount: 0,\r\n hasNext: false,\r\n hasPrevious: false,\r\n ids: []\r\n }\r\n})\r\n\r\n// Thunk functions\r\nexport const loadPoints = createAsyncThunk('points/loadPoints', async (options) => {\r\n const { ...pagination } = options;\r\n const response = await iclarityApiClient.get('api/loyaltyMember/points', { ...pagination });\r\n return response;\r\n});\r\n\r\nconst pointsSlice = createSlice({\r\n name: 'points',\r\n initialState,\r\n reducers: {\r\n },\r\n extraReducers: builder => {\r\n builder\r\n .addCase(loadPoints.pending, (state, action) => {\r\n const { sortKey, sortDirection, pageSize, pageNumber } = action.meta.arg;\r\n state.loading = true;\r\n state.pagination.sortKey = sortKey;\r\n state.pagination.sortDirection = sortDirection;\r\n state.pagination.pageSize = pageSize;\r\n state.pagination.pageNumber = pageNumber;\r\n })\r\n .addCase(loadPoints.fulfilled, (state, action) => {\r\n const { data, totalCount, totalPages, hasNext, hasPrevious } = action.payload;\r\n pointsAdapter.addMany(state, data);\r\n state.loading = false;\r\n state.pagination.totalPages = totalPages;\r\n state.pagination.totalCount = totalCount;\r\n state.pagination.hasNext = hasNext;\r\n state.pagination.hasPrevious = hasPrevious;\r\n state.pagination.ids = data.map(entity => entity.id);\r\n })\r\n .addCase(loadPoints.rejected, (state, action) => {\r\n state.loading = false;\r\n })\r\n }\r\n});\r\n\r\nexport default pointsSlice.reducer;\r\n\r\nexport const {\r\n selectAll: selectAllPoints\r\n} = pointsAdapter.getSelectors(state => state.points);\r\n\r\nexport const selectPagedPoints = createSelector(\r\n state => state.points.entities,\r\n state => state.points.pagination,\r\n (entities, pagination) => pagination.ids.map(id => entities[id])\r\n);","import React from 'react';\r\nimport { Card, Row, Col } from 'react-bootstrap';\r\nimport moment from 'moment';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { useTranslation } from 'react-i18next';\r\nimport HighImage from '../../assets/images/points_high.png';\r\nimport LowImage from '../../assets/images/points_low.png';\r\n\r\nconst PointListItem = ({ item }) => {\r\n const { t } = useTranslation();\r\n const { amount, valueDate, description, offer } = item;\r\n\r\n const name = offer ? offer.name : description ? description : (amount > 0 ? t('Points_Earned') : t('Points_Redeemed'));\r\n const imageUrl = amount > 0 ? HighImage : LowImage;\r\n const absAmount = Math.abs(amount);\r\n\r\n return \r\n \r\n
\r\n
\r\n Activity\r\n
\r\n
\r\n \r\n \r\n

{name}

\r\n
\r\n
\r\n {moment(valueDate).format('L HH:mm')}\r\n
\r\n
\r\n \r\n\r\n \r\n 0 ? 'badge-soft-info' : 'badge-danger'}`}>\r\n {t('Points_Point', { sign: amount > 0 ? '+' : '-', count: absAmount })}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n};\r\n\r\nexport default PointListItem;","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAABhUlEQVRoQ93YgW3CMBQEUFZglq7QWboTK3QFVugsXSH4Kj4KP4fzv+0gX086oR408RNqhTgty/IvSkfF0lGxdFQsHRVLR8XSUbF0VCwdFTtTLqU4UbqzQZAmzIwQJI2ZFYKkMDNDkDBmdgjyXbo5uO/skI/S39LNwX1nhoQR6CjIufRaipuPSAqBjoAA8VOKK+HmvZgaAveh/wB6IWuEtQezh8D9kA2mB8IQ1hZMFGF5wrRCaghrBpNFWB6YFkgEYY1gWhGWP0wWkkFYa5heBAR4uGQgNQQO81lae95juhEIANZI9hB2yOjrhiCQDCR6OMve67/uj+z5FAKJQrIIS+33XjWNQCKQVoQlg2lCIHuQXoQlgmlGIDXIKISldr0uBPIKMhphYdftRiAMchTCsr7+EATiIUcjLLgPPlIMQSAe8g7EIfEQD0CnRyAe4t8RCQTiIeu/ERkE4iEIMCO/QHhLniDrH5RLR8XSUbF0VCwdFUtHxdJRsXRULB0VS0fF0lGvy+kGiljuhCf1lqAAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAABcElEQVRoQ93YwU1DMRCE4XfKHVFKWqAWekoLtEALdJE7LZgdlI0eysTetf0kD4dfJpPIet8hCLGVUv5FdFSMjorRUTE6KkZHxeioGB0V266n1xfr0zpbeC0Rg3xZxfq2ZDAMAoQng2lBZDARiASGQfw7ciQGv1Aut5O9n45BcPmRmP39OKdgGAQdhWH3TsE8g6DZmNp9w5gaBM3C1O7xhjAtCBrFRBBeNyYCQb2YDMLrwkQhKItpff79drL305gMBEUx0c/hnILJQlDrId+sCMKbgumBoBrmWQzhDWPw8HZeshCUwdQQ3igGf/KYIQ9BEUwE4fVifhGoF4JqmAzCy2LuCDQCQQzTg/CimD8INApBe8wIwmthHhBoBgQBM/MfFzUMbRbkiFKYlSEojFkdgj4s+vD7VofQLzZrZUgYgVaFpBBoRUgagVaDdCHQHeI/qEdHxeioGB0Vo6NidFSMjorRUTE6KkZHxeioGB31KtsPc7Cwx0iMUUIAAAAASUVORK5CYII=\"","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Dialog from '../../components/Dialog';\r\nimport Config from '../../config';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Button, Card } from 'react-bootstrap';\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nimport { toast, ToastContainer } from 'react-toastify';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\n\r\nconst InviteCodeDialog = ({ show, friendReferralCode, onCancel }) => {\r\n\tconst { t } = useTranslation();\r\n\r\n\tconst dialogContent = () => {\r\n\t\treturn {\r\n\t\t\theader: t('InviteCode_Title'),\r\n\t\t\tbody: renderBody()\r\n\t\t};\r\n\t};\r\n\r\n\tconst inviteMessage = t('InviteCode_Message', { app_url: Config.APP_URL, invite_code: friendReferralCode });\r\n\tconst renderBody = () => {\r\n\t\treturn
\r\n\t\t\t

{t('InviteCode_InfoMessage')}

\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t{inviteMessage}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t
\r\n\t\t\t\t toast.success(t('InviteCode_Copied'))}>\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t\t\r\n\t\t
;\r\n\t};\r\n\r\n\treturn ;\r\n}\r\n\r\nInviteCodeDialog.propTypes = {\r\n\tshow: PropTypes.bool,\r\n\tonCancel: PropTypes.func.isRequired\r\n};\r\n\r\nexport default InviteCodeDialog;","import React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { loadPoints, selectPagedPoints } from './pointsSlice';\r\nimport Pagination from '../../components/Pagination';\r\nimport PointListItem from './PointListItem';\r\nimport { Card, Row, Col, Button } from 'react-bootstrap';\r\nimport { selectCurrentAccount } from '../account/accountSlice';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useState } from 'react';\r\nimport InviteCodeDialog from './InviteCodeDialog';\r\n\r\nconst PointsList = () => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const pagination = useSelector(state => state.points.pagination);\r\n const points = useSelector(selectPagedPoints);\r\n const account = useSelector(selectCurrentAccount);\r\n const [showInviteCodeDialog, setShowInviteCodeDialog] = useState(false);\r\n\r\n useEffect(() => {\r\n const { sortKey, sortDirection, pageNumber, pageSize } = pagination;\r\n dispatch(loadPoints({ sortKey, sortDirection, pageSize, pageNumber }));\r\n }, []);\r\n\r\n const handlePageSelect = selectedPageNumber => {\r\n // search with new page number\r\n const { sortKey, sortDirection, pageSize } = pagination;\r\n dispatch(loadPoints({ sortKey, sortDirection, pageSize, pageNumber: selectedPageNumber }));\r\n };\r\n\r\n return
\r\n \r\n \r\n
{t(\"Account_Balance\")}
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n
\r\n

{account.pointsBalance} {t(\"Account_Balance_Points\")}

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n

{t('InviteCode_CardTitle')}

\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
{t('Points_History')}
\r\n
\r\n \r\n {points.map(item => )}\r\n \r\n
\r\n {pagination.totalCount > 0 && }\r\n
\r\n
\r\n setShowInviteCodeDialog(false)}/>\r\n
;\r\n};\r\n\r\nexport default PointsList;","import PersonalInfoPage from './personalInfo/PersonalInfoPage';\r\nimport SecurityPage from './security/SecurityPage';\r\nimport RewardsList from '../rewards/RewardsList';\r\nimport PointsList from '../points/PointsList';\r\n\r\nexport const ROUTES = [\r\n\t{\r\n\t\tpath: '/account',\r\n\t\texact: true,\r\n\t\tpageTitleResourceKey: 'Account_PersonalInfo_Title',\r\n\t\tmainContent: PersonalInfoPage\r\n\t},\r\n\t{\r\n\t\tpath: '/account/login-and-security',\r\n\t\texact: true,\r\n\t\tpageTitleResourceKey: 'Account_Security_Title',\r\n\t\tmainContent: SecurityPage\r\n\t},\r\n\t{\r\n\t\tpath: '/account/rewards',\r\n\t\texact: true,\r\n\t\tpageTitleResourceKey: 'Account_Rewards_Title',\r\n\t\tmainContent: RewardsList\r\n\t},\r\n\t{\r\n\t\tpath: '/account/points',\r\n\t\texact: true,\r\n\t\tpageTitleResourceKey: 'Account_Points_Title',\r\n\t\tmainContent: PointsList\r\n\t}\r\n];\r\n","export default __webpack_public_path__ + \"static/media/abstract-shapes-20.b464306f.svg\";","import React from 'react';\r\nimport { Switch, Route } from 'react-router-dom';\r\nimport { Container, Row, Col } from 'react-bootstrap';\r\nimport BackgroundImage from '../../assets/svg/components/abstract-shapes-20.svg';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst BreadcrumbSection = ({ routes, showNavigation, onToggleNavigation, onLogout }) => {\r\n const { t } = useTranslation();\r\n\r\n return
\r\n \r\n \r\n \r\n
\r\n \r\n {routes.map((route, index) => route.pageTitleResourceKey ?

{t(route.pageTitleResourceKey)}

: null} />)}\r\n
\r\n
\r\n\r\n
    \r\n
  1. Account
  2. \r\n
  3. \r\n \r\n {routes.map((route, index) => route.pageTitleResourceKey ? {t(route.pageTitleResourceKey)} : null} />)}\r\n \r\n
  4. \r\n
\r\n \r\n\r\n \r\n
\r\n \r\n
\r\n\r\n {/* Responsive Toggle Button */}\r\n \r\n {/* End Responsive Toggle Button */}\r\n \r\n
\r\n
\r\n
;\r\n};\r\n\r\nexport default BreadcrumbSection;","import React from 'react';\r\nimport { Card, Collapse } from 'react-bootstrap';\r\nimport utils from '../../services/utils';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { IndexLinkContainer } from 'react-router-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst Sidebar = ({ user, showNavigation, onLogout }) => {\r\n const { t } = useTranslation();\r\n return
\r\n \r\n
\r\n \r\n \r\n {/* Avatar */}\r\n {user &&
\r\n
\r\n {utils.getAvatarName(user.firstName, user.lastName)}\r\n
\r\n\r\n

{user.firstName} {user.lastName}

\r\n

{user.email}

\r\n
}\r\n {/* End Avatar */}\r\n\r\n {/* Nav */}\r\n\r\n
{t(\"Account_Account\")}
\r\n {/* List */}\r\n
    \r\n
  • \r\n \r\n {t(\"PersonalInfo_Title\")}\r\n \r\n
  • \r\n
  • \r\n \r\n {t(\"Account_LoginAndSecurity\")}\r\n \r\n
  • \r\n
\r\n {/* End List */}\r\n\r\n
{t(\"Account_Loyalty\")}
\r\n {/* List */}\r\n
    \r\n
  • \r\n \r\n {t('Account_Rewards')}\r\n \r\n
  • \r\n
  • \r\n \r\n {t('Account_Points')}\r\n \r\n
  • \r\n
\r\n {/* End List */}\r\n\r\n
\r\n
\r\n\r\n {/* List */}\r\n
    \r\n
  • \r\n \r\n
  • \r\n
\r\n {/* End List */}\r\n
\r\n {/* End Nav */}\r\n
\r\n
\r\n
\r\n
\r\n
;\r\n};\r\n\r\nexport default Sidebar;","import ActivitiesList from '../activities/ActivitiesList';\r\nimport ActivityDetails from '../activities/ActivityDetails';\r\nimport AccountPage from '../account';\r\nimport PointsList from '../points/PointsList';\r\nimport CmsPageDetails from '../cmsPages/CmsPageDetails';\r\n\r\nexport const ROUTES = [\r\n\t{\r\n\t\tpath: '/',\r\n\t\texact: true,\r\n\t\tpageTitleResourceKey: 'ActivitiesList_Title',\r\n\t\tmainContent: ActivitiesList\r\n\t},\r\n\t{\r\n\t\tpath: '/activities/:id',\r\n\t\texact: true,\r\n\t\tpageTitleResourceKey: 'ActivityDetails_Title',\r\n\t\tmainContent: ActivityDetails\r\n\t},\r\n\t{\r\n\t\tpath: '/account',\r\n\t\texact: false,\r\n\t\tmainContent: AccountPage\r\n\t},\r\n\t{\r\n\t\tpath: '/points',\r\n\t\texact: true,\r\n\t\tpageTitleResourceKey: 'PointsList_Title',\r\n\t\tmainContent: PointsList\r\n\t},\r\n\t{\r\n\t\tpath: '/cms/:slug',\r\n\t\texact: true,\r\n\t\tmainContent: CmsPageDetails\r\n\t}\r\n];\r\n","import React, { useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Col, Container, Row } from 'react-bootstrap';\r\nimport { Switch, Route } from 'react-router-dom';\r\nimport { logoutUser } from '../auth/authSlice';\r\nimport { selectCurrentAccount } from './accountSlice';\r\nimport * as Routes from './routes';\r\nimport BreadcrumbSection from './BreadcrumbSection';\r\nimport Sidebar from './Sidebar';\r\n\r\nconst AccountDashboard = () => {\r\n const dispatch = useDispatch();\r\n const user = useSelector(selectCurrentAccount);\r\n const [showNavigation, setShowNavigation] = useState(false);\r\n\r\n const routes = Routes.ROUTES;\r\n\r\n return
\r\n setShowNavigation(!showNavigation)}\r\n onLogout={() => dispatch(logoutUser())} />\r\n\r\n \r\n \r\n \r\n dispatch(logoutUser())} />\r\n \r\n \r\n \r\n {routes.map((route, index) => )}\r\n \r\n \r\n\r\n \r\n \r\n\r\n\r\n
;\r\n};\r\n\r\nexport default AccountDashboard;","import React, { useEffect } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { fetchCmsPage } from './cmsPagesSlice';\r\nimport { Container } from 'react-bootstrap';\r\nimport { useTranslation } from 'react-i18next';\r\nimport BlockUi from 'react-block-ui';\r\n\r\nconst CmsPageDetails = ({ match }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation();\r\n\r\n const pageSlug = match.params.slug;\r\n\r\n useEffect(() => dispatch(fetchCmsPage(pageSlug)), []);\r\n\r\n const cmsPage = useSelector(state => state.cmsPages[pageSlug]);\r\n\r\n return (\r\n \r\n

{t(`CmsPage_${pageSlug.toLowerCase()}_Title`)}

\r\n {cmsPage &&\r\n \r\n
\r\n {cmsPage.error &&

{t('CmsPage_NotFound')}

}\r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nexport default CmsPageDetails;","import React, { useEffect } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { withLayout } from '../../layouts';\r\nimport { Switch, Route } from 'react-router-dom';\r\nimport * as Routes from './routes';\r\nimport { fetchCurrentAccount } from '../account/accountSlice';\r\n\r\nconst Dashboard = () => {\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => dispatch(fetchCurrentAccount()), []);\r\n\r\n const routes = Routes.ROUTES;\r\n\r\n return
\r\n \r\n {routes.map((route, index) => )}\r\n \r\n
\r\n};\r\n\r\nexport default withLayout(Dashboard);","import React, { Suspense, useEffect } from 'react';\r\nimport { Route, Switch, useLocation } from 'react-router-dom';\r\nimport PrivateRoute from './PrivateRoute';\r\nimport './App.css';\r\nimport Login from '../features/auth/Login';\r\nimport Register from '../features/auth/Register';\r\nimport ForgottenPassword from '../features/auth/ForgottenPassword';\r\nimport Dashboard from '../features/home';\r\nimport iclarityApiClient from '../services/iclarityApiClient';\r\nimport { library } from '@fortawesome/fontawesome-svg-core'\r\nimport { fas } from '@fortawesome/free-solid-svg-icons';\r\nimport { fab } from '@fortawesome/free-brands-svg-icons';\r\nimport globalize from '../services/globalize';\r\n\r\nlibrary.add(fas, fab);\r\n\r\niclarityApiClient.setTokens({\r\n accessToken: localStorage['accessToken'],\r\n refreshToken: localStorage['refreshToken']\r\n});\r\niclarityApiClient.refreshToken(true);\r\n\r\nconst App = ({ match }) => {\r\n const { search } = useLocation();\r\n\r\n useEffect(() => {\r\n const query = new URLSearchParams(search);\r\n const queryLang = query.get('lang');\r\n if (queryLang) {\r\n globalize.setCurrentCulture(queryLang);\r\n }\r\n }, []);\r\n\r\n const loading =
\r\n
\r\n
\r\n Loading...\r\n
\r\n
\r\n
;\r\n\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\nexport default App;\r\n","import { combineReducers } from '@reduxjs/toolkit';\r\n\r\nimport auth from '../features/auth/authSlice';\r\nimport categories from '../features/categories/categoriesSlice';\r\nimport activities from '../features/activities/activitiesSlice';\r\nimport account from '../features/account/accountSlice';\r\nimport points from '../features/points/pointsSlice';\r\nimport rewards from '../features/rewards/rewardsSlice';\r\nimport cmsPages from '../features/cmsPages/cmsPagesSlice';\r\n\r\nconst rootReducer = combineReducers({\r\n auth,\r\n account,\r\n categories,\r\n activities,\r\n points,\r\n rewards,\r\n cmsPages\r\n});\r\n\r\nexport default rootReducer;","import { configureStore } from '@reduxjs/toolkit';\r\nimport { logger } from 'redux-logger';\r\nimport rootReducer from './rootReducer';\r\n\r\nexport default configureStore({\r\n reducer: rootReducer,\r\n middleware: getDefaultMiddleware => {\r\n const customMiddleware = [];\r\n if (process.env.NODE_ENV !== 'production') {\r\n customMiddleware.push(logger);\r\n }\r\n return getDefaultMiddleware().concat(customMiddleware);\r\n }\r\n});","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter as Router, Route } from 'react-router-dom';\r\nimport App from './app/App';\r\nimport store from './app/store';\r\nimport { Provider } from 'react-redux';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport './assets/css/theme.css';\r\nimport './index.css';\r\nimport { requestRefreshToken, receiveRefreshToken, refreshTokenError, logoutUser } from './features/auth/authSlice';\r\nimport iclarityApiClient from './services/iclarityApiClient';\r\nimport globalize from '../src/services/globalize';\r\n\r\niclarityApiClient.init({\r\n onRequestRefreshToken: initializing => store.dispatch(requestRefreshToken(initializing)),\r\n onRequestRefreshTokenSuccess: ({ accessToken, refreshToken }) => store.dispatch(receiveRefreshToken({ accessToken, refreshToken })),\r\n onRequestRefreshTokenFailure: errorMessage => {\r\n store.dispatch(refreshTokenError(errorMessage));\r\n store.dispatch(logoutUser(false));\r\n }\r\n});\r\n\r\nglobalize.init();\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","var map = {\n\t\"./logosbeneficaireserasmusright_bg_0.jpg\": 149,\n\t\"./logosbeneficaireserasmusright_de_0.jpg\": 150,\n\t\"./logosbeneficaireserasmusright_en_0.jpg\": 151,\n\t\"./logosbeneficaireserasmusright_es_0.jpg\": 152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 93;"],"sourceRoot":""}