{"version":3,"file":"index-uPBIPeXG.js","sources":["../../src/mw-components/helpers/functions.ts","../../src/mw-components/Api/types.ts","../../src/mw-components/Api/constants.ts","../../src/mw-components/store/modules/auth/action-types.ts","../../src/mw-components/store/modules/dashboard-app/action-types.ts","../../src/mw-components/store/storage.ts","../../src/mw-components/Api/mw-api-base.ts","../../src/mw-components/Api/mw-api.ts","../../src/mw-components/Api/index.ts"],"sourcesContent":["type Env = 'localhost' | 'localdev' | 'development' | 'staging' | 'production' | 'aspire' | 'cypress' | 'remote' | 'docker';\n/**\n * Get the current environment\n */\nexport const getEnv = (): Env => {\n if (window.RUNTIME_ENV === 'docker') return 'docker';\n if (import.meta.env.MODE === 'remote') return 'remote';\n if (import.meta.env.MODE === 'localdev') return 'localdev';\n if (import.meta.env.MODE === 'aspire') return 'aspire';\n if (import.meta.env.MODE === 'cypress') return 'cypress';\n if (\n window.location.hostname.includes('localhost') ||\n window.location.hostname.includes('127.0.0.1')\n )\n return 'localhost';\n if (window.location.hostname.includes('development')) return 'development';\n if (window.location.hostname.includes('staging')) return 'staging';\n return 'production';\n};\n\nexport const uuidv4 = (): string => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nexport const getTokenData = (userToken: string | null) => {\n if (!userToken) return null;\n return JSON.parse(atob(userToken.split('.')[1]));\n};\n\nexport const contrastingColour = (hex: string): string => {\n let passedWithHash = false;\n\n if (hex.indexOf('#') === 0) {\n hex = hex.slice(1);\n passedWithHash = true;\n }\n\n let prefix = passedWithHash ? '#' : '';\n\n if (hex.length === 3) {\n hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2];\n }\n\n if (hex.length !== 6) {\n throw new Error('Invalid HEX Colour');\n }\n\n let red = parseInt(hex.slice(0, 2), 16);\n let green = parseInt(hex.slice(2, 4), 16);\n let blue = parseInt(hex.slice(4, 6), 16);\n\n return red * 0.299 + green * 0.587 + blue * 0.114 > 186 ? `${prefix}000000` : `${prefix}FFFFFF`;\n};\n\nexport const isExternalUrl = (raw: string): boolean => {\n return typeof raw === 'string' && raw.startsWith('http');\n};\n\nexport const isInString = (stack: string, needle: string, caseSensitive?: boolean) => {\n if (caseSensitive) {\n return stack.includes(needle);\n }\n return stack.search(new RegExp(needle, 'i')) !== -1;\n};\n\n//TODO: Update this to work with Service Discovery\nexport const getApiDomain = () => {\n switch (getEnv()) {\n case 'docker':\n // Use the runtime environment variable injected by nginx\n return window.RUNTIME_API_URL || 'https://interface-dev.liftshare.com';\n case 'cypress':\n return 'https://interface-dev.liftshare.com';\n case 'aspire':\n return import.meta.env.VITE_API_URL;\n case 'localdev':\n case 'localhost':\n return 'https://localhost:5001';\n case 'development':\n case 'remote':\n return 'https://interface-dev.liftshare.com';\n case 'staging':\n return 'https://interface-staging.liftshare.com';\n case 'production':\n default:\n return 'https://interface.liftshare.com';\n }\n};\n\n//TODO: Update this to work with Service Discovery\nexport const getLiftshareDomain = () => {\n switch (getEnv()) { \n case 'docker':\n // Use the runtime environment variable injected by nginx\n return window.RUNTIME_WEB_URL || 'https://interface-dev.liftshare.com';\n case 'cypress':\n return 'development.liftshare.com';\n case 'aspire':\n return import.meta.env.VITE_WEB_URL;\n case 'localdev':\n case 'localhost':\n return 'https://localhost:5002';\n case 'development':\n case 'remote':\n return 'development.liftshare.com';\n case 'staging':\n return 'https://staging.liftshare.com';\n case 'production':\n default:\n return 'https://liftshare.com';\n }\n};\n\nexport const includeOnArray = (condition: any, val: any) => (condition ? [val] : []);\n\nexport const getPercentageOf = (comparing: number, compareTo: number) => {\n if (comparing === 0 && compareTo === 0) {\n return 100;\n }\n return (comparing / compareTo) * 100;\n};\nexport const limitNumber = (num: number, limit: number) => (num < limit ? num : limit);\n\nexport const getAspectRatio = (width: number, height: number) => height / width;\n\nexport const milesToMeters = (val: number) => val * 1609;\nexport const metersToMiles = (val: number) => val / 1609;\n\nexport const isInteger = (value: string) => {\n return /^\\d+$/.test(value);\n};\nexport const isNumeric = (value: string) => {\n return /[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)/.test(value);\n};\n\nexport const roundToTwoDecimalPlaces = (num: number) =>\n Math.round((num + Number.EPSILON) * 100) / 100;\n","export enum Methods {\n Post = 'POST',\n Delete = 'DELETE',\n Put = 'PUT',\n Get = 'GET',\n}\nexport type Method = 'POST' | 'GET' | 'PUT' | 'DELETE';\n\nexport enum Headers {\n XRequestedWith = 'X-Requested-With',\n ContentType = 'Content-Type',\n CacheControl = 'Cache-Control',\n Pragma = 'Pragma',\n Authorization = 'Authorization',\n}\n\nexport interface WrappedResponse {\n response: Res;\n status: string;\n}\n","import { Headers } from './types';\n\nexport const DEFAULT_HEADERS = {\n [Headers.XRequestedWith]: 'XMLHTTPRequest',\n [Headers.ContentType]: 'application/json; charset=utf-8',\n [Headers.CacheControl]: 'no-cache',\n [Headers.Pragma]: 'no-cache',\n};\n\nexport const ENDPOINTS_V2 = {\n AdminNotifications: '/v2/email',\n AdminEmailPreview: '/v2/email/preview',\n BehaviourChangeBarriersToChange: '/v2/travel-plan/behavior-change/barriers-to-change',\n BehaviourChangeDistanceBreakdown: '/v2/travel-plan/behavior-change/distance-breakdown',\n BehaviourChangeModeBreakdown: '/v2/travel-plan/behavior-change/results-mode-breakdown',\n BehaviourChangeModalShift: '/v2/travel-plan/behavior-change/modal-shift',\n BehaviourChangePlanMetrics: '/v2/travel-plan/behavior-change/plan-metrics',\n Communities: '/v2/community',\n Contacts: '/v2/contact',\n ContactsLimit: '/v2/contact/limit',\n ContactAdd: '/v2/contact',\n ContactDelete: '/v2/contact/delete',\n ContactUpdate: '/v2/contact/update',\n ContactExport: '/v2/contact/export',\n TravelPlans: '/v2/travel-plan/search',\n TravelPlanBatches: '/v2/travel-plan-batch/search',\n NPSCheck: '/v2/nps',\n PendingLiftshareAccountsBatch: '/v2/pending-account/batch',\n PendingLiftshareAccountsTestEmail: '/v2/pending-account/batch/preview-email',\n PendingLiftshareAccountsBatchFinalize: '/v2/pending-account/batch/finalize',\n PendingLiftshareAccountsImageUpload: '/v2/pending-account/image',\n SurveySummaryQuestions: '/v2/survey/summary/questions',\n};\n\nexport const ENDPOINTS = {\n AccountsList: '/dashboard/scoping/communities',\n AcelAssumptions: '/dashboard/acel/assumptions',\n AcelNational: '/acel/national',\n AcelCreate: '/dashboard/acel/create',\n AcelCreateFromSurvey: '/dashboard/acel/create-from-survey',\n AcelReportDelete: '/dashboard/acel',\n AcelReportRename: '/dashboard/acel/rename',\n AcelReports: '/dashboard/acel/reports',\n AcelReportDetails: '/dashboard/acel/report',\n AcelSetPrimary: '/dashboard/acel/primary-report',\n AcelSetPrivacy: '/dashboard/acel/toggle-private',\n AcelSetTarget: '/dashboard/acel/set-target',\n AdminPendingLiftshare: '/dashboard/liftshare/from-contacts',\n AdminPendingLiftshareCreate: '/dashboard/liftshare/from-contacts',\n AcelSurveys: '/dashboard/acel/acel-surveys',\n AccountSettings: '/dashboard/settings',\n AcelSurveyData: '/dashboard/acel/from-survey',\n AuthenticateToken: '/client/token',\n AuthenticateTwoFactor: '/client/token/validate-two-factor',\n AuthenticateRefresh: '/client/token/refresh',\n AutocompleteProxy: '/dashboard/geocode/autocomplete',\n BehaviourChangeBarriersToChange: '/dashboard/travel-plans/behavior-change/barriers-to-change',\n BehaviourChangeDistanceBreakdown: '/dashboard/travel-plans/behavior-change/distance-breakdown',\n BehaviourChangeModalShift: '/dashboard/travel-plans/behavior-change/modal-shift',\n BehaviourChangeModeBreakdown: '/dashboard/travel-plans/behavior-change/results-mode-breakdown',\n Contacts: '/dashboard/contacts',\n ContactAdd: '/dashboard/contacts',\n ContactDelete: '/dashboard/contacts',\n ContactDetails: '/dashboard/contacts',\n ContactExport: '/dashboard/contacts/export',\n ContactImportHeaders: '/dashboard/contacts/upload/headers',\n ContactPreviousImports: '/dashboard/contacts/previous-imports',\n ContactUpdate: '/dashboard/contacts/update',\n ContactUpdateTags: '/dashboard/contacts/add-tag',\n ContactsUpload: '/dashboard/contacts/upload',\n ContactsEmailTaken: '/dashboard/contacts/email-address-taken',\n ContactsImportProgress: '/dashboard/contacts/import-progress',\n ContactsPreviousImportFailures: '/dashboard/contacts/previous-import-failures',\n CustomTexts: '/dashboard/travel-plans/get-custom-texts',\n CustomTextDelete: '/dashboard/travel-plans/delete-custom-texts',\n CustomTextSave: '/dashboard/travel-plans/save-custom-text',\n GeocodeProxy: '/dashboard/geocode/place',\n ImageUpload: '/dashboard/survey/image-upload',\n PasswordResetConfirm: '/dashboard/password/reset',\n PasswordResetEmail: '/dashboard/password/reset-link',\n PersonalisationTokens: '/dashboard/personalisation-tokens',\n PlatformUsageLogins: '/dashboard/admin/logins',\n ScopingContacts: '/dashboard/scoping/from-contacts',\n ScopingDataAggregated: '/dashboard/scoping/aggregated-data',\n ScopingDataPlan: '/dashboard/scoping/plan-data',\n ScopingResults: '/dashboard/scoping/results-csv',\n ScopingMap: '/dashboard/scoping/map',\n ScopingReportAbort: '/dashboard/scoping/cancel',\n ScopingReportContinue: '/dashboard/scoping/continue',\n ScopingReport: '/dashboard/scoping/pdf',\n ScopingReportStatus: '/dashboard/scoping/status',\n ScopingSummary: '/dashboard/scoping/summary',\n ScopingFullSummary: '/dashboard/scoping/full-summary',\n ScopingUpload: '/dashboard/scoping/upload',\n Surveys: '/dashboard/survey/previous',\n SurveyAnalytics: '/dashboard/survey/analysis',\n SurveyAnnotation: '/dashboard/survey/analytics/annotation',\n SurveyHeadingAnnotationDelete: '/dashboard/survey/analytics/annotation',\n SurveyQuestionAnnotationDelete: '/dashboard/survey/analytics/annotation',\n SurveyReportPrivacy: '/dashboard/survey/analytics/set-privacy',\n SurveyPublicAnalyticsId: '/dashboard/survey/analytics/public-key',\n SurveyClone: '/dashboard/survey/clone',\n SurveyContacts: '/dashboard/survey/contacts',\n SurveyEmailMetrics: '/dashboard/survey/email-metrics',\n SurveyLinkMetrics: '/dashboard/survey/view-metrics',\n SurveyData: '/dashboard/survey/editable',\n SurveyDelete: '/dashboard/survey',\n SurveyDeleteResponse: '/dashboard/survey/individual-response',\n SurveyExport: '/dashboard/survey/export',\n SurveyIndividualResponses: '/dashboard/survey/individual-responses',\n SurveyIndividualUserResponse: '/dashboard/survey/individual-response',\n SurveyPause: '/dashboard/survey/toggle-published',\n SurveyPublish: '/dashboard/survey/publish',\n SurveyResponses: '/dashboard/survey/responses',\n SurveyResponsesOverTime: '/dashboard/survey/responses-over-time',\n SurveySave: '/dashboard/survey/save',\n SurveySendMoreContacts: '/dashboard/survey/send-email',\n SurveySendTestEmail: '/dashboard/survey/send-preview-email',\n SurveyShareLink: '/dashboard/survey/link',\n SurveySummary: '/dashboard/survey/summary',\n SurveySummaryByQuestion: '/dashboard/survey/analysis',\n SurveyTemplates: '/dashboard/survey/templates',\n SurveyTemplateData: '/dashboard/survey/template',\n TravelPlans: '/dashboard/travel-plans/list',\n TravelPlanArchive: '/dashboard/travel-plans/archive-plans',\n TravelPlanBatches: '/dashboard/travel-plans/batch-list',\n TravelPlanBatchStatus: '/dashboard/travel-plans/batch-status',\n TravelPlanDestinations: '/dashboard/travel-plans/custom-destinations',\n TravelPlanDetails: '/dashboard/travel-plans/continue-batch',\n TravelPlanEmail: '/dashboard/travel-plans/plan-email',\n TravelPlanFailed: '/dashboard/travel-plans/failed-plans',\n TravelPlanFinalize: '/dashboard/travel-plans/finalize-batch',\n TravelPlanImageUpload: '/dashboard/travel-plans/image-upload',\n TravelPlanNotifyCompletion: '/dashboard/travel-plans/notify-batch-complete',\n TravelPlanProcessedPlans: '/dashboard/travel-plans/processed-plans',\n TravelPlanResults: '/dashboard/travel-plans/plan-results',\n TravelPlanSave: '/dashboard/travel-plans/save-batch',\n TravelPlanStartBatch: '/dashboard/travel-plans/start-batch',\n TravelPlanSendEmails: '/dashboard/travel-plans/send-emails-for-batch',\n TravelPlanSendTestEmails: '/dashboard/travel-plans/send-test-email',\n TravelPlanSendMultiple: '/dashboard/travel-plans/send-emails',\n TravelPlanSurveyResults: '/dashboard/travel-plans/survey-ids',\n TravelPlanSurveyEmailMetrics: '/dashboard/travel-plans/email-metrics',\n TravelPlanViews: '/dashboard/travel-plans/views',\n TravelPlanRateLimitStatus: '/dashboard/travel-plans/rate-limit-status',\n Widgets: '/dashboard/widgets',\n WidgetsDelete: '/dashboard/widgets',\n Widget: '/dashboard/widgets',\n WidgetsUpdateStatus: '/dashboard/widgets/update-status',\n WidgetsUpsert: '/dashboard/widgets/upsert',\n WidgetsValidateLocations: '/dashboard/widgets/validate-locations',\n SurveyDataPublic: '/dashboard/survey',\n EmailPreferences: '/dashboard/contacts/email-prefs',\n SurveyAnswer: '/dashboard/survey/answer',\n TravelPlanFeedback: '/dashboard/travel-plans/result-feedback',\n TravelPlanWidgetSearch: '/dashboard/travel-plans/widget/search',\n UpdateEmailPreferences: '/dashboard/contacts/update-email-prefs',\n UpdateAccountSettings: '/dashboard/settings/update',\n};\n","export enum AuthActionTypes {\n LOGOUT = 'LOGOUT',\n UPDATE_TOKEN = 'UPDATE_TOKEN',\n}\n","export enum DashboardAppActionTypes {\n LOGOUT = 'LOGOUT',\n GET_ACCOUNTS_LIST = 'GET_ACCOUNTS_LIST',\n ON_ACCOUNT_CHANGE = 'ON_ACCOUNT_CHANGE',\n GET_CURRENT_FROM_STORE = 'GET_CURRENT_FROM_STORE',\n SEARCH_TERM_CHANGE = 'SEARCH_TERM_CHANGE',\n}\n","function get(key: string): T | null {\n try {\n const value = localStorage.getItem(key) ?? '';\n // if(import.meta.env.MODE === 'development') console.log(`store/${key} (GET) => ${value || 'null'}`);\n return JSON.parse(value);\n } catch (e) {\n return null;\n }\n}\n\nfunction set(key: string, value: T): void {\n const strValue = JSON.stringify(value);\n // if(import.meta.env.MODE === 'development') console.log(`store/${key} (SET) => ${value || 'null'}`);\n localStorage.setItem(key, strValue);\n}\n\nfunction remove(key: string): void {\n localStorage.removeItem(key);\n}\n\nexport default {\n get,\n set,\n remove,\n};\n","/**\n * @todo Remove all token refresh functionality from api requests and instead have the refreshes taken place\n * one minute before expiry. This cannot be done before we've addressed the issue of the worker's initial tab being closed.\n */\n\nimport { getApiDomain } from '@/mw-components/helpers/functions';\nimport { DEFAULT_HEADERS } from './constants';\nimport { Headers as RequestHeaders, Method, Methods } from './types';\nimport { ENDPOINTS } from './constants';\nimport { routerInstance, store } from '@/mw-components/store';\nimport { RefreshAdminTokenDTO, RefreshAdminTokenRequest } from '@/mw-components/types/auth';\nimport { AuthActionTypes } from '@/mw-components/store/modules/auth/action-types';\nimport { DashboardAppActionTypes } from '@/mw-components/store/modules/dashboard-app/action-types';\n\nimport storage from '@/mw-components/store/storage'; // Adding so we can store isRefreshingToken in local storage instead of state\n\ntype retry = {\n maxRetries: number;\n};\n\ntype xhrOptions = {\n retry?: retry;\n};\n\nclass MwApiBase {\n apiDomain: string;\n\n constructor(mode: string = 'production') {\n this.apiDomain = this.getApiDomain(mode);\n }\n\n async xhr(\n method: Method,\n data: SendType,\n path: string,\n requiresAuth: boolean = true,\n ): Promise {\n const request = async (): Promise => {\n try {\n return await this.fetchRequest(method, data, path, requiresAuth);\n } catch (error) {\n throw error;\n }\n };\n\n // We can look to remove this now the token is fetched on a timer and should never be refreshed on a request again.\n // BUT NOT YET!\n // Token refreshes still happen on request if the token has expired. This will happen, as the token only last 10 minutes.\n // And we also need to consider what will happen when someone closes the tab listening for the worker's messages.\n if (storage.get('isRefreshingToken') && !path.includes('/client/token')) {\n // We're refreshing the token - keep checking until it's complete\n return new Promise((resolve) => {\n const intervalId = setInterval(() => {\n if (!storage.get('isRefreshingToken')) {\n clearInterval(intervalId);\n resolve(this.fetchRequest(method, data, path, requiresAuth));\n }\n }, 100);\n });\n } else {\n return request();\n }\n }\n\n async fetchRequest(\n method: Method,\n data: SendType,\n path: string,\n requiresAuth: boolean = true,\n ): Promise {\n const response = await fetch(`${this.apiDomain}${path}`, {\n method,\n body: this.getRequestBody(data),\n headers: this.getRequestHeaders(data, requiresAuth),\n });\n\n const isJson = response.headers.get('content-type')?.includes('application/json');\n\n const tokenExpired = response.headers.get('token-expired');\n\n if (response.ok) {\n storage.set('lastActivity', Date.now());\n return isJson ? await response.json() : await response.blob();\n\n // If the response is a 401, we need to refresh the token. In the time the original request was made, other will also have been made, though,\n // - we don't want them refreshing the token as well. we might already be refreshing the token, so check that's not the case.\n } else if (\n response.status === 401 &&\n !path.includes('/client/token') &&\n !storage.get('isRefreshingToken') &&\n tokenExpired\n ) {\n storage.set('isRefreshingToken', true);\n // Refresh the token\n return new Promise((resolve) => {\n this.tokenRefresh()\n .then(() => {\n return resolve(\n this.fetchRequest(method, data, path, requiresAuth),\n );\n })\n .catch(() => {\n store.dispatch(`auth/${AuthActionTypes.LOGOUT}`);\n store.dispatch(`dashboardApp/${DashboardAppActionTypes.LOGOUT}`);\n // @ts-ignore\n routerInstance.router.push({\n // @ts-ignore\n name: routerInstance.paths.login.name,\n });\n });\n });\n // Catch the original requests that were sent out before the first 401 and add them to the queue\n } else if (response.status === 401 && !path.includes('/client/token') && tokenExpired) {\n return new Promise((resolve) => {\n return resolve(this.fetchRequest(method, data, path, requiresAuth));\n });\n } else {\n throw await response.json();\n }\n }\n\n async tokenRefresh() {\n if (!(storage.get('token') && storage.get('refreshToken'))) {\n throw new Error('Token is empty');\n }\n\n const model: RefreshAdminTokenRequest = {\n Token: storage.get('token'),\n RefreshToken: storage.get('refreshToken'),\n };\n\n return await this.AuthenticateRefresh(model).then((value) => {\n if (value !== undefined) {\n const { token, refreshToken } = value;\n storage.set('token', token);\n storage.set('refreshToken', refreshToken);\n storage.set('isRefreshingToken', false);\n } else {\n throw new Error('Refresh token endpoint failed: undefined response');\n }\n });\n }\n\n AuthenticateRefresh = (model: RefreshAdminTokenRequest) =>\n this.xhr(\n Methods.Post,\n model,\n ENDPOINTS.AuthenticateRefresh,\n );\n\n getRequestBody(data: SendType) {\n // @ts-ignore\n return data instanceof FormData\n ? data\n : Object.keys(data).length !== 0\n ? JSON.stringify(data)\n : undefined;\n }\n\n getRequestHeaders(data: SendType, requiresAuth: boolean): Headers {\n const requestHeaders = new Headers({ ...DEFAULT_HEADERS });\n if (data instanceof FormData) {\n requestHeaders.delete(RequestHeaders.ContentType);\n }\n if (requiresAuth) {\n requestHeaders.set(RequestHeaders.Authorization, `Bearer ${storage.get('token')}`);\n }\n return requestHeaders;\n }\n\n //TODO: Update this to work with Service Discovery\n getApiDomain(mode: string) {\n switch (mode) {\n case 'localdev':\n return 'https://localhost:5001';\n default:\n return getApiDomain();\n }\n }\n}\n\nexport default MwApiBase;\n","import MWApiBase from './mw-api-base';\nimport { ENDPOINTS, ENDPOINTS_V2 } from './constants';\nimport { Methods } from '@/mw-components/Api/types';\nimport {\n AdminTwoFactorRequest,\n CreateAdminTokenRequest,\n RefreshAdminTokenRequest,\n} from '@/mw-components/types/auth';\nimport { SurveyImageType } from '@/mw-components/enums/survey';\nimport { WidgetEmailSettings, WidgetUpdateStatus, Widget } from '@/mw-components/types/widgets';\nimport { NotificationResponse } from '@/mw-components/types/notifications';\nimport {\n ContactCreateModel,\n ContactDetailsResponse,\n ContactsModel,\n} from '@/mw-components/types/contacts';\nimport { TravelPlan } from '@/mw-components/types/travel-plan';\nimport { PendingLiftshareAccountsResponse } from '@/mw-components/types/liftshare';\nimport { CommunitiesResponse } from '@/mw-components/types/communites';\nimport { AccountSettings, AccountSettingsResponse } from '@/mw-components/types/account';\n\ntype OnlyClassMethods = {\n [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never;\n}[keyof T];\n\ninterface IApiRetry {\n withRetry(method: OnlyClassMethods, maxRetries: number, retryCount: number): void;\n}\n\nexport class MWApiV2 extends MWApiBase {\n constructor(mode: string = 'production') {\n super(mode);\n }\n Communities = () =>\n this.xhr(Methods.Get, {}, ENDPOINTS_V2.Communities);\n AdminNotification = () =>\n this.xhr(Methods.Get, {}, ENDPOINTS_V2.AdminNotifications);\n AdminEmailPreview = (notificationKeyDescription: string, model: object = {}) =>\n this.xhr(\n Methods.Post,\n model,\n `${ENDPOINTS_V2.AdminEmailPreview}/${notificationKeyDescription}`,\n true,\n );\n BehaviourChangeBarriersToChange = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS_V2.BehaviourChangeBarriersToChange}?cid=${communityId}${queryString}`,\n );\n BehaviourChangeDistanceBreakdown = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS_V2.BehaviourChangeDistanceBreakdown}?cid=${communityId}${queryString}`,\n );\n BehaviourChangeModeBreakdown = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS_V2.BehaviourChangeModeBreakdown}?cid=${communityId}${queryString}`,\n );\n BehaviourChangeModalShift = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS_V2.BehaviourChangeModalShift}?cid=${communityId}${queryString}`,\n );\n BehaviourChangePlanMetrics = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS_V2.BehaviourChangePlanMetrics}?cid=${communityId}${queryString}`,\n );\n Contacts = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS_V2.Contacts}${queryString}`);\n ContactDetails = (contactId: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS_V2.Contacts}/${contactId}`,\n );\n ContactsLimit = (communityId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS_V2.ContactsLimit}?cid=${communityId}`);\n ContactAdd = (model: ContactCreateModel) =>\n this.xhr(Methods.Post, model, ENDPOINTS_V2.ContactAdd);\n ContactDelete = (contactIds: Array) =>\n this.xhr(\n Methods.Delete,\n { publicContactIds: contactIds },\n ENDPOINTS_V2.ContactDelete,\n );\n ContactExport = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS_V2.ContactExport}${queryString}`, true);\n TravelPlans = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS_V2.TravelPlans);\n TravelPlanBatches = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS_V2.TravelPlanBatches);\n TravelPlanResult = (planId: string, queryString: string = '') =>\n this.xhr<{}, TravelPlan.PlanResult>(\n Methods.Get,\n {},\n `${ENDPOINTS.TravelPlanResults}/${planId}${queryString}`,\n );\n NPSCheck = (category: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS_V2.NPSCheck}/${category}`);\n NPSPost = (model: object) => this.xhr(Methods.Post, model, ENDPOINTS_V2.NPSCheck);\n NPSUpdate = (model: object) => this.xhr(Methods.Put, model, ENDPOINTS_V2.NPSCheck);\n PendingLiftshareAccountsBatchSave = (model: Object) =>\n this.xhr(Methods.Put, model, ENDPOINTS_V2.PendingLiftshareAccountsBatch);\n PendingLiftshareAccountsBatchDelete = (batchId: String) =>\n this.xhr(\n Methods.Delete,\n {},\n `${ENDPOINTS_V2.PendingLiftshareAccountsBatch}/${batchId}`,\n );\n PendingLiftshareAccountsBatchDetails = (batchId: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS_V2.PendingLiftshareAccountsBatch}/${batchId}`,\n );\n PendingLiftshareAccounts = (communityId: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS_V2.PendingLiftshareAccountsBatch}?cid=${communityId}`,\n );\n PendingLiftshareAccountsTestEmail = (model: Object) =>\n this.xhr(Methods.Post, model, ENDPOINTS_V2.PendingLiftshareAccountsTestEmail);\n PendingLiftshareAccountsBatchFinalize = (model: Object) =>\n this.xhr(Methods.Put, model, ENDPOINTS_V2.PendingLiftshareAccountsBatchFinalize);\n PendingLiftshareAccountsImageUpload = (formData: object) =>\n this.xhr(\n Methods.Put,\n formData,\n `${ENDPOINTS_V2.PendingLiftshareAccountsImageUpload}`,\n );\n SurveySummaryQuestions = (id: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS_V2.SurveySummaryQuestions}/${id}`);\n}\n\nexport class MWApi extends MWApiBase {\n /**\n * @param mode - get the mode from our projects environment\n * @default - production mode\n */\n constructor(mode: string = 'production') {\n super(mode);\n }\n\n // We should do our best to type these! Will make our lives and other devs lives much easier... Here is a start and the means to do so.\n AccountsList = () => this.xhr(Methods.Get, {}, ENDPOINTS.AccountsList);\n AcelAssumptions = () => this.xhr(Methods.Get, {}, ENDPOINTS.AcelAssumptions);\n AcelNational = () => this.xhr(Methods.Get, {}, ENDPOINTS.AcelNational);\n AcelCreate = (model: object) => this.xhr(Methods.Post, model, ENDPOINTS.AcelCreate);\n AcelCreateFromSurvey = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AcelCreateFromSurvey);\n AcelReportDelete = (reportId: object) =>\n this.xhr(Methods.Delete, {}, `${ENDPOINTS.AcelReportDelete}/${reportId}`);\n AcelReportRename = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AcelReportRename);\n AcelReports = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.AcelReports}/${queryString}`);\n AcelReportDetails = (reportId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.AcelReportDetails}/${reportId}`);\n AccountSettings = () =>\n this.xhr(Methods.Get, {}, ENDPOINTS.AccountSettings);\n AcelSetPrimary = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AcelSetPrimary);\n AcelSetPrivacy = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AcelSetPrivacy);\n AcelSetTarget = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AcelSetTarget);\n AdminPendingLiftshare = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.AdminPendingLiftshare}/${queryString}`);\n AdminPendingLiftshareCreate = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AdminPendingLiftshareCreate);\n AcelSurveys = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.AcelSurveys}/${queryString}`);\n AcelSurveyData = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AcelSurveyData);\n AuthenticateToken = (model: CreateAdminTokenRequest) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AuthenticateToken);\n AuthenticateTwoFactor = (model: AdminTwoFactorRequest) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AuthenticateTwoFactor);\n AuthenticateRefresh = (model: RefreshAdminTokenRequest) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AuthenticateRefresh);\n AutocompleteProxy = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.AutocompleteProxy, false);\n BehaviourChangeBarriersToChange = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.BehaviourChangeBarriersToChange}?cid=${communityId}${queryString}`,\n );\n BehaviourChangeDistanceBreakdown = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.BehaviourChangeDistanceBreakdown}?cid=${communityId}${queryString}`,\n );\n BehaviourChangeModalShift = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.BehaviourChangeModalShift}?cid=${communityId}${queryString}`,\n );\n BehaviourChangeModeBreakdown = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.BehaviourChangeModeBreakdown}?cid=${communityId}${queryString}`,\n );\n Contacts = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.Contacts}${queryString}`);\n ContactAdd = (model: object) => this.xhr(Methods.Post, model, ENDPOINTS.ContactAdd);\n ContactDelete = (contactId: string) =>\n this.xhr(Methods.Delete, {}, `${ENDPOINTS.ContactDelete}/${contactId}`);\n ContactDetails = (contactId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ContactDetails}/${contactId}`);\n ContactExport = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ContactExport}${queryString}`, true);\n ContactImportHeaders = (model: FormData) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ContactImportHeaders, true);\n ContactPreviousImports = (communityId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ContactPreviousImports}/${communityId}`);\n ContactUpdate = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ContactUpdate);\n ContactUpdateTags = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ContactUpdateTags);\n ContactsUpload = (model: FormData) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ContactsUpload, true);\n ContactsEmailTaken = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ContactsEmailTaken, true);\n ContactsImportProgress = (id: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ContactsImportProgress}/${id}`);\n ContactsPreviousImportFailures = (id: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ContactsPreviousImportFailures}/${id}`);\n CustomTexts = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.CustomTexts}${queryString}`);\n CustomTextDelete = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.CustomTextDelete);\n CustomTextSave = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.CustomTextSave);\n GeocodeProxy = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.GeocodeProxy, false);\n // Check this endpoint, typed as object, should probs be FormData\n ImageUpload = (formData: object, publicSurveyId: string, imageType: SurveyImageType) =>\n this.xhr(\n Methods.Post,\n formData,\n `${ENDPOINTS.ImageUpload}?publicSurveyId=${publicSurveyId}&imageType=${imageType}`,\n true,\n );\n PasswordResetConfirm = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.PasswordResetConfirm, false);\n PasswordResetEmail = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.PasswordResetEmail, false);\n PersonalisationTokens = () =>\n this.xhr(Methods.Get, {}, ENDPOINTS.PersonalisationTokens, false);\n PlatformUsageLogins = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.PlatformUsageLogins}${queryString}`, true);\n ScopingContacts = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ScopingContacts);\n ScopingDataAggregated = (scopingReportId: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.ScopingDataAggregated}/${scopingReportId}`,\n true,\n );\n ScopingDataPlan = (scopingReportId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ScopingDataPlan}/${scopingReportId}`);\n ScopingResults = (scopingReportId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ScopingResults}/${scopingReportId}`, true);\n ScopingMap = (scopingReportId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ScopingMap}/${scopingReportId}`, false);\n ScopingReportAbort = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ScopingReportAbort);\n ScopingReportContinue = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ScopingReportContinue);\n ScopingReport = (scopingReportId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ScopingReport}/${scopingReportId}`, true);\n ScopingReportStatus = (scopingReportId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ScopingReportStatus}/${scopingReportId}`);\n ScopingSummary = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ScopingSummary}${queryString}`);\n ScopingFullSummary = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.ScopingFullSummary}${queryString}`);\n ScopingUpload = (model: FormData) =>\n this.xhr(Methods.Post, model, ENDPOINTS.ScopingUpload, true);\n Surveys = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.Surveys}${queryString}`);\n\n // NEW APIS ///////\n // Use { publicSurveyId, annotationContent } for header annotation, use { publicSurveyId, surveyQuestionId, annotationContent } for question annotation\n SurveyAnnotation = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveyAnnotation);\n SurveyHeadingAnnotationDelete = (publicSurveyId: string) =>\n this.xhr(\n Methods.Delete,\n {},\n `${ENDPOINTS.SurveyHeadingAnnotationDelete}?publicSurveyId=${publicSurveyId}`,\n );\n SurveyQuestionAnnotationDelete = (publicSurveyId: string, surveyQuestionId: string) =>\n this.xhr(\n Methods.Delete,\n {},\n `${ENDPOINTS.SurveyQuestionAnnotationDelete}?publicSurveyId=${publicSurveyId}&surveyQuestionId=${surveyQuestionId}`,\n );\n SurveyReportPrivacy = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveyReportPrivacy);\n SurveyPublicAnalyticsId = (publicSurveyId: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveyPublicAnalyticsId}/${publicSurveyId}`,\n );\n ///////////////////\n\n // One to look at, conditional ( may or may not require auth )\n SurveyAnalytics = (publicId: string, queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.SurveyAnalytics}/${publicId}${queryString}`, false);\n SurveyClone = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveyClone);\n SurveyContacts = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveyContacts);\n SurveyEmailMetrics = (publicId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveyEmailMetrics}/${publicId}${queryString}`,\n );\n SurveyLinkMetrics = (publicId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveyLinkMetrics}/${publicId}${queryString}`,\n );\n SurveyData = (publicId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.SurveyData}/${publicId}`);\n SurveyDelete = (publicId: string) =>\n this.xhr(Methods.Delete, {}, `${ENDPOINTS.SurveyDelete}/${publicId}`);\n SurveyDeleteResponse = (\n publicSurveyId: string,\n anonymousResponderId: string,\n batchAliasId?: string,\n ) => {\n const id = batchAliasId ? `/${batchAliasId}` : '';\n const query = `${publicSurveyId}/${anonymousResponderId}` + id;\n return this.xhr(Methods.Delete, {}, `${ENDPOINTS.SurveyDeleteResponse}/${query}`);\n };\n SurveyExport = (publicId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.SurveyExport}/${publicId}`, true);\n SurveyIndividualResponses = (publicSurveyId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveyIndividualResponses}/${publicSurveyId}${queryString}`,\n );\n SurveyIndividualUserResponse = (publicSurveyId: string, anonymousResponderId: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveyIndividualUserResponse}/${publicSurveyId}/${anonymousResponderId}`,\n );\n SurveyPause = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveyPause);\n SurveyPublish = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveyPublish);\n SurveyResponses = (publicId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveyResponses}/${publicId}${queryString}`,\n );\n // conditional\n SurveyResponsesOverTime = (publicId: string, queryString: string, requiresAuth?: boolean) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveyResponsesOverTime}/${publicId}${queryString}`,\n requiresAuth !== undefined ? requiresAuth : false,\n );\n SurveySave = (model: object) => this.xhr(Methods.Post, model, ENDPOINTS.SurveySave);\n SurveySendMoreContacts = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveySendMoreContacts);\n SurveySendTestEmail = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveySendTestEmail);\n SurveyShareLink = (publicSurveyId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.SurveyShareLink}/${publicSurveyId}`);\n // conditional\n SurveySummary = (publicSurveyId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.SurveySummary}/${publicSurveyId}`, true);\n // conditioanl\n SurveySummaryByQuestion = (publicSurveyId: string, questionId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveySummaryByQuestion}/${publicSurveyId}/${questionId}${queryString}`,\n true,\n );\n SurveyTemplates = () => this.xhr(Methods.Get, {}, ENDPOINTS.SurveyTemplates);\n SurveyTemplateData = (templateId: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.SurveyTemplateData}?publicId=${templateId}`,\n );\n TravelPlans = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlans);\n TravelPlanArchive = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanArchive);\n TravelPlanBatches = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanBatches);\n TravelPlanBatchStatus = (batchId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.TravelPlanBatchStatus}?id=${batchId}`);\n TravelPlanDestinations = (communityId: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.TravelPlanDestinations}?cid=${communityId}`,\n );\n TravelPlanDetails = (queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.TravelPlanDetails}${queryString}`,\n );\n TravelPlanEmail = (publicId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.TravelPlanEmail}/${publicId}`);\n TravelPlanFailed = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.TravelPlanFailed}${queryString}`);\n TravelPlanFinalize = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanFinalize);\n TravelPlanImageUpload = (formData: object, publicBatchId: string) =>\n this.xhr(\n Methods.Post,\n formData,\n `${ENDPOINTS.TravelPlanImageUpload}?publicBatchId=${publicBatchId}`,\n true,\n );\n TravelPlanNotifyCompletion = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanNotifyCompletion);\n TravelPlanProcessedPlans = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanProcessedPlans);\n TravelPlanResults = (planId: string, queryString: string = '') =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.TravelPlanResults}/${planId}${queryString}`,\n false,\n );\n TravelPlanSave = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanSave);\n TravelPlanStartBatch = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanStartBatch);\n TravelPlanSendEmails = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanSendEmails);\n TravelPlanSendTestEmails = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanSendTestEmails);\n TravelPlanSendMultiple = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanSendMultiple);\n TravelPlanSurveyResults = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.TravelPlanSurveyResults}${queryString}`);\n TravelPlanSurveyEmailMetrics = (communityId: string, queryString: string) =>\n this.xhr(\n Methods.Get,\n {},\n `${ENDPOINTS.TravelPlanSurveyEmailMetrics}/${communityId}${queryString}`,\n );\n TravelPlanViews = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.TravelPlanViews}${queryString}`);\n TravelPlanRateLimitStatus = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.TravelPlanRateLimitStatus}${queryString}`);\n Widgets = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.Widgets}${queryString}`);\n WidgetsDelete = (queryString: string) =>\n this.xhr(Methods.Delete, {}, `${ENDPOINTS.WidgetsDelete}${queryString}`);\n Widget = (queryString: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.Widget}${queryString}`, false);\n WidgetsUpdateStatus = (model: WidgetUpdateStatus) =>\n this.xhr(Methods.Post, model, ENDPOINTS.WidgetsUpdateStatus);\n WidgetsUpsert = (model: { widget: Widget; emailSettings: WidgetEmailSettings }) =>\n this.xhr<{ widget: Widget; emailSettings: WidgetEmailSettings }, any>(\n Methods.Post,\n model,\n ENDPOINTS.WidgetsUpsert,\n );\n WidgetsValidateLocations = (model: object) =>\n this.xhr(Methods.Post, model, '/dashboard/widgets/validate-locations');\n SurveyDataPublic = (publicId: string, contactId: string) => {\n let path = publicId;\n\n if (contactId) {\n path = `${path}/${contactId}`;\n }\n return this.xhr(Methods.Get, {}, `${ENDPOINTS.SurveyDataPublic}/${path}`, false);\n };\n EmailPreferences = (contactId: string) =>\n this.xhr(Methods.Get, {}, `${ENDPOINTS.EmailPreferences}/${contactId}`, false);\n SurveyAnswer = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.SurveyAnswer, false);\n TravelPlanFeedback = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanFeedback, false);\n TravelPlanWidgetSearch = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.TravelPlanWidgetSearch, false);\n // This one was in mw web project, but looks like it should be private\n UpdateEmailPreferences = (model: object) =>\n this.xhr(Methods.Post, model, ENDPOINTS.UpdateEmailPreferences, true);\n UpdateAccountSettings = (model: AccountSettings) =>\n this.xhr(Methods.Post, model, ENDPOINTS.UpdateAccountSettings, true);\n}\n","import { MWApi, MWApiV2 } from './mw-api';\nimport MwApiBase from './mw-api-base';\n\nfunction getApi(mode: string, version: number = 1): MwApiBase {\n switch (version) {\n case 2:\n return new MWApiV2(mode);\n default:\n return new MWApi(mode);\n }\n}\n\nexport function useApi(mode: string): MWApi {\n const api = getApi(mode);\n return api as MWApi;\n}\n\nexport function useApiV2(mode: string): MWApiV2 {\n const api = getApi(mode, 2);\n return api as MWApiV2;\n}\n"],"names":["getEnv","uuidv4","c","r","v","getApiDomain","getLiftshareDomain","includeOnArray","condition","val","Methods","Headers","DEFAULT_HEADERS","ENDPOINTS_V2","ENDPOINTS","AuthActionTypes","DashboardAppActionTypes","get","key","value","set","strValue","remove","storage","MwApiBase","mode","__publicField","model","method","data","path","requiresAuth","request","error","resolve","intervalId","response","isJson","_a","tokenExpired","store","routerInstance","token","refreshToken","requestHeaders","RequestHeaders","MWApiV2","MWApiBase","notificationKeyDescription","communityId","queryString","contactId","contactIds","planId","category","batchId","formData","id","MWApi","reportId","publicSurveyId","imageType","scopingReportId","surveyQuestionId","publicId","anonymousResponderId","batchAliasId","query","questionId","templateId","publicBatchId","getApi","version","useApi","useApiV2"],"mappings":"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"}