{"version":3,"sources":["controllers/authController.js","utils/constants.js","utils/utils.js","contexts/AuthenticationContext/context.js","contexts/AuthenticationContext/withAuthentication.js","contexts/AuthenticationContext/index.js","services/tokeninterceptorservice.js","utils/themeconstants.js","contexts/ProfileContext/profile.js","controllers/transactionController.js","contexts/TransactionContext/transaction.js","controllers/memberController.js","contexts/MemberContext/member.js","contexts/CombinationContext.js","utils/enum.js","services/localstorageservice.js","serviceWorker.js","RootRouter.js","index.js"],"names":["baseUrl","localStorageService","LocalStorageService","getService","login","loginModel","grantType","a","data","URLSearchParams","append","username","password","JSON","stringify","device","config","headers","axiosApiInstance","post","toString","output","setUser","setToken","toast","error","response","errorMessage","registerDevice","deviceModel","getResetToken","model","formatUsername","resetPassword","errors","keys","Object","i","length","key","message","getTacCode","type","usage","mobileNumber","registerAccount","userModel","success","changePassword","logout","clearData","verifyTacCode","viewProfile","get","uploadProfilePhoto","profileImage","formData","FormData","editProfile","photo","put","profilePhoto","editAddress","addressId","user","getUser","selectedPosition","addresses","findIndex","e","id","slice","push","editCompany","companyId","companies","addAddress","getPostcodes","postcode","SHOP_NAME","BASE_URL","GUI_VERSION","getDeviceId","deviceId","setDeviceId","Math","random","substr","validateEmail","input","test","String","toLowerCase","validateNumber","hasUppercase","match","hasNumber","validatePhoneNumber","phoneNumber","tempPhone","trim","AuthContext","React","createContext","authUser","updateAuthUser","withAuthentication","Component","WithAuthentication","props","setState","state","authContext","this","history","location","pathname","includes","split","replace","getShopName","Consumer","compose","withRouter","axios","defaults","baseURL","refreshError","create","interceptors","request","use","tenant","url","token","getAccessToken","Authorization","getRefreshToken","Accept","Promise","reject","isRefreshing","failedQueue","processQueue","forEach","prom","resolve","status","parseError","messages","parseBody","console","log","originalRequest","_retry","then","authToken","catch","err","result","setAccessToken","auth_token","setRefreshToken","refresh_token","replaceUrl","window","hash","themes","default","surfacearchi","Provider","ProfileProvider","getProfile","isLoading","editMyCompany","editMyAddress","addNewAddress","children","value","ProfileConsumer","getTransactions","skip","take","TransactionProvider","isTransactionLoading","transactionPaginationModel","getMemberTransactions","TransactionConsumer","getPoint","getTier","MemberProvider","isMemberPointLoading","isMemberTierLoading","memberPoints","memberPoint","memberTier","getMemberPoint","setPoint","point","getMemberTier","setTier","MemberConsumer","CombinedContextProvider","CombineContextConsumer","profileContext","transactionContext","memberContext","TacSendType","Mobile","Postman","TacUsageType","FirstTimeRegistration","ChangePhone","ForgotPasswordMobile","OAuthRegister","TransactionActionType","Add","Minus","Promote","AddressType","Company","Individual","ProfileActionType","ViewProfile","ViewAddress","ViewCompany","AccountType","service","authInfo","localStorage","setItem","getItem","parse","accessToken","refreshToken","removeItem","setShopName","shopName","setRegistrationId","getRegistrationId","setTheme","theme","getTheme","tier","setPostcodeInfo","postcodeInfo","getPostcodeInfo","Boolean","hostname","App","lazy","RootRouter","fallback","className","component","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.e9159e98.chunk.js","sourcesContent":["/* eslint-disable import/prefer-default-export, no-console */\r\n// @flow\r\nimport { toast } from 'react-toastify';\r\n\r\nimport axiosApiInstance from '../services/tokeninterceptorservice';\r\nimport LocalStorageService from '../services/localstorageservice';\r\nimport type {\r\n LoginRequestModel,\r\n DeviceModel,\r\n ResetPasswordModel,\r\n UserRegisterModel,\r\n ChangePasswordModel,\r\n MobileVerification,\r\n AddressModel,\r\n CompanyModel,\r\n} from '../flow/flowTypes';\r\nimport { formatUsername } from '../utils/utils';\r\nimport { TacSendType, TacUsageType } from '../utils/enum';\r\n\r\nconst baseUrl = '/customer/v1/account';\r\nconst localStorageService = LocalStorageService.getService();\r\n\r\nconst login = async (loginModel: LoginRequestModel, grantType: string) => {\r\n const data = new URLSearchParams();\r\n data.append('username', loginModel.username);\r\n data.append('password', loginModel.password);\r\n data.append('scope', 'openid offline_access');\r\n data.append('grant_type', grantType);\r\n data.append('registration', JSON.stringify({ device: { ...loginModel.device } }));\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'application/x-www-form-urlencoded',\r\n },\r\n };\r\n try {\r\n const output = await axiosApiInstance.post(`${baseUrl}/login`, data.toString(), config);\r\n localStorageService.setUser(output);\r\n localStorageService.setToken(output);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst registerDevice = (deviceModel: DeviceModel) => {\r\n axiosApiInstance.post(`${baseUrl}/registerdevice`, deviceModel);\r\n};\r\n\r\nconst getResetToken = async (username: string) => {\r\n const model = {\r\n username: formatUsername(username),\r\n };\r\n\r\n try {\r\n const output = await axiosApiInstance.post(`${baseUrl}/forgotpasswordtac`, model);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst resetPassword = async (model: ResetPasswordModel) => {\r\n try {\r\n const output = await axiosApiInstance.post(`${baseUrl}/resetpassword`, model);\r\n return output;\r\n } catch (e) {\r\n if (e.response.data.errors) {\r\n const keys = Object.keys(e.response.data.errors);\r\n for (let i = 0; i < keys.length; i += 1) {\r\n const key = keys[i];\r\n const message = e.response.data.errors[key][0];\r\n toast.error(message);\r\n break;\r\n }\r\n } else {\r\n toast.error(e.response.data.errorMessage);\r\n }\r\n throw e;\r\n }\r\n};\r\n\r\nconst getTacCode = async (username: string, type: TacSendType, usage: TacUsageType) => {\r\n const model = {\r\n mobileNumber: username,\r\n };\r\n try {\r\n const output = await axiosApiInstance.post(\r\n `${baseUrl}/taccode?type=${type}&usage=${usage}`,\r\n model\r\n );\r\n return output;\r\n } catch (e) {\r\n if (e.response.data.errors) {\r\n const keys = Object.keys(e.response.data.errors);\r\n for (let i = 0; i < keys.length; i += 1) {\r\n const key = keys[i];\r\n const message = e.response.data.errors[key][0];\r\n toast.error(message);\r\n break;\r\n }\r\n } else {\r\n toast.error(e.response.data.errorMessage);\r\n }\r\n throw e;\r\n }\r\n};\r\n\r\nconst registerAccount = async (userModel: UserRegisterModel) => {\r\n try {\r\n const output = await axiosApiInstance.post(`${baseUrl}/Register`, userModel);\r\n toast.success('Registration success. Please proceed to login');\r\n return output;\r\n } catch (e) {\r\n if (e.response.data.errors) {\r\n const keys = Object.keys(e.response.data.errors);\r\n for (let i = 0; i < keys.length; i += 1) {\r\n const key = keys[i];\r\n const message = e.response.data.errors[key][0];\r\n toast.error(message);\r\n break;\r\n }\r\n } else {\r\n toast.error(e.response.data.errorMessage);\r\n }\r\n throw e;\r\n }\r\n};\r\n\r\nconst changePassword = async (model: ChangePasswordModel) => {\r\n try {\r\n const output = await axiosApiInstance.post(`${baseUrl}/ChangePassword`, model);\r\n toast.success('Password has been changed.');\r\n return output;\r\n } catch (e) {\r\n if (e.response.data.errors) {\r\n const keys = Object.keys(e.response.data.errors);\r\n for (let i = 0; i < keys.length; i += 1) {\r\n const key = keys[i];\r\n const message = e.response.data.errors[key][0];\r\n toast.error(message);\r\n break;\r\n }\r\n } else {\r\n toast.error(e.response.data.errorMessage);\r\n }\r\n throw e;\r\n }\r\n};\r\n\r\nconst logout = async () => {\r\n try {\r\n const output = await axiosApiInstance.post(`${baseUrl}/logout`);\r\n localStorageService.clearData();\r\n return output;\r\n } catch (e) {\r\n localStorageService.clearData();\r\n throw e;\r\n }\r\n};\r\n\r\nconst verifyTacCode = async (model: MobileVerification) => {\r\n try {\r\n const output = await axiosApiInstance.post(`${baseUrl}/verifytac`, model);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst viewProfile = async () => {\r\n try {\r\n const output = await axiosApiInstance.get(`${baseUrl}/profile`);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst uploadProfilePhoto = async (profileImage: string) => {\r\n try {\r\n const formData = new FormData();\r\n formData.append('file', profileImage);\r\n const output = await axiosApiInstance.post(`${baseUrl}/UploadProfileImage`, formData);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst editProfile = async (userModel: UserRegisterModel, profileImage: string) => {\r\n try {\r\n let photo = null;\r\n if (profileImage) {\r\n photo = await uploadProfilePhoto(profileImage);\r\n }\r\n const output = await axiosApiInstance.put(`${baseUrl}/profile`, userModel);\r\n toast.success('Update profile success');\r\n if (photo) {\r\n output.profilePhoto = photo;\r\n }\r\n localStorageService.setUser(output);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst editAddress = async (addressId: number, model: AddressModel) => {\r\n try {\r\n const output = await axiosApiInstance.put(\r\n `${baseUrl}/EditAddress?addressId=${addressId}`,\r\n model\r\n );\r\n const user = localStorageService.getUser();\r\n const selectedPosition = user.addresses\r\n ? user.addresses.findIndex((e) => e.id === addressId)\r\n : -1;\r\n if (selectedPosition !== -1) {\r\n user.addresses = [\r\n ...user.addresses.slice(0, selectedPosition),\r\n output,\r\n ...user.addresses.slice(selectedPosition + 1),\r\n ];\r\n } else if (user.addresses) {\r\n user.addresses.push(output);\r\n } else {\r\n user.addresses = [output];\r\n }\r\n localStorageService.setUser(user);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst editCompany = async (companyId: number, model: CompanyModel) => {\r\n try {\r\n const output = await axiosApiInstance.put(\r\n `${baseUrl}/EditCompany?companyId=${companyId}`,\r\n model\r\n );\r\n const user = localStorageService.getUser();\r\n const selectedPosition = user.companies\r\n ? user.companies.findIndex((e) => e.id === companyId)\r\n : -1;\r\n if (selectedPosition !== -1) {\r\n user.companies = [\r\n ...user.companies.slice(0, selectedPosition),\r\n output,\r\n ...user.companies.slice(selectedPosition + 1),\r\n ];\r\n } else if (user.companies) {\r\n user.companies.push(output);\r\n } else {\r\n user.companies = [output];\r\n }\r\n localStorageService.setUser(user);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst addAddress = async (model: AddressModel) => {\r\n try {\r\n const output = await axiosApiInstance.post(`${baseUrl}/AddAddress`, model);\r\n const user = localStorageService.getUser();\r\n if (user.addresses) {\r\n user.addresses.push(output);\r\n } else {\r\n user.addresses = [output];\r\n }\r\n localStorageService.setUser(user);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst getPostcodes = async (postcode: string) => {\r\n try {\r\n const output = await axiosApiInstance.get(`${baseUrl}/postcodes?postcode=${postcode}`);\r\n\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nexport {\r\n login,\r\n registerDevice,\r\n getResetToken,\r\n resetPassword,\r\n getTacCode,\r\n registerAccount,\r\n changePassword,\r\n logout,\r\n verifyTacCode,\r\n viewProfile,\r\n editProfile,\r\n editAddress,\r\n editCompany,\r\n addAddress,\r\n getPostcodes,\r\n};\r\n","const SHOP_NAME = 'surfacearchi';\r\n// const BASE_URL = 'http://localhost:50382/api';\r\n// const BASE_URL = 'https://crm-apistaging.azurewebsites.net/api';\r\nconst BASE_URL = 'https://crm-apiprod.azurewebsites.net/api';\r\nconst GUI_VERSION = '1.0.0';\r\nconst STATE_LIST = [\r\n { value: 'Selangor', label: 'Selangor' },\r\n { value: 'Kuala Lumpur', label: 'Kuala Lumpur' },\r\n { value: 'Johor', label: 'Johor' },\r\n { value: 'Sarawak', label: 'Sarawak' },\r\n { value: 'Sabah', label: 'Sabah' },\r\n { value: 'Perak', label: 'Perak' },\r\n { value: 'Penang', label: 'Penang' },\r\n { value: 'Kedah', label: 'Kedah' },\r\n { value: 'Pahang', label: 'Pahang' },\r\n { value: 'Negeri Sembilan', label: 'Negeri Sembilan' },\r\n { value: 'Kelantan', label: 'Kelantan' },\r\n { value: 'Terengganu', label: 'Terengganu' },\r\n { value: 'Melaka', label: 'Melaka' },\r\n { value: 'Putrajaya', label: 'Putrajaya' },\r\n { value: 'Perlis', label: 'Perlis' },\r\n { value: 'Labuan', label: 'Labuan' },\r\n];\r\n\r\nexport { SHOP_NAME, BASE_URL, GUI_VERSION, STATE_LIST };\r\n","// @flow\r\n/* eslint-disable import/prefer-default-export */\r\nimport LocalStorageService from '../services/localstorageservice';\r\nimport type { AuthModel } from '../flow/flowTypes';\r\n\r\nconst localStorageService = LocalStorageService.getService();\r\n\r\nexport const checkUser = (authUser: AuthModel) => {\r\n if (authUser) {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const initDevice = () => {\r\n const deviceId = localStorageService.getDeviceId();\r\n if (!deviceId) {\r\n localStorageService.setDeviceId(Math.random().toString(36).substr(2));\r\n }\r\n return localStorageService.getDeviceId();\r\n};\r\n\r\nexport const getDeviceId = () => {\r\n const deviceId = localStorageService.getDeviceId();\r\n if (!deviceId) {\r\n return initDevice();\r\n }\r\n return deviceId;\r\n};\r\n\r\nexport const validateEmail = (input: string) => {\r\n const re = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return re.test(String(input).toLowerCase());\r\n};\r\n\r\nexport const validateNumber = (input: string) => {\r\n return /^\\d+$/.test(input);\r\n};\r\n\r\nexport const formatUsername = (input: string) => {\r\n if (validateNumber) {\r\n return `0${input}`;\r\n }\r\n return input;\r\n};\r\n\r\nexport const hasUppercase = (input: string) => {\r\n return input.match(/[A-Z]/);\r\n};\r\n\r\nexport const hasNumber = (input: string) => {\r\n return /\\d/g.test(input);\r\n};\r\n\r\nexport const validatePhoneNumber = (phoneNumber: string) => {\r\n const reg = /^01\\d{8,9}$/;\r\n const tempPhone = phoneNumber.trim();\r\n return reg.test(tempPhone);\r\n};\r\n","import React from 'react';\r\n\r\nconst AuthContext = React.createContext({ authUser: null, updateAuthUser: () => {} });\r\n\r\nexport default AuthContext;\r\n","/* eslint-disable react/jsx-props-no-spreading, react/no-unused-state */\r\n// @flow\r\nimport React from 'react';\r\nimport { compose } from 'recompose';\r\nimport { withRouter } from 'react-router-dom';\r\n\r\nimport AuthContext from './context';\r\nimport LocalStorageService from '../../services/localstorageservice';\r\n\r\ntype State = {\r\n authUser: Object,\r\n};\r\ntype Props = {\r\n history: any,\r\n location: any,\r\n};\r\n\r\nconst localStorageService = LocalStorageService.getService();\r\n\r\nconst withAuthentication = (Component: any) => {\r\n // eslint-disable-next-line react/prefer-stateless-function\r\n class WithAuthentication extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n authUser: localStorageService.getUser(),\r\n authContext: null,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { authUser } = this.state;\r\n const { history, location } = this.props;\r\n if (!authUser) {\r\n if (\r\n !location.pathname.includes('login') &&\r\n !location.pathname.includes('recover') &&\r\n !location.pathname.includes('signup')\r\n ) {\r\n if (location.pathname.split('/').length >= 2) {\r\n history.replace(`/member/${localStorageService.getShopName()}/login`, null);\r\n } else {\r\n history.push(`${location.pathname}/login`);\r\n }\r\n }\r\n }\r\n }\r\n\r\n updateAuthUser = (authUser) => {\r\n this.setState({ authUser });\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n {(authContext) => {\r\n return ;\r\n }}\r\n \r\n );\r\n }\r\n }\r\n\r\n return compose(withRouter)(WithAuthentication);\r\n};\r\n\r\nexport default withAuthentication;\r\n","import AuthContext from './context';\r\nimport withAuthentication from './withAuthentication';\r\n\r\nexport { AuthContext, withAuthentication };\r\n","/* eslint-disable no-param-reassign, consistent-return */\r\n// @flow\r\nimport axios from 'axios';\r\nimport { toast } from 'react-toastify';\r\n\r\nimport LocalStorageService from './localstorageservice';\r\nimport { BASE_URL } from '../utils/constants';\r\n\r\nconst localStorageService = LocalStorageService.getService();\r\n\r\naxios.defaults.baseURL = BASE_URL;\r\nlet refreshError = false;\r\n\r\nconst axiosApiInstance = axios.create();\r\n\r\nconst parseBody = (response) => {\r\n if (response.status === 200) {\r\n return response.data;\r\n }\r\n return this.parseError(response.data.messages);\r\n};\r\n\r\naxiosApiInstance.interceptors.request.use(\r\n (config) => {\r\n config.headers = {\r\n tenant: localStorageService.getShopName(),\r\n 'Content-Type': config.url.includes('login')\r\n ? 'application/x-www-form-urlencoded'\r\n : 'application/json',\r\n };\r\n const token = localStorageService.getAccessToken();\r\n if (token) {\r\n config.headers = {\r\n ...config.headers,\r\n Authorization: config.url.includes('refresh')\r\n ? `Bearer ${localStorageService.getRefreshToken()}`\r\n : `Bearer ${token}`,\r\n Accept: 'application/json',\r\n };\r\n }\r\n refreshError = false;\r\n return config;\r\n },\r\n (error) => {\r\n Promise.reject(error);\r\n }\r\n);\r\n\r\nlet isRefreshing = false;\r\nlet failedQueue: any[] = [];\r\n\r\nconst processQueue = (error: any, token: string = '') => {\r\n failedQueue.forEach((prom) => {\r\n if (error) {\r\n prom.reject(error);\r\n } else {\r\n prom.resolve(token);\r\n }\r\n });\r\n\r\n failedQueue = [];\r\n};\r\n\r\naxiosApiInstance.interceptors.response.use(\r\n (response) => {\r\n return parseBody(response);\r\n },\r\n (error) => {\r\n console.log('e', error);\r\n if (!error.response) {\r\n toast.error('Server error. Please try again later');\r\n return;\r\n }\r\n const originalRequest = error.config;\r\n if (\r\n originalRequest &&\r\n error.response &&\r\n error.response.status === 401 &&\r\n !originalRequest._retry\r\n ) {\r\n if (isRefreshing) {\r\n return new Promise((resolve, reject) => {\r\n failedQueue.push({ resolve, reject });\r\n })\r\n .then((authToken) => {\r\n originalRequest.headers.Authorization = `Bearer ${authToken}`;\r\n return axiosApiInstance.request(originalRequest);\r\n })\r\n .catch((err) => {\r\n return Promise.reject(err);\r\n });\r\n }\r\n originalRequest._retry = true;\r\n isRefreshing = true;\r\n\r\n const config = {\r\n headers: {\r\n tenant: localStorageService.getShopName(),\r\n 'Content-Type': 'application / json',\r\n Authorization: `Bearer ${localStorageService.getRefreshToken()}`,\r\n Accept: 'application/json',\r\n },\r\n };\r\n\r\n return new Promise((resolve, reject) => {\r\n axios\r\n .post('/customer/v1/account/refresh', null, config)\r\n .then((result) => {\r\n localStorageService.setAccessToken(result.data.auth_token);\r\n localStorageService.setRefreshToken(result.data.refresh_token);\r\n originalRequest.headers.Authorization = `Bearer ${result.data.auth_token}`;\r\n processQueue(null, result.data.authToken);\r\n resolve(axiosApiInstance.request(originalRequest));\r\n })\r\n .catch((e) => {\r\n if (!refreshError) {\r\n toast.error('Unauthorised. Please login to continue');\r\n }\r\n refreshError = true;\r\n processQueue(e);\r\n reject(e);\r\n localStorageService.clearData();\r\n let replaceUrl = '';\r\n if (window.location.hash.split('/').length >= 2) {\r\n window.location.hash = `#/member/${localStorageService.getShopName()}/login`;\r\n replaceUrl = window.location.hash;\r\n } else {\r\n replaceUrl = `#${window.location.hash.replace(/^#/, '')}/login`;\r\n }\r\n window.location.replace(replaceUrl, null);\r\n })\r\n .then(() => {\r\n isRefreshing = false;\r\n });\r\n });\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default axiosApiInstance;\r\n","const themes = {\r\n default: {\r\n '--button-background-color': '#af8e56',\r\n '--positive-button-text-color': '#fff',\r\n '--bordered-button-text-color': '#b69764',\r\n '--bordered-button-border-color': '#b69764',\r\n '--loading-color': '#af8e56',\r\n '--header-nav-background': '#24293a',\r\n '--signout-text-color': '#fff',\r\n '--member-outer-container-gradient-front': '#FFF3E0',\r\n '--member-outer-container-gradient-back': '#D9D9D9',\r\n '--tier-outer-container-gradient-front': '#AF8E56',\r\n '--tier-outer-container-gradient-back': '#CE993F ',\r\n '--profile-back-text': '#af8e56',\r\n '--profile-save-text': '#fff',\r\n '--stepper-active-bg': '#af8e56',\r\n '--stepper-inactive-bg': '#bdb9b9',\r\n },\r\n surfacearchi: {\r\n '--button-background-color': '#af8e56',\r\n '--positive-button-text-color': '#fff',\r\n '--bordered-button-text-color': '#b69764',\r\n '--bordered-button-border-color': '#b69764',\r\n '--loading-color': '#af8e56',\r\n '--header-nav-background': '#24293a',\r\n '--signout-text-color': '#fff',\r\n '--member-outer-container-gradient-front': '#FFF3E0',\r\n '--member-outer-container-gradient-back': '#D9D9D9',\r\n '--tier-outer-container-gradient-front': '#AF8E56',\r\n '--tier-outer-container-gradient-back': '#CE993F ',\r\n '--profile-back-text': '#af8e56',\r\n '--profile-save-text': '#fff',\r\n '--stepper-active-bg': '#af8e56',\r\n '--stepper-inactive-bg': '#bdb9b9',\r\n '--point-history-bottom-underline': '#af8e56'\r\n },\r\n};\r\n\r\nexport default themes;\r\n","/* eslint-disable react/no-unused-state, react/state-in-constructor */\r\n// @flow\r\nimport React from 'react';\r\n\r\nimport LocalStorageService from '../../services/localstorageservice';\r\nimport {\r\n viewProfile,\r\n editAddress,\r\n editCompany,\r\n addAddress,\r\n} from '../../controllers/authController';\r\nimport type { CompanyModel, AddressModel } from '../../flow/flowTypes';\r\n\r\nconst localStorageService = LocalStorageService.getService();\r\nconst { Provider, Consumer } = React.createContext();\r\n\r\ntype State = {\r\n authUser: Object,\r\n getProfile: Function,\r\n isLoading: boolean,\r\n};\r\n\r\ntype Props = {\r\n children: Object,\r\n};\r\n\r\nexport default class ProfileProvider extends React.Component {\r\n state = {\r\n authUser: localStorageService.getUser(),\r\n getProfile: async () => {\r\n this.setState({ isLoading: true });\r\n const { authUser } = this.state;\r\n const result = await viewProfile();\r\n this.setState({\r\n authUser: { ...authUser, ...result },\r\n });\r\n localStorageService.setUser({ ...authUser, ...result });\r\n\r\n this.setState({ isLoading: false });\r\n },\r\n editMyCompany: async (companyId: number, model: CompanyModel) => {\r\n this.setState({ isLoading: true });\r\n try {\r\n await editCompany(companyId, model);\r\n const user = localStorageService.getUser();\r\n this.setState({ isLoading: false, authUser: { ...user } });\r\n } catch (e) {\r\n this.setState({ isLoading: false });\r\n }\r\n },\r\n editMyAddress: async (addressId: number, model: AddressModel) => {\r\n this.setState({ isLoading: true });\r\n const { authUser } = this.state;\r\n try {\r\n await editAddress(addressId, model);\r\n const user = localStorageService.getUser();\r\n this.setState({ isLoading: false, authUser: { ...authUser, ...user } });\r\n } catch (e) {\r\n this.setState({ isLoading: false });\r\n }\r\n },\r\n addNewAddress: async (model: AddressModel) => {\r\n this.setState({ isLoading: true });\r\n const { authUser } = this.state;\r\n try {\r\n await addAddress(model);\r\n const user = localStorageService.getUser();\r\n this.setState({ isLoading: false, authUser: { ...authUser, ...user } });\r\n } catch (e) {\r\n this.setState({ isLoading: false });\r\n }\r\n },\r\n };\r\n\r\n render() {\r\n const { children } = this.props;\r\n return {children};\r\n }\r\n}\r\n\r\nexport const ProfileConsumer = (props: Props) => {\r\n const { children } = props;\r\n return {children};\r\n};\r\n","/* eslint-disable import/prefer-default-export, no-console */\r\n// @flow\r\nimport { toast } from 'react-toastify';\r\n\r\nimport axiosApiInstance from '../services/tokeninterceptorservice';\r\n\r\nconst baseUrl = '/customer/v1/transaction';\r\n\r\nconst getTransactions = async (skip: number, take: number) => {\r\n try {\r\n const output = await axiosApiInstance.get(\r\n `${baseUrl}/TransactionList?skip=${skip}&take=${take}`\r\n );\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nexport { getTransactions };\r\n","/* eslint-disable react/no-unused-state, react/state-in-constructor */\r\n// @flow\r\nimport React from 'react';\r\n\r\nimport type { TransactionPaginationModel } from '../../flow/flowTypes';\r\nimport { getTransactions } from '../../controllers/transactionController';\r\n\r\nconst { Provider, Consumer } = React.createContext();\r\n\r\ntype State = {\r\n getMemberTransactions: Function,\r\n isTransactionLoading: boolean,\r\n transactionPaginationModel: TransactionPaginationModel,\r\n};\r\n\r\ntype Props = {\r\n children: Object,\r\n};\r\n\r\nexport default class TransactionProvider extends React.Component {\r\n state = {\r\n isTransactionLoading: false,\r\n transactionPaginationModel: null,\r\n getMemberTransactions: async (skip: number, take: number) => {\r\n this.setState({ isTransactionLoading: true });\r\n try {\r\n const result = await getTransactions(skip, take);\r\n this.setState({ isTransactionLoading: false });\r\n this.setState({ transactionPaginationModel: result });\r\n } catch (_e) {\r\n this.setState({ isTransactionLoading: false });\r\n }\r\n },\r\n };\r\n\r\n render() {\r\n const { children } = this.props;\r\n return {children};\r\n }\r\n}\r\n\r\nexport const TransactionConsumer = (props: Props) => {\r\n const { children } = props;\r\n return {children};\r\n};\r\n","/* eslint-disable import/prefer-default-export, no-console */\r\n// @flow\r\nimport { toast } from 'react-toastify';\r\n\r\nimport axiosApiInstance from '../services/tokeninterceptorservice';\r\n\r\nconst baseUrl = '/customer/v1/membership';\r\n\r\nconst getPoint = async () => {\r\n try {\r\n const output = await axiosApiInstance.get(`${baseUrl}/point`);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nconst getTier = async () => {\r\n try {\r\n const output = await axiosApiInstance.get(`${baseUrl}/tier`);\r\n return output;\r\n } catch (e) {\r\n toast.error(e.response.data.errorMessage);\r\n throw e;\r\n }\r\n};\r\n\r\nexport { getPoint, getTier };\r\n","/* eslint-disable react/no-unused-state, react/state-in-constructor */\r\n// @flow\r\nimport React from 'react';\r\n\r\nimport type { MemberPointModel, MemberTierModel } from '../../flow/flowTypes';\r\nimport { getPoint, getTier } from '../../controllers/memberController';\r\nimport LocalStorageService from '../../services/localstorageservice';\r\n\r\nconst localStorageService = LocalStorageService.getService();\r\n\r\nconst { Provider, Consumer } = React.createContext();\r\n\r\ntype State = {\r\n getMemberPoint: Function,\r\n isMemberPointLoading: boolean,\r\n memberPoints: Array,\r\n memberPoint: MemberPointModel,\r\n isMemberTierLoading: boolean,\r\n memberTier: MemberTierModel,\r\n getMemberTier: Function,\r\n};\r\n\r\ntype Props = {\r\n children: Object,\r\n};\r\n\r\nexport default class MemberProvider extends React.Component {\r\n state = {\r\n isMemberPointLoading: false,\r\n isMemberTierLoading: false,\r\n memberPoints: [],\r\n memberPoint: localStorageService.getPoint(),\r\n memberTier: localStorageService.getTier(),\r\n getMemberPoint: async () => {\r\n this.setState({ isMemberPointLoading: true });\r\n try {\r\n const result = await getPoint();\r\n this.setState({ isMemberPointLoading: false, memberPoints: result });\r\n if (result.length) {\r\n this.setState({ memberPoint: result[0] });\r\n localStorageService.setPoint(result[0]);\r\n } else {\r\n this.setState({ memberPoint: { point: 0 } });\r\n localStorageService.setPoint({ point: 0 });\r\n }\r\n } catch (_e) {\r\n this.setState({ isMemberPointLoading: false });\r\n }\r\n },\r\n getMemberTier: async () => {\r\n this.setState({ isMemberTierLoading: true });\r\n try {\r\n const result = await getTier();\r\n this.setState({ isMemberTierLoading: false, memberTier: result });\r\n localStorageService.setTier(result || \"\");\r\n } catch (_e) {\r\n this.setState({ isMemberTierLoading: false });\r\n }\r\n },\r\n };\r\n\r\n render() {\r\n const { children } = this.props;\r\n return {children};\r\n }\r\n}\r\n\r\nexport const MemberConsumer = (props: Props) => {\r\n const { children } = props;\r\n return {children};\r\n};\r\n","/* eslint-disable */\r\nimport React from 'react';\r\n\r\nimport ProfileProvider, { ProfileConsumer } from './ProfileContext/profile';\r\nimport TransactionProvider, { TransactionConsumer } from './TransactionContext/transaction';\r\nimport MemberProvider, { MemberConsumer } from './MemberContext/member';\r\n\r\nconst CombinedContextProvider = ({ children }) => (\r\n \r\n \r\n {children}\r\n \r\n \r\n);\r\n\r\nconst CombineContextConsumer = ({ children, props }) => {\r\n return (\r\n \r\n {(profileContext) => {\r\n return (\r\n \r\n {(transactionContext) => {\r\n return (\r\n \r\n {(memberContext) => {\r\n return children({\r\n ...profileContext,\r\n ...transactionContext,\r\n ...memberContext,\r\n ...props,\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 { CombinedContextProvider, CombineContextConsumer };\r\n","export const TacSendType = {\r\n Mobile: 1,\r\n Postman: 2,\r\n};\r\n\r\nexport const TacUsageType = {\r\n FirstTimeRegistration: 1,\r\n ChangePhone: 2,\r\n ForgotPasswordMobile: 3,\r\n OAuthRegister: 4,\r\n};\r\n\r\nexport const TransactionActionType = {\r\n Add: 1,\r\n Minus: 2,\r\n Promote: 3,\r\n};\r\n\r\nexport const AddressType = {\r\n Company: 1,\r\n Individual: 2,\r\n};\r\n\r\nexport const ProfileActionType = {\r\n ViewProfile: 1,\r\n ViewAddress: 2,\r\n ViewCompany: 3,\r\n};\r\n\r\nexport const AccountType = {\r\n Company: 1,\r\n Individual: 2,\r\n};\r\n","/* eslint-disable */\r\n// @flow\r\nimport { SHOP_NAME } from '../utils/constants';\r\nimport type { AuthModel, MemberPointModel, MemberTierModel } from '../flow/flowTypes';\r\nimport themes from '../utils/themeconstants';\r\n\r\nconst LocalStorageService = (function () {\r\n let service;\r\n\r\n function getService() {\r\n if (!service) {\r\n service = this;\r\n return service;\r\n }\r\n return service;\r\n }\r\n\r\n function setUser(authInfo: AuthModel) {\r\n if (authInfo) {\r\n localStorage.setItem('auth_user', JSON.stringify(authInfo));\r\n } else {\r\n localStorage.setItem('auth_user', '');\r\n }\r\n }\r\n\r\n function getUser() {\r\n if (localStorage.getItem('auth_user')) {\r\n return JSON.parse(localStorage.getItem('auth_user'));\r\n }\r\n return null;\r\n }\r\n\r\n function setToken(authInfo: AuthModel) {\r\n localStorage.setItem('access_token', authInfo.auth_token);\r\n localStorage.setItem('refresh_token', authInfo.refresh_token);\r\n }\r\n\r\n function setAccessToken(accessToken: string) {\r\n localStorage.setItem('access_token', accessToken);\r\n }\r\n\r\n function getAccessToken() {\r\n return localStorage.getItem('access_token');\r\n }\r\n\r\n function setRefreshToken(refreshToken: string) {\r\n localStorage.setItem('refresh_token', refreshToken);\r\n }\r\n\r\n function getRefreshToken() {\r\n return localStorage.getItem('refresh_token');\r\n }\r\n\r\n function clearData() {\r\n localStorage.removeItem('auth_user');\r\n localStorage.removeItem('access_token');\r\n localStorage.removeItem('refresh_token');\r\n localStorage.removeItem('my_point');\r\n localStorage.removeItem('my_tier');\r\n }\r\n\r\n function setShopName(shopName: string) {\r\n localStorage.setItem(SHOP_NAME, shopName);\r\n }\r\n\r\n function getShopName() {\r\n return localStorage.getItem(SHOP_NAME);\r\n }\r\n\r\n function setDeviceId(deviceId: string) {\r\n localStorage.setItem('device_id', deviceId);\r\n }\r\n\r\n function getDeviceId() {\r\n return localStorage.getItem('device_id');\r\n }\r\n\r\n function setRegistrationId(deviceId: string) {\r\n localStorage.setItem('registration_id', deviceId);\r\n }\r\n\r\n function getRegistrationId() {\r\n return localStorage.getItem('registration_id');\r\n }\r\n\r\n function setTheme(theme: Object) {\r\n localStorage.setItem('theme', JSON.stringify(theme));\r\n }\r\n\r\n function getTheme() {\r\n return localStorage.getItem('theme') || JSON.stringify(themes.default);\r\n }\r\n\r\n function setPoint(point: MemberPointModel) {\r\n if (point) {\r\n localStorage.setItem('my_point', JSON.stringify(point));\r\n } else {\r\n localStorage.setItem('my_point', '');\r\n }\r\n }\r\n\r\n function getPoint() {\r\n return localStorage.getItem('my_point') ? JSON.parse(localStorage.getItem('my_point')) : null;\r\n }\r\n\r\n function setTier(tier: MemberTierModel) {\r\n if (tier) {\r\n localStorage.setItem('my_tier', JSON.stringify(tier));\r\n } else {\r\n localStorage.setItem('my_tier', '');\r\n }\r\n }\r\n\r\n function getTier() {\r\n return localStorage.getItem('my_tier') ? JSON.parse(localStorage.getItem('my_tier')) : null;\r\n }\r\n\r\n function setPostcodeInfo(postcodeInfo: MemberTierModel) {\r\n if (postcodeInfo) {\r\n localStorage.setItem('postcode_info', JSON.stringify(tier));\r\n } else {\r\n localStorage.setItem('postcode_info', '');\r\n }\r\n }\r\n\r\n function getPostcodeInfo() {\r\n return localStorage.getItem('postcode_info')\r\n ? JSON.parse(localStorage.getItem('postcode_info'))\r\n : null;\r\n }\r\n\r\n return {\r\n getService,\r\n setUser,\r\n getUser,\r\n setToken,\r\n setAccessToken,\r\n getAccessToken,\r\n setRefreshToken,\r\n getRefreshToken,\r\n clearData,\r\n setShopName,\r\n getShopName,\r\n setDeviceId,\r\n getDeviceId,\r\n setRegistrationId,\r\n getRegistrationId,\r\n setTheme,\r\n getTheme,\r\n setPoint,\r\n getPoint,\r\n setTier,\r\n getTier,\r\n setPostcodeInfo,\r\n getPostcodeInfo,\r\n };\r\n})();\r\n\r\nexport default LocalStorageService;\r\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","/* eslint-disable react/no-unused-state */\r\n// @flow\r\nimport React, { lazy, Suspense } from 'react';\r\nimport { Route, HashRouter } from 'react-router-dom';\r\nimport LocalStorageService from './services/localstorageservice';\r\nimport { AuthContext } from './contexts/AuthenticationContext';\r\nimport { CombinedContextProvider } from './contexts/CombinationContext';\r\n\r\nconst App = lazy(() => import('./containers/App'));\r\n\r\ntype State = {\r\n authUser: string,\r\n updateAuthUser: Function,\r\n};\r\n\r\nconst localStorageService = LocalStorageService.getService();\r\n\r\nclass RootRouter extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n authUser: localStorageService.getUser(),\r\n updateAuthUser: this.updateAuthUser,\r\n };\r\n }\r\n\r\n updateAuthUser = (authUser) => {\r\n this.setState({ authUser });\r\n if (authUser) {\r\n localStorageService.setUser(authUser);\r\n } else {\r\n localStorageService.setUser(null);\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n }\r\n >\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default RootRouter;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport './responsive.css';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport './assets/css/argon-dashboard-react.css';\r\nimport RootRouter from './RootRouter';\r\n\r\nReactDOM.render(, document.getElementById('root'));\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"],"sourceRoot":""}