{"version":3,"file":"static/js/main.110ebe2a.js","mappings":"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","sources":["src/aws-exports.js","src/PrivacyPolicyComponent.js","src/TermsAndConditionsComponent.js","src/contexts/UserContext.js","src/Apollo/amplify-auth-link.js","src/Apollo/use-create-apollo-client.js","src/analytics.web.js","src/Utils.js","src/Authentication/SignIn.js","src/Authentication/SignUp.js","src/Authentication/ResendCode.js","src/Authentication/ForgotPassword.js","src/Authentication/ForgotPasswordSubmit.js","graphql/queries.js","src/CustomerSelector.js","graphql/mutations.js","src/AddPhotoModal.js","src/ImageSwiperModal.js","src/ServiceOrderCancellationModal.js","src/ServiceOrderRatingModal.js","src/ServiceOrderAcceptanceModal.js","src/ConfirmApprovalDialog.js","src/ErrorDialog.js","src/ServiceOrderSuspensionModal.js","src/ProgressiveImage.js","src/CancelablePromiseHook.js","src/lib/stores/updateServiceOrder.ts","src/lib/queries/getServiceOrder.js","src/lib/queries/updateServiceOrder.js","src/lib/queries/createComment.js","src/ServiceOrderComponent.js","src/lib/cache/updateServiceOrder.ts","src/lib/cache/updateComment.ts","src/CarsComponent.js","src/CarComponent.js","src/AddCarComponent.js","src/CarMakeModelSelector.js","src/components/CreditCardListItem.js","src/TipsiStripeContainer.js","assets/Apple_Pay_Mark.svg","assets/Google_Pay_Mark.svg","src/components/InvoicePaymentListItem.tsx","src/components/BankTransferListItem.tsx","src/PaymentsComponent.js","src/CountrySelectorModal.js","src/BillingDetailsComponent.tsx","src/PaymentFormComponent.js","src/PaymentComponentBankTransfer.tsx","src/PaymentComponent.js","src/PaymentMethodTypeSelector.js","src/SystemMessage.js","src/AddPaymentComponent.js","src/VouchersComponent.js","src/AddVoucherComponent.js","src/CreateConnectedAccountComponent.js","src/VouchersProviderComponent.js","src/GenerateVoucherComponent.js","src/OpeningHoursComponent.js","src/AddOpeningHoursComponent.js","src/UserProfileComponent.js","src/OrderLocationAutocomplete.tsx","src/LocationService.ts","src/SelectLocationComponent.js","src/BusinessHoursInfoModal.js","src/ProductPackageDetailsModal.js","src/AddonsComponent.js","src/components/ui/Button.tsx","src/SelectServiceComponent.js","src/TimeslotPickerComponent.js","src/lib/schema/selectPayment.js","src/components/PaymentMethodItem.js","src/lib/utils/renderPaymentMethod.js","src/lib/stores/currentServiceOrder.ts","src/components/LoginPrompt.js","src/SelectPaymentComponent.js","src/lib/utils/stringToDouble.ts","src/PaymentOnSessionComponent.js","src/OrderConfirmedComponent.js","src/CalendarComponent.js","src/ServiceOrderCard.js","src/ServiceOrderCardAccordion.js","assets/welcome.svg","src/ServiceOrdersComponent.js","src/SelectCompanyModal.js","src/VersionDisplay.tsx","src/LegalLinks.tsx","src/AccountScreen.js","src/Authentication/ConfirmSignUp.js","App.js","index.js","node_modules/moment/locale|sync|/^/.//.*$","webpack/bootstrap","webpack/runtime/amd options","webpack/runtime/chunk loaded","webpack/runtime/compat get default export","webpack/runtime/create fake namespace object","webpack/runtime/define property getters","webpack/runtime/ensure chunk","webpack/runtime/get javascript chunk filename","webpack/runtime/get mini-css chunk filename","webpack/runtime/global","webpack/runtime/harmony module decorator","webpack/runtime/hasOwnProperty shorthand","webpack/runtime/load script","webpack/runtime/make namespace object","webpack/runtime/node module decorator","webpack/runtime/publicPath","webpack/runtime/css loading","webpack/runtime/jsonp chunk loading","webpack/startup"],"sourcesContent":["/* eslint-disable */\n// WARNING: DO NOT EDIT. This file is automatically generated by AWS Amplify. It will be overwritten.\n\nconst awsmobile = {\n \"aws_project_region\": \"eu-west-1\",\n \"aws_appsync_graphqlEndpoint\": \"https://qnr4krtpzja5lan6tndvzxrq4i.appsync-api.eu-west-1.amazonaws.com/graphql\",\n \"aws_appsync_region\": \"eu-west-1\",\n \"aws_appsync_authenticationType\": \"AMAZON_COGNITO_USER_POOLS\",\n \"aws_cloud_logic_custom\": [\n {\n \"name\": \"payments\",\n \"endpoint\": \"https://poenmri5v0.execute-api.eu-west-1.amazonaws.com/prod\",\n \"region\": \"eu-west-1\"\n },\n {\n \"name\": \"restAPI\",\n \"endpoint\": \"https://aqg540mif3.execute-api.eu-west-1.amazonaws.com/prod\",\n \"region\": \"eu-west-1\"\n }\n ],\n \"aws_cognito_identity_pool_id\": \"eu-west-1:cb3ad18d-5221-4d39-b52c-f06d221cee9b\",\n \"aws_cognito_region\": \"eu-west-1\",\n \"aws_user_pools_id\": \"eu-west-1_ipk8vjyLk\",\n \"aws_user_pools_web_client_id\": \"5b6pojfn3q5o4qlc0gb7rpjs15\",\n \"oauth\": {\n \"domain\": \"customerapp35ec4f71-35ec4f71-prod.auth.eu-west-1.amazoncognito.com\",\n \"scope\": [\n \"phone\",\n \"email\",\n \"openid\",\n \"profile\",\n \"aws.cognito.signin.user.admin\"\n ],\n \"redirectSignIn\": \"https://my.cleenup.com,https://my-qa.cleenup.com,http://localhost:19006,cleenup://,exp://127.0.0.1:19000/--/,https://partner-qa.cleenup.com/,test://\",\n \"redirectSignOut\": \"https://my.cleenup.com,https://my-qa.cleenup.com,http://localhost:19006,cleenup://,exp://127.0.0.1:19000/--/\",\n \"responseType\": \"code\"\n },\n \"federationTarget\": \"COGNITO_USER_AND_IDENTITY_POOLS\",\n \"aws_cognito_username_attributes\": [\n \"EMAIL\",\n \"PHONE_NUMBER\"\n ],\n \"aws_cognito_social_providers\": [\n \"FACEBOOK\",\n \"GOOGLE\",\n \"APPLE\"\n ],\n \"aws_cognito_signup_attributes\": [\n \"EMAIL\"\n ],\n \"aws_cognito_mfa_configuration\": \"OFF\",\n \"aws_cognito_mfa_types\": [\n \"SMS\"\n ],\n \"aws_cognito_password_protection_settings\": {\n \"passwordPolicyMinLength\": 8,\n \"passwordPolicyCharacters\": []\n },\n \"aws_cognito_verification_mechanisms\": [\n \"EMAIL\"\n ],\n \"aws_user_files_s3_bucket\": \"customerappc0643be4140e431eb99c870af9fbf5b1164909-prod\",\n \"aws_user_files_s3_bucket_region\": \"eu-west-1\",\n \"aws_cognito_login_mechanisms\": [\n \"EMAIL\",\n \"PHONE_NUMBER\"\n ]\n};\n\n\nexport default awsmobile;\n","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { View, StyleSheet, SafeAreaView, ScrollView, Dimensions } from 'react-native';\nimport { withTheme, ProgressBar, Button, TextInput, List, Text, Title, Subheading, Modal, Portal, ActivityIndicator } from 'react-native-paper';\nimport Constants from 'expo-constants';\nimport { WebView } from 'react-native-webview';\n\nconst PrivacyPolicyComponent = ({ theme, route, navigation, ...props }) => {\n\n const [isLoading, setLoading] = React.useState(true);\n return (\n <>\n\n \n \n \n\n { setLoading(true) }}\n onLoadEnd={(syntheticEvent) => { setLoading(false) }}\n />\n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0//Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n});\n\nexport default withTheme(PrivacyPolicyComponent);","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { View, StyleSheet, SafeAreaView, ScrollView, Dimensions } from 'react-native';\nimport { withTheme, ProgressBar,Button, TextInput, List, Text, Title, Subheading, Modal, Portal, ActivityIndicator } from 'react-native-paper';\nimport Constants from 'expo-constants';\nimport { WebView } from 'react-native-webview';\n\nconst TermsAndConditionsComponent = ({ theme, route, navigation, ...props }) => {\n const [isLoading, setLoading] = React.useState(true);\n return (\n <>\n \n \n \n\n { setLoading(true) }}\n onLoadEnd={(syntheticEvent) => { setLoading(false) }}\n />\n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0//Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n});\n\nexport default withTheme(TermsAndConditionsComponent);","import * as React from 'react'\nimport Constants from 'expo-constants'\nconst UserContext = React.createContext()\nconst AUTHENTICATED = \"authenticated\"\n\n\nconst defaultUnauthenticatedUser = {\n username: \"unathenticated\",\n signInUserSession: {\n accessToken:{\n payload:{\n \"cognito:groups\": [Constants.expoConfig.extra.variant]\n }\n }\n }\n }\n\nfunction userReducer(state, action) {\n switch (action.type) {\n case 'setUser': {\n\n const isValidUser = !!action?.value?.attributes?.email\n\n return {\n ...state,\n user: isValidUser ? action.value : defaultUnauthenticatedUser,\n userFirstName: action?.value?.attributes?.given_name || \"\",\n userEmail: action?.value?.attributes?.email || \"\",\n authStatus: isValidUser ? AUTHENTICATED : state.authStatus\n }\n }\n\n case 'setAuthStatus': {\n const clearUser = action.value !== AUTHENTICATED\n return {\n ...state,\n authStatus: action.value,\n ...(clearUser && { user: defaultUnauthenticatedUser, userFirstName: null, userEmail: null })\n }\n }\n case 'setOriginRouteNameBeforeAuth': {\n console.log(\"set originRouteNameBeforeAuth to \", action.value)\n return { ...state, originRouteNameBeforeAuth: action.value }\n }\n\n case 'clearOriginRouteNameBeforeAuth': {\n console.log(\"clearing originRouteNameBeforeAuth\")\n return { ...state, originRouteNameBeforeAuth: undefined }\n }\n default: {\n throw new Error(`Unhandled action type: ${action.type}`)\n }\n }\n}\n\nfunction UserProvider({ children }) {\n\n const [state, dispatch] = React.useReducer(userReducer, {\n user: null,\n userFirstName: null,\n userEmail: null,\n authStatus: \"initializing\",\n originRouteNameBeforeAuth: undefined\n })\n\n\n // NOTE: you *might* need to memoize this value\n // Learn more in http://kcd.im/optimize-context\n const value = { state, dispatch }\n return {children}\n}\n\n\n\nfunction useUser() {\n const context = React.useContext(UserContext)\n if (context === undefined) {\n throw new Error('useUser must be used within a UserProvider')\n }\n return context\n}\n\nexport { UserProvider, useUser, AUTHENTICATED }\n","import { ApolloLink, HttpLink } from \"@apollo/client\"\nimport { setContext } from \"@apollo/client/link/context\"\nimport { onError } from \"@apollo/client/link/error\"\nimport { Auth, Hub } from \"aws-amplify\"\nimport {\n AUTH_TYPE,\n createAuthLink as awsCreateAuthLink,\n} from \"aws-appsync-auth-link\"\nimport { createSubscriptionHandshakeLink } from 'aws-appsync-subscription-link';\n\n// To keep things simple, only support a single instance.\nlet amplifyAuthLink = null\nlet region\nlet url\nlet httpLink\n\n// Create an ApolloLink that uses IAM/Cognito based on sign-in state.\n// Uses a cached AuthLink created by aws-appsync-auth-link under the covers.\nexport const createAuthLink = (appSyncConfig) => {\n region = appSyncConfig.region\n url = appSyncConfig.url\n httpLink = new HttpLink({ uri: appSyncConfig.url });\n return cachedAmplifyAuthLink.concat(\n new ApolloLink((operation, forward) =>\n operation.getContext().amplifyAuthLink.request(operation, forward)\n ),\n resetToken\n )\n}\n\n// Create an AWS AuthLink that uses Cognito, suitable for signed-in users.\nconst createCognitoAuthLink = (session) => {\n return ApolloLink.from([\n awsCreateAuthLink({\n auth: {\n jwtToken: async () => (await Auth.currentSession()).getIdToken().getJwtToken(),\n type: AUTH_TYPE.AMAZON_COGNITO_USER_POOLS,\n },\n region,\n url,\n }),\n createSubscriptionHandshakeLink({\n url: url, region: region, auth: {\n jwtToken: async () => (await Auth.currentSession()).getIdToken().getJwtToken(),\n type: AUTH_TYPE.AMAZON_COGNITO_USER_POOLS,\n }\n }, httpLink),\n ])\n}\n\n// Create an AWS AuthLink that uses IAM, suitable for non signed-in users.\nconst createIamAuthLink = () =>\n awsCreateAuthLink({\n auth: {\n credentials: async () => await Auth.currentUserCredentials(),\n type: AUTH_TYPE.AWS_IAM,\n },\n region,\n url,\n })\n\n// An ApolloLink that uses context to cache the amplifyAuthLink instance.\nconst cachedAmplifyAuthLink = setContext(() => {\n if (amplifyAuthLink) {\n return { amplifyAuthLink }\n }\n\n // Asynchronously initialise and cache amplifyAuthLink.\n return Auth.currentSession()\n .then((session) => {\n amplifyAuthLink = createCognitoAuthLink(session)\n return { amplifyAuthLink }\n })\n .catch((error) => {\n // Amplify throws when not signed in.\n console.log(\"Error whilst initialising amplifyAuthLink\", error)\n amplifyAuthLink = createIamAuthLink()\n return { amplifyAuthLink }\n })\n})\n\n// An ApolloLink that reverrts to using IAM when 401 is encountered.\n// TODO: Decide if this is desirable.\nconst resetToken = onError(({ networkError }) => {\n if (networkError?.name == \"ServerError\" && networkError?.statusCode == 401) {\n amplifyAuthLink = createIamAuthLink()\n }\n})\n\n// Add Hub auth listeners, to detect sign-in/out.\nexport const addListeners = () => {\n const handleAuthEvents = ({ payload }) => {\n console.log(\"handleAuthEvents called\")\n switch (payload.event) {\n case \"signIn\":\n amplifyAuthLink = createCognitoAuthLink(payload.data.signInUserSession)\n console.log(\"createCognitoAuthLink called\")\n break\n case \"signOut\":\n amplifyAuthLink = createIamAuthLink()\n console.log(\"createIamAuthLink called\")\n break\n case \"configured\":\n case \"signIn_failure\":\n case \"signUp\":\n default:\n break\n }\n }\n Hub.listen(\"auth\", handleAuthEvents)\n return handleAuthEvents\n}\n\n// Remove Hub auth listeners.\nexport const removeListeners = (handler) => Hub.remove(\"auth\", handler)","// src/Apollo/client.js\n\nimport { ApolloClient, concat } from '@apollo/client';\nimport { InMemoryCache, HttpLink } from '@apollo/client';\nimport { Auth } from 'aws-amplify';\nimport { ApolloLink } from '@apollo/client';\nimport { createHttpLink } from 'apollo-link-http';\n//import { createAuthLink, AUTH_TYPE } from 'aws-appsync-auth-link';\nimport { createSubscriptionHandshakeLink } from 'aws-appsync-subscription-link';\nimport { GRAPHQL_AUTH_MODE } from \"@aws-amplify/api\";\nimport config from '../aws-exports';\nimport React from \"react\"\nimport Constants from 'expo-constants';\n\nimport {\n addListeners,\n createAuthLink,\n removeListeners,\n} from \"./amplify-auth-link\"\n\n\nconst appSyncConfig = {\n url: config.aws_appsync_graphqlEndpoint,\n region: config.aws_appsync_region\n}\n\nconsole.log(\"appSyncConfig: \"+JSON.stringify(appSyncConfig))\n\nconst createApolloClient = () => {\n console.log(\"createApolloClient called\")\n const client = new ApolloClient({\n cache: new InMemoryCache(),\n link: concat(\n createAuthLink(appSyncConfig),\n new HttpLink({ uri: appSyncConfig.url })\n ),\n })\n return client\n\n}\n\nexport const useCreateApolloClient = () => {\n const [client] = React.useState(() => createApolloClient())\n React.useEffect(() => {\n const handler = addListeners()\n return () => removeListeners(handler)\n }, [])\n return client\n}\n\n// console.log(\"hello\")\n// console.log(\"credentials: \"+JSON.stringify(Auth.currentCredentials()));\n\n// const url = config.aws_appsync_graphqlEndpoint;\n// const region = config.aws_appsync_region;\n// const auth = {\n// type: AUTH_TYPE.AWS_IAM,//config.aws_appsync_authenticationType,\n// //type: config.aws_appsync_authenticationType,\n// //jwtToken: async () => (await Auth.currentSession()).getIdToken().getJwtToken(),\n// //apiKey: config.aws_appsync_apiKey,\n// credentials: () => Auth.currentCredentials()\n// };\n// const httpLink = new HttpLink({ uri: url });\n\n// const link = ApolloLink.from([\n// createAuthLink({ url, region, auth }),\n// createSubscriptionHandshakeLink({ url, region, auth }, httpLink),\n// ]);\n\n// const persistOfflineOptions = {\n// prefix: 'example-offline-user',\n// };\n\n// const client = new ApolloClient(\n// {\n// link,\n// cache: new InMemoryCache({\n// typePolicies: {\n// ModelMatchConnection: {\n// merge: true,\n// },\n// ModelCommentConnection: {\n// merge: true,\n// }\n\n// }\n// }),\n// //headers: { Authorization: auth.jwtToken },\n// },\n// persistOfflineOptions,\n// );\n\n// // client.setOfflineOptions({\n// // manualExecution: true, // optional\n// // start: async (mutations) => { //optional\n// // console.log(\"start offline\", mutations)\n// // return mutations;\n// // },\n// // finish: async (mutations, error) => { //optional\n// // console.log(\"finish offline\", error, mutations)\n// // },\n// // onExecute: async (mutation) => { //optional\n// // console.log(\"onExecute offline\", mutation)\n// // return mutation;\n// // },\n// // onComplete: async (options ) => { //optional\n// // console.log(\"onComplete offline\", options)\n// // return true;\n// // },\n// // onDiscard: async ( options ) => { //optional\n// // console.log(\"onDiscard offline\", options)\n// // return true;\n// // },\n// // onPublish: async (offlinePayload) => { //optional\n// // console.log(\"offlinePayload\", offlinePayload)\n// // return offlinePayload\n// // }\n// // });\n\n// export default client;","import { initializeApp } from \"firebase/app\";\nimport { getAnalytics, logEvent } from \"firebase/analytics\";\nimport Constants from 'expo-constants';\n\n// Access the firebase config\nconst firebaseConfig = Constants.expoConfig.web.config.firebase;\n\nconst app = initializeApp(firebaseConfig);\nconst webAnalytics = getAnalytics(app);\n\nexport async function sendAnalyticsLogEventAsync(...args) {\n await logEvent(webAnalytics, ...args);\n}\n\nexport async function sendAnalyticsSetUserIdAsync(...args) {\n await setUserId(webAnalytics, ...args);\n}","import i18n from 'i18n-js'\nimport * as Yup from 'yup'\nimport { Auth } from 'aws-amplify'\nimport AsyncStorage from '@react-native-async-storage/async-storage'\nimport { Platform, Image, StyleSheet } from 'react-native'\nimport Constants from 'expo-constants'\nimport {sendAnalyticsLogEventAsync, sendAnalyticsSetUserIdAsync} from './analytics'\nimport { extendMoment } from 'moment-range'\nimport * as ImagePicker from 'expo-image-picker'\nimport { Storage } from 'aws-amplify'\nimport { manipulateAsync, SaveFormat } from 'expo-image-manipulator'\n//import { formatCurrency } from '../amplify/#current-cloud-backend/function/commonlayer/opt/utils';\nconst PAYMENT_ICON_SIZE = 35\nconst moment = extendMoment(require('moment-timezone'))\nconst maxColumnWidth = 800\nconst formatCurrency = (value, currency) => {\n if (!currency || typeof value != 'number') return ' '\n\n if (currency == 'HUF') {\n return i18n.toCurrency(value, {\n unit: 'Ft',\n precision: 0,\n format: '%n %u',\n })\n } else if (currency == 'EUR') {\n const hasDecimal = value % 1 !== 0;\n return i18n.toCurrency(value, {\n unit: '€',\n precision: hasDecimal ? 2 : 0,\n format: '%u%n',\n })\n } else if (currency == 'GBP') {\n return i18n.toCurrency(value, {\n unit: '£',\n precision: 0,\n format: '%u%n',\n })\n } else {\n return i18n.toCurrency(value)\n }\n}\nconst calculatePrice = (\n offering,\n addons,\n discountPercentage = 0,\n vouchers = []\n) => {\n let packagePrice = offering?.price\n let voucherTotalValue = 0\n let voucherTotalDiscount = 0\n if (vouchers && Array.isArray(vouchers)) {\n voucherTotalValue = vouchers.reduce((prev, curr) => {\n if (curr?.type && curr?.value) {\n return (\n prev +\n (curr.type == 'VALUE' || 'PERCENTAGE_AND_VALUE' ? curr.value : 0)\n )\n } else {\n return prev\n }\n }, 0)\n\n voucherTotalDiscount = vouchers.reduce((prev, curr) => {\n if (curr?.type && curr?.percentage) {\n return (\n prev +\n (curr.type == 'PERCENTAGE' || 'PERCENTAGE_AND_VALUE'\n ? curr.percentage\n : 0)\n )\n } else {\n return prev\n }\n }, 0)\n }\n\n if (addons) {\n let addonsPrice = addons.reduce((prev, curr) => {\n const addonPrice =\n curr.quantity *\n offering?.addonOptions?.addons?.items.find(\n (item) => item.id == curr.addonID\n )?.price\n return prev + (addonPrice ? addonPrice : 0)\n }, 0)\n let totalPriceWithoutDiscount = packagePrice + addonsPrice\n let totalDiscountPercentage = discountPercentage + voucherTotalDiscount\n let totalPrice = Math.max(\n (totalPriceWithoutDiscount * (100 - totalDiscountPercentage)) / 100 -\n voucherTotalValue,\n 0\n )\n let totalDiscountPercentageCombined =\n 100 - (totalPrice / totalPriceWithoutDiscount) * 100\n return {\n packagePrice,\n addonsPrice,\n totalPriceWithoutDiscount,\n totalPrice,\n totalDiscountPercentage,\n voucherTotalValue,\n totalDiscountPercentageCombined,\n }\n } else {\n let totalPriceWithoutDiscount = packagePrice\n let totalDiscountPercentage = discountPercentage + voucherTotalDiscount\n const totalPrice = Math.max(\n (packagePrice * (100 - totalDiscountPercentage)) / 100 -\n voucherTotalValue,\n 0\n )\n let totalDiscountPercentageCombined =\n 100 - (totalPrice / totalPriceWithoutDiscount) * 100\n return {\n packagePrice,\n addonsPrice: 0,\n totalPriceWithoutDiscount,\n totalPrice: totalPrice,\n totalDiscountPercentage,\n voucherTotalValue,\n totalDiscountPercentageCombined,\n }\n }\n}\nconst removeTypename = (obj) =>\n JSON.parse(\n JSON.stringify(obj, (k, v) => (k === '__typename' ? undefined : v))\n )\n\nconst googleMapsStyleBright = [\n {\n featureType: 'poi',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'transit',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n]\n\nconst googleMapsStyleDark = [\n {\n elementType: 'geometry',\n stylers: [\n {\n color: '#242f3e',\n },\n ],\n },\n {\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#746855',\n },\n ],\n },\n {\n elementType: 'labels.text.stroke',\n stylers: [\n {\n color: '#242f3e',\n },\n ],\n },\n {\n featureType: 'administrative.locality',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#d59563',\n },\n ],\n },\n {\n featureType: 'poi',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'poi',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#d59563',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'geometry',\n stylers: [\n {\n color: '#263c3f',\n },\n ],\n },\n {\n featureType: 'poi.park',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#6b9a76',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'geometry',\n stylers: [\n {\n color: '#38414e',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'geometry.stroke',\n stylers: [\n {\n color: '#212a37',\n },\n ],\n },\n {\n featureType: 'road',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#9ca5b3',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry',\n stylers: [\n {\n color: '#746855',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'geometry.stroke',\n stylers: [\n {\n color: '#1f2835',\n },\n ],\n },\n {\n featureType: 'road.highway',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#f3d19c',\n },\n ],\n },\n {\n featureType: 'transit',\n stylers: [\n {\n visibility: 'off',\n },\n ],\n },\n {\n featureType: 'transit',\n elementType: 'geometry',\n stylers: [\n {\n color: '#2f3948',\n },\n ],\n },\n {\n featureType: 'transit.station',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#d59563',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'geometry',\n stylers: [\n {\n color: '#17263c',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'labels.text.fill',\n stylers: [\n {\n color: '#515c6d',\n },\n ],\n },\n {\n featureType: 'water',\n elementType: 'labels.text.stroke',\n stylers: [\n {\n color: '#17263c',\n },\n ],\n },\n]\nconst onCreateServiceOrderByAreaName = /* GraphQL */ `\n subscription OnCreateServiceOrderByAreaName($areaName: String) {\n onCreateServiceOrderByAreaName(areaName: $areaName) {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n discountPercentage\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n serviceFacilityID\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n }\n }\n`\n\nconst onCreateServiceOrder = /* GraphQL */ `\n subscription OnCreateServiceOrder($owner: String) {\n onCreateServiceOrder(owner: $owner) {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n discountPercentage\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n serviceFacilityID\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n }\n }\n`\n\nconst createServiceOrder = /* GraphQL */ `\n mutation CreateServiceOrder(\n $input: CreateServiceOrderInput!\n $condition: ModelServiceOrderConditionInput\n ) {\n createServiceOrder(input: $input, condition: $condition) {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n contactPhoneNumber\n discountPercentage\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n serviceFacilityID\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n }\n }\n`\n\nconst createServiceOrderAdvanced = /* GraphQL */ `\n mutation CreateServiceOrderAdvancedV2(\n $serviceOrderInput: ServiceOrderInputBatch!\n $voucherIDs: [ID]\n $paymentProcessorAccount: PaymentProcessorAccount\n $providerSelectedCustomerUsername: ID\n ) {\n createServiceOrderAdvancedV2(\n serviceOrderInput: $serviceOrderInput\n voucherIDs: $voucherIDs\n paymentProcessorAccount: $paymentProcessorAccount\n providerSelectedCustomerUsername: $providerSelectedCustomerUsername\n ) {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n contactPhoneNumber\n discountPercentage\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n serviceFacilityID\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n }\n }\n`\n\nconst listCarsByOwner = `\n query ListCarsByOwner(\n $owner: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCarFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCarsByOwner(\n owner: $owner\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n}\n`\n\nexport const listPaymentMethods = /* GraphQL */ `\n query ListPaymentMethods(\n $paymentProcessorAccount: PaymentProcessorAccount\n $providerSelectedCustomerUsername: ID\n $serviceOrder: ListPaymentMethodsServiceOrderInput\n ) {\n listPaymentMethods(\n paymentProcessorAccount: $paymentProcessorAccount\n providerSelectedCustomerUsername: $providerSelectedCustomerUsername\n serviceOrder: $serviceOrder\n ) {\n items {\n id\n billing_details {\n email\n phone\n name\n address {\n city\n country\n line1\n line2\n postal_code\n state\n }\n }\n card {\n brand\n country\n exp_month\n exp_year\n fingerprint\n funding\n last4\n }\n created\n customer\n livemode\n type\n metadata {\n tax_id\n }\n restriction\n }\n }\n }\n`\n\nconst listPaymentMethodEligibilityByCustomer = `\n query ListPaymentMethodEligibilityByCustomer(\n $username: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelCustomerPaymentMethodEligibilityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPaymentMethodEligibilityByCustomer(\n username: $username\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n startDate\n finishDate\n eligiblePaymentMethods\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`\n\nconst listDiscountsByCustomer = `\n query ListDiscountsByCustomer(\n $owner: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelCustomerDiscountFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDiscountsByCustomer(\n owner: $owner\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n startDate\n finishDate\n discountPercentage\n isActive\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`\n\nconst listCars = `\nquery ListCars(\n $filter: ModelCarFilterInput\n $limit: Int\n $nextToken: String\n) {\n listCars(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n}\n`\nconst listServiceOrdersByOwner = /* GraphQL */ `\n query ListServiceOrdersByOwner(\n $owner: ID!\n $carAvailableFrom: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceOrdersByOwner(\n owner: $owner\n carAvailableFrom: $carAvailableFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n discountPercentage\n serviceFacilityID\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n\n nextToken\n }\n }\n`\nexport const listServiceOrdersByAreasAndFacilities = /* GraphQL */ `\n query ListServiceOrdersByAreasAndFacilities($stateFilterSelection: [String]) {\n listServiceOrdersByAreasAndFacilities(\n stateFilterSelection: $stateFilterSelection\n ) {\n items {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n discountPercentage\n serviceFacilityID\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n assignments(filter: {isActive: {eq: true}}) {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n }\n}\n\n}\n`;\n\nconst listServiceOrdersByAreas = `\nfragment serviceOrderFields on ServiceOrder {\n\t\t\t\tid\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n discountPercentage\n serviceFacilityID\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n assignments(filter: {isActive: {eq: true}}) {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n}\n\nquery ListServiceOrdersByArea(\n %%AREANAMES%%\n %%SERVICEFACILITYIDS%%\n $carAvailableFrom: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n %%CORE%%\n }\n`\nconst listServiceOrdersByAreaCore = `%%ALIAS%%: listServiceOrdersByArea(\n areaName: $%%AREANAME%%\n carAvailableFrom: $carAvailableFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n ...serviceOrderFields\n }\n nextToken\n }`\n\nconst listServiceOrdersByFacilitiesCore = `%%ALIAS%%: listServiceOrdersByFacility(\n serviceFacilityID: $%%SERVICEFACILITYID%%\n carAvailableFrom: $carAvailableFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n ...serviceOrderFields\n }\n nextToken\n }`\n\nconst listServiceOrdersByArea = /* GraphQL */ `\n query ListServiceOrdersByArea(\n $areaName: String\n $carAvailableFrom: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceOrdersByArea(\n areaName: $areaName\n carAvailableFrom: $carAvailableFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n discountPercentage\n serviceFacilityID\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n owner\n\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n }\n\n nextToken\n }\n }\n`\nconst listServiceOrders = `\nquery ListServiceOrders(\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n) {\n listServiceOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n discountPercentage\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n owner\n\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n createdAt\n updatedAt\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n}`\nconst calculateDistanceInKm = (lat1, lon1, lat2, lon2) => {\n let p = 0.017453292519943295 // Math.PI / 180\n let c = Math.cos\n let a =\n 0.5 -\n c((lat2 - lat1) * p) / 2 +\n (c(lat1 * p) * c(lat2 * p) * (1 - c((lon2 - lon1) * p))) / 2\n\n return 12742 * Math.asin(Math.sqrt(a)) // 2 * R; R = 6371 km\n}\n\nconst carColorDictionary = {\n black: '#000000',\n blue: '#2196f3',\n grey: '#9e9e9e',\n white: '#ffffff',\n red: '#f44336',\n orange: '#ff9800',\n green: '#4caf50',\n brown: '#795548',\n purple: '#9c27b0',\n}\n\nconst isCustomerApp = () => {\n return Constants?.expoConfig?.extra?.variant == 'customer'\n}\n\nconst isProviderApp = () => {\n return Constants?.expoConfig?.extra?.variant == 'provider'\n}\n\nconst isEmpty = (obj) => {\n return Object.keys(obj).length === 0\n}\n\nconst isUserInGroup = (user, groupName) => {\n try {\n return user?.signInUserSession?.accessToken?.payload['cognito:groups']\n .map((item) => item.toLowerCase())\n .includes(groupName.toLowerCase())\n } catch (err) {\n return false\n }\n}\n\nconst setOpacity = (rgbString, opacity) => {\n return (rgbString.split(')')[0] + ', ' + opacity + ')').replace('rgb', 'rgba')\n}\n\nconst countries = [\n { name: 'Albania', code: 'AL' },\n { name: 'Andorra', code: 'AD' },\n { name: 'Armenia', code: 'AM' },\n { name: 'Austria', code: 'AT' },\n { name: 'Azerbaijan', code: 'AZ' },\n { name: 'Belarus', code: 'BY' },\n { name: 'Belgium', code: 'BE' },\n { name: 'Bosnia and Herzegovina', code: 'BA' },\n { name: 'Bulgaria', code: 'BG' },\n { name: 'Croatia', code: 'HR' },\n { name: 'Cyprus', code: 'CY' }, // Considered part of Europe politically\n { name: 'Czechia', code: 'CZ' },\n { name: 'Denmark', code: 'DK' },\n { name: 'Estonia', code: 'EE' },\n { name: 'Finland', code: 'FI' },\n { name: 'France', code: 'FR' },\n { name: 'Georgia', code: 'GE' },\n { name: 'Germany', code: 'DE' },\n { name: 'Greece', code: 'GR' },\n { name: 'Hungary', code: 'HU' },\n { name: 'Iceland', code: 'IS' },\n { name: 'Ireland', code: 'IE' },\n { name: 'Italy', code: 'IT' },\n { name: 'Kazakhstan', code: 'KZ' }, // Considered partly in Europe\n { name: 'Kosovo', code: 'XK' }, // Note: XK is a user-assigned code, not officially in ISO 3166\n { name: 'Latvia', code: 'LV' },\n { name: 'Liechtenstein', code: 'LI' },\n { name: 'Lithuania', code: 'LT' },\n { name: 'Luxembourg', code: 'LU' },\n { name: 'Malta', code: 'MT' },\n { name: 'Moldova', code: 'MD' },\n { name: 'Monaco', code: 'MC' },\n { name: 'Montenegro', code: 'ME' },\n { name: 'Netherlands', code: 'NL' },\n { name: 'North Macedonia', code: 'MK' },\n { name: 'Norway', code: 'NO' },\n { name: 'Poland', code: 'PL' },\n { name: 'Portugal', code: 'PT' },\n { name: 'Romania', code: 'RO' },\n { name: 'Russia', code: 'RU' },\n { name: 'San Marino', code: 'SM' },\n { name: 'Serbia', code: 'RS' },\n { name: 'Slovakia', code: 'SK' },\n { name: 'Slovenia', code: 'SI' },\n { name: 'Spain', code: 'ES' },\n { name: 'Sweden', code: 'SE' },\n { name: 'Switzerland', code: 'CH' },\n { name: 'Turkey', code: 'TR' }, // Considered partly in Europe\n { name: 'Ukraine', code: 'UA' },\n { name: 'United Kingdom', code: 'GB' },\n { name: 'Vatican City', code: 'VA' }\n];\n\nconst flattenObject = (obj) => {\n const flattened = {}\n\n Object.keys(obj).forEach((key) => {\n if (typeof obj[key] === 'object' && obj[key] !== null) {\n Object.assign(flattened, flattenObject(obj[key]))\n } else {\n flattened[key] = obj[key]\n }\n })\n\n return flattened\n}\n\nconst interleave = (x, y) => {\n x &= 0xffff\n x = (x | (x << 8)) & 0x00ff00ff\n x = (x | (x << 4)) & 0x0f0f0f0f\n x = (x | (x << 2)) & 0x33333333\n x = (x | (x << 1)) & 0x55555555\n\n y &= 0xffff\n y = (y | (y << 8)) & 0x00ff00ff\n y = (y | (y << 4)) & 0x0f0f0f0f\n y = (y | (y << 2)) & 0x33333333\n y = (y | (y << 1)) & 0x55555555\n\n return x | (y << 1)\n}\n\nconst deinterleave = (v, n) => {\n v = (v >>> n) & 0x55555555\n v = (v | (v >>> 1)) & 0x33333333\n v = (v | (v >>> 2)) & 0x0f0f0f0f\n v = (v | (v >>> 4)) & 0x00ff00ff\n v = (v | (v >>> 8)) & 0x000ffff\n return v\n}\n\nconst convertDateStringToUnixTimeDays = (dateString) => {\n const unixTimeZero = Date.parse(dateString)\n return Math.floor(unixTimeZero / 1000 / 86400)\n}\n\nconst convertDateToUnixTimeDays = (date) => {\n return Math.floor(date / 1000 / 86400)\n}\n\nexport default {\n fetchUser: async function (setFunction) {\n try {\n const user = await Auth.currentAuthenticatedUser()\n setFunction(user)\n } catch (e) {\n console.log(e)\n setFunction({\n username: \"unathenticated\",\n signInUserSession: {\n accessToken:{\n payload:{\n \"cognito:groups\": [Constants.expoConfig.extra.variant]\n }\n }\n }\n })\n //await Auth.signOut()\n }\n },\n fetchUserBypassCache: async function (setFunction) {\n try {\n const user = await Auth.currentAuthenticatedUser({ bypassCache: true })\n setFunction(user)\n } catch (e) {\n console.log(e)\n setFunction({\n username: \"unathenticated\",\n signInUserSession: {\n accessToken:{\n payload:{\n \"cognito:groups\": [Constants.expoConfig.extra.variant]\n }\n }\n }\n })\n //await Auth.signOut()\n }\n },\n fetchUserCallback: async function (setFunction, callback) {\n try {\n const currentAuthenticatedUser = await Auth.currentAuthenticatedUser()\n setFunction(currentAuthenticatedUser)\n callback(currentAuthenticatedUser)\n } catch (e) {\n console.log(e)\n setFunction({\n username: \"unathenticated\",\n signInUserSession: {\n accessToken:{\n payload:{\n \"cognito:groups\": [Constants.expoConfig.extra.variant]\n }\n }\n }\n })\n //await Auth.signOut()\n }\n },\n isUserCustomer: function (user) {\n //console.log(\"isUserCustomer\", user)\n if(!!user) {\n return isUserInGroup(user, 'customer')\n }\n else {\n return Constants.expoConfig.extra.variant == 'customer'\n }\n },\n isUserProvider: function (user) {\n if(!!user) {\n return isUserInGroup(user, 'provider') && !isUserInGroup(user, 'customer')\n }\n else {\n return Constants.expoConfig.extra.variant == 'provider'\n }\n },\n formatCurrency: formatCurrency,\n formatDuration: (duration) => {\n let parts = []\n\n // return nothing when the duration is falsy or not correctly parsed (P0D)\n if (!duration || duration.toISOString() === 'P0D') return\n\n if (duration.years() >= 1) {\n const years = Math.floor(duration.years())\n parts.push(years + ' ' + (years > 1 ? i18n.t('years') : i18n.t('year')))\n }\n\n if (duration.months() >= 1) {\n const months = Math.floor(duration.months())\n parts.push(\n months + ' ' + (months > 1 ? i18n.t('months') : i18n.t('month'))\n )\n }\n\n if (duration.days() >= 1) {\n const days = Math.floor(duration.days())\n parts.push(days + ' ' + (days > 1 ? i18n.t('days') : i18n.t('day')))\n }\n\n if (duration.hours() >= 1) {\n const hours = Math.floor(duration.hours())\n parts.push(hours + ' ' + (hours > 1 ? i18n.t('hours') : i18n.t('hour')))\n }\n\n if (duration.minutes() >= 1) {\n const minutes = Math.floor(duration.minutes())\n parts.push(\n minutes + ' ' + (minutes > 1 ? i18n.t('minutes') : i18n.t('minute'))\n )\n }\n\n if (duration.seconds() >= 1) {\n const seconds = Math.floor(duration.seconds())\n parts.push(\n seconds + ' ' + (seconds > 1 ? i18n.t('seconds') : i18n.t('second'))\n )\n }\n\n return parts.join(' ')\n },\n regionFrom: function (lat, lon, distance) {\n if (!lat || !lon || !distance) {\n lat = 52.51639209180536\n lon = 13.377725555842174\n\n distance = 10000000\n console.log(\n 'regionFrom: missing parameters, using default values: lat: ' +\n lat +\n ', lon: ' +\n lon +\n ', distance: ' +\n distance\n )\n }\n distance = distance / 2\n const circumference = 40075\n const oneDegreeOfLatitudeInMeters = 111.32 * 1000\n const angularDistance = distance / circumference\n\n const latitudeDelta = distance / oneDegreeOfLatitudeInMeters\n const longitudeDelta = Math.abs(\n Math.atan2(\n Math.sin(angularDistance) * Math.cos(lat),\n Math.cos(angularDistance) - Math.sin(lat) * Math.sin(lat)\n )\n )\n\n return {\n latitude: lat,\n longitude: lon,\n latitudeDelta,\n longitudeDelta,\n }\n },\n locationAddressSchema: Yup.object()\n .shape({\n name: Yup.string().required(() => i18n.t('Required')),\n street: Yup.string(),\n district: Yup.string(),\n region: Yup.string(),\n subregion: Yup.string(),\n city: Yup.string().required(() => i18n.t('Required')),\n country: Yup.string(),\n isoCountryCode: Yup.string().required(() => i18n.t('Required')),\n postalCode: Yup.string(), // Google Map reverse geocode doesn't always return postcode issue\n timezone: Yup.string(),\n })\n .required(() => i18n.t('Required')),\n\n locationCoordinatesSchema: Yup.object()\n .shape({\n latitude: Yup.number().required(() => i18n.t('Required')),\n longitude: Yup.number().required(() => i18n.t('Required')),\n })\n .required(() => i18n.t('Required')),\n photoSchema: Yup.object().shape({\n description: Yup.string().max(50, () => i18n.t('Too long')),\n type: Yup.string().required(() => i18n.t('Required')),\n url: Yup.string().url(),\n }),\n carSchema: Yup.object().shape({\n plate: Yup.string()\n .min(2, () => i18n.t('Too short'))\n .max(50, () => i18n.t('Too long'))\n .required(() => i18n.t('Required')),\n description: Yup.string().max(50, () => i18n.t('Too long')),\n carTypeId: Yup.string().required(() => i18n.t('Required')),\n carColor: Yup.string().required(() => i18n.t('Required')),\n }),\n\n openingHoursSchema: Yup.object().shape(\n {\n selectedAreaNames: Yup.array().when('selectedServiceFacilities', {\n is: (selectedServiceFacilities) =>\n !selectedServiceFacilities || selectedServiceFacilities.length === 0,\n then: Yup.array()\n .of(Yup.string())\n .min(1, () => i18n.t('Select at least one area'))\n .required(() => i18n.t('Required')),\n }),\n selectedServiceFacilities: Yup.array().when('selectedAreaNames', {\n is: (selectedAreaNames) =>\n !selectedAreaNames || selectedAreaNames.length === 0,\n then: Yup.array()\n .of(Yup.object().shape({ id: Yup.string(), name: Yup.string() }))\n .min(1, () => i18n.t('Select at least one area'))\n .required(() => i18n.t('Required')),\n }),\n description: Yup.string().max(150, () => i18n.t('Too long')),\n },\n ['selectedAreaNames', 'selectedServiceFacilities']\n ),\n\n voucherSchema: Yup.object().shape({\n voucherCode: Yup.string()\n .min(6, () => i18n.t('Too short'))\n .max(25, () => i18n.t('Too long'))\n .required(() => i18n.t('Required')),\n }),\n\n carColorsArray: function () {\n return Object.keys(carColorDictionary).map((key) => carColorDictionary[key])\n },\n carColorCodeToText: function (colorCode) {\n return Object.keys(carColorDictionary).find(\n (key) => carColorDictionary[key] == colorCode\n )\n },\n\n carColorTextToCode: function (colorText) {\n if (colorText) {\n return carColorDictionary[colorText]\n } else {\n return null\n }\n },\n getData: async function (key) {\n try {\n const jsonValue = await AsyncStorage.getItem(key)\n return jsonValue != null ? JSON.parse(jsonValue) : null\n } catch (e) {\n // read error\n console.log('getData failed:' + e)\n }\n },\n\n storeData: async function (key, value) {\n try {\n const jsonValue = JSON.stringify(value)\n await AsyncStorage.setItem(key, jsonValue)\n } catch (e) {\n // saving error\n console.log('storeData failed:' + e)\n }\n },\n // regionFrom: function (lat, lon, distance) {\n // distance = distance / 2\n // const circumference = 40075\n // const oneDegreeOfLatitudeInMeters = 111.32 * 1000\n // const angularDistance = distance / circumference\n\n // const latitudeDelta = distance / oneDegreeOfLatitudeInMeters\n // const longitudeDelta = Math.abs(Math.atan2(\n // Math.sin(angularDistance) * Math.cos(lat),\n // Math.cos(angularDistance) - Math.sin(lat) * Math.sin(lat)))\n\n // return {\n // latitude: lat,\n // longitude: lon,\n // latitudeDelta,\n // longitudeDelta,\n // }\n // },\n\n enrichAddons: function (addons, offering) {\n let addonsEnriched = addons.map((addon) => {\n let addonDetailed = offering?.addonOptions?.addons?.items.find(\n (item) => item.id == addon.addonID\n )\n if (addonDetailed)\n return {\n ...addon,\n price: addonDetailed.price,\n taskType: { name: addonDetailed?.taskType?.name, tasks: addonDetailed?.taskType?.tasks }\n }\n else return addon\n })\n return addonsEnriched\n },\n capitalizeFirstLetter: function (string) {\n return string.charAt(0).toUpperCase() + string.slice(1)\n },\n calculateTargetTime: function (carTypeCategoryID, offering, addons) {\n // let packageTime = offering?.product?.taskTypes?.items.filter(item => item.isIncluded == true).reduce((prev, curr) => {\n // const durationTarget = curr?.taskType?.tasks?.items.find(item => item.carTypeCategoryID == carTypeCategoryID)?.durationTarget\n // return prev + (durationTarget ? durationTarget : 0)\n // }, 0)\n let packageTime = offering?.durationTarget || 0\n\n if (addons) {\n let addonsTime = addons.reduce((prev, curr) => {\n const addonTime =\n curr.quantity *\n offering?.addonOptions?.addons?.items\n .find((item) => item.id == curr.addonID)\n ?.taskType.tasks.items.find(\n (item) => item.carTypeCategoryID == carTypeCategoryID\n )?.durationTarget\n return prev + (addonTime ? addonTime : 0)\n }, 0)\n let totalTime = packageTime + addonsTime\n return { packageTime, addonsTime, totalTime }\n } else {\n return { packageTime, addonsTime: 0, totalTime: packageTime }\n }\n },\n calculatePrice: calculatePrice,\n isTipsiStripeCompatible: function () {\n return (\n (Platform.OS == 'android' || Platform.OS == 'ios') &&\n Constants.expoConfig.extra.variant == 'customer'\n )\n },\n isServiceOrderPaymentIssue: function (serviceOrder) {\n return (\n serviceOrder?.paymentIntentID &&\n (serviceOrder?.paymentIntentStatus == 'requires_payment_method' ||\n serviceOrder?.paymentIntentStatus == 'requires_action')\n )\n },\n getOpeningHoursZOrderRange: (startDate, endDate) => {\n let zOrderMin = interleave(\n convertDateToUnixTimeDays(startDate),\n convertDateStringToUnixTimeDays('2021-02-01')\n )\n let zOrderMax = interleave(\n convertDateStringToUnixTimeDays('2099-12-31'),\n convertDateToUnixTimeDays(endDate)\n )\n return [zOrderMin, zOrderMax]\n },\n getOpeningHoursZOrder: (startDate, endDate) => {\n return interleave(\n convertDateToUnixTimeDays(endDate),\n convertDateToUnixTimeDays(startDate)\n )\n },\n\n promiseTimeout: function (ms, promise) {\n // Create a promise that rejects in milliseconds\n let timeout = new Promise((resolve, reject) => {\n let id = setTimeout(() => {\n clearTimeout(id)\n reject('Timed out in ' + ms + 'ms.')\n }, ms)\n })\n\n // Returns a race between our timeout and the passed in promise\n return Promise.race([promise, timeout])\n },\n analyticsLogEvent: async function (...args) {\n if (Constants?.expoConfig?.extra?.env == 'prod') {\n try {\n await sendAnalyticsLogEventAsync(...args)\n } catch (err) {\n console.log('sendAnalyticsLogEventAsync failed:' + err)\n }\n }\n },\n analyticsSetCurrentScreen: async function (...args) {\n if (Constants?.expoConfig?.extra?.env == 'prod') {\n try {\n // DEPRECATED: await analytics().setCurrentScreen(...args)\n await sendAnalyticsLogEventAsync('screen_view', { screen_name: args[0] })\n } catch (err) {\n console.log('sendAnalyticsLogEventAsync setCurrentScreen failed:' + err)\n }\n }\n },\n analyticsSetUserId: async function (...args) {\n if (Constants?.expoConfig?.extra?.env == 'prod') {\n try {\n await sendAnalyticsSetUserIdAsync(...args)\n } catch (err) {\n console.log('sendAnalyticsSetUserIdAsync failed:' + err)\n }\n }\n },\n getFormattedTime: (hours, minutes) => {\n let time\n if (minutes) {\n time = `${hours}:${minutes}`\n } else {\n time = `${hours}:00`\n }\n let day = moment().tz('Europe/Budapest')\n let splitTime = time.split(/:/)\n day\n .hours(parseInt(splitTime[0]))\n .minutes(parseInt(splitTime[1]))\n .seconds(0)\n .milliseconds(0)\n return day.format('LT')\n },\n getFormattedInterval: (date1, date2) => {\n if (date1 == date2) {\n return moment(date1).format('L')\n } else {\n return `${moment(date1).format('L')}-${moment(date2).format('L')}`\n }\n },\n uploadToStorage: async (\n pathToImageFile,\n targetFileName,\n setUploadProgress\n ) => {\n setUploadProgress(0.05)\n const manipResult = await manipulateAsync(\n pathToImageFile,\n [{ resize: { height: 1024 } }],\n { compress: 1, format: SaveFormat.JPEG }\n )\n const response = await fetch(manipResult.uri)\n const blob = await response.blob()\n\n await Storage.put(targetFileName, blob, {\n contentType: 'image/jpeg',\n progressCallback(progress) {\n setUploadProgress(progress.loaded / progress.total)\n if (progress.loaded / progress.total == 1) setUploadProgress(null)\n },\n })\n },\n pickImages: async (setImages, allowsMultipleSelection = false) => {\n if (Platform.OS !== 'web') {\n const { status } = await ImagePicker.requestMediaLibraryPermissionsAsync()\n if (status !== 'granted') {\n alert(i18n.t('Please enable camera roll permissions to pick a photo'))\n return\n }\n }\n\n try {\n let result = await ImagePicker.launchImageLibraryAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: false,\n allowsMultipleSelection: allowsMultipleSelection\n //aspect: [4, 3],\n //quality: 0.5,\n })\n\n //console.log(result);\n console.log(\"result\", result)\n if (!result.canceled) {\n setImages(result.assets.map(asset=>asset.uri))\n }\n } catch (err) {\n console.error('ImagePicker.launchImageLibraryAsync error:' + err?.message)\n }\n },\n pickCameraImages: async (setImages, allowsMultipleSelection = false) => {\n if (Platform.OS !== 'web') {\n const { status } = await ImagePicker.requestCameraPermissionsAsync()\n console.log('status', status)\n if (status !== 'granted') {\n alert(i18n.t('Please enable camera access to make a photo'))\n return\n }\n }\n\n try {\n let result = await ImagePicker.launchCameraAsync({\n mediaTypes: ImagePicker.MediaTypeOptions.Images,\n allowsEditing: false,\n allowsMultipleSelection: allowsMultipleSelection\n })\n\n if (!result.canceled) {\n setImages(result.assets.map(asset=>asset.uri))\n }\n } catch (err) {\n console.error('ImagePicker.launchCameraAsync error:' + err?.message)\n }\n },\n sanitizeString: (str) => {\n str = str.replace(/[^a-z0-9áéíóúñü \\.,_-]/gim, '')\n return str.trim()\n },\n getImageSize: (uri) => {\n return new Promise((resolve, reject) => {\n Image.getSize(\n uri,\n (width, height) => {\n resolve({ width, height })\n },\n reject\n )\n })\n },\n commonStyles: StyleSheet.create({\n widthLimited: {\n flex: 1,\n flexDirection: 'column',\n maxWidth: maxColumnWidth,\n // minHeight:\"100%\",\n alignSelf: 'center',\n width: '100%',\n },\n widthLimitedModal: {\n maxWidth: 800,\n alignSelf: 'center',\n width: '100%',\n },\n widthLimitedSnackbar: {\n maxWidth: 800,\n alignSelf: 'center',\n },\n widthLimitedDialog: {\n maxWidth: 800,\n ...(Platform.OS === 'web' ? { alignSelf: 'center' } : {}), // TODO: no wrapperStyle exposed for Dialog\n },\n }),\n getPriceObject: (\n offerings,\n addons,\n discountPercentage = 0,\n vouchers = []\n ) => {\n if (!Array.isArray(offerings)) return null\n\n const priceArray = offerings?.map((offering, index) => {\n const addonsArrayWithoutOneOffs = addons?.filter(\n (addon) =>\n !offering?.addonOptions?.addons?.items.find(\n (item) => item.id == addon?.addonID\n )?.batchOrderOneOff\n )\n return calculatePrice(\n offering,\n index == 0 ? addons : addonsArrayWithoutOneOffs,\n discountPercentage,\n [vouchers?.[index]] || []\n )\n })\n\n let priceObject = priceArray.reduce((acc, curr) => {\n return {\n numberOfOrdersBatched: priceArray.length,\n packagePrice: (curr?.packagePrice || 0) + (acc?.packagePrice || 0),\n addonsPrice: (curr?.addonsPrice || 0) + (acc?.addonsPrice || 0),\n totalPriceWithoutDiscount:\n (curr?.totalPriceWithoutDiscount || 0) +\n (acc?.totalPriceWithoutDiscount || 0),\n totalPrice: (curr?.totalPrice || 0) + (acc?.totalPrice || 0),\n totalDiscountPercentage: null, //(curr?.totalDiscountPercentage || 0) + (acc?.totalDiscountPercentage || 0),\n voucherTotalValue:\n (Math.min(\n curr?.voucherTotalValue,\n (curr?.totalPriceWithoutDiscount * (100 - discountPercentage)) / 100\n ) || 0) + (acc?.voucherTotalValue || 0),\n //totalDiscountPercentageCombined: null ///(curr?.totalDiscountPercentageCombined || 0) + (acc?.totalDiscountPercentageCombined || 0),\n }\n }, {})\n\n const voucherTotalDiscountValue = vouchers.reduce((prev, curr, index) => {\n if (curr?.type && curr?.value) {\n return (\n prev +\n (curr.type == 'VALUE' || 'PERCENTAGE_AND_VALUE'\n ? Math.min(\n curr.value,\n (priceArray?.[index]?.totalPriceWithoutDiscount *\n (100 - discountPercentage)) /\n 100\n )\n : 0)\n )\n } else {\n return prev\n }\n }, 0)\n\n priceObject.totalDiscountPercentageCombined =\n 100 -\n (priceObject.totalPrice / priceObject.totalPriceWithoutDiscount) * 100\n priceObject.totalDiscountPercentage =\n 100 -\n ((priceObject.totalPrice + voucherTotalDiscountValue) /\n priceObject.totalPriceWithoutDiscount) *\n 100\n return priceObject\n },\n getPriceAndCurrencyString: (listOfferingsAdvancedData, values, addons) => {\n let addonsArray = Object.entries(addons).map((item) => {\n return { addonID: item[0], quantity: item[1] }\n })\n let offeringSelected\n const priceArray = values?.carManualSelection?.reduce(\n (accumulator, car, index) => {\n offeringSelected =\n listOfferingsAdvancedData?.items?.find(\n (item) =>\n item.carTypeCategoryID == car?.carType?.carTypeCategoryID &&\n item.product?.productPackage?.name ==\n values.productPackageSelection &&\n item.product?.productCategory?.name ==\n values.productCategorySelection\n ) || null\n const addonsArrayWithoutOneOffs = addonsArray?.filter(\n (addon) =>\n offeringSelected?.addonOptions?.addons?.items.find(\n (item) => item.id == addon?.addonID\n )?.batchOrderOneOff == false\n )\n return [\n ...accumulator,\n calculatePrice(\n offeringSelected,\n index == 0 ? addonsArray : addonsArrayWithoutOneOffs\n ),\n ]\n },\n []\n )\n return `${formatCurrency(\n priceArray.reduce((acc, curr) => {\n return acc + curr?.totalPrice\n }, 0),\n offeringSelected?.priceCurrency\n )}`\n },\n maxColumnWidth: maxColumnWidth,\n removeTypename: removeTypename,\n isVoucherCompatible: (selectedProducts, voucher) => {\n if (!selectedProducts || !voucher.validProducts || voucher.validProducts.items.length === 0) {\n return true;\n }\n return selectedProducts.every(selectedProduct =>\n voucher.validProducts.items.some(item =>\n item.product.productCategory.name === selectedProduct.productCategory.name &&\n item.product.productPackage.name === selectedProduct.productPackage.name\n )\n );\n },\n getSelectServiceOrderParams: (serviceOrder, isUpdateMode = false) => {\n const mapAddons = (serviceOrder) => {\n if (\n serviceOrder?.offering?.addonOptions?.addons?.items &&\n serviceOrder?.addons\n ) {\n const addonsAllZero =\n serviceOrder?.offering?.addonOptions?.addons?.items.reduce(\n (prev, curr) => {\n return { ...prev, [curr.id]: 0 }\n },\n {}\n )\n const addonsValidValues = serviceOrder?.addons.reduce((prev, curr) => {\n return { ...prev, [curr.addonID]: curr.quantity }\n }, {})\n return { ...addonsAllZero, ...addonsValidValues }\n }\n }\n\n const params = {\n username: serviceOrder?.owner,\n isUpdateMode: isUpdateMode,\n serviceFacilityID: serviceOrder?.serviceFacilityID,\n location: serviceOrder?.carLocation,\n car: serviceOrder.car,\n offeringId: serviceOrder?.offering?.id,\n productCategorySelection:\n serviceOrder?.offering?.product?.productCategory,\n productPackageSelection: serviceOrder?.offering?.product?.productPackage,\n isExtraDirty: serviceOrder?.isExtraDirty,\n isCarIndoors: serviceOrder?.isCarIndoors,\n addons: mapAddons(serviceOrder),\n carAvailableFrom: serviceOrder?.carAvailableFrom,\n carAvailableUntil: serviceOrder?.carAvailableUntil,\n }\n const paramsWithoutTypenames = removeTypename(params)\n //console.log(\"paramsWithoutTypenames\",paramsWithoutTypenames)\n return paramsWithoutTypenames\n },\n listServiceOrders: listServiceOrders,\n listServiceOrdersByOwner: listServiceOrdersByOwner,\n listServiceOrdersByArea: listServiceOrdersByArea,\n listServiceOrdersByAreaCore: listServiceOrdersByAreaCore,\n listServiceOrdersByAreas: listServiceOrdersByAreas,\n listServiceOrdersByFacilitiesCore: listServiceOrdersByFacilitiesCore,\n listCars: listCars,\n listDiscountsByCustomer: listDiscountsByCustomer,\n listPaymentMethods: listPaymentMethods,\n listPaymentMethodEligibilityByCustomer:\n listPaymentMethodEligibilityByCustomer,\n listCarsByOwner: listCarsByOwner,\n createServiceOrder: createServiceOrder,\n createServiceOrderAdvanced: createServiceOrderAdvanced,\n onCreateServiceOrder: onCreateServiceOrder,\n onCreateServiceOrderByAreaName: onCreateServiceOrderByAreaName,\n isCustomerApp: isCustomerApp,\n isProviderApp: isProviderApp,\n isEmpty: isEmpty,\n setOpacity: setOpacity,\n googleMapsStyleDark: googleMapsStyleDark,\n googleMapsStyleBright: googleMapsStyleBright,\n calculateDistanceInKm: calculateDistanceInKm,\n flattenObject: flattenObject,\n countries: countries,\n listServiceOrdersByAreasAndFacilities:listServiceOrdersByAreasAndFacilities,\n PAYMENT_ICON_SIZE: PAYMENT_ICON_SIZE\n}\n","import { useState, useEffect } from 'react'\nimport { View, StyleSheet, Platform } from 'react-native'\nimport { Auth } from 'aws-amplify'\nimport {\n ProgressBar,\n Button,\n TextInput,\n HelperText,\n Banner,\n Text,\n withTheme,\n Divider,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport * as Yup from 'yup'\nimport { Ionicons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport { ScrollView } from 'react-native-gesture-handler'\nimport Utils from '../Utils'\nimport { useUser, AUTHENTICATED } from \"../contexts/UserContext\";\nconst SignInSchema = Yup.object().shape({\n username: Yup.string()\n .email(() => i18n.t('Invalid email address'))\n .required(() => i18n.t('Required')),\n password: Yup.string().required(() => i18n.t('Required')),\n})\n\nexport default withTheme(function SignIn({ theme, navigation, ...props }) {\n const [isLoading, setIsLoading] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorMessageTimerId, setErrorMessageTimerId] = useState(null)\n\n const {\n state: { authStatus, originRouteNameBeforeAuth },\n dispatch: userDispatch\n } = useUser();\n\n useEffect(() => {\n if (authStatus === AUTHENTICATED) {\n const route = originRouteNameBeforeAuth || \"ServiceOrders\"\n userDispatch({ type: \"clearOriginRouteNameBeforeAuth\" })\n navigation.navigate(route)\n }\n }, [authStatus])\n\n async function signIn(username, password) {\n try {\n setIsLoading(true)\n await Auth.signIn(username, password)\n } catch (error) {\n console.log(' Error signing in...', error)\n setErrorMessage(i18n.t('Login unsuccessful'))\n setIsLoading(false)\n if (errorMessageTimerId) {\n clearTimeout(errorMessageTimerId)\n }\n setErrorMessageTimerId(setTimeout(() => setErrorMessage(''), 5000))\n }\n }\n\n const isAnyLoginLoading = isLoading || props?.oauthLoading != ''\n return (\n <>\n {isAnyLoginLoading && (\n \n \n \n )}\n\n \n setErrorMessage(''),\n },\n ]}\n icon={({ size }) => (\n \n )}\n >\n {errorMessage}\n \n {\n signIn(values.username, values.password)\n }}\n validationSchema={SignInSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n values,\n errors,\n touched,\n }) => (\n \n \n \n {errors.username}\n \n\n \n \n {errors.password}\n \n\n \n {i18n.t('Login')}\n \n\n \n \n navigation.navigate('ForgotPassword', {\n username: values.username,\n })\n }\n >\n {i18n.t('Forgot Password')}\n \n \n {i18n.t(\"Don't have an account?\")}\n \n navigation.navigate('SignUp')}\n >\n {i18n.t('Sign Up')}\n \n \n\n {Utils.isCustomerApp() && (\n <>\n \n \n \n {i18n.t('or')}\n \n \n \n\n {\n Auth.federatedSignIn({ provider: 'Facebook' })\n }}\n >\n {i18n.t('Continue with Facebook')}\n \n\n {\n Auth.federatedSignIn({ provider: 'Google' })\n }}\n >\n {i18n.t('Continue with Google')}\n \n\n {\n Auth.federatedSignIn({ provider: 'SignInWithApple' })\n }}\n >\n {i18n.t('Continue with Apple')}\n \n\n \n {\n if (Platform.OS == 'web') {\n window.open('https://cleenup.com/legal/', '_blank')\n } else {\n navigation.navigate('Privacy Policy')\n }\n }}\n >\n {i18n.t('Privacy Policy')}\n \n\n {\n if (Platform.OS == 'web') {\n window.open('https://cleenup.com/legal/', '_blank')\n } else {\n navigation.navigate('Terms and Conditions')\n }\n }}\n >\n {i18n.t('Terms and Conditions')}\n \n \n \n )}\n \n )}\n \n \n \n )\n})\n\nconst styles = StyleSheet.create({\n safeAreaContainer: {\n flex: 1,\n },\n container: {\n flex: 1,\n alignContent: 'center',\n marginTop: 0,\n },\n title: {\n fontSize: 20,\n fontWeight: '500',\n marginVertical: 15,\n textAlign: 'center',\n },\n})\n","import React, { useState, useRef } from 'react'\nimport { View, TouchableOpacity, StyleSheet } from 'react-native'\nimport { Auth } from 'aws-amplify'\nimport { SafeAreaView } from 'react-native-safe-area-context'\nimport {\n Button,\n TextInput,\n HelperText,\n Banner,\n Text,\n withTheme,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport * as Yup from 'yup'\nimport 'yup-phone'\nimport { Ionicons } from '@expo/vector-icons'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport i18n from 'i18n-js'\nimport Utils from '../Utils'\nconst PNF = require('google-libphonenumber').PhoneNumberFormat\nconst phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance()\n\nexport default withTheme(function SignUp({ theme, navigation }) {\n const SignUpSchema = Yup.object().shape({\n username: Yup.string()\n .email(() => i18n.t('Invalid email address'))\n .required(() => i18n.t('Required')),\n password: Yup.string()\n .required(() => i18n.t('Required'))\n .min(8, () => i18n.t('Minimum length is 8 characters')),\n firstName: Yup.string().required(() => i18n.t('Required')),\n phoneNumber: Yup.string()\n .required(() => i18n.t('Required'))\n .phone('HU', false, i18n.t('Invalid phone number')), // TODO: fix localisation\n })\n const [isLoading, setIsLoading] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorMessageTimerId, setErrorMessageTimerId] = useState(null)\n\n async function signUp(username, password, phoneNumber, firstName) {\n try {\n setIsLoading(true)\n await Auth.signUp({\n username,\n password,\n attributes: {\n email: username,\n phone_number: phoneNumber,\n 'custom:first_name': firstName,\n },\n })\n setIsLoading(false)\n navigation.navigate('ConfirmSignUp', { username, password })\n } catch (error) {\n console.log(' Error signing up..', error)\n switch (error.code) {\n case 'UsernameExistsException':\n setErrorMessage(\n i18n.t('An account with the given email already exists')\n )\n break\n default:\n setErrorMessage(i18n.t('Error signing up') + error.message)\n }\n\n setIsLoading(false)\n if (errorMessageTimerId) {\n clearTimeout(errorMessageTimerId)\n }\n setErrorMessageTimerId(setTimeout(() => setErrorMessage(''), 5000))\n }\n }\n\n return (\n \n setErrorMessage(''),\n },\n ]}\n icon={({ size, color }) => (\n \n )}\n >\n {errorMessage}\n \n\n {\n const number = phoneUtil.parseAndKeepRawInput(\n values.phoneNumber,\n 'HU'\n )\n const numberE164Format = phoneUtil.format(number, PNF.E164)\n console.log('numberE164Format', numberE164Format)\n signUp(\n values.username,\n values.password,\n numberE164Format,\n values.firstName\n )\n }}\n validationSchema={SignUpSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n values,\n errors,\n touched,\n }) => (\n \n \n {/* {i18n.t(\"Create a new account\")} */}\n \n \n {errors.username}\n \n\n \n \n {errors.firstName}\n \n\n \n \n {errors.password}\n \n\n \n \n {errors.phoneNumber}\n \n\n \n {i18n.t('Sign Up')}\n \n\n \n {i18n.t('Already have an account?')}\n navigation.navigate('SignIn')}\n >\n {i18n.t('Sign In')}\n \n navigation.navigate('ConfirmSignUp')}\n >\n {i18n.t('Confirm a Code')}\n \n \n \n \n )}\n \n \n )\n})\n\nconst styles = StyleSheet.create({\n safeAreaContainer: {\n flex: 1,\n },\n container: {\n flex: 1,\n marginTop: 0,\n },\n title: {\n fontSize: 20,\n fontWeight: '500',\n marginVertical: 15,\n textAlign: 'center',\n },\n})\n","import { useState } from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Auth } from 'aws-amplify'\nimport {\n Button,\n TextInput,\n HelperText,\n Banner,\n withTheme,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport * as Yup from 'yup'\nimport { Ionicons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport Constants from 'expo-constants'\nimport Utils from '../Utils'\n\nconst ResendCodeSchema = Yup.object().shape({\n username: Yup.string()\n .email(() => i18n.t('Invalid email address'))\n .required(() => i18n.t('Required')),\n})\n\nexport default withTheme(function ResendCode({ theme, route, navigation }) {\n const [isLoading, setIsLoading] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorMessageTimerId, setErrorMessageTimerId] = useState(null)\n\n const username = route.params?.username\n\n async function resendCode(username) {\n try {\n setIsLoading(true)\n await Auth.resendSignUp(username, {\n variant: Constants.expoConfig.extra.variant,\n })\n navigation.navigate('ConfirmSignUp')\n } catch (error) {\n console.log(' Resending code failed', error.code)\n setErrorMessage(i18n.t('Resending code failed'))\n setIsLoading(false)\n if (errorMessageTimerId) {\n clearTimeout(errorMessageTimerId)\n }\n setErrorMessageTimerId(setTimeout(() => setErrorMessage(''), 5000))\n }\n }\n\n return (\n \n setErrorMessage(''),\n },\n ]}\n icon={({ size, color }) => (\n \n )}\n >\n {errorMessage}\n \n\n {\n resendCode(values.username)\n }}\n validationSchema={ResendCodeSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n values,\n errors,\n touched,\n }) => (\n \n \n \n {errors.username}\n \n\n \n {i18n.t('Resend Code')}\n \n \n )}\n \n \n )\n})\n\nconst styles = StyleSheet.create({\n safeAreaContainer: {\n flex: 1,\n },\n container: {\n flex: 1,\n },\n title: {\n fontSize: 20,\n fontWeight: '500',\n marginVertical: 15,\n textAlign: 'center',\n },\n})\n","import { useState } from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Auth } from 'aws-amplify'\nimport {\n Button,\n TextInput,\n HelperText,\n Banner,\n withTheme,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport * as Yup from 'yup'\nimport { Ionicons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport Constants from 'expo-constants'\nimport Utils from '../Utils'\nconst ForgotPasswordSchema = Yup.object().shape({\n username: Yup.string()\n .email(() => i18n.t('Invalid email address'))\n .required(() => i18n.t('Required')),\n})\n\nexport default withTheme(function ForgotPassword({ theme, route, navigation }) {\n const [isLoading, setIsLoading] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorMessageTimerId, setErrorMessageTimerId] = useState(null)\n\n const username = route.params?.username\n\n async function forgotPassword(username) {\n try {\n setIsLoading(true)\n await Auth.forgotPassword(username, {\n variant: Constants.expoConfig.extra.variant,\n })\n navigation.navigate('ForgotPasswordSubmit', { username })\n } catch (error) {\n console.log('Sending password reset code failed', error.code)\n setErrorMessage(i18n.t('Sending password reset code failed'))\n setIsLoading(false)\n if (errorMessageTimerId) {\n clearTimeout(errorMessageTimerId)\n }\n setErrorMessageTimerId(setTimeout(() => setErrorMessage(''), 5000))\n }\n }\n\n return (\n \n setErrorMessage(''),\n },\n ]}\n icon={({ size, color }) => (\n \n )}\n >\n {errorMessage}\n \n\n {\n forgotPassword(values.username)\n }}\n validationSchema={ForgotPasswordSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n values,\n errors,\n touched,\n }) => (\n \n \n \n {errors.username}\n \n\n \n {i18n.t('Send Code')}\n \n \n )}\n \n \n )\n})\n\nconst styles = StyleSheet.create({\n safeAreaContainer: {\n flex: 1,\n },\n container: {\n flex: 1,\n },\n title: {\n fontSize: 20,\n fontWeight: '500',\n textAlign: 'center',\n marginVertical: 15,\n },\n})\n","import { useState } from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Auth } from 'aws-amplify'\nimport {\n Button,\n Text,\n TextInput,\n HelperText,\n Banner,\n withTheme,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport * as Yup from 'yup'\nimport { Ionicons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport Constants from 'expo-constants'\nimport Utils from '../Utils'\n\nconst ForgotPasswordSchema = Yup.object().shape({\n username: Yup.string().email(() => i18n.t('Invalid email address')),\n password: Yup.string()\n .required(() => i18n.t('Required'))\n .min(8, () => i18n.t('Minimum length is 8 characters')),\n authCode: Yup.number().required(() => i18n.t('Required')),\n})\n\nexport default withTheme(function ConfirmSignUp({ theme, route, navigation }) {\n const [isLoading, setIsLoading] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorMessageTimerId, setErrorMessageTimerId] = useState(null)\n\n const username = route.params?.username\n async function forgotPasswordSubmit(username, authCode, password) {\n try {\n setIsLoading(true)\n await Auth.forgotPasswordSubmit(username, authCode, password, {\n variant: Constants.expoConfig.extra.variant,\n })\n navigation.navigate('SignIn')\n } catch (error) {\n console.log('Password change unsuccessful', error.code)\n setErrorMessage(i18n.t('Password change unsuccessful'))\n setIsLoading(false)\n if (errorMessageTimerId) {\n clearTimeout(errorMessageTimerId)\n }\n setErrorMessageTimerId(setTimeout(() => setErrorMessage(''), 5000))\n }\n }\n\n return (\n \n setErrorMessage(''),\n },\n ]}\n icon={({ size, color }) => (\n \n )}\n >\n {errorMessage}\n \n\n {\n forgotPasswordSubmit(\n values.username,\n values.authCode,\n values.password\n )\n }}\n validationSchema={ForgotPasswordSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n values,\n errors,\n touched,\n }) => (\n \n \n \n {errors.username}\n \n\n \n \n {errors.password}\n \n\n \n \n {errors.authCode}\n \n \n {i18n.t(\"We've sent you the verification code in email\")}\n \n \n {i18n.t('Change Password')}\n \n \n )}\n \n \n )\n})\n\nconst styles = StyleSheet.create({\n safeAreaContainer: {\n flex: 1,\n },\n container: {\n flex: 1,\n },\n title: {\n fontSize: 20,\n fontWeight: '500',\n marginVertical: 15,\n textAlign: 'center',\n },\n})\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const listServiceOrdersByAreasAndFacilities = /* GraphQL */ `\n query ListServiceOrdersByAreasAndFacilities($stateFilterSelection: [String]) {\n listServiceOrdersByAreasAndFacilities(\n stateFilterSelection: $stateFilterSelection\n ) {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n nextPaginationToken\n __typename\n }\n }\n`;\nexport const listCustomers = /* GraphQL */ `\n query ListCustomers(\n $customerSearchCriteria: CustomerSearchCriteriaInput\n $paginationToken: ID\n $limit: Int\n ) {\n listCustomers(\n customerSearchCriteria: $customerSearchCriteria\n paginationToken: $paginationToken\n limit: $limit\n ) {\n items {\n id\n name\n email\n phoneNumber\n offeringTags\n createdAt\n updatedAt\n __typename\n }\n nextPaginationToken\n __typename\n }\n }\n`;\nexport const getUserInfo = /* GraphQL */ `\n query GetUserInfo($serviceOrderId: ID!) {\n getUserInfo(serviceOrderId: $serviceOrderId) {\n result\n resultReason\n firstName\n lastName\n phoneNumber\n email\n locales\n __typename\n }\n }\n`;\nexport const listPaymentMethods = /* GraphQL */ `\n query ListPaymentMethods(\n $paymentProcessorAccount: PaymentProcessorAccount\n $providerSelectedCustomerUsername: ID\n $serviceOrder: ListPaymentMethodsServiceOrderInput\n ) {\n listPaymentMethods(\n paymentProcessorAccount: $paymentProcessorAccount\n providerSelectedCustomerUsername: $providerSelectedCustomerUsername\n serviceOrder: $serviceOrder\n ) {\n items {\n id\n billing_details {\n email\n name\n phone\n __typename\n }\n card {\n brand\n country\n exp_month\n exp_year\n fingerprint\n funding\n last4\n __typename\n }\n created\n customer\n livemode\n type\n metadata {\n tax_id\n __typename\n }\n restriction\n __typename\n }\n __typename\n }\n }\n`;\nexport const getPaymentMethod = /* GraphQL */ `\n query GetPaymentMethod(\n $id: ID!\n $paymentProcessorAccount: PaymentProcessorAccount\n ) {\n getPaymentMethod(\n id: $id\n paymentProcessorAccount: $paymentProcessorAccount\n ) {\n id\n billing_details {\n address {\n city\n country\n line1\n line2\n postal_code\n state\n __typename\n }\n email\n name\n phone\n __typename\n }\n card {\n brand\n country\n exp_month\n exp_year\n fingerprint\n funding\n last4\n __typename\n }\n created\n customer\n livemode\n type\n metadata {\n tax_id\n __typename\n }\n restriction\n __typename\n }\n }\n`;\nexport const listOfferingsAdvanced = /* GraphQL */ `\n query ListOfferingsAdvanced($listOfferingParams: ListOfferingsParamsInput!) {\n listOfferingsAdvanced(listOfferingParams: $listOfferingParams) {\n items {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n __typename\n }\n }\n`;\nexport const getUserTagMapping = /* GraphQL */ `\n query GetUserTagMapping($id: ID!) {\n getUserTagMapping(id: $id) {\n id\n domain\n validFrom\n validUntil\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listUserTagMappings = /* GraphQL */ `\n query ListUserTagMappings(\n $filter: ModelUserTagMappingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUserTagMappings(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n domain\n validFrom\n validUntil\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listUserTagMappingsByDomainValidUntil = /* GraphQL */ `\n query ListUserTagMappingsByDomainValidUntil(\n $domain: String!\n $validUntil: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelUserTagMappingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listUserTagMappingsByDomainValidUntil(\n domain: $domain\n validUntil: $validUntil\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n domain\n validFrom\n validUntil\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getProductTaskType = /* GraphQL */ `\n query GetProductTaskType($id: ID!) {\n getProductTaskType(id: $id) {\n id\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n taskTypes {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n taskTypeID\n taskType {\n id\n name\n note\n tasks {\n nextToken\n __typename\n }\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n isIncluded\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listProductTaskTypes = /* GraphQL */ `\n query ListProductTaskTypes(\n $filter: ModelProductTaskTypeFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listProductTaskTypes(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n taskTypeID\n taskType {\n id\n name\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n isIncluded\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getOffering = /* GraphQL */ `\n query GetOffering($id: ID!) {\n getOffering(id: $id) {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n offerings {\n nextToken\n __typename\n }\n tasks {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n taskTypes {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n addons {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n items {\n id\n offeringID\n serviceFacilityID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n tags\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n items {\n id\n offeringID\n franchiseContractID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listOfferings = /* GraphQL */ `\n query ListOfferings(\n $filter: ModelOfferingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOfferings(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listOfferingsByCarTypeCategoryOfferedUntil = /* GraphQL */ `\n query ListOfferingsByCarTypeCategoryOfferedUntil(\n $carTypeCategoryID: ID!\n $offeredUntil: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOfferingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOfferingsByCarTypeCategoryOfferedUntil(\n carTypeCategoryID: $carTypeCategoryID\n offeredUntil: $offeredUntil\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getAddonOptions = /* GraphQL */ `\n query GetAddonOptions($id: ID!) {\n getAddonOptions(id: $id) {\n id\n addons {\n items {\n id\n addonOptionsID\n taskTypeID\n price\n priceCurrency\n priceType\n minUnit\n maxUnit\n groupID\n exclusiveGroupID\n visibility\n batchOrderOneOff\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listAddonOptions = /* GraphQL */ `\n query ListAddonOptions(\n $filter: ModelAddonOptionsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listAddonOptions(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n addons {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getAddon = /* GraphQL */ `\n query GetAddon($id: ID!) {\n getAddon(id: $id) {\n id\n addonOptionsID\n taskTypeID\n taskType {\n id\n name\n note\n tasks {\n nextToken\n __typename\n }\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n priceType\n minUnit\n maxUnit\n groupID\n exclusiveGroupID\n visibility\n batchOrderOneOff\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listAddons = /* GraphQL */ `\n query ListAddons(\n $filter: ModelAddonFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listAddons(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n addonOptionsID\n taskTypeID\n taskType {\n id\n name\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n priceType\n minUnit\n maxUnit\n groupID\n exclusiveGroupID\n visibility\n batchOrderOneOff\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getMandatoryAddon = /* GraphQL */ `\n query GetMandatoryAddon($id: ID!) {\n getMandatoryAddon(id: $id) {\n id\n isoCountryCodePostalCode\n taskTypeID\n taskType {\n id\n name\n note\n tasks {\n nextToken\n __typename\n }\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n price\n priceCurrency\n exemptTags\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listMandatoryAddons = /* GraphQL */ `\n query ListMandatoryAddons(\n $filter: ModelMandatoryAddonFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listMandatoryAddons(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n isoCountryCodePostalCode\n taskTypeID\n taskType {\n id\n name\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n price\n priceCurrency\n exemptTags\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listMandatoryAddonsByCountryPostalCodeValidUntil = /* GraphQL */ `\n query ListMandatoryAddonsByCountryPostalCodeValidUntil(\n $isoCountryCodePostalCode: String!\n $validUntil: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelMandatoryAddonFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listMandatoryAddonsByCountryPostalCodeValidUntil(\n isoCountryCodePostalCode: $isoCountryCodePostalCode\n validUntil: $validUntil\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n isoCountryCodePostalCode\n taskTypeID\n taskType {\n id\n name\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n price\n priceCurrency\n exemptTags\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getTaskType = /* GraphQL */ `\n query GetTaskType($id: ID!) {\n getTaskType(id: $id) {\n id\n name\n note\n tasks {\n items {\n id\n carTypeCategoryID\n taskTypeID\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n products {\n items {\n id\n productID\n taskTypeID\n isIncluded\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listTaskTypes = /* GraphQL */ `\n query ListTaskTypes(\n $filter: ModelTaskTypeFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTaskTypes(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n note\n tasks {\n nextToken\n __typename\n }\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getTask = /* GraphQL */ `\n query GetTask($id: ID!) {\n getTask(id: $id) {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n offerings {\n nextToken\n __typename\n }\n tasks {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n taskTypeID\n taskType {\n id\n name\n note\n tasks {\n nextToken\n __typename\n }\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listTasks = /* GraphQL */ `\n query ListTasks(\n $filter: ModelTaskFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listTasks(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n taskTypeID\n taskType {\n id\n name\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getProductCategory = /* GraphQL */ `\n query GetProductCategory($id: ID!) {\n getProductCategory(id: $id) {\n id\n name\n description\n products {\n items {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listProductCategories = /* GraphQL */ `\n query ListProductCategories(\n $filter: ModelProductCategoryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listProductCategories(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n name\n description\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getProductPackage = /* GraphQL */ `\n query GetProductPackage($id: ID!) {\n getProductPackage(id: $id) {\n id\n name\n description\n products {\n items {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listProductPackages = /* GraphQL */ `\n query ListProductPackages(\n $filter: ModelProductPackageFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listProductPackages(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n name\n description\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getProduct = /* GraphQL */ `\n query GetProduct($id: ID!) {\n getProduct(id: $id) {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n productPackageID\n productPackage {\n id\n name\n description\n products {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n __typename\n }\n offerings {\n items {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n taskTypes {\n items {\n id\n productID\n taskTypeID\n isIncluded\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n vouchers {\n items {\n id\n productID\n voucherID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listProducts = /* GraphQL */ `\n query ListProducts(\n $filter: ModelProductFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listProducts(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n taskTypes {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getServiceOrder = /* GraphQL */ `\n query GetServiceOrder($id: ID!) {\n getServiceOrder(id: $id) {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listServiceOrders = /* GraphQL */ `\n query ListServiceOrders(\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceOrders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listServiceOrdersByOwner = /* GraphQL */ `\n query ListServiceOrdersByOwner(\n $owner: ID!\n $carAvailableFrom: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceOrdersByOwner(\n owner: $owner\n carAvailableFrom: $carAvailableFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listServiceOrdersByOwnerState = /* GraphQL */ `\n query ListServiceOrdersByOwnerState(\n $owner: ID!\n $state: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceOrdersByOwnerState(\n owner: $owner\n state: $state\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listServiceOrdersByArea = /* GraphQL */ `\n query ListServiceOrdersByArea(\n $areaName: String!\n $carAvailableFrom: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceOrdersByArea(\n areaName: $areaName\n carAvailableFrom: $carAvailableFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listServiceOrdersByFacility = /* GraphQL */ `\n query ListServiceOrdersByFacility(\n $serviceFacilityID: ID!\n $carAvailableFrom: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceOrdersByFacility(\n serviceFacilityID: $serviceFacilityID\n carAvailableFrom: $carAvailableFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getServiceFacility = /* GraphQL */ `\n query GetServiceFacility($id: ID!) {\n getServiceFacility(id: $id) {\n id\n geohash\n ownerships {\n items {\n id\n companyID\n serviceFacilityID\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n location {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n name\n tags\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n offerings {\n items {\n id\n offeringID\n serviceFacilityID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listServiceFacilities = /* GraphQL */ `\n query ListServiceFacilities(\n $filter: ModelServiceFacilityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceFacilities(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listServiceFacilitiesByGeohash = /* GraphQL */ `\n query ListServiceFacilitiesByGeohash(\n $geohash: String!\n $sortDirection: ModelSortDirection\n $filter: ModelServiceFacilityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceFacilitiesByGeohash(\n geohash: $geohash\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getServiceFacilityOwnership = /* GraphQL */ `\n query GetServiceFacilityOwnership($id: ID!) {\n getServiceFacilityOwnership(id: $id) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listServiceFacilityOwnerships = /* GraphQL */ `\n query ListServiceFacilityOwnerships(\n $filter: ModelServiceFacilityOwnershipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceFacilityOwnerships(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const ownershipByServiceFacility = /* GraphQL */ `\n query OwnershipByServiceFacility(\n $serviceFacilityID: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelServiceFacilityOwnershipFilterInput\n $limit: Int\n $nextToken: String\n ) {\n ownershipByServiceFacility(\n serviceFacilityID: $serviceFacilityID\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getVoucher = /* GraphQL */ `\n query GetVoucher($id: ID!) {\n getVoucher(id: $id) {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n items {\n id\n productID\n voucherID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listVouchers = /* GraphQL */ `\n query ListVouchers(\n $filter: ModelVoucherFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listVouchers(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listVouchersByCustomer = /* GraphQL */ `\n query ListVouchersByCustomer(\n $owner: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelVoucherFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listVouchersByCustomer(\n owner: $owner\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listVouchersByCustomerValidUntil = /* GraphQL */ `\n query ListVouchersByCustomerValidUntil(\n $owner: ID!\n $validUntil: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelVoucherFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listVouchersByCustomerValidUntil(\n owner: $owner\n validUntil: $validUntil\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listVouchersByCustomerParentVoucherID = /* GraphQL */ `\n query ListVouchersByCustomerParentVoucherID(\n $owner: ID!\n $parentVoucherID: ModelIDKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelVoucherFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listVouchersByCustomerParentVoucherID(\n owner: $owner\n parentVoucherID: $parentVoucherID\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getComment = /* GraphQL */ `\n query GetComment($id: ID!) {\n getComment(id: $id) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listComments = /* GraphQL */ `\n query ListComments(\n $filter: ModelCommentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listComments(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getEvent = /* GraphQL */ `\n query GetEvent($id: ID!) {\n getEvent(id: $id) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listEvents = /* GraphQL */ `\n query ListEvents(\n $filter: ModelEventFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listEvents(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getRating = /* GraphQL */ `\n query GetRating($id: ID!) {\n getRating(id: $id) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listRatings = /* GraphQL */ `\n query ListRatings(\n $filter: ModelRatingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listRatings(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getCustomerDiscount = /* GraphQL */ `\n query GetCustomerDiscount($id: ID!) {\n getCustomerDiscount(id: $id) {\n id\n owner\n startDate\n finishDate\n discountPercentage\n isActive\n serviceFacilityID\n areaName\n tags\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listCustomerDiscounts = /* GraphQL */ `\n query ListCustomerDiscounts(\n $filter: ModelCustomerDiscountFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCustomerDiscounts(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n startDate\n finishDate\n discountPercentage\n isActive\n serviceFacilityID\n areaName\n tags\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listDiscountsByCustomer = /* GraphQL */ `\n query ListDiscountsByCustomer(\n $owner: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelCustomerDiscountFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDiscountsByCustomer(\n owner: $owner\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n startDate\n finishDate\n discountPercentage\n isActive\n serviceFacilityID\n areaName\n tags\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listDiscountsByCustomerStartDate = /* GraphQL */ `\n query ListDiscountsByCustomerStartDate(\n $owner: ID!\n $startDate: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCustomerDiscountFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listDiscountsByCustomerStartDate(\n owner: $owner\n startDate: $startDate\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n startDate\n finishDate\n discountPercentage\n isActive\n serviceFacilityID\n areaName\n tags\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getCustomerBillingDetails = /* GraphQL */ `\n query GetCustomerBillingDetails($id: ID!) {\n getCustomerBillingDetails(id: $id) {\n id\n owner\n billingDetails {\n address {\n city\n country\n line1\n line2\n postal_code\n state\n __typename\n }\n email\n name\n phone\n __typename\n }\n metadata {\n tax_id\n __typename\n }\n createdAt\n paymentMethodType\n updatedAt\n __typename\n }\n }\n`;\nexport const listCustomerBillingDetails = /* GraphQL */ `\n query ListCustomerBillingDetails(\n $filter: ModelCustomerBillingDetailsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCustomerBillingDetails(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n billingDetails {\n email\n name\n phone\n __typename\n }\n metadata {\n tax_id\n __typename\n }\n createdAt\n paymentMethodType\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listCustomerBillingDetailsByOwner = /* GraphQL */ `\n query ListCustomerBillingDetailsByOwner(\n $owner: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCustomerBillingDetailsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCustomerBillingDetailsByOwner(\n owner: $owner\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n billingDetails {\n email\n name\n phone\n __typename\n }\n metadata {\n tax_id\n __typename\n }\n createdAt\n paymentMethodType\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getOpeningHours = /* GraphQL */ `\n query GetOpeningHours($id: ID!) {\n getOpeningHours(id: $id) {\n id\n type\n isoCountryCode\n effectiveFrom\n effectiveUntil\n effectiveFromUntilEncoded\n weekdayOpeningHours {\n weekday\n openFromHour\n openUntilHour\n capacity\n __typename\n }\n areaNames\n serviceFacilityIDs\n isActive\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listOpeningHours = /* GraphQL */ `\n query ListOpeningHours(\n $filter: ModelOpeningHoursFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOpeningHours(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n type\n isoCountryCode\n effectiveFrom\n effectiveUntil\n effectiveFromUntilEncoded\n weekdayOpeningHours {\n weekday\n openFromHour\n openUntilHour\n capacity\n __typename\n }\n areaNames\n serviceFacilityIDs\n isActive\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listOpeningHoursByCountryEffectiveFrom = /* GraphQL */ `\n query ListOpeningHoursByCountryEffectiveFrom(\n $isoCountryCode: String!\n $effectiveFrom: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOpeningHoursFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOpeningHoursByCountryEffectiveFrom(\n isoCountryCode: $isoCountryCode\n effectiveFrom: $effectiveFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n type\n isoCountryCode\n effectiveFrom\n effectiveUntil\n effectiveFromUntilEncoded\n weekdayOpeningHours {\n weekday\n openFromHour\n openUntilHour\n capacity\n __typename\n }\n areaNames\n serviceFacilityIDs\n isActive\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listOpeningHoursByCountryEffectiveUntil = /* GraphQL */ `\n query ListOpeningHoursByCountryEffectiveUntil(\n $isoCountryCode: String!\n $effectiveUntil: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOpeningHoursFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOpeningHoursByCountryEffectiveUntil(\n isoCountryCode: $isoCountryCode\n effectiveUntil: $effectiveUntil\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n type\n isoCountryCode\n effectiveFrom\n effectiveUntil\n effectiveFromUntilEncoded\n weekdayOpeningHours {\n weekday\n openFromHour\n openUntilHour\n capacity\n __typename\n }\n areaNames\n serviceFacilityIDs\n isActive\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listOpeningHoursByCountryEffectiveFromUntilEncoded = /* GraphQL */ `\n query ListOpeningHoursByCountryEffectiveFromUntilEncoded(\n $isoCountryCode: String!\n $effectiveFromUntilEncoded: ModelIntKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelOpeningHoursFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOpeningHoursByCountryEffectiveFromUntilEncoded(\n isoCountryCode: $isoCountryCode\n effectiveFromUntilEncoded: $effectiveFromUntilEncoded\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n type\n isoCountryCode\n effectiveFrom\n effectiveUntil\n effectiveFromUntilEncoded\n weekdayOpeningHours {\n weekday\n openFromHour\n openUntilHour\n capacity\n __typename\n }\n areaNames\n serviceFacilityIDs\n isActive\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getCustomerPaymentMethodEligibility = /* GraphQL */ `\n query GetCustomerPaymentMethodEligibility($id: ID!) {\n getCustomerPaymentMethodEligibility(id: $id) {\n id\n username\n startDate\n finishDate\n tag\n eligiblePaymentMethods\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listCustomerPaymentMethodEligibilities = /* GraphQL */ `\n query ListCustomerPaymentMethodEligibilities(\n $filter: ModelCustomerPaymentMethodEligibilityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCustomerPaymentMethodEligibilities(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n startDate\n finishDate\n tag\n eligiblePaymentMethods\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listPaymentMethodEligibilityByCustomer = /* GraphQL */ `\n query ListPaymentMethodEligibilityByCustomer(\n $username: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelCustomerPaymentMethodEligibilityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPaymentMethodEligibilityByCustomer(\n username: $username\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n startDate\n finishDate\n tag\n eligiblePaymentMethods\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listPaymentMethodEligibilityByCustomerFinishDate = /* GraphQL */ `\n query ListPaymentMethodEligibilityByCustomerFinishDate(\n $username: ID!\n $finishDate: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCustomerPaymentMethodEligibilityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listPaymentMethodEligibilityByCustomerFinishDate(\n username: $username\n finishDate: $finishDate\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n username\n startDate\n finishDate\n tag\n eligiblePaymentMethods\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getAssignment = /* GraphQL */ `\n query GetAssignment($id: ID!) {\n getAssignment(id: $id) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n providerID\n provider {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listAssignments = /* GraphQL */ `\n query ListAssignments(\n $filter: ModelAssignmentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listAssignments(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n providerID\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n createdAt\n updatedAt\n owner\n __typename\n }\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listAssignmentsByServiceOrderID = /* GraphQL */ `\n query ListAssignmentsByServiceOrderID(\n $serviceOrderID: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelAssignmentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listAssignmentsByServiceOrderID(\n serviceOrderID: $serviceOrderID\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n providerID\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n createdAt\n updatedAt\n owner\n __typename\n }\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getCar = /* GraphQL */ `\n query GetCar($id: ID!) {\n getCar(id: $id) {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n cars {\n nextToken\n __typename\n }\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const listCars = /* GraphQL */ `\n query ListCars(\n $filter: ModelCarFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCars(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const listCarsByOwner = /* GraphQL */ `\n query ListCarsByOwner(\n $owner: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCarFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCarsByOwner(\n owner: $owner\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getCarTypeCategory = /* GraphQL */ `\n query GetCarTypeCategory($id: ID!) {\n getCarTypeCategory(id: $id) {\n id\n name\n offerings {\n items {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n tasks {\n items {\n id\n carTypeCategoryID\n taskTypeID\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listCarTypeCategories = /* GraphQL */ `\n query ListCarTypeCategories(\n $filter: ModelCarTypeCategoryFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCarTypeCategories(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n name\n offerings {\n nextToken\n __typename\n }\n tasks {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getCarType = /* GraphQL */ `\n query GetCarType($id: ID!) {\n getCarType(id: $id) {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n carTypeCategory {\n id\n name\n offerings {\n nextToken\n __typename\n }\n tasks {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n cars {\n items {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listCarTypes = /* GraphQL */ `\n query ListCarTypes(\n $filter: ModelCarTypeFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCarTypes(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n cars {\n nextToken\n __typename\n }\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getProvider = /* GraphQL */ `\n query GetProvider($id: ID!) {\n getProvider(id: $id) {\n id\n birthday\n employments {\n items {\n id\n companyID\n providerID\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listProviders = /* GraphQL */ `\n query ListProviders(\n $filter: ModelProviderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listProviders(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getCompany = /* GraphQL */ `\n query GetCompany($id: ID!) {\n getCompany(id: $id) {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n items {\n id\n companyID\n providerID\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n franchiseContracts {\n items {\n id\n companyID\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n items {\n id\n companyID\n serviceFacilityID\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listCompanies = /* GraphQL */ `\n query ListCompanies(\n $filter: ModelCompanyFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCompanies(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getFranchiseContract = /* GraphQL */ `\n query GetFranchiseContract($id: ID!) {\n getFranchiseContract(id: $id) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n items {\n id\n offeringID\n franchiseContractID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listFranchiseContracts = /* GraphQL */ `\n query ListFranchiseContracts(\n $filter: ModelFranchiseContractFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listFranchiseContracts(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getEmployment = /* GraphQL */ `\n query GetEmployment($id: ID!) {\n getEmployment(id: $id) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n providerID\n provider {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listEmployments = /* GraphQL */ `\n query ListEmployments(\n $filter: ModelEmploymentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listEmployments(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n providerID\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const employmentByProvider = /* GraphQL */ `\n query EmploymentByProvider(\n $providerID: ID!\n $sortDirection: ModelSortDirection\n $filter: ModelEmploymentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n employmentByProvider(\n providerID: $providerID\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n providerID\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getCommsContent = /* GraphQL */ `\n query GetCommsContent($id: ID!) {\n getCommsContent(id: $id) {\n id\n templateName\n channel\n description\n servicePointType\n audience\n commsScripts {\n body\n subject\n language\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listCommsContents = /* GraphQL */ `\n query ListCommsContents(\n $filter: ModelCommsContentFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCommsContents(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n templateName\n channel\n description\n servicePointType\n audience\n commsScripts {\n body\n subject\n language\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getOfferingServiceFacility = /* GraphQL */ `\n query GetOfferingServiceFacility($id: ID!) {\n getOfferingServiceFacility(id: $id) {\n id\n offeringID\n serviceFacilityID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listOfferingServiceFacilities = /* GraphQL */ `\n query ListOfferingServiceFacilities(\n $filter: ModelOfferingServiceFacilityFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOfferingServiceFacilities(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n offeringID\n serviceFacilityID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getOfferingFranchiseContracts = /* GraphQL */ `\n query GetOfferingFranchiseContracts($id: ID!) {\n getOfferingFranchiseContracts(id: $id) {\n id\n offeringID\n franchiseContractID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n franchiseContract {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listOfferingFranchiseContracts = /* GraphQL */ `\n query ListOfferingFranchiseContracts(\n $filter: ModelOfferingFranchiseContractsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOfferingFranchiseContracts(\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n offeringID\n franchiseContractID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n franchiseContract {\n id\n companyID\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getVoucherProduct = /* GraphQL */ `\n query GetVoucherProduct($id: ID!) {\n getVoucherProduct(id: $id) {\n id\n productID\n voucherID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n taskTypes {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n voucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const listVoucherProducts = /* GraphQL */ `\n query ListVoucherProducts(\n $filter: ModelVoucherProductFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listVoucherProducts(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n productID\n voucherID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n voucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n }\n`;\nexport const getDiscount = /* GraphQL */ `\n query GetDiscount($serviceOrderInfo: ServiceOrderInfoInput) {\n getDiscount(serviceOrderInfo: $serviceOrderInfo) {\n discountPercentage\n discountAmount\n result\n __typename\n }\n }\n`;\nexport const getTimeslots = /* GraphQL */ `\n query GetTimeslots($timeslotRequirements: GetTimeslotsInput) {\n getTimeslots(timeslotRequirements: $timeslotRequirements) {\n timeSlots {\n from\n until\n title\n __typename\n }\n __typename\n }\n }\n`;\nexport const listOfferingsAdvancedV2 = /* GraphQL */ `\n query ListOfferingsAdvancedV2(\n $listOfferingParams: ListOfferingsParamsInputV2!\n ) {\n listOfferingsAdvancedV2(listOfferingParams: $listOfferingParams) {\n items {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n __typename\n }\n }\n`;\n","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState } from 'react'\nimport { useQuery, useMutation } from '@apollo/client'\nimport { View, StyleSheet, SafeAreaView, ScrollView } from 'react-native'\nimport { v4 as uuid } from 'uuid'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\n//import * as subscriptions from \"../graphql/subscriptions.js\";\nimport {\n Button,\n TextInput,\n List,\n Text,\n Title,\n Subheading,\n Modal,\n Portal,\n Searchbar,\n withTheme,\n} from 'react-native-paper'\nimport Constants from 'expo-constants'\nimport { Ionicons } from '@expo/vector-icons'\nimport { ActivityIndicator } from 'react-native-paper'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport { JS } from 'aws-amplify'\nimport _ from 'lodash'\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_CUSTOMERS = gql(queries.listCustomers)\n//const SUBSCRIPTION_CARS = gql(subscriptions.onCreateCar)\n//const CREATE_CAR = gql(mutations.createCar);\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\n/* -------------------------------- Component ------------------------------- */\n\nconst CustomerSelector = ({ navigation, theme }) => {\n const [searchQuery, setSearchQuery] = React.useState('')\n const [debouncedValue, setDebouncedValue] = useState('')\n\n useEffect(() => {\n const debouncer = _.debounce(() => setDebouncedValue(searchQuery), 500)\n debouncer()\n return () => debouncer.cancel()\n }, [searchQuery])\n\n const {\n data,\n error: queryError,\n loading,\n fetchMore,\n } = useQuery(LIST_CUSTOMERS, {\n variables: {\n customerSearchCriteria: {\n email: debouncedValue,\n },\n limit: 25,\n },\n fetchPolicy: 'cache-and-network',\n })\n\n const handleFetchMore = () => {\n if (data.listCustomers.nextPaginationToken && !loading) {\n fetchMore({\n variables: {\n paginationToken: data.listCustomers.nextPaginationToken,\n },\n updateQuery: (prev, { fetchMoreResult }) => {\n if (!fetchMoreResult) return prev\n return Object.assign({}, prev, {\n listCustomers: {\n __typename: prev.listCustomers.__typename,\n items: [\n ...prev.listCustomers.items,\n ...fetchMoreResult.listCustomers.items,\n ],\n nextPaginationToken:\n fetchMoreResult.listCustomers.nextPaginationToken,\n },\n })\n },\n })\n }\n }\n\n const isCloseToBottom = ({\n layoutMeasurement,\n contentOffset,\n contentSize,\n }) => {\n const paddingToBottom = 20\n console.log('isCloseToBottom invoked')\n return (\n layoutMeasurement.height + contentOffset.y >=\n contentSize.height - paddingToBottom\n )\n }\n\n useEffect(() => {\n queryError && console.log('E R R O R: ', queryError)\n }, [queryError])\n\n const onChangeSearch = (query) => setSearchQuery(query)\n const getCarMakeModelYears = (item) =>\n item.make +\n ' ' +\n item.model +\n (item.manufacturedFrom && item.manufacturedUntil\n ? ` (${item.manufacturedFrom} - ${item.manufacturedUntil})`\n : item.manufacturedFrom\n ? ` (${item.manufacturedFrom})`\n : item.manufacturedUntil\n ? ` (${item.manufacturedUntil})`\n : '')\n return (\n \n (\n \n )}\n clearIcon={({ size, color }) => (\n \n )}\n />\n {!loading ? (\n {\n if (isCloseToBottom(nativeEvent)) {\n handleFetchMore()\n }\n }}\n scrollEventThrottle={400}\n >\n {data &&\n data.listCustomers &&\n data.listCustomers.items.map((item, index) => {\n const userString = `${item?.email}${\n item?.id.startsWith('facebook_')\n ? ' (Facebook)'\n : item?.id.startsWith('google_')\n ? ' (Google)'\n : item?.id.startsWith('signinwithapple_')\n ? ' (Apple)'\n : ''\n }`\n return (\n \n navigation.navigate('Select Location', {\n providerSelectedCustomer: {\n username: item?.id,\n attributes: {\n email: item?.email,\n phone_number: item?.phoneNumber,\n 'custom:first_name': item?.name,\n 'custom:offering_tags': item?.offeringTags,\n },\n },\n })\n }\n />\n )}\n )}\n\n \n \n ) : (\n \n \n \n )}\n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0, //Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(CustomerSelector)\n","/* eslint-disable */\n// this is an auto generated file. This will be overwritten\n\nexport const createPaymentSheet = /* GraphQL */ `\n mutation CreatePaymentSheet(\n $amount: Int!\n $currency: String!\n $paymentMethodID: PaymentMethodType!\n $paymentProcessorAccount: PaymentProcessorAccount!\n ) {\n createPaymentSheet(\n amount: $amount\n currency: $currency\n paymentMethodID: $paymentMethodID\n paymentProcessorAccount: $paymentProcessorAccount\n ) {\n paymentIntent\n paymentIntentId\n ephemeralKey\n customer\n error\n __typename\n }\n }\n`;\nexport const createSetupIntent = /* GraphQL */ `\n mutation CreateSetupIntent(\n $offSession: Boolean\n $paymentProcessorAccount: PaymentProcessorAccount!\n $type: String\n ) {\n createSetupIntent(\n offSession: $offSession\n paymentProcessorAccount: $paymentProcessorAccount\n type: $type\n ) {\n clientSecret\n error\n type\n __typename\n }\n }\n`;\nexport const createStripePaymentMethod = /* GraphQL */ `\n mutation CreateStripePaymentMethod(\n $paymentMethodId: String!\n $paymentProcessorAccount: PaymentProcessorAccount!\n $last4: String!\n $metadata: StripePaymentMethodMetadataInput\n ) {\n createStripePaymentMethod(\n paymentMethodId: $paymentMethodId\n paymentProcessorAccount: $paymentProcessorAccount\n last4: $last4\n metadata: $metadata\n ) {\n paymentMethodId\n paymentMethod {\n id\n billing_details {\n email\n name\n phone\n __typename\n }\n card {\n brand\n country\n exp_month\n exp_year\n fingerprint\n funding\n last4\n __typename\n }\n created\n customer\n livemode\n type\n metadata {\n tax_id\n __typename\n }\n restriction\n __typename\n }\n error\n metadata {\n isApplePay\n isGooglePay\n __typename\n }\n __typename\n }\n }\n`;\nexport const createServiceOrderAdvanced = /* GraphQL */ `\n mutation CreateServiceOrderAdvanced(\n $serviceOrderInput: ServiceOrderInput!\n $voucherIDs: [ID]\n ) {\n createServiceOrderAdvanced(\n serviceOrderInput: $serviceOrderInput\n voucherIDs: $voucherIDs\n ) {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const createServiceOrderAdvancedV2 = /* GraphQL */ `\n mutation CreateServiceOrderAdvancedV2(\n $serviceOrderInput: ServiceOrderInputBatch!\n $voucherIDs: [ID]\n $paymentProcessorAccount: PaymentProcessorAccount\n $providerSelectedCustomerUsername: ID\n ) {\n createServiceOrderAdvancedV2(\n serviceOrderInput: $serviceOrderInput\n voucherIDs: $voucherIDs\n paymentProcessorAccount: $paymentProcessorAccount\n providerSelectedCustomerUsername: $providerSelectedCustomerUsername\n ) {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const updateServiceOrderAdvanced = /* GraphQL */ `\n mutation UpdateServiceOrderAdvanced(\n $id: ID!\n $updateOrderInput: UpdateOrderInput!\n $ignoreAssignmentCheck: Boolean\n ) {\n updateServiceOrderAdvanced(\n id: $id\n updateOrderInput: $updateOrderInput\n ignoreAssignmentCheck: $ignoreAssignmentCheck\n ) {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const assignServiceOrder = /* GraphQL */ `\n mutation AssignServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n $providerId: ID!\n $startDate: AWSDateTime!\n $finishDate: AWSDateTime!\n ) {\n assignServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n providerId: $providerId\n startDate: $startDate\n finishDate: $finishDate\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const unassignServiceOrder = /* GraphQL */ `\n mutation UnassignServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n ) {\n unassignServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const cancelServiceOrder = /* GraphQL */ `\n mutation CancelServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n $reason: ServiceOrderStateReason\n ) {\n cancelServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n reason: $reason\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const completeServiceOrder = /* GraphQL */ `\n mutation CompleteServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n ) {\n completeServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const revertServiceOrderToAccepted = /* GraphQL */ `\n mutation RevertServiceOrderToAccepted(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n ) {\n revertServiceOrderToAccepted(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const prestartServiceOrder = /* GraphQL */ `\n mutation PrestartServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n ) {\n prestartServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const startServiceOrder = /* GraphQL */ `\n mutation StartServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n ) {\n startServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const confirmServiceOrderBankTransfer = /* GraphQL */ `\n mutation ConfirmServiceOrderBankTransfer(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n ) {\n confirmServiceOrderBankTransfer(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const rateServiceOrder = /* GraphQL */ `\n mutation RateServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n $rating: Int!\n ) {\n rateServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n rating: $rating\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const resumeServiceOrder = /* GraphQL */ `\n mutation ResumeServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n $reason: ServiceOrderStateReason\n ) {\n resumeServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n reason: $reason\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const suspendServiceOrder = /* GraphQL */ `\n mutation SuspendServiceOrder(\n $grantedUserApprovals: [UserApproval]\n $serviceOrderId: ID!\n $reason: ServiceOrderStateReason\n ) {\n suspendServiceOrder(\n grantedUserApprovals: $grantedUserApprovals\n serviceOrderId: $serviceOrderId\n reason: $reason\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const createPaymentMethod = /* GraphQL */ `\n mutation CreatePaymentMethod(\n $paymentMethodType: PaymentMethodType!\n $paymentProcessorAccount: PaymentProcessorAccount\n ) {\n createPaymentMethod(\n paymentMethodType: $paymentMethodType\n paymentProcessorAccount: $paymentProcessorAccount\n ) {\n result\n resultReason\n clientSecret\n setupIntentStatus\n __typename\n }\n }\n`;\nexport const deletePaymentMethod = /* GraphQL */ `\n mutation DeletePaymentMethod(\n $id: ID!\n $paymentProcessorAccount: PaymentProcessorAccount\n ) {\n deletePaymentMethod(\n id: $id\n paymentProcessorAccount: $paymentProcessorAccount\n ) {\n id\n billing_details {\n address {\n city\n country\n line1\n line2\n postal_code\n state\n __typename\n }\n email\n name\n phone\n __typename\n }\n card {\n brand\n country\n exp_month\n exp_year\n fingerprint\n funding\n last4\n __typename\n }\n created\n customer\n livemode\n type\n metadata {\n tax_id\n __typename\n }\n restriction\n __typename\n }\n }\n`;\nexport const deleteUserCustomAttribute = /* GraphQL */ `\n mutation DeleteUserCustomAttribute($attributeName: String!) {\n deleteUserCustomAttribute(attributeName: $attributeName) {\n statusCode\n body\n error\n __typename\n }\n }\n`;\nexport const claimVoucher = /* GraphQL */ `\n mutation ClaimVoucher($voucherCode: String!) {\n claimVoucher(voucherCode: $voucherCode) {\n result\n resultReason\n voucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n __typename\n }\n }\n`;\nexport const retryPaymentOnSession = /* GraphQL */ `\n mutation RetryPaymentOnSession(\n $serviceOrderId: ID!\n $paymentMethodID: ID\n $paymentMethodType: PaymentMethodType!\n ) {\n retryPaymentOnSession(\n serviceOrderId: $serviceOrderId\n paymentMethodID: $paymentMethodID\n paymentMethodType: $paymentMethodType\n ) {\n result\n resultReason\n clientSecret\n paymentIntentStatus\n __typename\n }\n }\n`;\nexport const updateUserInfo = /* GraphQL */ `\n mutation UpdateUserInfo($updateUserInfo: UpdateUserInfoInput) {\n updateUserInfo(updateUserInfo: $updateUserInfo) {\n result\n __typename\n }\n }\n`;\nexport const deleteUserAccount = /* GraphQL */ `\n mutation DeleteUserAccount($deleteUserAccount: DeteleUserAccountInput) {\n deleteUserAccount(deleteUserAccount: $deleteUserAccount) {\n result\n resultReason\n __typename\n }\n }\n`;\nexport const createStripeConnectedAccount = /* GraphQL */ `\n mutation CreateStripeConnectedAccount(\n $companyId: ID!\n $paymentProcessorAccount: PaymentProcessorAccount\n ) {\n createStripeConnectedAccount(\n companyId: $companyId\n paymentProcessorAccount: $paymentProcessorAccount\n ) {\n url\n __typename\n }\n }\n`;\nexport const assignProviderToCompany = /* GraphQL */ `\n mutation AssignProviderToCompany(\n $companyIds: [ID!]\n $providerEmail: AWSEmail!\n ) {\n assignProviderToCompany(\n companyIds: $companyIds\n providerEmail: $providerEmail\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const generateVoucher = /* GraphQL */ `\n mutation GenerateVoucher(\n $singleUseVoucher: SingleUseVoucherInput\n $multiUseVoucher: MultiUseVoucherInput\n ) {\n generateVoucher(\n singleUseVoucher: $singleUseVoucher\n multiUseVoucher: $multiUseVoucher\n ) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const generateBankTransferInvoice = /* GraphQL */ `\n mutation GenerateBankTransferInvoice($serviceOrderId: ID!) {\n generateBankTransferInvoice(serviceOrderId: $serviceOrderId) {\n result\n resultReason\n requiredUserApprovals\n error\n __typename\n }\n }\n`;\nexport const createServiceOrder = /* GraphQL */ `\n mutation CreateServiceOrder(\n $input: CreateServiceOrderInput!\n $condition: ModelServiceOrderConditionInput\n ) {\n createServiceOrder(input: $input, condition: $condition) {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const updateServiceOrder = /* GraphQL */ `\n mutation UpdateServiceOrder(\n $input: UpdateServiceOrderInput!\n $condition: ModelServiceOrderConditionInput\n ) {\n updateServiceOrder(input: $input, condition: $condition) {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const deleteServiceOrder = /* GraphQL */ `\n mutation DeleteServiceOrder(\n $input: DeleteServiceOrderInput!\n $condition: ModelServiceOrderConditionInput\n ) {\n deleteServiceOrder(input: $input, condition: $condition) {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const createServiceFacility = /* GraphQL */ `\n mutation CreateServiceFacility(\n $input: CreateServiceFacilityInput!\n $condition: ModelServiceFacilityConditionInput\n ) {\n createServiceFacility(input: $input, condition: $condition) {\n id\n geohash\n ownerships {\n items {\n id\n companyID\n serviceFacilityID\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n location {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n name\n tags\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n offerings {\n items {\n id\n offeringID\n serviceFacilityID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateServiceFacility = /* GraphQL */ `\n mutation UpdateServiceFacility(\n $input: UpdateServiceFacilityInput!\n $condition: ModelServiceFacilityConditionInput\n ) {\n updateServiceFacility(input: $input, condition: $condition) {\n id\n geohash\n ownerships {\n items {\n id\n companyID\n serviceFacilityID\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n location {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n name\n tags\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n offerings {\n items {\n id\n offeringID\n serviceFacilityID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteServiceFacility = /* GraphQL */ `\n mutation DeleteServiceFacility(\n $input: DeleteServiceFacilityInput!\n $condition: ModelServiceFacilityConditionInput\n ) {\n deleteServiceFacility(input: $input, condition: $condition) {\n id\n geohash\n ownerships {\n items {\n id\n companyID\n serviceFacilityID\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n location {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n coordinates {\n latitude\n longitude\n __typename\n }\n __typename\n }\n name\n tags\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n offerings {\n items {\n id\n offeringID\n serviceFacilityID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createServiceFacilityOwnership = /* GraphQL */ `\n mutation CreateServiceFacilityOwnership(\n $input: CreateServiceFacilityOwnershipInput!\n $condition: ModelServiceFacilityOwnershipConditionInput\n ) {\n createServiceFacilityOwnership(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateServiceFacilityOwnership = /* GraphQL */ `\n mutation UpdateServiceFacilityOwnership(\n $input: UpdateServiceFacilityOwnershipInput!\n $condition: ModelServiceFacilityOwnershipConditionInput\n ) {\n updateServiceFacilityOwnership(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteServiceFacilityOwnership = /* GraphQL */ `\n mutation DeleteServiceFacilityOwnership(\n $input: DeleteServiceFacilityOwnershipInput!\n $condition: ModelServiceFacilityOwnershipConditionInput\n ) {\n deleteServiceFacilityOwnership(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacilityID\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createVoucher = /* GraphQL */ `\n mutation CreateVoucher(\n $input: CreateVoucherInput!\n $condition: ModelVoucherConditionInput\n ) {\n createVoucher(input: $input, condition: $condition) {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n items {\n id\n productID\n voucherID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const updateVoucher = /* GraphQL */ `\n mutation UpdateVoucher(\n $input: UpdateVoucherInput!\n $condition: ModelVoucherConditionInput\n ) {\n updateVoucher(input: $input, condition: $condition) {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n items {\n id\n productID\n voucherID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const deleteVoucher = /* GraphQL */ `\n mutation DeleteVoucher(\n $input: DeleteVoucherInput!\n $condition: ModelVoucherConditionInput\n ) {\n deleteVoucher(input: $input, condition: $condition) {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n items {\n id\n productID\n voucherID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const createComment = /* GraphQL */ `\n mutation CreateComment(\n $input: CreateCommentInput!\n $condition: ModelCommentConditionInput\n ) {\n createComment(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateComment = /* GraphQL */ `\n mutation UpdateComment(\n $input: UpdateCommentInput!\n $condition: ModelCommentConditionInput\n ) {\n updateComment(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteComment = /* GraphQL */ `\n mutation DeleteComment(\n $input: DeleteCommentInput!\n $condition: ModelCommentConditionInput\n ) {\n deleteComment(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n timestamp\n message\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createEvent = /* GraphQL */ `\n mutation CreateEvent(\n $input: CreateEventInput!\n $condition: ModelEventConditionInput\n ) {\n createEvent(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateEvent = /* GraphQL */ `\n mutation UpdateEvent(\n $input: UpdateEventInput!\n $condition: ModelEventConditionInput\n ) {\n updateEvent(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteEvent = /* GraphQL */ `\n mutation DeleteEvent(\n $input: DeleteEventInput!\n $condition: ModelEventConditionInput\n ) {\n deleteEvent(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createRating = /* GraphQL */ `\n mutation CreateRating(\n $input: CreateRatingInput!\n $condition: ModelRatingConditionInput\n ) {\n createRating(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateRating = /* GraphQL */ `\n mutation UpdateRating(\n $input: UpdateRatingInput!\n $condition: ModelRatingConditionInput\n ) {\n updateRating(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteRating = /* GraphQL */ `\n mutation DeleteRating(\n $input: DeleteRatingInput!\n $condition: ModelRatingConditionInput\n ) {\n deleteRating(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createCustomerBillingDetails = /* GraphQL */ `\n mutation CreateCustomerBillingDetails(\n $input: CreateCustomerBillingDetailsInput!\n $condition: ModelCustomerBillingDetailsConditionInput\n ) {\n createCustomerBillingDetails(input: $input, condition: $condition) {\n id\n owner\n billingDetails {\n address {\n city\n country\n line1\n line2\n postal_code\n state\n __typename\n }\n email\n name\n phone\n __typename\n }\n metadata {\n tax_id\n __typename\n }\n createdAt\n paymentMethodType\n updatedAt\n __typename\n }\n }\n`;\nexport const updateCustomerBillingDetails = /* GraphQL */ `\n mutation UpdateCustomerBillingDetails(\n $input: UpdateCustomerBillingDetailsInput!\n $condition: ModelCustomerBillingDetailsConditionInput\n ) {\n updateCustomerBillingDetails(input: $input, condition: $condition) {\n id\n owner\n billingDetails {\n address {\n city\n country\n line1\n line2\n postal_code\n state\n __typename\n }\n email\n name\n phone\n __typename\n }\n metadata {\n tax_id\n __typename\n }\n createdAt\n paymentMethodType\n updatedAt\n __typename\n }\n }\n`;\nexport const deleteCustomerBillingDetails = /* GraphQL */ `\n mutation DeleteCustomerBillingDetails(\n $input: DeleteCustomerBillingDetailsInput!\n $condition: ModelCustomerBillingDetailsConditionInput\n ) {\n deleteCustomerBillingDetails(input: $input, condition: $condition) {\n id\n owner\n billingDetails {\n address {\n city\n country\n line1\n line2\n postal_code\n state\n __typename\n }\n email\n name\n phone\n __typename\n }\n metadata {\n tax_id\n __typename\n }\n createdAt\n paymentMethodType\n updatedAt\n __typename\n }\n }\n`;\nexport const createOpeningHours = /* GraphQL */ `\n mutation CreateOpeningHours(\n $input: CreateOpeningHoursInput!\n $condition: ModelOpeningHoursConditionInput\n ) {\n createOpeningHours(input: $input, condition: $condition) {\n id\n type\n isoCountryCode\n effectiveFrom\n effectiveUntil\n effectiveFromUntilEncoded\n weekdayOpeningHours {\n weekday\n openFromHour\n openUntilHour\n capacity\n __typename\n }\n areaNames\n serviceFacilityIDs\n isActive\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateOpeningHours = /* GraphQL */ `\n mutation UpdateOpeningHours(\n $input: UpdateOpeningHoursInput!\n $condition: ModelOpeningHoursConditionInput\n ) {\n updateOpeningHours(input: $input, condition: $condition) {\n id\n type\n isoCountryCode\n effectiveFrom\n effectiveUntil\n effectiveFromUntilEncoded\n weekdayOpeningHours {\n weekday\n openFromHour\n openUntilHour\n capacity\n __typename\n }\n areaNames\n serviceFacilityIDs\n isActive\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteOpeningHours = /* GraphQL */ `\n mutation DeleteOpeningHours(\n $input: DeleteOpeningHoursInput!\n $condition: ModelOpeningHoursConditionInput\n ) {\n deleteOpeningHours(input: $input, condition: $condition) {\n id\n type\n isoCountryCode\n effectiveFrom\n effectiveUntil\n effectiveFromUntilEncoded\n weekdayOpeningHours {\n weekday\n openFromHour\n openUntilHour\n capacity\n __typename\n }\n areaNames\n serviceFacilityIDs\n isActive\n note\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createAssignment = /* GraphQL */ `\n mutation CreateAssignment(\n $input: CreateAssignmentInput!\n $condition: ModelAssignmentConditionInput\n ) {\n createAssignment(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n providerID\n provider {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateAssignment = /* GraphQL */ `\n mutation UpdateAssignment(\n $input: UpdateAssignmentInput!\n $condition: ModelAssignmentConditionInput\n ) {\n updateAssignment(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n providerID\n provider {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteAssignment = /* GraphQL */ `\n mutation DeleteAssignment(\n $input: DeleteAssignmentInput!\n $condition: ModelAssignmentConditionInput\n ) {\n deleteAssignment(input: $input, condition: $condition) {\n id\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n __typename\n }\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carLocation {\n __typename\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n tags\n durationTarget\n createdAt\n updatedAt\n owner\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n comments {\n nextToken\n __typename\n }\n events {\n nextToken\n __typename\n }\n ratings {\n nextToken\n __typename\n }\n areaName\n addons {\n addonID\n quantity\n __typename\n }\n discountPercentage\n serviceFacilityID\n serviceFacility {\n id\n geohash\n name\n tags\n createdAt\n updatedAt\n owner\n __typename\n }\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n __typename\n }\n error\n createdAt\n updatedAt\n __typename\n }\n providerID\n provider {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createCar = /* GraphQL */ `\n mutation CreateCar(\n $input: CreateCarInput!\n $condition: ModelCarConditionInput\n ) {\n createCar(input: $input, condition: $condition) {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n cars {\n nextToken\n __typename\n }\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const updateCar = /* GraphQL */ `\n mutation UpdateCar(\n $input: UpdateCarInput!\n $condition: ModelCarConditionInput\n ) {\n updateCar(input: $input, condition: $condition) {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n cars {\n nextToken\n __typename\n }\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const deleteCar = /* GraphQL */ `\n mutation DeleteCar(\n $input: DeleteCarInput!\n $condition: ModelCarConditionInput\n ) {\n deleteCar(input: $input, condition: $condition) {\n id\n owner\n description\n plate\n color\n year\n isActive\n serviceOrders {\n items {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n carTypeID\n carType {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n cars {\n nextToken\n __typename\n }\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n photoUri\n createdAt\n updatedAt\n __typename\n }\n }\n`;\nexport const createProvider = /* GraphQL */ `\n mutation CreateProvider(\n $input: CreateProviderInput!\n $condition: ModelProviderConditionInput\n ) {\n createProvider(input: $input, condition: $condition) {\n id\n birthday\n employments {\n items {\n id\n companyID\n providerID\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateProvider = /* GraphQL */ `\n mutation UpdateProvider(\n $input: UpdateProviderInput!\n $condition: ModelProviderConditionInput\n ) {\n updateProvider(input: $input, condition: $condition) {\n id\n birthday\n employments {\n items {\n id\n companyID\n providerID\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteProvider = /* GraphQL */ `\n mutation DeleteProvider(\n $input: DeleteProviderInput!\n $condition: ModelProviderConditionInput\n ) {\n deleteProvider(input: $input, condition: $condition) {\n id\n birthday\n employments {\n items {\n id\n companyID\n providerID\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createCompany = /* GraphQL */ `\n mutation CreateCompany(\n $input: CreateCompanyInput!\n $condition: ModelCompanyConditionInput\n ) {\n createCompany(input: $input, condition: $condition) {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n items {\n id\n companyID\n providerID\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n franchiseContracts {\n items {\n id\n companyID\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n items {\n id\n companyID\n serviceFacilityID\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateCompany = /* GraphQL */ `\n mutation UpdateCompany(\n $input: UpdateCompanyInput!\n $condition: ModelCompanyConditionInput\n ) {\n updateCompany(input: $input, condition: $condition) {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n items {\n id\n companyID\n providerID\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n franchiseContracts {\n items {\n id\n companyID\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n items {\n id\n companyID\n serviceFacilityID\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteCompany = /* GraphQL */ `\n mutation DeleteCompany(\n $input: DeleteCompanyInput!\n $condition: ModelCompanyConditionInput\n ) {\n deleteCompany(input: $input, condition: $condition) {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n items {\n id\n companyID\n providerID\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n franchiseContracts {\n items {\n id\n companyID\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n items {\n id\n companyID\n serviceFacilityID\n validFrom\n validUntil\n emailNotifications\n emailBilling\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createFranchiseContract = /* GraphQL */ `\n mutation CreateFranchiseContract(\n $input: CreateFranchiseContractInput!\n $condition: ModelFranchiseContractConditionInput\n ) {\n createFranchiseContract(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n items {\n id\n offeringID\n franchiseContractID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateFranchiseContract = /* GraphQL */ `\n mutation UpdateFranchiseContract(\n $input: UpdateFranchiseContractInput!\n $condition: ModelFranchiseContractConditionInput\n ) {\n updateFranchiseContract(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n items {\n id\n offeringID\n franchiseContractID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteFranchiseContract = /* GraphQL */ `\n mutation DeleteFranchiseContract(\n $input: DeleteFranchiseContractInput!\n $condition: ModelFranchiseContractConditionInput\n ) {\n deleteFranchiseContract(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n items {\n id\n offeringID\n franchiseContractID\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createEmployment = /* GraphQL */ `\n mutation CreateEmployment(\n $input: CreateEmploymentInput!\n $condition: ModelEmploymentConditionInput\n ) {\n createEmployment(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n providerID\n provider {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateEmployment = /* GraphQL */ `\n mutation UpdateEmployment(\n $input: UpdateEmploymentInput!\n $condition: ModelEmploymentConditionInput\n ) {\n updateEmployment(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n providerID\n provider {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteEmployment = /* GraphQL */ `\n mutation DeleteEmployment(\n $input: DeleteEmploymentInput!\n $condition: ModelEmploymentConditionInput\n ) {\n deleteEmployment(input: $input, condition: $condition) {\n id\n companyID\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n __typename\n }\n isoCountryCode\n name\n employments {\n nextToken\n __typename\n }\n assignments {\n nextToken\n __typename\n }\n franchiseContracts {\n nextToken\n __typename\n }\n serviceFacilityOwnerships {\n nextToken\n __typename\n }\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n bankTransferRecipientInfo {\n name\n bankName\n iban\n bicSwiftCode\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n providerID\n provider {\n id\n birthday\n employments {\n nextToken\n __typename\n }\n email\n firstName\n lastName\n gender\n phoneNumber\n photoUrl\n assignments {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n roles\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createOfferingServiceFacility = /* GraphQL */ `\n mutation CreateOfferingServiceFacility(\n $input: CreateOfferingServiceFacilityInput!\n $condition: ModelOfferingServiceFacilityConditionInput\n ) {\n createOfferingServiceFacility(input: $input, condition: $condition) {\n id\n offeringID\n serviceFacilityID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateOfferingServiceFacility = /* GraphQL */ `\n mutation UpdateOfferingServiceFacility(\n $input: UpdateOfferingServiceFacilityInput!\n $condition: ModelOfferingServiceFacilityConditionInput\n ) {\n updateOfferingServiceFacility(input: $input, condition: $condition) {\n id\n offeringID\n serviceFacilityID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteOfferingServiceFacility = /* GraphQL */ `\n mutation DeleteOfferingServiceFacility(\n $input: DeleteOfferingServiceFacilityInput!\n $condition: ModelOfferingServiceFacilityConditionInput\n ) {\n deleteOfferingServiceFacility(input: $input, condition: $condition) {\n id\n offeringID\n serviceFacilityID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n serviceFacility {\n id\n geohash\n ownerships {\n nextToken\n __typename\n }\n location {\n __typename\n }\n name\n tags\n serviceOrders {\n nextToken\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createOfferingFranchiseContracts = /* GraphQL */ `\n mutation CreateOfferingFranchiseContracts(\n $input: CreateOfferingFranchiseContractsInput!\n $condition: ModelOfferingFranchiseContractsConditionInput\n ) {\n createOfferingFranchiseContracts(input: $input, condition: $condition) {\n id\n offeringID\n franchiseContractID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n franchiseContract {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateOfferingFranchiseContracts = /* GraphQL */ `\n mutation UpdateOfferingFranchiseContracts(\n $input: UpdateOfferingFranchiseContractsInput!\n $condition: ModelOfferingFranchiseContractsConditionInput\n ) {\n updateOfferingFranchiseContracts(input: $input, condition: $condition) {\n id\n offeringID\n franchiseContractID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n franchiseContract {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteOfferingFranchiseContracts = /* GraphQL */ `\n mutation DeleteOfferingFranchiseContracts(\n $input: DeleteOfferingFranchiseContractsInput!\n $condition: ModelOfferingFranchiseContractsConditionInput\n ) {\n deleteOfferingFranchiseContracts(input: $input, condition: $condition) {\n id\n offeringID\n franchiseContractID\n offering {\n id\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n productID\n product {\n id\n productCategoryID\n productPackageID\n createdAt\n updatedAt\n owner\n __typename\n }\n addonOptionsID\n addonOptions {\n id\n createdAt\n updatedAt\n owner\n __typename\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n nextToken\n __typename\n }\n tags\n serviceOrders {\n nextToken\n __typename\n }\n durationTarget\n franchiseContracts {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n franchiseContract {\n id\n companyID\n company {\n id\n isoCountryCode\n name\n stripeConnectedAccountId\n stripeConnectedAccountId2\n enableTransferToConnectedAccount\n royaltyFeePercentage\n isTaxExempt\n createdAt\n updatedAt\n owner\n __typename\n }\n validFrom\n validUntil\n areaNames\n emailNotifications\n emailBilling\n offerings {\n nextToken\n __typename\n }\n minOrderLeadTimeHours\n createdAt\n updatedAt\n owner\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const createVoucherProduct = /* GraphQL */ `\n mutation CreateVoucherProduct(\n $input: CreateVoucherProductInput!\n $condition: ModelVoucherProductConditionInput\n ) {\n createVoucherProduct(input: $input, condition: $condition) {\n id\n productID\n voucherID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n taskTypes {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n voucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const updateVoucherProduct = /* GraphQL */ `\n mutation UpdateVoucherProduct(\n $input: UpdateVoucherProductInput!\n $condition: ModelVoucherProductConditionInput\n ) {\n updateVoucherProduct(input: $input, condition: $condition) {\n id\n productID\n voucherID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n taskTypes {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n voucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\nexport const deleteVoucherProduct = /* GraphQL */ `\n mutation DeleteVoucherProduct(\n $input: DeleteVoucherProductInput!\n $condition: ModelVoucherProductConditionInput\n ) {\n deleteVoucherProduct(input: $input, condition: $condition) {\n id\n productID\n voucherID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n owner\n __typename\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n __typename\n }\n offerings {\n nextToken\n __typename\n }\n taskTypes {\n nextToken\n __typename\n }\n vouchers {\n nextToken\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n voucher {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n nextToken\n __typename\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n createdAt\n updatedAt\n owner\n __typename\n }\n }\n`;\n","import React, { useEffect, useState, useRef } from 'react'\nimport {\n ScrollView,\n StyleSheet,\n View,\n TouchableWithoutFeedback,\n Dimensions,\n ActivityIndicator,\n SafeAreaView,\n Platform,\n ImageBackground,\n} from 'react-native'\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport {\n Button,\n withTheme,\n TextInput,\n HelperText,\n List,\n Text,\n ProgressBar,\n Caption,\n Title,\n Subheading,\n Appbar,\n Portal,\n Modal,\n IconButton,\n RadioButton,\n} from 'react-native-paper'\n\nimport { Ionicons } from '@expo/vector-icons'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\n//import Modal from 'react-native-modal'\nimport { Formik } from 'formik'\nimport { Picker } from '@react-native-picker/picker'\nimport { v4 as uuid } from 'uuid'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nconst screenWidth = Dimensions.get('window').width\nconst AddPhotoSchema = Utils.photoSchema\n\nconst AddPhotoModal = ({\n theme,\n isVisible,\n setVisible,\n addServiceOrderPhoto,\n ...props\n}) => {\n const toggleModal = () => {\n setVisible(!isVisible)\n }\n const [images, setImages] = useState([])\n const [uploadProgress, setUploadProgress] = useState(null)\n\n return (\n {\n try {\n let serviceOrderPhotos = []\n for (const [index, image] of images.entries()) {\n const targetFileName = `service_order_photo_${uuid()}.jpg`\n setUploadProgress(0.05)\n await Utils.uploadToStorage(image, targetFileName, ()=>{});\n serviceOrderPhotos.push({\n url: targetFileName,\n type: values.type,\n isVisible: true,\n isRestricted: values.isRestricted,\n description: values.description,\n })\n }\n await addServiceOrderPhoto(serviceOrderPhotos);\n setVisible(false);\n } catch (e) {\n console.error('error uploading images: ' + e);\n }\n }}\n //innerRef={formRef}\n validationSchema={AddPhotoSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n setFieldValue,\n values,\n errors,\n touched,\n }) => {\n return (\n \n \n \n \n \n \n setVisible(false)}\n />\n \n\n\n {uploadProgress !== null && (\n \n \n \n )}\n\n\n {images?.length > 0 ? (\n \n {\n images.map(image => \n \n setImages([])}\n />\n \n \n )}\n \n ) : (\n \n {Platform.OS != 'web' ? (\n \n {\n await Utils.pickCameraImages(setImages, true)\n }}\n >\n {i18n.t('Camera')}\n \n (\n \n )}\n contentStyle={{ height: 200 }}\n style={{ flex: 0.5, margin: 10 }}\n mode='outlined'\n onPress={async () => {\n await Utils.pickImages(setImages, true)\n }}\n >\n {i18n.t('Gallery')}\n \n \n ) : (\n {\n await Utils.pickImages(setImages, true)\n }}\n >\n {i18n.t('File Upload')}\n \n )}\n \n )}\n\n {/* {i18n.t(\"Type\")} */}\n \n handleChange('type')(itemValue)\n }\n >\n \n \n \n \n \n\n {\n setFieldValue('isRestricted', value)\n }}\n value={values.isRestricted}\n >\n \n \n \n\n \n \n {errors.description}\n \n\n \n 0)}\n loading={uploadProgress}\n mode='contained'\n onPress={handleSubmit}\n buttonColor={theme.colors.secondary}\n >\n {i18n.t('Save')}\n \n {/* */}\n \n \n \n \n \n )\n }}\n \n )\n}\n\nconst styles = StyleSheet.create({\n photo: {\n width: 200,\n height: 200,\n },\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n})\n\nexport default withTheme(AddPhotoModal)\n","import React, { useEffect, useState, useRef } from 'react';\nimport { Image, ScrollView, StyleSheet, View, TouchableWithoutFeedback, Dimensions, ActivityIndicator, SafeAreaView, Platform, ImageBackground } from 'react-native';\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport { Button, withTheme, TextInput, HelperText, List, Text, ProgressBar, Caption, Title, Subheading, Appbar, IconButton, RadioButton } from 'react-native-paper';\n\nimport { Ionicons } from '@expo/vector-icons';\nimport Utils from './Utils'\nimport i18n from 'i18n-js';\nimport Modal from 'react-native-modal';\nimport { Formik } from 'formik';\nimport { Picker } from '@react-native-picker/picker';\nimport { v4 as uuid } from 'uuid';\nconst screenWidth = Dimensions.get('window').width\n\nlet SwipeRender;\nif (Platform.OS !== 'web') {\n SwipeRender = require(\"react-native-swipe-render\").default;\n}\n\nconst ImageSwiperModal = ({ theme, modalState, setModalState, photos, imageUrls, removeServiceOrderPhoto, ...props }) => {\n const toggleModal = () => { setModalState({ ...modalState, isVisible: !modalState.isVisible }) };\n const [image, setImage] = useState(null);\n const [uploadProgress, setUploadProgress] = useState(null);\n const [selectedIndex, setSelectedIndex] = useState(modalState?.index);\n\n useEffect(() => {\n setSelectedIndex(modalState?.index || 0)\n }, [modalState?.index]);\n\n return (\n Platform.OS != \"web\" ?\n setModalState({ ...modalState, isVisible: false })}\n swipeDirection={Platform.OS == \"android\" ? ['down'] : []}\n\n scrollTo={() => { }}\n scrollOffset={1}\n propagateSwipe={true}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n backgroundColor: theme.colors.background\n }}\n customBackdrop={\n \n \n \n }\n >\n <>\n \n {photos &&\n \n }\n\n {removeServiceOrderPhoto &&\n }\n onPress={() => {\n removeServiceOrderPhoto(photos?.[selectedIndex])\n setModalState({ ...modalState, isVisible: false })\n }}\n />\n }\n\n\n setModalState({ ...modalState, isVisible: false })} />\n \n\n {photos && imageUrls &&\n { return { uri: imageUrls[item.url] } })}\n renderItem={({ item, index }) => {\n return (\n \n \n \n );\n }}\n onIndexChanged={index => setSelectedIndex(index)}\n // OPTIONAL PROP USAGE.\n index={modalState?.index || 0} // default 0\n loop={false} // default false\n loadMinimal={true} // default false\n loadMinimalSize={2}\n autoplay={false} // default false\n horizontal={true} // default true\n\n enableAndroidViewPager={false} // default ScrollView\n // TO ENABLE AndroidViewPager:\n // react-native >= 0.60 - install @react-native-community/viewpager separately\n // react-native < 0.60 - ready to go!\n />\n }\n \n\n\n\n \n :\n null\n\n\n );\n\n}\n\nconst styles = StyleSheet.create({\n photo: {\n width: 200,\n height: 200,\n },\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n }\n});\n\nexport default withTheme(ImageSwiperModal);","import React, { useEffect, useState, useRef } from 'react'\nimport {\n ScrollView,\n StyleSheet,\n View,\n TouchableWithoutFeedback,\n Dimensions,\n ActivityIndicator,\n SafeAreaView,\n Platform,\n} from 'react-native'\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport {\n Button,\n withTheme,\n Text,\n Caption,\n Title,\n Appbar,\n} from 'react-native-paper'\n\nimport { Ionicons } from '@expo/vector-icons'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\nimport Modal from 'react-native-modal'\nimport { Picker } from '@react-native-picker/picker'\nconst screenWidth = Dimensions.get('window').width\nconst ServiceOrderCancellationModal = ({ theme, ...props }) => {\n const toggleModal = () => {\n props.setVisible(!props.isVisible)\n }\n const [picker, setPicker] = useState('TECHNICAL_ERROR')\n const [pickerOptions, setPickerOptions] = useState([])\n\n useEffect(() => {\n if (\n props.serviceOrderState == 'SUBMITTED' ||\n props.serviceOrderState == 'ACCEPTED'\n ) {\n const options = [\n 'TECHNICAL_ERROR',\n 'BAD_WEATHER',\n 'OUT_OF_SERVICE_AREA',\n 'OUT_OF_SERVICE_TIME',\n 'WORKFORCE_NOT_AVAILABLE',\n 'CUSTOMER_INITIATED_CANCELLATION',\n ]\n setPickerOptions(options)\n setPicker(options[0])\n } else {\n const options = [\n 'TECHNICAL_ERROR',\n 'BAD_WEATHER',\n 'OUT_OF_SERVICE_AREA',\n 'OUT_OF_SERVICE_TIME',\n 'WORKFORCE_NOT_AVAILABLE',\n 'CUSTOMER_INITIATED_CANCELLATION',\n 'CAR_INACCESSIBLE',\n 'CAR_RESUME_LATER',\n 'CAR_NOT_FOUND',\n 'CAR_ALARM_ON',\n ]\n setPickerOptions(options)\n setPicker(options[0])\n }\n }, [props.serviceOrderState])\n\n return (\n props.setVisible(false)}\n swipeDirection={Platform.OS == 'android' ? ['down'] : []}\n statusBarTranslucent\n propagateSwipe={false}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n }}\n customBackdrop={\n props.setVisible(false)}>\n \n \n }\n >\n \n \n \n props.setVisible(false)} />\n \n\n \n setPicker(itemValue)}\n >\n {pickerOptions.map((item) => (\n \n ))}\n \n\n (\n \n )}\n mode='contained'\n onPress={() => {\n props.cancelServiceOrder(picker)\n toggleModal()\n }}\n >\n {i18n.t('Cancel Order')}\n \n \n {i18n.t('Cancel')}\n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n})\n\nexport default withTheme(ServiceOrderCancellationModal)\n","import React, { useEffect, useState, useRef } from 'react'\nimport {\n ScrollView,\n StyleSheet,\n View,\n TouchableWithoutFeedback,\n Dimensions,\n ActivityIndicator,\n SafeAreaView,\n Platform,\n} from 'react-native'\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport {\n Dialog,\n DialogActions,\n Text,\n Portal,\n Modal,\n TextInput,\n Button,\n withTheme,\n Caption,\n Title,\n Appbar,\n} from 'react-native-paper'\n\nimport { Ionicons } from '@expo/vector-icons'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\n// import Modal from 'react-native-modal';\nimport { AirbnbRating } from 'react-native-ratings'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\n\nconst screenWidth = Dimensions.get('window').width\nconst ServiceOrderRatingModal = ({ theme, ...props }) => {\n const toggleModal = () => {\n props.setVisible(!props.isVisible)\n }\n const [rating, setRating] = useState(3)\n const [feedbackText, setFeedbackText] = useState('')\n return (\n \n \n {i18n.t('Rate Your Order')}\n\n \n \n i18n.t(item)\n )}\n selectedColor={theme.colors.primary}\n reviewSize={15}\n reviewColor={theme.colors.text}\n unSelectedColor={theme.colors.secondary}\n defaultRating={3}\n size={20}\n onFinishRating={setRating}\n />\n\n \n \n \n {\n props.rateServiceOrder(rating, feedbackText)\n toggleModal()\n }}\n >\n {i18n.t('Ok')}\n \n \n {i18n.t('Cancel')}\n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n})\n\nexport default withTheme(ServiceOrderRatingModal)\n","import React, { useEffect, useState, useRef } from 'react'\nimport {\n ScrollView,\n StyleSheet,\n View,\n Platform,\n TouchableWithoutFeedback,\n Dimensions,\n ActivityIndicator,\n SafeAreaView,\n} from 'react-native'\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport {\n Button,\n withTheme,\n Text,\n Caption,\n Title,\n Appbar,\n List,\n} from 'react-native-paper'\nimport { Ionicons } from '@expo/vector-icons'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\nimport { Picker } from '@react-native-picker/picker'\nimport { useQuery, useMutation } from '@apollo/client'\nimport { v4 as uuid } from 'uuid'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport { extendMoment } from 'moment-range'\nimport Modal from 'react-native-modal'\nconst screenWidth = Dimensions.get('window').width\nconst moment = extendMoment(require('moment-timezone'))\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst GET_SERVICE_ORDER = gql(queries.getServiceOrder)\nconst GET_COMPANY = gql(queries.getCompany)\n//const UPDATE_SERVICE_ORDER = gql(mutations.updateServiceOrder);\n//const CREATE_COMMENT = gql(mutations.createComment);\nconst GET_EMPLOYEES = gql(`\nquery EmployeesAtTheSameCompany($providerID: ID!, $areaName: String, $serviceFacilityID: ID, $today: String!) {\n employmentByProvider(providerID: $providerID, filter: {validFrom: {lt: $today}, validUntil: {gt: $today}}) {\n nextToken\n items {\n id\n company {\n id\n employments(filter: {validFrom: {lt: $today}, validUntil: {gt: $today}}) {\n items {\n provider {\n id\n lastName\n firstName\n }\n }\n }\n franchiseContracts(filter: {areaNames: {contains: $areaName}, validFrom: {lt: $today}, validUntil: {gt: $today}}) {\n nextToken\n items {\n id\n }\n }\n serviceFacilityOwnerships(filter: {serviceFacilityID: {contains: $serviceFacilityID}, validFrom: {lt: $today}, validUntil: {gt: $today}}) {\n nextToken\n items {\n id\n }\n }\n }\n }\n }\n }\n`)\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleUpdateServiceOrder = (client, mutationData) => {\n if (mutationData && mutationData.data.updateServiceOrder) {\n const getServiceOrderData = client.readQuery({\n query: GET_SERVICE_ORDER,\n variables: { id: mutationData.data.updateServiceOrder.id },\n })\n client.writeQuery({\n query: GET_SERVICE_ORDER,\n data: {\n getServiceOrder: {\n ...getServiceOrderData.getServiceOrder,\n ...mutationData.data.updateServiceOrder,\n },\n },\n })\n }\n}\n\nconst ServiceOrderAcceptanceModal = ({ theme, ...props }) => {\n const carAvailabilityRange = moment.range(\n moment(props.serviceOrderData.carAvailableFrom),\n moment(props.serviceOrderData.carAvailableUntil)\n )\n const carAvailabilityRangeOptions = Array.from(\n carAvailabilityRange.by('minute', { step: 10, excludeEnd: false })\n )\n\n const {\n data: employeesData,\n error: queryErrorEmployeesData,\n loading: queryLoadingEmployeesData,\n refetch: refetchEmployeesData,\n } = useQuery(GET_EMPLOYEES, {\n variables: {\n providerID: props.userName,\n today: moment().format('YYYY-MM-DD'),\n areaName: props?.serviceOrderData?.areaName,\n serviceFacilityID: props?.serviceOrderData?.serviceFacilityID,\n },\n fetchPolicy: 'cache-and-network',\n })\n\n const employeesDataFiltered = employeesData\n ? {\n employmentByProvider: {\n items: employeesData?.employmentByProvider?.items.filter(\n (item) =>\n item?.company?.franchiseContracts?.items?.length > 0 ||\n item?.company?.serviceFacilityOwnerships?.items?.length > 0\n ),\n },\n }\n : undefined\n\n const [startDate, setStartDate] = useState(carAvailabilityRangeOptions[0])\n const [endDate, setEndDate] = useState(\n carAvailabilityRangeOptions[carAvailabilityRangeOptions.length - 1]\n )\n const [providerId, setProviderId] = useState()\n\n const toggleModal = () => {\n props.setVisible(!props.isVisible)\n }\n\n useEffect(() => {\n queryErrorEmployeesData &&\n console.log('E R R O R: ', queryErrorEmployeesData)\n }, [queryErrorEmployeesData])\n\n useEffect(() => {\n const defaultProviderId =\n employeesDataFiltered?.employmentByProvider?.items?.[0]?.company?.employments?.items.filter(\n (item) => item?.provider?.id\n )?.[0]?.provider?.id\n if (!!defaultProviderId) {\n setProviderId(defaultProviderId)\n }\n }, [employeesData])\n\n const getTargetTimeString = () => {\n return `${Utils.capitalizeFirstLetter(\n i18n.t('Target time')\n )}: ${Utils.formatDuration(\n moment.duration(\n Utils.calculateTargetTime(\n props?.serviceOrderData?.car?.carType?.carTypeCategoryID,\n props?.serviceOrderData?.offering,\n props?.serviceOrderData?.addons\n ).totalTime,\n 'minutes'\n )\n )}`\n }\n return (\n props.setVisible(false)}\n swipeDirection={Platform.OS == 'android' ? ['down'] : []}\n statusBarTranslucent\n propagateSwipe={false}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n }}\n customBackdrop={\n props.setVisible(false)}>\n \n \n }\n >\n \n \n \n props.setVisible(false)} />\n \n\n \n {i18n.t('Employee Name')}\n {employeesDataFiltered?.employmentByProvider &&\n (providerId ? (\n \n setProviderId(itemValue)\n }\n >\n {employeesDataFiltered?.employmentByProvider?.items?.[0]?.company?.employments?.items\n .filter((item) => item?.provider?.id)\n .map((item) => (\n \n ))}\n \n ) : (\n {i18n.t('No employees found')}\n ))}\n \n \n {i18n.t('Select start date')}\n {\n setStartDate(moment(itemValue))\n try {\n const totalTargetTime = Utils.calculateTargetTime(\n props?.serviceOrderData?.car?.carType?.carTypeCategoryID,\n props?.serviceOrderData?.offering,\n props?.serviceOrderData?.addons\n ).totalTime\n const newEndDate = moment(itemValue).add(totalTargetTime, 'minutes')\n const closestItemAfterNewEndDate = carAvailabilityRangeOptions.find(item => item > newEndDate) || carAvailabilityRangeOptions[carAvailabilityRangeOptions.length - 1];\n setEndDate(closestItemAfterNewEndDate)\n } catch (error) {\n console.error(error)\n }\n }}\n >\n {carAvailabilityRangeOptions.map((item) => (\n \n ))}\n \n \n \n {i18n.t('Select end date')}\n {\n setEndDate(moment(itemValue))\n try {\n const totalTargetTime = Utils.calculateTargetTime(\n props?.serviceOrderData?.car?.carType?.carTypeCategoryID,\n props?.serviceOrderData?.offering,\n props?.serviceOrderData?.addons\n ).totalTime\n const newStartDate = moment(itemValue).add(-totalTargetTime, 'minutes')\n\n let itemsBeforeNewStartDate = carAvailabilityRangeOptions.filter(item => item < newStartDate)\n let lastItemBeforeNewStartDate\n console.log('itemsBeforeNewStartDate', itemsBeforeNewStartDate)\n if (itemsBeforeNewStartDate?.length === 0) {\n lastItemBeforeNewStartDate = carAvailabilityRangeOptions[0]\n }\n else {\n lastItemBeforeNewStartDate = itemsBeforeNewStartDate.pop();\n }\n\n console.log('lastItemBeforeNewStartDate', lastItemBeforeNewStartDate)\n setStartDate(lastItemBeforeNewStartDate)\n } catch (error) {\n console.error(error)\n }\n\n }}\n >\n {carAvailabilityRangeOptions.map((item) => (\n \n ))}\n \n \n \n\n \n {getTargetTimeString()}\n \n (\n \n )}\n mode='contained'\n onPress={() => {\n //alert(`${providerId} ${employeesDataFiltered?.employmentByProvider?.items[0].company.id} ${startDate.toISOString()} ${endDate.toISOString()}`)\n const start = (grantedUserApprovalsParam) => props.assignServiceOrder(\n providerId,\n employeesDataFiltered?.employmentByProvider?.items?.[0]?.company\n .id,\n startDate.toISOString(),\n endDate.toISOString(),\n grantedUserApprovalsParam\n )\n props.setLastUserIntent(() => start)\n start(new Array())\n toggleModal()\n }}\n >\n {i18n.t('Assign')}\n \n \n {i18n.t('Cancel')}\n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n scrollableModal: {\n //height: 300,\n margin: 0,\n },\n})\n\nexport default withTheme(ServiceOrderAcceptanceModal)\n","import React, { useEffect, useState, useRef } from 'react';\nimport { ScrollView, StyleSheet, View, TouchableWithoutFeedback, Dimensions, ActivityIndicator, SafeAreaView, Platform } from 'react-native';\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport { Button, withTheme, Text, Paragraph, Dialog, Caption, Title, Appbar, Modal, Portal } from 'react-native-paper';\n\nimport { Ionicons } from '@expo/vector-icons';\nimport Utils from './Utils'\nimport i18n from 'i18n-js';\nimport { Picker } from '@react-native-picker/picker';\nconst screenWidth = Dimensions.get('window').width\n\nconst ConfirmApprovalDialog = ({ theme, ...props }) => {\n const toggleModal = () => { props.setVisible(!props.isVisible); };\n return (\n \n props.setVisible(false)}\n >\n {i18n.t(\"Confirm\")}\n \n {i18n.t(props?.requiredUserApprovals)}\n \n \n \n \n \n \n \n\n )\n\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n }\n});\n\nexport default withTheme(ConfirmApprovalDialog);","import React, { useEffect, useState, useRef } from 'react';\nimport { ScrollView, StyleSheet, View, TouchableWithoutFeedback, Dimensions, ActivityIndicator, SafeAreaView, Platform } from 'react-native';\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport { Button, withTheme, Text, Paragraph, Dialog, Caption, Title, Appbar, Modal, Portal } from 'react-native-paper';\n\nimport { Ionicons } from '@expo/vector-icons';\nimport Utils from './Utils'\nimport i18n from 'i18n-js';\nimport { Picker } from '@react-native-picker/picker';\nconst screenWidth = Dimensions.get('window').width\n\nconst ErrorDialog = ({ theme, ...props }) => {\n const toggleModal = () => { props.setVisible(!props.isVisible); };\n return (\n \n props.setVisible(false)}\n >\n {i18n.t(\"Error\")}\n \n {i18n.t(props?.errorMessage)}\n \n \n \n \n \n \n\n )\n\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n }\n});\n\nexport default withTheme(ErrorDialog);","import React, { useEffect, useState, useRef } from 'react'\nimport {\n ScrollView,\n StyleSheet,\n View,\n TouchableWithoutFeedback,\n Dimensions,\n ActivityIndicator,\n SafeAreaView,\n Platform,\n} from 'react-native'\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport {\n Button,\n withTheme,\n Text,\n Caption,\n Title,\n Appbar,\n} from 'react-native-paper'\n\nimport { Ionicons } from '@expo/vector-icons'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\nimport Modal from 'react-native-modal'\nimport { Picker } from '@react-native-picker/picker'\nconst screenWidth = Dimensions.get('window').width\nconst ServiceOrderSuspensionModal = ({ theme, ...props }) => {\n const toggleModal = () => {\n props.setVisible(!props.isVisible)\n }\n const [picker, setPicker] = useState('TECHNICAL_ERROR')\n const [pickerOptions, setPickerOptions] = useState([])\n\n useEffect(() => {\n const options = ['CAR_INACCESSIBLE', 'CAR_NOT_FOUND', 'CAR_ALARM_ON', 'CAR_RESUME_LATER']\n setPickerOptions(options)\n setPicker(options[0])\n }, [props.serviceOrderState])\n\n return (\n props.setVisible(false)}\n swipeDirection={[]}\n statusBarTranslucent\n propagateSwipe={false}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n }}\n customBackdrop={\n props.setVisible(false)}>\n \n \n }\n >\n \n \n {i18n.t('Select Suspension Reason')}\n \n\n setPicker(itemValue)}\n >\n {pickerOptions.map((item) => (\n \n ))}\n \n\n (\n \n )}\n mode='contained'\n onPress={() => {\n props.suspendServiceOrder(picker)\n toggleModal()\n }}\n >\n {i18n.t('Suspend Order')}\n \n \n {i18n.t('Cancel')}\n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n})\n\nexport default withTheme(ServiceOrderSuspensionModal)\n","import React from 'react';\nimport { View, StyleSheet, Animated } from 'react-native';\nimport {withTheme} from 'react-native-paper'\nconst styles = StyleSheet.create({\n imageOverlay: {\n position: 'absolute',\n left: 0,\n right: 0,\n bottom: 0,\n top: 0,\n },\n});\n\nclass ProgressiveImage extends React.Component {\n thumbnailAnimated = new Animated.Value(0);\n\n imageAnimated = new Animated.Value(0);\n\n handleThumbnailLoad = () => {\n Animated.timing(this.thumbnailAnimated, {\n toValue: 1,\n useNativeDriver: true\n }).start();\n }\n\n onImageLoad = () => {\n Animated.timing(this.imageAnimated, {\n toValue: 1,\n useNativeDriver: true\n }).start();\n }\n\n render() {\n const {\n thumbnailSource,\n source,\n style,\n ...props\n } = this.props;\n\n return (\n \n {/* */}\n \n \n );\n }\n}\n\nexport default withTheme(ProgressiveImage);\n","import { useRef, useEffect } from 'react';\n\nexport function makeCancelable(promise) {\n let isCanceled = false;\n\n const wrappedPromise = new Promise((resolve, reject) => {\n promise\n .then(val => (isCanceled ? reject(new Error({ isCanceled })) : resolve(val)))\n .catch(error => (isCanceled ? reject(new Error({ isCanceled })) : reject(error)));\n });\n\n return {\n promise: wrappedPromise,\n cancel() {\n isCanceled = true;\n },\n };\n}\n\nexport default function useCancellablePromise(cancelable = makeCancelable) {\n const emptyPromise = Promise.resolve(true);\n\n // test if the input argument is a cancelable promise generator\n if (cancelable(emptyPromise).cancel === undefined) {\n throw new Error('promise wrapper argument must provide a cancel() function')\n }\n\n const promises = useRef();\n\n useEffect(\n () => {\n promises.current = promises.current || [];\n return function cancel() {\n promises.current.forEach(p => p.cancel());\n promises.current = [];\n };\n }, []\n );\n\n function cancellablePromise(p) {\n const cPromise = cancelable(p);\n promises.current.push(cPromise);\n return cPromise.promise;\n }\n\n return { cancellablePromise };\n}","import { create } from 'zustand'\n\ninterface UpdateServiceOrderStore {\n serviceOrderId: string | null | number\n serviceOrderInput: any\n updateServiceOrderId: (id: string | null | number) => void\n updateServiceOrderInput: (input: { [key: string]: any }) => void\n}\n\nexport const useUpdateServiceOrder = create((set) => ({\n serviceOrderId: null,\n serviceOrderInput: null,\n\n updateServiceOrderId: (id) => set(() => ({ serviceOrderId: id })),\n updateServiceOrderInput: (input) => set(() => ({ serviceOrderInput: input })),\n}))\n","import gql from 'graphql-tag'\n\nexport const GET_SERVICE_ORDER = gql(\n `query GetServiceOrder($id: ID!) {\n getServiceOrder(id: $id) {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentStatus\n addons {\n addonID\n quantity\n }\n discountPercentage\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n }\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n areaName\n serviceFacilityID\n createdAt\n updatedAt\n offering {\n id\n addonOptions {\n addons {\n items {\n price\n minUnit\n maxUnit\n groupID\n exclusiveGroupID\n taskType {\n id\n name\n note\n tasks {\n items {\n id\n carTypeCategoryID\n taskTypeID\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n id\n priceCurrency\n priceType\n }\n }\n id\n }\n carTypeCategoryID\n carTypeCategory {\n id\n name\n tasks {\n items {\n id\n carTypeCategoryID\n taskTypeID\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n taskTypes {\n items {\n id\n productID\n taskTypeID\n taskType {\n name\n note\n id\n tasks {\n items {\n id\n carTypeCategoryID\n durationTarget\n }\n }\n }\n isIncluded\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n durationTarget\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n }\n}`\n)\n","import gql from 'graphql-tag'\n\nexport const UPDATE_SERVICE_ORDER = gql(\n `\n mutation UpdateServiceOrderAdvanced(\n $id: ID!\n $updateOrderInput: UpdateOrderInput!\n $ignoreAssignmentCheck: Boolean\n ) {\n updateServiceOrderAdvanced(\n id: $id\n updateOrderInput: $updateOrderInput\n ignoreAssignmentCheck: $ignoreAssignmentCheck\n ) {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n addons {\n addonID\n quantity\n }\n discountPercentage\n contactPhoneNumber\n photos {\n url\n type\n isVisible\n isRestricted\n description\n }\n carLocation {\n address {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n coordinates {\n latitude\n longitude\n }\n }\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n areaName\n serviceFacilityID\n createdAt\n updatedAt\n offering {\n id\n addonOptions {\n addons {\n items {\n price\n minUnit\n maxUnit\n groupID\n exclusiveGroupID\n taskType {\n id\n name\n note\n tasks {\n items {\n id\n carTypeCategoryID\n taskTypeID\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n id\n priceCurrency\n priceType\n }\n }\n id\n }\n carTypeCategoryID\n carTypeCategory {\n id\n name\n tasks {\n items {\n id\n carTypeCategoryID\n taskTypeID\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n taskTypes {\n items {\n id\n productID\n taskTypeID\n taskType {\n name\n note\n id\n tasks {\n items {\n id\n carTypeCategoryID\n durationTarget\n }\n }\n }\n isIncluded\n createdAt\n updatedAt\n }\n nextToken\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n durationTarget\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n owner\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n }\n nextToken\n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n car {\n id\n description\n plate\n color\n year\n isActive\n carTypeID\n carType {\n id\n make\n model\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n\n }\n photoUri\n createdAt\n updatedAt\n owner\n }\n }\n}\n`\n)\n","import gql from 'graphql-tag'\n\nexport const CREATE_COMMENT = gql(`\nmutation CreateComment(\n $input: CreateCommentInput!\n $condition: ModelCommentConditionInput\n) {\n createComment(input: $input, condition: $condition) {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n serviceOrder {\n id\n groupOrderID\n owner\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n vouchers {\n items {\n id\n serviceOrderID\n value\n valueUsed\n valueCurrency\n createdAt\n updatedAt\n }\n nextToken \n }\n areaName\n serviceFacilityID\n addons {\n addonID\n quantity\n }\n createdAt\n updatedAt\n offering {\n id\n carTypeCategoryID\n productID\n addonOptionsID\n price\n priceCurrency\n durationTarget\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n comments {\n items {\n id\n serviceOrderID\n timestamp\n message\n createdAt\n updatedAt\n owner\n }\n nextToken \n }\n events {\n items {\n id\n serviceOrderID\n eventType\n eventCode\n description\n createdAt\n updatedAt\n owner\n }\n nextToken \n }\n ratings {\n items {\n id\n serviceOrderID\n rating\n ratingSource\n feedbackText\n createdAt\n updatedAt\n owner\n }\n nextToken \n }\n assignments {\n items {\n id\n serviceOrderID\n providerID\n companyID\n startDate\n finishDate\n isActive\n createdAt\n updatedAt\n owner\n provider {\n id\n birthday\n email\n firstName\n lastName\n gender\n phoneNumber\n createdAt\n updatedAt\n owner\n employments {\n nextToken\n }\n }\n company {\n id\n billingAddress {\n name\n street\n district\n region\n subregion\n city\n country\n isoCountryCode\n postalCode\n timezone\n }\n isoCountryCode\n name\n franchiseContracts {\n nextToken\n }\n createdAt\n updatedAt\n owner\n }\n }\n nextToken\n }\n car {\n id\n owner\n description\n plate\n color\n year\n isActive\n carTypeID\n photoUri\n createdAt\n updatedAt\n }\n }\n owner\n }\n}\n`)\n","import React, { useEffect, useState, useRef } from 'react'\nimport { useQuery, useMutation, useLazyQuery } from '@apollo/client'\nimport {\n TouchableHighlight,\n View,\n StyleSheet,\n ScrollView,\n Platform,\n Dimensions,\n} from 'react-native'\nimport { v4 as uuid } from 'uuid'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport {\n withTheme,\n IconButton,\n TextInput,\n List,\n Portal,\n FAB,\n Card,\n Paragraph,\n Caption,\n ProgressBar,\n Snackbar,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport { AirbnbRating } from 'react-native-ratings'\nimport AddPhotoModal from './AddPhotoModal'\nimport ImageSwiperModal from './ImageSwiperModal'\nimport ServiceOrderCancellationModal from './ServiceOrderCancellationModal'\nimport ServiceOrderRatingModal from './ServiceOrderRatingModal'\nimport ServiceOrderAcceptanceModal from './ServiceOrderAcceptanceModal'\nimport ConfirmApprovalDialog from './ConfirmApprovalDialog'\nimport ErrorDialog from './ErrorDialog'\nimport * as Linking from 'expo-linking'\nimport ServiceOrderSuspensionModal from './ServiceOrderSuspensionModal.js'\nimport { showLocation } from 'react-native-map-link'\nimport ProgressiveImage from './ProgressiveImage'\nimport useCancellablePromise from './CancelablePromiseHook'\nimport { Storage } from 'aws-amplify'\nimport * as Clipboard from 'expo-clipboard'\nimport { Marker } from 'react-native-maps'\nimport { useUpdateServiceOrder } from './lib/stores/updateServiceOrder'\n\nconst moment = require('moment-timezone')\nlet MapView, SwipeRender\n\nMapView = require('react-native-maps').default\n\nif (Platform.OS !== 'web') {\n SwipeRender = require('react-native-swipe-render').default\n}\n\n/* ----------------------------- DocumentNodes ----------------------------- */\nimport { GET_SERVICE_ORDER } from './lib/queries/getServiceOrder'\nimport { UPDATE_SERVICE_ORDER } from './lib/queries/updateServiceOrder'\nimport { CREATE_COMMENT } from './lib/queries/createComment'\n\nconst ASSIGN_SERVICE_ORDER = gql(mutations.assignServiceOrder)\nconst GET_USER_INFO = gql(queries.getUserInfo)\nconst UNASSIGN_SERVICE_ORDER = gql(mutations.unassignServiceOrder)\nconst CANCEL_SERVICE_ORDER = gql(mutations.cancelServiceOrder)\nconst REVERT_SERVICE_ORDER_TO_ACCEPTED = gql(\n mutations.revertServiceOrderToAccepted\n)\nconst PRESTART_SERVICE_ORDER = gql(mutations.prestartServiceOrder)\nconst START_SERVICE_ORDER = gql(mutations.startServiceOrder)\nconst COMPLETE_SERVICE_ORDER = gql(mutations.completeServiceOrder)\nconst RATE_SERVICE_ORDER = gql(mutations.rateServiceOrder)\nconst SUSPEND_SERVICE_ORDER = gql(mutations.suspendServiceOrder)\nconst RESUME_SERVICE_ORDER = gql(mutations.resumeServiceOrder)\nconst CONFIRM_SERVICE_ORDER_BANK_TRANSFER = gql(mutations.confirmServiceOrderBankTransfer)\n/* -------------------------- Cache Update Handler -------------------------- */\n\nimport { handleUpdateServiceOrder } from './lib/cache/updateServiceOrder'\nimport { handleUpdateComment } from './lib/cache/updateComment'\n\n/* -------------------------------- Component ------------------------------- */\n\nconst ServiceOrderComponent = ({ theme, route, navigation, ...props }) => {\n const { cancellablePromise } = useCancellablePromise()\n const [dimensions, setDimensions] = useState({\n window: Dimensions.get('window'),\n screen: Dimensions.get('screen'),\n })\n const onDimensionsChange = ({ window, screen }) => {\n setDimensions({ window, screen })\n }\n const formRef = useRef()\n\n const serviceOrderId = useUpdateServiceOrder((state) => state.serviceOrderId)\n const serviceOrderInput = useUpdateServiceOrder(\n (state) => state.serviceOrderInput\n )\n const updateServiceOrderId = useUpdateServiceOrder(\n (state) => state.updateServiceOrderId\n )\n\n useEffect(() => {\n if (!!route.params?.serviceOrder?.id) {\n updateServiceOrderId(route.params.serviceOrder.id)\n }\n }, [route.params?.serviceOrder?.id])\n\n const {\n data,\n error: queryError,\n loading: queryLoading,\n refetch,\n } = useQuery(GET_SERVICE_ORDER, {\n variables: { id: serviceOrderId },\n fetchPolicy: 'cache-and-network',\n })\n const [\n updateServiceOrderMutation,\n { error: mutationError, loading: mutationLoading },\n ] = useMutation(UPDATE_SERVICE_ORDER, {\n update: (client, mutationData) => {\n handleUpdateServiceOrder(client, mutationData)\n },\n })\n const [isFABVisible, setFABVisible] = useState(true)\n const [user, setUser] = useState()\n const [addons, setAddons] = useState({})\n const [isCancellationModalVisible, setCancellationModalVisible] = useState()\n const [isSuspensionModalVisible, setSuspensionModalVisible] = useState()\n const [isRatingModalVisible, setRatingModalVisible] = useState(false)\n const [isAddPhotoModalVisible, setAddPhotoModalVisible] = useState(false)\n const [imageSwiperModalState, setImageSwiperModalState] = useState({\n isVisible: false,\n index: 0,\n })\n const [requiredUserApprovals, setRequiredUserApprovals] = useState([])\n const [lastUserIntent, setLastUserIntent] = useState()\n\n const [isConfirmApprovalModalVisible, setConfirmApprovalModalVisible] =\n useState(false)\n const [lastError, setLastError] = useState()\n const [isErrorModalVisible, setErrorModalVisible] = useState(false)\n const [isAcceptanceModalVisible, setAcceptanceModalVisible] = useState(false)\n const [showEvents, setShowEvents] = useState(false)\n const [bannerState, setBannerState] = useState({\n message: null,\n timerId: null,\n })\n const [\n createCommentMutation,\n { error: mutationErrorComment, loading: mutationLoadingComment },\n ] = useMutation(CREATE_COMMENT, {\n update: (client, mutationData) => handleUpdateComment(client, mutationData),\n })\n\n React.useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n setFABVisible(true)\n })\n\n //? Return the function to unsubscribe from the event so it gets removed on unmount\n return unsubscribe\n }, [navigation])\n\n const showBannerMessage = (message) => {\n if (bannerState?.timerId) {\n clearTimeout(bannerState?.timerId)\n }\n\n setBannerState({\n message: message,\n timerId: setTimeout(\n () => setBannerState({ message: null, timerId: null }),\n 2000\n ),\n })\n }\n\n const [\n assignMutation,\n { error: mutationErrorAssignment, loading: mutationLoadingAssignment },\n ] = useMutation(ASSIGN_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'assignServiceOrder'),\n })\n\n const [\n unassignMutation,\n { error: mutationErrorUnassignment, loading: mutationLoadingUnassignment },\n ] = useMutation(UNASSIGN_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'unassignServiceOrder'),\n })\n\n const [\n cancelMutation,\n { error: mutationErrorCancellation, loading: mutationLoadingCancellation },\n ] = useMutation(CANCEL_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'cancelServiceOrder'),\n })\n\n const [\n prestartMutation,\n { error: mutationErrorPrestarting, loading: mutationLoadingPrestarting },\n ] = useMutation(PRESTART_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'prestartServiceOrder'),\n })\n\n const [\n revertToAcceptedMutation,\n {\n error: mutationErrorRevertToAccepted,\n loading: mutationLoadingRevertToAccepted,\n },\n ] = useMutation(REVERT_SERVICE_ORDER_TO_ACCEPTED, {\n onCompleted: (data) =>\n handleMutationResponse(data, 'revertServiceOrderToAccepted'),\n })\n\n const [\n startMutation,\n { error: mutationErrorStarting, loading: mutationLoadingStarting },\n ] = useMutation(START_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'startServiceOrder'),\n })\n\n const [\n confirmBankTransferMutation,\n { error: mutationErrorConfirmBankTransfer, loading: mutationLoadingConfirmBankTransfer },\n ] = useMutation(CONFIRM_SERVICE_ORDER_BANK_TRANSFER, {\n onCompleted: (data) => handleMutationResponse(data, 'confirmServiceOrderBankTransfer'),\n })\n\n const [\n completeMutation,\n { error: mutationErrorCompletion, loading: mutationLoadingCompletion },\n ] = useMutation(COMPLETE_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'completeServiceOrder'),\n })\n\n const [\n rateMutation,\n { error: mutationErrorRating, loading: mutationLoadingRating },\n ] = useMutation(RATE_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'rateServiceOrder'),\n })\n\n const [\n suspendMutation,\n { error: mutationErrorSuspension, loading: mutationLoadingSuspension },\n ] = useMutation(SUSPEND_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'suspendServiceOrder'),\n })\n\n const [\n resumeMutation,\n { error: mutationErrorResume, loading: mutationLoadingResume },\n ] = useMutation(RESUME_SERVICE_ORDER, {\n onCompleted: (data) => handleMutationResponse(data, 'resumeServiceOrder'),\n })\n\n const [\n getUserInfo,\n {\n data: userInfoData,\n error: queryErrorGetUser,\n loading: queryLoadingGetUser,\n },\n ] = useLazyQuery(GET_USER_INFO)\n\n useEffect(() => {\n if (!!route.params?.editedServiceOrder) {\n updateServiceOrder()\n }\n }, [route.params?.editedServiceOrder])\n\n const handleMutationResponse = (data, fieldName) => {\n // console.log(data)\n if (\n data[fieldName]?.result == 'NO_OPERATION' &&\n data[fieldName]?.resultReason == 'MISSING_APPROVAL'\n ) {\n setRequiredUserApprovals(data[fieldName]?.requiredUserApprovals)\n setConfirmApprovalModalVisible(true)\n } else if (data[fieldName]?.result == 'SUCCESS') {\n refetch()\n } else if (data[fieldName]?.result == 'FAILED') {\n setErrorModalVisible(true)\n setLastError(data[fieldName]?.resultReason)\n refetch()\n } else {\n setErrorModalVisible(true)\n setLastError('UNKNOWN_ERROR')\n refetch()\n }\n }\n\n useEffect(() => {\n Utils.fetchUser(setUser)\n const dimensionsHandler = Dimensions.addEventListener(\n 'change',\n onDimensionsChange\n )\n return () => {\n dimensionsHandler.remove()\n }\n }, [])\n\n useEffect(() => {\n if (\n queryError ||\n mutationError ||\n mutationErrorComment ||\n mutationErrorAssignment ||\n mutationErrorCancellation ||\n mutationErrorPrestarting ||\n mutationErrorCompletion ||\n mutationErrorRating ||\n mutationErrorSuspension ||\n mutationErrorResume ||\n queryErrorGetUser ||\n mutationErrorRevertToAccepted\n ) {\n console.log(\n 'E R R O R: ',\n queryError,\n mutationError,\n mutationErrorComment,\n mutationErrorAssignment,\n mutationErrorCancellation,\n mutationErrorPrestarting,\n mutationErrorCompletion,\n mutationErrorRating,\n mutationErrorSuspension,\n mutationErrorResume,\n queryErrorGetUser,\n mutationErrorRevertToAccepted\n )\n }\n }, [\n queryErrorGetUser,\n queryError,\n mutationError,\n mutationErrorComment,\n mutationErrorAssignment,\n mutationErrorCancellation,\n mutationErrorPrestarting,\n mutationErrorCompletion,\n mutationErrorRating,\n mutationErrorSuspension,\n mutationErrorResume,\n mutationErrorRevertToAccepted,\n navigation,\n ])\n\n const resetAddonsState = () => {\n if (\n data?.getServiceOrder?.offering?.addonOptions?.addons?.items &&\n data?.getServiceOrder?.addons\n ) {\n const addonsAllZero =\n data?.getServiceOrder?.offering?.addonOptions?.addons?.items.reduce(\n (prev, curr) => {\n return { ...prev, [curr.id]: 0 }\n },\n {}\n )\n const addonsValidValues = data?.getServiceOrder?.addons.reduce(\n (prev, curr) => {\n return { ...prev, [curr.addonID]: curr.quantity }\n },\n {}\n )\n setAddons({ ...addonsAllZero, ...addonsValidValues })\n }\n }\n\n const [imageUrls, setImageUrls] = React.useState({})\n\n const photosFilterCondition = (item) => {\n if (Utils.isUserProvider(user)) {\n return !!item.isVisible && imageUrls.hasOwnProperty(item.url)\n } else {\n return (\n !!item.isVisible &&\n !item.isRestricted &&\n imageUrls.hasOwnProperty(item.url)\n )\n }\n }\n const photosFiltered = data?.getServiceOrder?.photos\n ? data?.getServiceOrder?.photos.filter((item) =>\n photosFilterCondition(item)\n )\n : []\n const fetchImageUrls = async () => {\n if (data?.getServiceOrder?.photos) {\n const imageUrlsAdded = { ...imageUrls }\n await Promise.all(\n data?.getServiceOrder?.photos\n .filter((item) => !!item.isVisible)\n .map(async (item) => {\n if (item?.url && !(item.url in imageUrls)) {\n const responseUrl = await cancellablePromise(\n Storage.get(item.url)\n )\n try {\n imageUrlsAdded[item.url] = responseUrl\n } catch (err) {\n console.log('failed to load image :' + responseUrl)\n }\n }\n })\n )\n setImageUrls(imageUrlsAdded)\n }\n }\n\n const setClipboardWithBannerConfirmation = async (message) => {\n await Clipboard.setStringAsync(message)\n showBannerMessage(i18n.t('Copied'))\n }\n\n useEffect(() => {\n resetAddonsState()\n fetchImageUrls()\n }, [data?.getServiceOrder])\n\n const updateServiceOrder = () => {\n updateServiceOrderMutation({\n variables: {\n id: serviceOrderId,\n updateOrderInput: serviceOrderInput,\n },\n })\n }\n\n const assignServiceOrder = (providerID, companyID, startDate, finishDate, grantedUserApprovals) => {\n assignMutation({\n variables: {\n serviceOrderId: serviceOrderId,\n providerId: providerID,\n startDate,\n finishDate,\n grantedUserApprovals,\n },\n })\n }\n\n const regionFrom = (lat, lon, distance) => {\n distance = distance / 2\n const circumference = 40075\n const oneDegreeOfLatitudeInMeters = 111.32 * 1000\n const angularDistance = distance / circumference\n\n const latitudeDelta = distance / oneDegreeOfLatitudeInMeters\n const longitudeDelta = Math.abs(\n Math.atan2(\n Math.sin(angularDistance) * Math.cos(lat),\n Math.cos(angularDistance) - Math.sin(lat) * Math.sin(lat)\n )\n )\n\n return {\n latitude: lat,\n longitude: lon,\n latitudeDelta,\n longitudeDelta,\n }\n }\n\n const createComment = (values, setFieldValue) => {\n if (values?.newComment)\n createCommentMutation({\n variables: {\n input: {\n id: uuid(),\n serviceOrderID: values?.getServiceOrder?.id ?? 'undefined',\n timestamp: moment().toISOString(),\n message: values?.newComment,\n },\n },\n })\n setFieldValue('newComment', ' ')\n }\n\n const addServiceOrderPhoto = async (serviceOrderPhotos) => {\n console.log('addServiceOrderPhoto called')\n const existingPhotos = data?.getServiceOrder?.photos\n ? data?.getServiceOrder?.photos.map((item) => {\n return {\n url: item.url,\n type: item.type,\n description: item.description,\n isVisible: item.isVisible,\n isRestricted: item.isRestricted,\n }\n })\n : []\n\n await updateServiceOrderMutation({\n variables: {\n id: serviceOrderId,\n updateOrderInput: {\n photos: [...existingPhotos, ...serviceOrderPhotos],\n },\n ignoreAssignmentCheck: true\n },\n })\n }\n\n const removeServiceOrderPhoto = (serviceOrderPhoto) => {\n console.log('removeServiceOrderPhoto called')\n const existingPhotosExcluded = data?.getServiceOrder?.photos\n ? data?.getServiceOrder?.photos\n .filter((item) => item.url != serviceOrderPhoto.url)\n .map((item) => {\n return {\n url: item.url,\n type: item.type,\n description: item.description,\n isVisible: item.isVisible,\n isRestricted: item.isRestricted,\n }\n })\n : []\n\n updateServiceOrderMutation({\n variables: {\n id: serviceOrderId,\n updateOrderInput: {\n photos: [\n ...existingPhotosExcluded,\n {\n url: serviceOrderPhoto.url,\n type: serviceOrderPhoto.type,\n description: serviceOrderPhoto.description,\n isVisible: false,\n isRestricted: serviceOrderPhoto.isRestricted,\n },\n ],\n },\n ignoreAssignmentCheck: true\n },\n })\n }\n\n let assignedProviderName = ' '\n let assignedInterval = ' '\n let provider\n\n const assignment = data?.getServiceOrder?.assignments?.items.find(\n (item) => item.isActive\n )\n if (assignment) {\n provider = assignment.provider\n let fullName = `${provider?.lastName || \"\"} ${provider?.firstName || \"\"}`\n if(fullName.trim() === \"\") {\n fullName = i18n.t(\"Unknown Employee\")\n }\n assignedProviderName = `${fullName} - ${assignment.company.name || \"Unknown Company\"}${provider?.phoneNumber ? ` (${provider.phoneNumber})` : ''}`\n assignedInterval = `${moment(assignment.startDate).format(\n 'L LT'\n )} - ${moment(assignment.finishDate).format('L LT')}`\n } else {\n if (data?.getServiceOrder?.assignments?.items) {\n assignedProviderName = i18n.t('None')\n assignedInterval = i18n.t('None')\n }\n }\n const isLoading =\n queryLoadingGetUser ||\n queryLoading ||\n mutationLoading ||\n mutationLoadingComment ||\n mutationLoadingAssignment ||\n mutationLoadingUnassignment ||\n mutationLoadingCancellation ||\n mutationLoadingPrestarting ||\n mutationLoadingStarting ||\n mutationLoadingCompletion ||\n mutationLoadingRating ||\n mutationLoadingSuspension ||\n mutationLoadingResume ||\n mutationLoadingRevertToAccepted\n\n const getUserType = () => {\n switch (true) {\n case Utils.isUserProvider(user):\n return 'PROVIDER'\n case Utils.isUserCustomer(user):\n return 'CUSTOMER'\n default:\n return 'UNKNOWN'\n }\n }\n const relevantRatings = data?.getServiceOrder?.ratings?.items.filter(\n (item) => item.ratingSource == getUserType()\n )\n const sumRating = relevantRatings\n ? relevantRatings.reduce((prev, curr) => prev + curr.rating, 0)\n : NaN\n const meanRating = !isNaN(sumRating)\n ? sumRating / relevantRatings.length\n : NaN\n\n const [state, setState] = React.useState({ open: false })\n\n const onStateChange = ({ open }) => setState({ open })\n\n const { open } = state\n\n const getExtraDirtyStatus = () => {\n return data?.getServiceOrder?.isExtraDirty\n ? `, ${i18n.t('Extra dirty').toLowerCase()}`\n : ''\n }\n const getCarString = (car) => {\n if (!car) return ' '\n\n const plate = car.plate || ' '\n const make = car.carType.make || ' '\n const model = car.carType.model || ' '\n const color = car.color ? `(${i18n.t(car.color)})` : ''\n\n if (Utils.isUserProvider(user)) {\n const category = car?.carType?.carTypeCategory?.name\n ? `- ${i18n.t(car?.carType?.carTypeCategory?.name)}`\n : ''\n return `${plate} ${make} ${model} ${color} ${category}${getExtraDirtyStatus()}`\n }\n\n return `${plate} ${make} ${model} ${color}${getExtraDirtyStatus()}`\n }\n const navigateToEditOrder = () => {\n setFABVisible(false)\n navigation.navigate(\n 'Select Service',\n Utils.getSelectServiceOrderParams(data?.getServiceOrder, true)\n )\n }\n const getTargetTimeString = (values) => {\n return Utils.isUserProvider(user)\n ? ` (${Utils.formatDuration(\n moment.duration(\n Utils.calculateTargetTime(\n values?.getServiceOrder?.car?.carType?.carTypeCategoryID,\n values?.getServiceOrder?.offering,\n values?.getServiceOrder?.addons\n ).totalTime,\n 'minutes'\n )\n )})`\n : ''\n }\n\n return (\n <>\n \n (\n \n )}\n >\n {bannerState?.message}\n \n \n {isConfirmApprovalModalVisible &&\n {\n if (lastUserIntent) {\n lastUserIntent(requiredUserApprovals)\n }\n setRequiredUserApprovals(new Array())\n setLastUserIntent(null)\n }}\n cancelled={() => {\n setRequiredUserApprovals(new Array())\n setLastUserIntent(null)\n }}\n />\n }\n {isErrorModalVisible &&\n \n }\n {isRatingModalVisible &&\n {\n const rate = () =>\n rateMutation({\n variables: { serviceOrderId: serviceOrderId, rating: rating },\n })\n setLastUserIntent(() => rate)\n rate()\n }}\n />\n }\n {isAddPhotoModalVisible && (\n \n )}\n\n {data?.getServiceOrder && Utils.isUserProvider(user) && (\n <>\n {isCancellationModalVisible &&\n {\n const cancel = (grantedUserApprovalsParam) =>\n cancelMutation({\n variables: {\n serviceOrderId: serviceOrderId,\n grantedUserApprovals: grantedUserApprovalsParam,\n reason: stateReason,\n },\n })\n setLastUserIntent(() => cancel)\n cancel(new Array())\n }}\n />\n }\n {isSuspensionModalVisible &&\n {\n const suspend = (grantedUserApprovalsParam) =>\n suspendMutation({\n variables: {\n serviceOrderId: serviceOrderId,\n grantedUserApprovals: grantedUserApprovalsParam,\n reason: stateReason,\n },\n })\n setLastUserIntent(() => suspend)\n suspend(new Array())\n }}\n />\n }\n {isAcceptanceModalVisible &&\n \n }\n \n )}\n {isLoading && (\n \n \n \n )}\n \n \n {({ handleChange, handleBlur, setFieldValue, values }) => {\n const priceObject = Utils.calculatePrice(\n values?.getServiceOrder?.offering,\n values?.getServiceOrder?.addons,\n values?.getServiceOrder?.discountPercentage,\n values?.getServiceOrder?.vouchers?.items\n )\n let priceString = Utils.formatCurrency(\n priceObject.totalPrice,\n values?.getServiceOrder?.offering?.priceCurrency\n )\n if (\n (priceObject?.totalDiscountPercentage > 0 ||\n priceObject?.voucherTotalValue > 0) &&\n Utils.isProviderApp()\n ) {\n priceString +=\n ' (' +\n Utils.formatCurrency(\n priceObject?.totalPriceWithoutDiscount,\n values?.getServiceOrder?.offering?.priceCurrency\n )\n if (\n priceObject?.totalDiscountPercentage > 0 &&\n priceObject?.voucherTotalValue == 0\n ) {\n priceString += `, -${priceObject?.totalDiscountPercentage}%`\n } else if (\n priceObject?.totalDiscountPercentage == 0 &&\n priceObject?.voucherTotalValue > 0\n ) {\n priceString += `, -${Utils.formatCurrency(\n priceObject?.voucherTotalValue,\n values?.getServiceOrder?.offering?.priceCurrency\n )}`\n } else {\n priceString += `, -${\n priceObject?.totalDiscountPercentage\n }%, -${Utils.formatCurrency(\n priceObject?.voucherTotalValue,\n values?.getServiceOrder?.offering?.priceCurrency\n )}`\n }\n priceString += ')'\n }\n\n const getPaymentMethod = () => {\n switch (true) {\n case values?.getServiceOrder?.paymentMethodID == 'APPLE_PAY':\n return i18n.t('Apple Pay')\n case values?.getServiceOrder?.paymentMethodID == 'DKVCARD':\n return i18n.t('DKV Card')\n case values?.getServiceOrder?.paymentMethodID == 'SHELLCARD':\n return i18n.t('Shell Fuel Card')\n case values?.getServiceOrder?.paymentMethodID ==\n 'INVOICE_PAYMENT':\n return i18n.t('Invoice Payment')\n case values?.getServiceOrder?.paymentMethodID == 'BANK_TRANSFER':\n if(values?.getServiceOrder?.paymentIntentStatus == 'succeeded') {\n return `${i18n.t('Bank Transfer')} (${i18n.t('Paid')})`\n } else {\n return `${i18n.t('Bank Transfer')} (${i18n.t('Pending Confirmation')})`\n }\n case values?.getServiceOrder?.paymentMethodID.startsWith(\"pm_\"):\n return i18n.t('Credit or debit card')\n default:\n return i18n.t('Unknown Payment Method')\n }\n }\n\n return (\n \n {/* {JSON.stringify(userInfoData)} */}\n \n \n (\n \n )}\n size={20}\n />\n ) : null\n }\n />\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n getCarString(values?.getServiceOrder?.car)\n )\n }}\n />\n ) : null\n }\n />\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n `${values?.getServiceOrder?.offering?.product?.productPackage?.name} - ${values?.getServiceOrder?.offering?.product?.productCategory?.name}`\n )\n }}\n />\n ) : null\n }\n />\n {values?.getServiceOrder?.addons?.length > 0 && (\n {\n const durationTarget = item?.taskType?.tasks?.items?.find(\n (item) => item.carTypeCategoryID == values?.getServiceOrder?.car?.carType?.carTypeCategoryID\n )?.durationTarget\n\n return `${i18n.t(item?.taskType?.name, {\n defaultValue:\n item?.taskType?.name ||\n i18n.t('unknown service'),\n })} ${!!durationTarget ? \"[\"+durationTarget+\" \" + i18n.t(\"minutes\")+\"]\" : \"\"} x ${item?.quantity}`\n }\n )\n .join('\\n')}`}\n label={i18n.t('Additional Services')}\n editable={false}\n dense={true}\n multiline={true}\n style={{ backgroundColor: theme.colors.surface }}\n right={\n Utils.isUserProvider(user) ? (\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n `${Utils.enrichAddons(\n values?.getServiceOrder?.addons,\n values?.getServiceOrder?.offering\n )\n .map(\n (item) => {\n const durationTarget = item?.taskType?.tasks?.items?.find(\n (item) => item.carTypeCategoryID == values?.getServiceOrder?.car?.carType?.carTypeCategoryID\n )?.durationTarget\n\n return `${i18n.t(item?.taskType?.name, {\n defaultValue:\n item?.taskType?.name ||\n i18n.t('unknown service'),\n })} ${!!durationTarget ? \"[\"+durationTarget+\" \" + i18n.t(\"minutes\")+\"]\" : \"\"} x ${item?.quantity}`\n }\n )\n .join('\\n')}`\n )\n }}\n />\n ) : null\n }\n />\n )}\n\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(`${priceString}`)\n }}\n />\n ) : null\n }\n />\n\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n `${moment(\n values?.getServiceOrder?.carAvailableFrom\n ).format('L LT')} - ${moment(\n values?.getServiceOrder?.carAvailableUntil\n ).format('L LT')}`\n )\n }}\n />\n ) : null\n }\n />\n\n {Utils.isUserCustomer(user) && assignment && (\n <>\n \n (\n \n )}\n size={20}\n onPress={() => {\n Linking.openURL(\n `tel:${provider?.phoneNumber}`\n )\n }}\n />\n }/>\n \n )}\n {Utils.isUserCustomer(user) ? (\n \n ) : (\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n values?.getServiceOrder?.carLocation.address?.name\n )\n }}\n />\n }\n />\n )}\n {Utils.isUserProvider(user) && (\n <>\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n `${values?.getServiceOrder?.id || ' '}`\n )\n }}\n />\n }\n />\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n `${values?.getServiceOrder?.owner || ' '}`\n )\n }}\n />\n ) : (\n (\n \n )}\n size={20}\n onPress={() => {\n getUserInfo({\n variables: { serviceOrderId: serviceOrderId },\n fetchPolicy: 'network-only',\n })\n }}\n />\n )\n }\n />\n {userInfoData?.getUserInfo?.result == 'SUCCESS' &&\n userInfoData?.getUserInfo?.phoneNumber && (\n (\n \n )}\n size={20}\n onPress={() => {\n Linking.openURL(\n `tel:${userInfoData?.getUserInfo?.phoneNumber}`\n )\n }}\n />\n }\n />\n )}\n {userInfoData?.getUserInfo?.result == 'SUCCESS' &&\n userInfoData?.getUserInfo?.email && (\n (\n \n )}\n size={20}\n onPress={() => {\n Linking.openURL(\n `mailto:${userInfoData?.getUserInfo?.email}`\n )\n }}\n />\n }\n />\n )}\n\n (\n \n )}\n size={20}\n onPress={() => {\n Linking.openURL(\n `tel:${values?.getServiceOrder?.contactPhoneNumber}`\n )\n }}\n />\n ) : null\n }\n />\n \n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n `${assignedProviderName || ' '}`\n )\n }}\n />\n ) : null\n }\n />\n (\n \n )}\n size={20}\n onPress={() => {\n setClipboardWithBannerConfirmation(\n `${assignedInterval || ' '}`\n )\n }}\n />\n ) : null\n }\n />\n \n )}\n\n {!!meanRating && !isNaN(meanRating) && (\n (\n \n )}\n />\n )}\n\n {Platform.OS != 'web' &&\n values?.getServiceOrder?.carLocation?.coordinates\n ?.latitude &&\n values?.getServiceOrder?.carLocation?.coordinates\n ?.longitude && (\n \n {values?.getServiceOrder?.carLocation?.coordinates\n ?.latitude &&\n values?.getServiceOrder?.carLocation?.coordinates\n ?.longitude && (\n \n )}\n \n )}\n {Platform.OS == 'web' &&\n values?.getServiceOrder?.carLocation?.coordinates\n ?.latitude &&\n values?.getServiceOrder?.carLocation?.coordinates\n ?.longitude && (\n \n {values?.getServiceOrder?.carLocation?.coordinates\n ?.latitude &&\n values?.getServiceOrder?.carLocation?.coordinates\n ?.longitude && (\n \n )}\n \n )}\n\n {photosFiltered?.length > 0 && (\n \n {photosFiltered.map((item, idx) => (\n \n {\n if (Platform.OS != 'web') {\n setImageSwiperModalState({\n isVisible: true,\n index: idx,\n })\n } else {\n window.open(imageUrls[item.url], '_blank')\n }\n }}\n >\n \n \n \n {item?.isRestricted && (\n \n )}\n {`${i18n.t(item?.type)}`}\n \n \n ))}\n \n )}\n \n {i18n.t('Comments')}\n\n {/* {JSON.stringify(values?.getServiceOrder?.comments)} */}\n {values?.getServiceOrder?.comments &&\n [...(values?.getServiceOrder?.comments?.items ?? [])]\n .sort((a, b) =>\n moment(a.timestamp) > moment(b.timestamp) ? 1 : -1\n )\n .map((item) => (\n \n \n {`${item.message}`}\n {`${\n user?.username\n ? item.owner == user?.username\n ? i18n.t('by me') + ','\n : i18n.t('by CleenUp') + ','\n : ' '\n } ${moment(item.timestamp).format(\n 'LLL'\n )}`}\n \n \n ))}\n \n {\n if(!!values?.newComment && values?.newComment != '') {\n createComment(values, setFieldValue)\n }\n }\n }\n testID={'orderCommentInput'}\n right={\n \n {\n if(!!values?.newComment && values?.newComment != '') {\n createComment(values, setFieldValue)\n }\n }\n }\n color={theme.colors.primary}\n size={20}\n />\n }\n />\n \n {Utils.isUserProvider(user) &&\n values?.getServiceOrder?.events && (\n \n setShowEvents(!showEvents)}\n >\n {[...(values?.getServiceOrder?.events?.items ?? [])]\n .sort((a, b) =>\n moment(a.updatedAt) < moment(b.updatedAt) ? 1 : -1\n )\n .map((item) => (\n \n ))}\n \n \n )}\n \n \n )\n }}\n \n \n \n\n {Utils.isUserCustomer(user) &&\n data?.getServiceOrder?.state &&\n data?.getServiceOrder?.state != 'PENDING_WITH_CUSTOMER' &&\n data?.getServiceOrder?.state != 'CANCELLED' &&\n data?.getServiceOrder?.state != 'STARTED' &&\n !(data?.getServiceOrder?.state == 'FINISHED' && !isNaN(meanRating)) &&\n data?.getServiceOrder?.state != 'FAILED' && (\n // \n // \n\n // {data?.getServiceOrder?.state == \"SUBMITTED\" || data?.getServiceOrder?.state == \"ACCEPTED\" || data?.getServiceOrder?.state == \"PRESTARTED\" ?\n // \n // :\n // data?.getServiceOrder?.state == \"FINISHED\" ?\n // \n // :\n\n // null\n // }\n\n // \n // \n\n // \n // {data?.getServiceOrder?.state == \"SUBMITTED\" || data?.getServiceOrder?.state == \"ACCEPTED\" || data?.getServiceOrder?.state == \"PRESTARTED\" || data?.getServiceOrder?.state == \"SOS\" ?\n // {\n // const cancel = (grantedUserApprovalsParam) => cancelMutation({ variables: { serviceOrderId: serviceOrderId, grantedUserApprovals: grantedUserApprovalsParam, reason: \"NO_REASON\" } })\n // setLastUserIntent(() => cancel)\n // cancel(new Array())\n // }}\n // testID={\"Cancel Order\"}\n // />\n // :\n // data?.getServiceOrder?.state == \"FINISHED\" ?\n // {\n // setRatingModalVisible(true)\n // }}\n // testID={\"Rate\"}\n // />\n // :\n // null\n // }\n // \n \n (\n \n ),\n label: i18n.t('Cancel Order'),\n testID: 'Cancel Order',\n style: { backgroundColor: theme.colors.error },\n color: theme.colors.onError,\n onPress: () => {\n const cancel = (grantedUserApprovalsParam) =>\n cancelMutation({\n variables: {\n serviceOrderId: serviceOrderId,\n grantedUserApprovals: grantedUserApprovalsParam,\n reason: 'NO_REASON',\n },\n })\n setLastUserIntent(() => cancel)\n cancel(new Array())\n },\n },\n {\n icon: ({ size, color }) => (\n \n ),\n testID: 'Edit Order',\n label: i18n.t('Edit Order'),\n onPress: navigateToEditOrder,\n },\n ].filter(Boolean)\n : data?.getServiceOrder?.state == 'FINISHED'\n ? [\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Rate'),\n onPress: () => setRatingModalVisible(true),\n testID: 'Rate',\n },\n ].filter(Boolean)\n : []\n }\n onStateChange={onStateChange}\n onPress={() => {\n if (open) {\n // do something if the speed dial is open\n }\n }}\n />\n \n )}\n\n {Utils.isUserProvider(user) &&\n data?.getServiceOrder?.state &&\n data?.getServiceOrder?.state != 'CANCELLED' &&\n data?.getServiceOrder?.state != 'FAILED' && (\n \n (\n \n ),\n label: i18n.t('Confirm Bank Transfer Received'),\n onPress: () =>\n {\n const start = (grantedUserApprovalsParam) =>\n confirmBankTransferMutation({\n variables: {\n serviceOrderId: serviceOrderId,\n grantedUserApprovals: grantedUserApprovalsParam,\n reason: 'NO_REASON',\n },\n })\n setLastUserIntent(() => start)\n start(new Array())\n }\n } : null,\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Cancel Order'),\n style: { backgroundColor: theme.colors.error },\n color: theme.colors.onError,\n onPress: () => setCancellationModalVisible(true),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Accept Order'),\n onPress: () => setAcceptanceModalVisible(true),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Navigate to location'),\n onPress: () =>\n showLocation({\n latitude:\n data?.getServiceOrder?.carLocation.coordinates\n .latitude,\n longitude:\n data?.getServiceOrder?.carLocation.coordinates\n .longitude,\n title: getCarString(data?.getServiceOrder?.car),\n googleForceLatLon: true,\n }),\n },\n ].filter(Boolean)\n : data?.getServiceOrder?.state == 'ACCEPTED'\n ? [\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Cancel Assignment'),\n style: { backgroundColor: theme.colors.error },\n color: theme.colors.onError,\n onPress: () =>\n unassignMutation({\n variables: { serviceOrderId: serviceOrderId },\n }),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('On the way'),\n onPress: () =>\n prestartMutation({\n variables: { serviceOrderId: serviceOrderId },\n }),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Navigate to location'),\n onPress: () =>\n showLocation({\n latitude:\n data?.getServiceOrder?.carLocation.coordinates\n .latitude,\n longitude:\n data?.getServiceOrder?.carLocation.coordinates\n .longitude,\n title: getCarString(data?.getServiceOrder?.car),\n googleForceLatLon: true,\n }),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Edit Order'),\n onPress: navigateToEditOrder,\n },\n ].filter(Boolean)\n : data?.getServiceOrder?.state == 'PRESTARTED'\n ? [\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Cancel Order'),\n onPress: () => setCancellationModalVisible(true),\n style: { backgroundColor: theme.colors.error },\n color: theme.colors.onError,\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Start'),\n onPress: () =>\n {\n const start = (grantedUserApprovalsParam) =>\n startMutation({\n variables: {\n serviceOrderId: serviceOrderId,\n grantedUserApprovals: grantedUserApprovalsParam,\n reason: 'NO_REASON',\n },\n })\n setLastUserIntent(() => start)\n start(new Array())\n\n }\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Navigate to location'),\n onPress: () =>\n showLocation({\n latitude:\n data?.getServiceOrder?.carLocation.coordinates\n .latitude,\n longitude:\n data?.getServiceOrder?.carLocation.coordinates\n .longitude,\n title: getCarString(data?.getServiceOrder?.car),\n googleForceLatLon: true,\n }),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Edit Order'),\n onPress: navigateToEditOrder,\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Add Photo'),\n onPress: () => setAddPhotoModalVisible(true),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Set back to accepted'),\n onPress: () =>\n revertToAcceptedMutation({\n variables: { serviceOrderId: serviceOrderId },\n }),\n },\n ].filter(Boolean)\n : data?.getServiceOrder?.state == 'STARTED'\n ? [\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Cancel Order'),\n onPress: () => setCancellationModalVisible(true),\n style: { backgroundColor: theme.colors.error },\n color: theme.colors.onError,\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Suspend'),\n onPress: () => setSuspensionModalVisible(true),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Finish'),\n onPress: () => {\n completeMutation({\n variables: {\n serviceOrderId: serviceOrderId,\n },\n })\n },\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Edit Order'),\n onPress: navigateToEditOrder,\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Add Photo'),\n onPress: () => setAddPhotoModalVisible(true),\n },\n ].filter(Boolean)\n : data?.getServiceOrder?.state == 'FINISHED' &&\n isNaN(meanRating)\n ? [\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Rate'),\n onPress: () => setRatingModalVisible(true),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Add Photo'),\n onPress: () => setAddPhotoModalVisible(true),\n },\n ].filter(Boolean)\n : data?.getServiceOrder?.state == 'FINISHED' &&\n !isNaN(meanRating)\n ? [\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Add Photo'),\n onPress: () => setAddPhotoModalVisible(true),\n },\n ].filter(Boolean)\n : data?.getServiceOrder?.state == 'PENDING_WITH_CUSTOMER'\n ? [\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Cancel Order'),\n onPress: () => setCancellationModalVisible(true),\n style: { backgroundColor: theme.colors.error },\n color: theme.colors.onError,\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Resume'),\n onPress: () =>\n resumeMutation({\n variables: { serviceOrderId: serviceOrderId },\n }),\n },\n {\n icon: ({ size, color }) => (\n \n ),\n label: i18n.t('Add Photo'),\n onPress: () => setAddPhotoModalVisible(true),\n },\n ].filter(Boolean)\n : []\n }\n onStateChange={onStateChange}\n onPress={() => {\n if (open) {\n // do something if the speed dial is open\n }\n }}\n />\n \n )}\n \n )\n}\n\nconst styles = StyleSheet.create({\n fab: {\n position: 'absolute',\n margin: 16,\n left: 0,\n right: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 4,\n },\n mapStyle: {\n width: Dimensions.get('window').width,\n height: 200, //? Dimensions.get('window').height,\n },\n container: {\n flex: 1,\n marginTop: 0, //? Constants.statusBarHeight,\n },\n scrollView: {\n marginHorizontal: 0,\n height: Dimensions.get('window').height,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(ServiceOrderComponent)\n","import { GET_SERVICE_ORDER } from '../queries/getServiceOrder'\n\n//? TODO: function type\nexport const handleUpdateServiceOrder = (client: any, mutationData: any) => {\n if (!!mutationData?.data?.updateServiceOrderAdvanced) {\n const getServiceOrderData = client.readQuery({\n query: GET_SERVICE_ORDER,\n variables: {\n id: mutationData.data.updateServiceOrderAdvanced.id,\n },\n })\n client.writeQuery({\n query: GET_SERVICE_ORDER,\n data: {\n getServiceOrder: {\n ...getServiceOrderData.getServiceOrder,\n ...mutationData.data.updateServiceOrderAdvanced,\n },\n },\n })\n }\n}\n","import { GET_SERVICE_ORDER } from '../queries/getServiceOrder'\n\n//? TODO: function type\nexport const handleUpdateComment = (client: any, mutationData: any) => {\n if (!!mutationData?.data?.createComment) {\n const getServiceOrderData = client.readQuery({\n query: GET_SERVICE_ORDER,\n variables: { id: mutationData.data.createComment.serviceOrderID },\n })\n client.writeQuery({\n query: GET_SERVICE_ORDER,\n data: {\n getServiceOrder: {\n ...getServiceOrderData.getServiceOrder,\n comments: {\n ...getServiceOrderData.getServiceOrder.comments,\n items: [\n ...getServiceOrderData.getServiceOrder.comments.items.filter(\n //? TODO: function type\n (item: any) => item.id != mutationData.data.createComment.id\n ),\n mutationData.data.createComment,\n ],\n },\n },\n },\n })\n }\n}\n","import React, { useEffect, useState, useCallback } from 'react'\nimport { useQuery } from '@apollo/client'\nimport { View, StyleSheet, SafeAreaView, ScrollView } from 'react-native'\nimport gql from 'graphql-tag'\nimport { Button, List, withTheme } from 'react-native-paper'\nimport { Ionicons } from '@expo/vector-icons'\nimport { Storage } from 'aws-amplify'\nimport useCancellablePromise from './CancelablePromiseHook'\nimport ProgressiveImage from './ProgressiveImage'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_CARS_BY_OWNER = gql(Utils.listCarsByOwner)\n\n/* -------------------------------- Component ------------------------------- */\n\nconst CarsComponent = ({ route, navigation, ...props }) => {\n const providerSelectedCustomer = route.params?.providerSelectedCustomer\n const multiSelectEnabled =\n route.params?.multiSelectEnabledOnCarSelect || false\n const navigationTargetOnCarSelect =\n route.params?.navigationTargetOnCarSelect || 'Car'\n\n const { cancellablePromise } = useCancellablePromise()\n const [user, setUser] = useState()\n\n const { data, error: queryError } = useQuery(LIST_CARS_BY_OWNER, {\n variables: {\n owner: user?.username,\n sortDirection: 'DESC',\n limit: 1000,\n filter: { isActive: { eq: true } },\n },\n fetchPolicy: 'cache-first',\n skip: !user?.username,\n })\n const [carImageUrls, setCarImageUrls] = React.useState({})\n\n const fetchUser = useCallback(async () => {\n if (!!providerSelectedCustomer) {\n setUser(providerSelectedCustomer)\n navigation.setOptions({\n title: `${i18n.t('Payments')} ${i18n\n .t('on behalf of')\n .replace('', providerSelectedCustomer?.attributes?.email)}`,\n })\n } else {\n await Utils.fetchUser(setUser)\n }\n }, [providerSelectedCustomer])\n\n useEffect(() => {\n fetchUser()\n }, [])\n\n useEffect(() => {\n queryError && console.log('E R R O R: ', queryError)\n }, [queryError])\n\n const getCarImage = ({ item, ...props }) => {\n if (item.photoUri) {\n //console.log(\"getCarImage render\", item.photoUri, carImageUrls)\n return (\n (\n \n )}\n />\n )\n } else {\n return (\n (\n \n )}\n />\n )\n }\n }\n\n const fetchCarImageUrls = async () => {\n if (!!data?.listCarsByOwner) {\n const carImageUrlsAdded = { ...carImageUrls }\n await Promise.all(\n data?.listCarsByOwner?.items.map(async (item) => {\n if (item?.photoUri && !(item.id in carImageUrls)) {\n const responseUrl = await cancellablePromise(\n Storage.get(item.photoUri)\n )\n carImageUrlsAdded[item.id] = responseUrl\n }\n })\n )\n setCarImageUrls(carImageUrlsAdded)\n }\n }\n\n useEffect(() => {\n fetchCarImageUrls()\n }, [data])\n\n const [carSelection, setCarSelection] = useState(\n route.params?.carsPreselection || []\n )\n\n return (\n \n \n \n {!!data?.listCarsByOwner &&\n [\n ...data.listCarsByOwner.items.filter((item) => {\n return item.isActive\n }),\n ]\n .sort((a, b) => a?.plate.localeCompare(b?.plate))\n .map((item) => (\n (\n (\n car.id)\n .includes(item.id)\n ? 'checkmark'\n : null\n }\n size={size}\n color={color}\n />\n )}\n />\n )}\n left={(props) => getCarImage({ item: item, ...props })}\n onPress={() => {\n if (multiSelectEnabled) {\n if (carSelection.map((car) => car.id).includes(item.id)) {\n setCarSelection(\n carSelection.filter((car) => car.id !== item.id)\n )\n } else {\n setCarSelection([...carSelection, item])\n }\n } else {\n navigation.navigate({\n name: navigationTargetOnCarSelect,\n params:{\n car: [item],\n },\n merge: true\n })\n }\n }}\n />\n ))}\n (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate({name:'Add Car', params:{\n providerSelectedCustomer: providerSelectedCustomer,\n },\n merge: true\n })\n }\n />\n {multiSelectEnabled && carSelection.length > 0 && (\n {\n navigation.navigate({name:navigationTargetOnCarSelect, params:{\n car: carSelection,\n },\n merge: true})\n }}\n >\n {i18n.t('Select')}\n \n )}\n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollView: {\n marginHorizontal: 0,\n },\n})\n\nexport default withTheme(CarsComponent)\n","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState, useRef } from 'react'\nimport { useQuery, useMutation } from '@apollo/client'\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n Dimensions,\n} from 'react-native'\nimport { v4 as uuid } from 'uuid'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport {\n withTheme,\n Button,\n TextInput,\n List,\n Text,\n Title,\n Subheading,\n Modal,\n Portal,\n ActivityIndicator,\n} from 'react-native-paper'\nimport Constants from 'expo-constants'\nimport { Formik } from 'formik'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport ProgressiveImage from './ProgressiveImage'\nimport { Storage } from 'aws-amplify'\nimport i18n from 'i18n-js'\nimport useCancellablePromise from './CancelablePromiseHook'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport Utils from './Utils.js'\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst GET_CAR = gql(queries.getCar)\nconst UPDATE_CAR = gql(mutations.updateCar)\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleUpdateCar = (client, mutationData) => {\n if (mutationData && mutationData.data.updateCar) {\n try {\n const getCarData = client.readQuery({\n query: GET_CAR,\n variables: { id: mutationData.data.updateCar.id },\n });\n\n // If getCarData exists, update the cache\n if (getCarData && getCarData.getCar) {\n client.writeQuery({\n query: GET_CAR,\n variables: { id: mutationData.data.updateCar.id },\n data: {\n getCar: {\n ...getCarData.getCar,\n ...mutationData.data.updateCar,\n },\n },\n });\n } else {\n // If getCarData doesn't exist, write the new data directly\n client.writeQuery({\n query: GET_CAR,\n variables: { id: mutationData.data.updateCar.id },\n data: {\n getCar: mutationData.data.updateCar,\n },\n });\n }\n } catch (error) {\n console.error(\"Error updating cache:\", error);\n }\n }\n}\n\n/* -------------------------------- Component ------------------------------- */\nconst window = Dimensions.get('window')\nconst screen = Dimensions.get('screen')\n\nconst CarComponent = ({ route, navigation, ...props }) => {\n const [dimensions, setDimensions] = useState({ window, screen })\n\n const onChange = ({ window, screen }) => {\n setDimensions({ window, screen })\n }\n\n useEffect(() => {\n const dimensionsHandler = Dimensions.addEventListener('change', onChange)\n return () => {\n dimensionsHandler.remove()\n }\n }, [])\n\n const { cancellablePromise } = useCancellablePromise()\n const formRef = useRef()\n const carId = route.params?.car[0]?.id\n const [imageUrl, setImageUrl] = useState(null)\n const {\n data,\n error: queryError,\n loading: queryLoading,\n } = useQuery(GET_CAR, {\n variables: { id: carId },\n fetchPolicy: 'cache-and-network',\n })\n const [updateCarMutation, { error: mutationError }] = useMutation(\n UPDATE_CAR,\n {\n update: (client, mutationData) => handleUpdateCar(client, mutationData),\n }\n )\n\n useEffect(() => {\n ; (queryError || mutationError) &&\n console.log('E R R O R: ', queryError, mutationError)\n const unsubscribe = navigation.addListener('beforeRemove', () => {\n // do something\n updateCar()\n })\n\n return unsubscribe\n }, [queryError, mutationError, navigation])\n\n const fetchPhoto = async () => {\n if (data?.getCar.photoUri)\n try {\n const responseUrl = await cancellablePromise(\n Storage.get(data.getCar.photoUri)\n )\n setImageUrl(responseUrl)\n } catch (err) {\n console.error('Fetching photo URL failed', err)\n }\n }\n\n useEffect(() => {\n fetchPhoto()\n }, [data])\n\n const updateCar = () => {\n updateCarMutation({\n variables: {\n input: {\n id: carId,\n description: formRef.current.values.getCar.description,\n },\n },\n })\n }\n\n const deactivateCar = () => {\n updateCarMutation({ variables: { input: { id: carId, isActive: false } } })\n navigation.goBack()\n }\n\n return (\n \n console.log(values)}\n innerRef={formRef}\n >\n {({ handleChange, handleBlur, handleSubmit, values }) => (\n \n {imageUrl != null && (\n \n )}\n \n\n \n \n \n \n\n \n \n (\n \n )}\n size={20}\n />\n }\n />\n \n \n\n \n (\n \n )}\n mode='contained'\n onPress={deactivateCar}\n >\n {i18n.t('Remove Car')}\n \n \n \n )}\n \n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0, //Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(CarComponent)\n","import React, { useEffect, useState, useRef, useCallback } from 'react'\nimport { useMutation, useApolloClient } from '@apollo/client'\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n TouchableWithoutFeedback,\n ImageBackground,\n Platform,\n} from 'react-native'\nimport { v4 as uuid } from 'uuid'\nimport gql from 'graphql-tag'\nimport * as mutations from '../graphql/mutations.js'\nimport {\n withTheme,\n Button,\n TextInput,\n List,\n Title,\n HelperText,\n IconButton,\n ProgressBar,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport Modal from 'react-native-modal'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport ColorPalette from 'react-native-color-palette'\nimport { useUser, AUTHENTICATED } from './contexts/UserContext'\nconst AddCarSchema = Utils.carSchema\nconst moment = require('moment-timezone');\nconst today = moment()\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_CARS_BY_OWNER = gql(Utils.listCarsByOwner)\nconst CREATE_CAR = gql(mutations.createCar)\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleUpdateCar = (client, mutationData, orderUser) => {\n if (mutationData && mutationData.data.createCar) {\n const variables = {\n owner: orderUser?.username,\n sortDirection: 'DESC',\n limit: 1000,\n filter: { isActive: { eq: true } },\n }\n let listCarsByOwnerData = null\n try {\n listCarsByOwnerData = client.readQuery({\n query: LIST_CARS_BY_OWNER,\n variables: variables,\n })\n } finally {\n if (!listCarsByOwnerData) {\n listCarsByOwnerData = {\n listCarsByOwner: {\n items: [],\n },\n }\n }\n }\n\n client.writeQuery({\n query: LIST_CARS_BY_OWNER,\n variables: variables,\n data: {\n listCarsByOwner: {\n ...listCarsByOwnerData.listCarsByOwner,\n items: [\n ...listCarsByOwnerData.listCarsByOwner.items,\n mutationData.data.createCar,\n ],\n nextToken: null\n },\n },\n })\n }\n}\n\n/* -------------------------------- Component ------------------------------- */\n\nconst CarComponent = ({ route, navigation, theme, ...props }) => {\n const {\n state: { user, authStatus },\n } = useUser();\n const providerSelectedCustomer = route.params?.providerSelectedCustomer\n const orderUser = providerSelectedCustomer ? providerSelectedCustomer : user\n\n const formRef = useRef()\n const [images, setImages] = useState([])\n const [createCarMutation, { error: mutationError }] = useMutation(\n CREATE_CAR,\n {\n update: (client, mutationData) =>\n handleUpdateCar(client, mutationData, orderUser),\n onCompleted: () => navigation.navigate({name:'Cars', merge:true}),\n }\n )\n\n const [isPhotoSourceModalVisible, setPhotoSourceModalVisible] =\n useState(false)\n const togglePhotoSourceModal = () => {\n setPhotoSourceModalVisible(!isPhotoSourceModalVisible)\n }\n\n const [isColorPickerModalVisible, setColorPickerModalVisible] =\n useState(false)\n const toggleColorPickerModal = () => {\n setColorPickerModalVisible(!isColorPickerModalVisible)\n }\n\n const [uploadProgress, setUploadProgress] = useState(null)\n\n const fetchUser = useCallback(async () => {\n if (!!providerSelectedCustomer) {\n navigation.setOptions({\n title: `${i18n.t('Payments')} ${i18n\n .t('on behalf of')\n .replace('', providerSelectedCustomer?.attributes?.email)}`,\n })\n }\n }, [providerSelectedCustomer])\n\n useEffect(() => {\n fetchUser()\n }, [])\n\n React.useEffect(() => {\n if (route.params?.carType) {\n formRef.current.setFieldValue('carTypeId', route.params.carType.id)\n formRef.current.setFieldValue('carType', route.params.carType)\n }\n }, [route.params?.carType])\n\n useEffect(() => {\n mutationError && console.log('E R R O R: ', mutationError)\n }, [mutationError])\n\n const client = useApolloClient()\n\n return (\n {\n const carMutationInput = {\n input: {\n id: uuid(),\n plate: values.plate,\n color: values.carColor,\n description: values.description,\n isActive: true,\n carTypeID: values.carTypeId,\n owner: orderUser?.username,\n },\n }\n\n if (orderUser?.username && orderUser?.username !== \"unathenticated\") {\n if (images?.length > 0) {\n try {\n const targetFileName = `car_photo_${uuid()}.jpg`\n await Utils.uploadToStorage(\n images[0],\n targetFileName,\n setUploadProgress\n )\n carMutationInput.input['photoUri'] = targetFileName\n } catch (err) {\n console.log('file upload failed', err)\n }\n }\n createCarMutation({ variables: carMutationInput })\n }\n else {\n console.log(\"Add created car to cache as unauthenticated user\")\n const payload = {\n data: {\n createCar:\n {\n ...carMutationInput?.input,\n \"_lastChangedAt\": today.unix() * 1000,\n \"_deleted\": false,\n \"_version\": 1,\n \"updatedAt\": today.toISOString(),\n \"photoUri\": null,\n \"createdAt\": today.toISOString(),\n year: null,\n carType: values.carType\n\n }\n }\n }\n handleUpdateCar(client, payload, orderUser)\n navigation.navigate({name:'Cars', merge:true})\n }\n }\n }\n innerRef={formRef}\n validationSchema={AddCarSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n setFieldValue,\n values,\n errors,\n touched,\n }) => (\n <>\n {uploadProgress !== null && (\n \n )}\n setPhotoSourceModalVisible(false)}\n swipeDirection={['down']}\n statusBarTranslucent\n propagateSwipe={true}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n }}\n customBackdrop={\n setPhotoSourceModalVisible(false)}\n >\n \n \n }\n >\n \n \n {i18n.t('Select a photo')}\n \n \n {\n await Utils.pickCameraImages(setImages)\n setPhotoSourceModalVisible(false)\n }}\n >\n {i18n.t('Take photo')}\n \n {\n await Utils.pickImages(setImages)\n setPhotoSourceModalVisible(false)\n }}\n >\n {i18n.t('Choose from library')}\n \n \n {i18n.t('Cancel')}\n \n \n \n \n\n setColorPickerModalVisible(false)}\n swipeDirection={['down']}\n statusBarTranslucent\n propagateSwipe={true}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n }}\n customBackdrop={\n setColorPickerModalVisible(false)}\n >\n \n \n }\n >\n \n \n {i18n.t('Select Car Color')}\n \n\n {\n setFieldValue('carColor', Utils.carColorCodeToText(color))\n setColorPickerModalVisible(false)\n }}\n value={Utils.carColorTextToCode(values?.carColor)}\n colors={Utils.carColorsArray()}\n title={null}\n icon={\n \n }\n />\n \n \n\n \n \n (\n (\n \n )}\n />\n )}\n left={(props) => (\n (\n \n )}\n />\n )}\n onPress={() => navigation.navigate('Make and Model')}\n />\n \n {errors.carTypeId}\n \n\n (\n \n values?.carColor ? (\n \n ) : (\n \n )\n }\n />\n )}\n onPress={() => setColorPickerModalVisible(true)}\n />\n\n \n {errors.carColor}\n \n\n \n \n {errors.plate}\n \n\n \n \n {errors.description}\n \n\n {\n authStatus === AUTHENTICATED && (images?.length > 0 ? (\n \n \n \n setImages([])}\n />\n \n \n \n ) : Platform.OS != 'web' ? (\n \n {i18n.t('Add Photo')}\n \n ) : (\n await Utils.pickImages(setImages)}\n >\n {i18n.t('Add Photo')}\n \n ))}\n \n {i18n.t('Save')}\n \n {/* {JSON.stringify(values)} */}\n \n \n \n )}\n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0, //? Constants.statusBarHeight,\n },\n scrollView: {\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(CarComponent)\n","import React, { useEffect, useMemo, useState, useCallback } from 'react'\nimport { useQuery } from '@apollo/client'\nimport { View, StyleSheet, SafeAreaView } from 'react-native'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport { Searchbar, withTheme, List } from 'react-native-paper'\nimport { Ionicons } from '@expo/vector-icons'\nimport { ActivityIndicator } from 'react-native-paper'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport { FlashList } from \"@shopify/flash-list\";\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_CARTYPES = gql(`\nquery ListCarTypes(\n $filter: ModelCarTypeFilterInput\n $limit: Int\n $nextToken: String\n) {\n listCarTypes(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n make\n model\n manufacturedFrom\n manufacturedUntil\n carTypeCategoryID\n carTypeCategory {\n id\n name\n createdAt\n updatedAt\n owner\n __typename\n }\n isEnabled\n createdAt\n updatedAt\n owner\n __typename\n }\n nextToken\n __typename\n }\n}\n`)\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleUpdateCar = (client, mutationData) => {\n if (mutationData && mutationData.data.createCar) {\n const listCarTypesData = client.readQuery({ query: LIST_CARTYPES })\n client.writeQuery({\n query: LIST_CARTYPES,\n data: {\n listCarTypes: {\n ...listCarTypesData.listCarTypes,\n items: [\n ...listCarTypesData.listCarTypes.items,\n mutationData.data.createCar,\n ],\n },\n },\n })\n }\n}\n\n/* -------------------------------- Component ------------------------------- */\n\nfunction useDebounce(value, delay) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nconst CarMakeModelSelector = React.memo(({ navigation, theme }) => {\n const {\n data,\n error: queryError,\n loading,\n } = useQuery(LIST_CARTYPES, {\n variables: {\n limit: 2000,\n filter: { isEnabled: { eq: 1 } },\n },\n fetchPolicy: 'cache-and-network',\n })\n\n useEffect(() => {\n queryError && console.log('E R R O R: ', queryError)\n }, [queryError])\n\n const [searchQuery, setSearchQuery] = React.useState('')\n const debouncedSearchQuery = useDebounce(searchQuery, 200);\n const onChangeSearch = useCallback((query) => setSearchQuery(query), []);\n\n const getCarMakeModelYears = useCallback((item) => item.make + ' ' + item.model, []);\n\n const filteredAndSortedData = useMemo(() => {\n const lowerCaseSearchQuery = Utils.sanitizeString(debouncedSearchQuery).toLowerCase();\n\n return data?.listCarTypes?.items\n .filter((item) => {\n const itemData = `${item.make} ${item.model}`.toLowerCase();\n return itemData.search(lowerCaseSearchQuery) !== -1;\n })\n .sort((a, b) => getCarMakeModelYears(a).localeCompare(getCarMakeModelYears(b)));\n }, [data, debouncedSearchQuery]);\n\n const renderItem = useCallback(({ item, index }) => {\n const handlePress = () => {\n navigation.navigate('Add Car', {\n carType: {\n ...item,\n makeModel: getCarMakeModelYears(item),\n },\n });\n };\n\n return (\n \n );\n }, [navigation]);\n\n return (\n \n (\n \n )}\n clearIcon={({ size, color }) => (\n \n )}\n />\n {!loading ? (\n `Make Model List Item-${item.id}`}\n renderItem={renderItem}\n />\n ) : (\n \n \n \n )}\n \n )\n});\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0, //? Constants.statusBarHeight,\n },\n scrollView: {\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(CarMakeModelSelector)","import { List } from 'react-native-paper'\nimport { Ionicons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport Utils from '../Utils'\n\nconst CreditCardListItem = ({\n item,\n index,\n itemSelectionModePayment,\n selectedPaymentMethod,\n setSelectedPaymentMethod,\n navigation,\n navigationTargetOnPaymentSelect,\n}) => {\n const renderRightIcon = (props) => {\n if (itemSelectionModePayment) {\n if (item.id == selectedPaymentMethod?.paymentMethod?.id) {\n return (\n (\n \n )}\n />\n )\n } else {\n return null\n }\n } else {\n return (\n (\n \n )}\n />\n )\n }\n }\n\n return (\n (\n (\n \n )}\n />\n )}\n right={(props) => renderRightIcon(props)}\n onPress={() => {\n if (itemSelectionModePayment) {\n setSelectedPaymentMethod({\n paymentMethod: item,\n paymentMethodType: 'BANKCARD',\n })\n } else {\n navigation.navigate({name:navigationTargetOnPaymentSelect, params:{\n paymentMethod: item,\n paymentMethodType: 'BANKCARD',\n }, merge:true})\n }\n }}\n />\n )\n}\n\nexport default CreditCardListItem\n","function Bypass(props) {\n return props.children\n}\nconst useConfirmPayment = () => {\n return { confirmPayment: () => {}, loading: false }\n}\n\nconst useConfirmSetupIntent = () => {\n return { confirmSetupIntent: () => {}, loading: false }\n}\n\nexport default {\n CardField: Bypass,\n initStripe: () => {},\n useConfirmSetupIntent: useConfirmSetupIntent,\n StripeProvider: Bypass,\n useConfirmPayment: useConfirmPayment,\n confirmPlatformPaySetupIntent: () => 0,\n confirmSetupIntent: () => 0,\n PlatformPay: {},\n}\n","var _path, _path2, _path3;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgApplePayMark = function SvgApplePayMark(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 165.521,\n height: 105.965\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M150.698 0H14.823q-.85 0-1.698.003-.715.004-1.43.022c-1.039.028-2.087.09-3.113.274a10.5 10.5 0 0 0-2.958.975 9.93 9.93 0 0 0-4.35 4.35 10.5 10.5 0 0 0-.975 2.96C.113 9.611.052 10.658.024 11.696q-.018.715-.022 1.43Q0 13.973 0 14.823v76.318q0 .85.002 1.699.004.714.022 1.43c.028 1.036.09 2.084.275 3.11a10.5 10.5 0 0 0 .974 2.96 9.9 9.9 0 0 0 1.83 2.52 9.9 9.9 0 0 0 2.52 1.83c.947.483 1.917.79 2.96.977 1.025.183 2.073.245 3.112.273q.715.017 1.43.02.848.005 1.698.004h135.875q.849.001 1.697-.004a80 80 0 0 0 1.431-.02c1.037-.028 2.085-.09 3.113-.273a10.5 10.5 0 0 0 2.958-.977 9.955 9.955 0 0 0 4.35-4.35c.483-.947.789-1.917.974-2.96.186-1.026.246-2.074.274-3.11q.02-.716.022-1.43.005-.85.004-1.699V14.824q.001-.85-.004-1.699a63 63 0 0 0-.022-1.429c-.028-1.038-.088-2.085-.274-3.112a10.4 10.4 0 0 0-.974-2.96 9.941 9.941 0 0 0-4.35-4.35A10.5 10.5 0 0 0 156.939.3c-1.028-.185-2.076-.246-3.113-.274a71 71 0 0 0-1.431-.022Q151.546 0 150.698 0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#FFF\",\n d: \"m150.698 3.532 1.672.003q.678.003 1.36.02c.792.022 1.719.065 2.583.22.75.135 1.38.34 1.984.648a6.4 6.4 0 0 1 2.804 2.807c.306.6.51 1.226.645 1.983.154.854.197 1.783.218 2.58.013.45.019.9.02 1.36q.006.835.005 1.671v76.318c0 .558 0 1.114-.004 1.682q-.002.675-.02 1.35c-.022.796-.065 1.725-.221 2.589a6.9 6.9 0 0 1-.645 1.975 6.4 6.4 0 0 1-2.808 2.807c-.6.306-1.228.512-1.971.645-.882.157-1.847.2-2.574.22-.457.01-.912.017-1.379.019q-.834.005-1.669.004H14.801c-.55 0-1.1 0-1.66-.004a75 75 0 0 1-1.35-.018c-.744-.02-1.71-.064-2.584-.22a7 7 0 0 1-1.986-.65 6.3 6.3 0 0 1-1.622-1.18 6.4 6.4 0 0 1-1.178-1.623 7 7 0 0 1-.647-1.985c-.155-.863-.198-1.788-.22-2.578a66 66 0 0 1-.02-1.355l-.002-1.327V14.474l.002-1.325q.003-.68.02-1.357c.022-.792.065-1.717.222-2.587a7 7 0 0 1 .646-1.981c.304-.598.7-1.144 1.18-1.622a6.4 6.4 0 0 1 1.624-1.18 7 7 0 0 1 1.98-.647c.865-.155 1.792-.198 2.586-.22q.68-.017 1.354-.02l1.677-.003z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M45.186 35.64c1.417-1.772 2.38-4.152 2.126-6.585-2.075.104-4.607 1.37-6.073 3.143-1.316 1.52-2.48 4-2.177 6.33 2.33.202 4.656-1.165 6.124-2.887M47.285 38.983c-3.382-.202-6.258 1.919-7.873 1.919s-4.09-1.818-6.764-1.769c-3.482.051-6.713 2.02-8.48 5.15-3.634 6.264-.959 15.556 2.575 20.657 1.717 2.524 3.785 5.303 6.51 5.203 2.575-.101 3.584-1.668 6.714-1.668 3.128 0 4.037 1.668 6.763 1.617 2.827-.05 4.594-2.525 6.31-5.051 1.969-2.877 2.775-5.655 2.825-5.808-.05-.05-5.45-2.122-5.5-8.333-.051-5.201 4.24-7.675 4.441-7.828-2.423-3.584-6.209-3.988-7.52-4.09M76.734 31.944c7.35 0 12.47 5.067 12.47 12.444 0 7.404-5.225 12.497-12.654 12.497h-8.14v12.943h-5.88V31.944zM68.41 51.949h6.747c5.12 0 8.034-2.756 8.034-7.534s-2.914-7.509-8.008-7.509h-6.773zM90.74 61.979c0-4.831 3.702-7.798 10.266-8.166l7.56-.446v-2.126c0-3.072-2.074-4.91-5.539-4.91-3.282 0-5.33 1.575-5.828 4.043h-5.356c.315-4.988 4.568-8.664 11.394-8.664 6.695 0 10.974 3.545 10.974 9.084v19.034h-5.435v-4.542h-.13c-1.602 3.072-5.094 5.015-8.717 5.015-5.408 0-9.189-3.36-9.189-8.322m17.826-2.494v-2.18l-6.8.42c-3.386.237-5.303 1.733-5.303 4.096 0 2.415 1.996 3.99 5.041 3.99 3.964 0 7.062-2.73 7.062-6.326M119.342 79.989v-4.595c.419.105 1.364.105 1.837.105 2.625 0 4.043-1.102 4.909-3.938 0-.052.5-1.68.5-1.706l-9.977-27.646h6.143l6.984 22.474h.104l6.985-22.474h5.985l-10.344 29.063c-2.362 6.695-5.093 8.848-10.816 8.848-.473 0-1.891-.053-2.31-.131\"\n })));\n};\nexport default SvgApplePayMark;","var _path, _path2, _g, _path3, _path4, _path5, _path6;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgGooglePayMark = function SvgGooglePayMark(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlSpace: \"preserve\",\n width: 752,\n height: 400\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M552 0H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#3c4043\",\n d: \"M552 16.2c24.7 0 48.7 4.9 71.3 14.5 21.9 9.3 41.5 22.6 58.5 39.5 16.9 16.9 30.2 36.6 39.5 58.5 9.6 22.6 14.5 46.6 14.5 71.3s-4.9 48.7-14.5 71.3c-9.3 21.9-22.6 41.5-39.5 58.5-16.9 16.9-36.6 30.2-58.5 39.5-22.6 9.6-46.6 14.5-71.3 14.5H200c-24.7 0-48.7-4.9-71.3-14.5-21.9-9.3-41.5-22.6-58.5-39.5-16.9-16.9-30.2-36.6-39.5-58.5-9.6-22.6-14.5-46.6-14.5-71.3s4.9-48.7 14.5-71.3c9.3-21.9 22.6-41.5 39.5-58.5 16.9-16.9 36.6-30.2 58.5-39.5 22.6-9.6 46.6-14.5 71.3-14.5zM552 0H200C90 0 0 90 0 200s90 200 200 200h352c110 0 200-90 200-200S662 0 552 0\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#3c4043\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M358.6 214.2v60.5h-19.2V125.3h50.9c12.9 0 23.9 4.3 32.9 12.9q13.8 12.9 13.8 31.5c0 12.7-4.6 23.2-13.8 31.7-8.9 8.5-19.9 12.7-32.9 12.7h-31.7zm0-70.5v52.1h32.1c7.6 0 14-2.6 19-7.7 5.1-5.1 7.7-11.3 7.7-18.3 0-6.9-2.6-13-7.7-18.1-5-5.3-11.3-7.9-19-7.9h-32.1zM487.2 169.1q21.3 0 33.6 11.4t12.3 31.2v63h-18.3v-14.2h-.8c-7.9 11.7-18.5 17.5-31.7 17.5-11.3 0-20.7-3.3-28.3-10s-11.4-15-11.4-25q0-15.9 12-25.2c8-6.3 18.7-9.4 32-9.4 11.4 0 20.8 2.1 28.1 6.3v-4.4c0-6.7-2.6-12.3-7.9-17s-11.5-7-18.6-7c-10.7 0-19.2 4.5-25.4 13.6l-16.9-10.6c9.3-13.5 23.1-20.2 41.3-20.2m-24.8 74.2c0 5 2.1 9.2 6.4 12.5 4.2 3.3 9.2 5 14.9 5q12.15 0 21.6-9c6.3-6 9.5-13 9.5-21.1-6-4.7-14.3-7.1-25-7.1-7.8 0-14.3 1.9-19.5 5.6-5.3 3.9-7.9 8.6-7.9 14.1M637.5 172.4l-64 147.2h-19.8l23.8-51.5-42.2-95.7h20.9l30.4 73.4h.4l29.6-73.4z\"\n }))), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#4285f4\",\n d: \"M282.23 202c0-6.26-.56-12.25-1.6-18.01h-80.48v33l46.35.01c-1.88 10.98-7.93 20.34-17.2 26.58v21.41h27.59c16.11-14.91 25.34-36.95 25.34-62.99\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#34a853\",\n d: \"M229.31 243.58c-7.68 5.18-17.57 8.21-29.14 8.21-22.35 0-41.31-15.06-48.1-35.36h-28.46v22.08c14.1 27.98 43.08 47.18 76.56 47.18 23.14 0 42.58-7.61 56.73-20.71z\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fabb05\",\n d: \"M149.39 200.05c0-5.7.95-11.21 2.68-16.39v-22.08h-28.46c-5.83 11.57-9.11 24.63-9.11 38.47s3.29 26.9 9.11 38.47l28.46-22.08a51.7 51.7 0 0 1-2.68-16.39\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#e94235\",\n d: \"M200.17 148.3c12.63 0 23.94 4.35 32.87 12.85l24.45-24.43c-14.85-13.83-34.21-22.32-57.32-22.32-33.47 0-62.46 19.2-76.56 47.18l28.46 22.08c6.79-20.3 25.75-35.36 48.1-35.36\"\n })));\n};\nexport default SvgGooglePayMark;","import React from 'react'\nimport { List } from 'react-native-paper'\nimport { Ionicons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport Utils from '../Utils'\ninterface InvoicePaymentListItemProps {\n index: number\n item: any\n itemSelectionModePayment: boolean\n selectedPaymentMethod: any\n setSelectedPaymentMethod: (paymentMethod: any) => void\n navigation: any\n navigationTargetOnPaymentSelect: string\n}\n\nconst InvoicePaymentListItem: React.FC = ({\n index,\n item,\n itemSelectionModePayment,\n selectedPaymentMethod,\n setSelectedPaymentMethod,\n navigation,\n navigationTargetOnPaymentSelect,\n}) => {\n const handlePress = () => {\n if (itemSelectionModePayment) {\n setSelectedPaymentMethod({\n paymentMethod: item,\n paymentMethodType: item.id,\n })\n } else {\n navigation.navigate({\n name: navigationTargetOnPaymentSelect,\n params: {\n paymentMethod: item,\n paymentMethodType: item.id,\n },\n merge: true,\n })\n }\n }\n\n const renderRightIcon = (props: any) => {\n if (itemSelectionModePayment) {\n if (item.id === selectedPaymentMethod?.paymentMethod?.id) {\n return (\n (\n \n )}\n />\n )\n } else {\n return null\n }\n } else {\n return (\n (\n \n )}\n />\n )\n }\n }\n\n return (\n (\n (\n \n )}\n />\n )}\n right={renderRightIcon}\n onPress={handlePress}\n />\n )\n}\n\nexport default InvoicePaymentListItem","import React from 'react'\nimport { List } from 'react-native-paper'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport Utils from '../Utils'\ninterface BankTransferListItemProps {\n index: number\n item: any\n itemSelectionModePayment: boolean\n selectedPaymentMethod: any\n setSelectedPaymentMethod: (paymentMethod: any) => void\n navigation: any\n navigationTargetOnPaymentSelect: string\n}\n\nconst BankTransferListItem: React.FC = ({\n index,\n item,\n itemSelectionModePayment,\n selectedPaymentMethod,\n setSelectedPaymentMethod,\n navigation,\n navigationTargetOnPaymentSelect,\n}) => {\n const handlePress = () => {\n if (itemSelectionModePayment) {\n setSelectedPaymentMethod({\n paymentMethod: item,\n paymentMethodType: item.id,\n })\n } else {\n navigation.navigate({\n name: navigationTargetOnPaymentSelect,\n params: {\n paymentMethod: item,\n paymentMethodType: item.id,\n },\n merge: true,\n })\n }\n }\n\n const renderRightIcon = (props: any) => {\n if (itemSelectionModePayment) {\n if (item.id === selectedPaymentMethod?.paymentMethod?.id) {\n return (\n (\n \n )}\n />\n )\n } else {\n return null\n }\n } else {\n return (\n (\n \n )}\n />\n )\n }\n }\n\n return (\n (\n (\n \n )}\n />\n )}\n right={renderRightIcon}\n onPress={handlePress}\n />\n )\n}\n\nexport default BankTransferListItem","import React, { useCallback, useEffect, useMemo, useState } from 'react'\nimport { useQuery, useMutation } from '@apollo/client'\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n RefreshControl,\n Platform,\n} from 'react-native'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport {\n List,\n ProgressBar,\n ActivityIndicator,\n withTheme,\n Divider,\n Switch,\n} from 'react-native-paper'\nimport Constants from 'expo-constants'\nimport { Ionicons, MaterialCommunityIcons, FontAwesome5 } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport ErrorDialog from './ErrorDialog'\nconst moment = require('moment-timezone')\nimport CreditCardListItem from './components/CreditCardListItem'\nimport stripe from './TipsiStripeContainer'\nconst { StripeProvider } = stripe\nimport { validPayPalPaymentCurrencies } from './lib/utils/payment'\nimport ApplePayLogo from '../assets/Apple_Pay_Mark.svg'\nimport GooglePayLogo from '../assets/Google_Pay_Mark.svg'\nimport InvoicePaymentListItem from './components/InvoicePaymentListItem'\nimport BankTransferListItem from './components/BankTransferListItem'\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_PAYMENT_METHODS = gql(queries.listPaymentMethods)\nconst LIST_VOUCHERS_BY_CUSTOMER_VALID_UNTIL = gql(`query ListVouchersByCustomerValidUntil(\n $owner: ID!\n $validUntil: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelVoucherFilterInput\n $limit: Int\n $nextToken: String\n) {\n listVouchersByCustomerValidUntil(\n owner: $owner\n validUntil: $validUntil\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n items {\n product {\n productCategory {\n name\n }\n productPackage {\n name\n }\n }\n }\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n}\n`)\nconst CREATE_PAYMENT_METHOD = gql(mutations.createPaymentMethod)\nconst DELETE_USER_CUSTOM_ATTRIBUTE = gql(mutations.deleteUserCustomAttribute)\n\n/* -------------------------------- Component ------------------------------- */\n\n//! Temporary disable PayPal payment method\nconst _hidePayPalPaymentOption = true\n\nconst PaymentsComponent = ({\n theme,\n route,\n navigation,\n mode = 'pick',\n ...props\n}) => {\n const today = moment()\n const hidePayPalPaymentOption =\n _hidePayPalPaymentOption ||\n !validPayPalPaymentCurrencies.includes(\n route.params?.listVoucherParams?.valueCurrencyAllowed.toLowerCase()\n )\n\n const navigationTargetOnPaymentSelect =\n route.params?.navigationTargetOnPaymentSelect || 'Payment'\n const itemSelectionModePayment =\n navigationTargetOnPaymentSelect == 'Select Payment'\n const itemSelectionMode = itemSelectionModePayment\n\n const providerSelectedCustomer = route.params?.providerSelectedCustomer\n const enableAddPaymentMethod = !providerSelectedCustomer\n\n const [selectedPaymentMethod, _setSelectedPaymentMethod] = useState()\n const selectedPaymentMethodRef = React.useRef(selectedPaymentMethod)\n const setSelectedPaymentMethod = (data) => {\n selectedPaymentMethodRef.current = data\n _setSelectedPaymentMethod(data)\n }\n\n const [selectedVoucher, _setSelectedVoucher] = useState()\n\n const selectedVoucherRef = React.useRef(selectedVoucher)\n const setSelectedVoucher = (data) => {\n selectedVoucherRef.current = data\n _setSelectedVoucher(data)\n }\n const [user, setUser] = useState()\n const [isErrorModalVisible, setErrorModalVisible] = React.useState(false)\n const [switchablePaymentMethods, setSwitchablePaymentMethods] = useState([])\n\n const hideVouchers = useMemo(\n () =>\n navigationTargetOnPaymentSelect == 'Select Payment' ||\n navigationTargetOnPaymentSelect == 'Payment on-session' ||\n !user,\n [navigationTargetOnPaymentSelect, user]\n )\n const listVoucherParams = useMemo(() => {\n if (!!route.params?.listVoucherParams) {\n return route.params?.listVoucherParams\n }\n\n return {\n validUntilGt: today.toISOString(),\n valueCurrencyAllowed: null,\n }\n }, [route.params?.listVoucherParams])\n\n const [\n createPaymentMethodMutation,\n { error: createPaymentMethodError, loading: createPaymentMethodLoading },\n ] = useMutation(CREATE_PAYMENT_METHOD, {\n onCompleted: (data) => {\n // console.log(data)\n refetch()\n },\n })\n const [\n deleteUserCustomAttribute,\n {\n error: deleteUserCustomAttributeError,\n loading: deleteUserCustomAttributeLoading,\n },\n ] = useMutation(DELETE_USER_CUSTOM_ATTRIBUTE, {\n onCompleted: (data) => {\n // refetch()\n },\n })\n\n const {\n data,\n error: queryError,\n loading: queryLoading,\n refetch,\n } = useQuery(LIST_PAYMENT_METHODS, {\n variables: {\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n providerSelectedCustomerUsername: providerSelectedCustomer?.username,\n serviceOrder: route.params?.serviceOrder,\n },\n fetchPolicy: 'cache-and-network',\n })\n const {\n data: voucherData,\n error: voucherQueryError,\n loading: voucherQueryLoading,\n refetch: refetchVouchers,\n } = useQuery(LIST_VOUCHERS_BY_CUSTOMER_VALID_UNTIL, {\n variables: {\n owner: user?.username,\n validUntil: {\n gt: listVoucherParams.validUntilGt,\n },\n sortDirection: 'ASC',\n filter: {\n state: {\n eq: 'CLAIMED',\n },\n ...(listVoucherParams.valueCurrencyAllowed && {\n valueCurrency: { eq: listVoucherParams.valueCurrencyAllowed },\n }),\n },\n },\n fetchPolicy: 'cache-and-network',\n skip: hideVouchers || !user?.username,\n })\n\n const isLoading = useMemo(\n () =>\n queryLoading ||\n voucherQueryLoading ||\n createPaymentMethodLoading ||\n deleteUserCustomAttributeLoading,\n [\n queryLoading,\n voucherQueryLoading,\n createPaymentMethodLoading,\n deleteUserCustomAttributeLoading,\n ]\n )\n \n const shellCardPaymentMethod = data?.listPaymentMethods?.items.find(value => value.id == \"SHELLCARD\")\n const isShellCardAllowed = !shellCardPaymentMethod?.restriction || shellCardPaymentMethod?.restriction == 'NO_RESTRICTION'\n \n const dkvCardPaymentMethod = data?.listPaymentMethods?.items.find(value => value.id == \"DKVCARD\")\n const isDkvCardAllowed = !dkvCardPaymentMethod?.restriction || dkvCardPaymentMethod?.restriction == 'NO_RESTRICTION'\n \n const switchablePaymentMethodIds = [\n ...(Platform.OS !== 'web'\n ? [Platform.OS === 'ios' ? 'APPLE_PAY' : 'GOOGLE_PAY']\n : []),\n 'PAYPAL',\n ...(isDkvCardAllowed == true ? ['DKVCARD'] : []),\n ...(isShellCardAllowed == true ? ['SHELLCARD'] : []),\n ]\n const paymentMethods = useMemo(\n () => data?.listPaymentMethods?.items.filter(item=>(!item?.restriction || item?.restriction === 'NO_RESTRICTION')) ?? [],\n [data?.listPaymentMethods?.items]\n )\n\n const selectablePaymentMethods = useMemo(() => {\n const filteredPaymentMethods = paymentMethods.filter(\n (item) => !switchablePaymentMethodIds.includes(item.id)\n )\n return hidePayPalPaymentOption\n ? filteredPaymentMethods.filter(\n (item) => item.id.toLowerCase() !== 'paypal'\n )\n : filteredPaymentMethods\n }, [paymentMethods, hidePayPalPaymentOption])\n\n const formatItem = (item) => {\n switch (item?.type) {\n case 'VALUE':\n return Utils.formatCurrency(item?.value, item?.valueCurrency)\n case 'PERCENTAGE':\n return '-' + item?.percentage + '%'\n case 'PERCENTAGE_AND_VALUE':\n return (\n Utils.formatCurrency(item?.value, item?.valueCurrency) +\n ', -' +\n item?.percentage +\n '%'\n )\n default:\n return ''\n }\n }\n\n const getPaymentMethodLabel = (id) => {\n switch (id) {\n case 'DKVCARD':\n return i18n.t('DKV Card')\n case 'SHELLCARD':\n return i18n.t('Shell Fuel Card')\n case 'PAYPAL':\n return i18n.t('PayPal')\n case 'APPLE_PAY':\n return i18n.t('Apple Pay')\n case 'GOOGLE_PAY':\n return i18n.t('Google Pay')\n case 'INVOICE_PAYMENT':\n return i18n.t('Invoice Payment')\n case 'BANK_TRANSFER':\n return i18n.t('Bank Transfer')\n default:\n return ''\n }\n }\n\n const getCustomUserAttributeById = (id) => {\n switch (id) {\n case 'PAYPAL':\n return 'paypal_token'\n case 'SHELLCARD':\n return 'shell_card_token'\n case 'APPLE_PAY':\n return 'apple_pay_token'\n case 'GOOGLE_PAY':\n return 'google_pay_token'\n case 'DKVCARD':\n return 'dkv_card_token'\n }\n }\n\n const onSwitchValueChange = (id, active) => {\n if (isLoading) return\n\n setSwitchablePaymentMethods((prev) =>\n prev.map((item) => {\n return {\n ...item,\n active: item.id === id ? active : item.active,\n }\n })\n )\n\n if (!active) {\n deleteUserCustomAttribute({\n variables: {\n attributeName: `custom:${getCustomUserAttributeById(id)}`,\n },\n })\n } else {\n createPaymentMethodMutation({\n variables: { paymentMethodType: id },\n })\n }\n }\n\n const renderRightIcon = (props, id) => {\n if (itemSelectionModePayment) {\n if (id == selectedPaymentMethod?.paymentMethod?.id) {\n return (\n (\n \n )}\n />\n )\n } else {\n return null\n }\n } else {\n return (\n (\n \n )}\n />\n )\n }\n }\n\n const getSwitchablePaymentMethodIcon = (id, size, color) => {\n switch (id) {\n case 'DKVCARD':\n return ()\n\n case 'SHELLCARD':\n return ()\n case 'APPLE_PAY':\n return ()\n case 'GOOGLE_PAY':\n return ()\n case 'PAYPAL':\n return ()\n\n default:\n return ()\n }\n }\n\n const fetchUser = useCallback(async () => {\n if (!!providerSelectedCustomer) {\n setUser(providerSelectedCustomer)\n navigation.setOptions({\n title: `${i18n.t('Payments')} ${i18n\n .t('on behalf of')\n .replace('', providerSelectedCustomer?.attributes?.email)}`,\n })\n } else {\n await Utils.fetchUser(setUser)\n }\n }, [providerSelectedCustomer])\n\n useEffect(() => {\n fetchUser()\n }, [])\n\n useEffect(() => {\n queryError && console.log('E R R O R: ', queryError)\n voucherQueryError && console.log('E R R O R: ', voucherQueryError)\n createPaymentMethodError &&\n console.log('E R R O R: ', createPaymentMethodError)\n deleteUserCustomAttributeError &&\n console.log('E R R O R: ', deleteUserCustomAttributeError)\n }, [\n queryError,\n voucherQueryError,\n createPaymentMethodError,\n deleteUserCustomAttributeError,\n ])\n\n useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n refetch()\n refetchVouchers()\n })\n return unsubscribe\n }, [])\n\n useEffect(() => {\n // console.log('selectedPaymentMethod', route.params?.selectedPaymentMethod)\n\n if (route.params?.selectedPaymentMethod) {\n setSelectedPaymentMethod({\n paymentMethod: route.params?.selectedPaymentMethod.paymentMethod,\n paymentMethodType:\n route.params?.selectedPaymentMethod.paymentMethodType,\n })\n setSelectedVoucher(route.params?.selectedPaymentMethod.voucher)\n }\n\n const unsubscribe = navigation.addListener('beforeRemove', (e) => {\n if (!itemSelectionMode) {\n return\n }\n const params = {\n ...selectedPaymentMethodRef.current,\n voucher: selectedVoucherRef.current,\n }\n // console.log(params)\n e.preventDefault()\n unsubscribe()\n navigation.navigate({name:navigationTargetOnPaymentSelect, params:params, merge: true})\n })\n }, [])\n\n useEffect(() => {\n const filteredMethods = paymentMethods\n ?.filter((item) => switchablePaymentMethodIds.includes(item.id))\n ?.map(({ id }) => ({\n id,\n active: true,\n }))\n const _switchablePaymentMethods = switchablePaymentMethodIds.map((id) => ({\n id,\n active: filteredMethods?.find((item) => item.id === id)?.active ?? false,\n }))\n\n setSwitchablePaymentMethods(\n hidePayPalPaymentOption\n ? _switchablePaymentMethods.filter(\n (pm) => pm.id.toLowerCase() !== 'paypal'\n )\n : _switchablePaymentMethods\n )\n }, [paymentMethods, hidePayPalPaymentOption])\n\n return (\n \n \n \n {isLoading && (\n \n \n \n )}\n {\n refetch()\n refetchVouchers()\n }}\n />\n }\n >\n \n \n {!hideVouchers && (\n \n {i18n.t('Payment Method')}\n \n \n )}\n {selectablePaymentMethods?.map((item, index) => {\n if (!!item?.card?.last4) {\n return (\n \n )\n } else if (item.id === 'INVOICE_PAYMENT') {\n return (\n \n )\n } else if (item.id === 'BANK_TRANSFER') {\n return (\n \n )\n }\n else {\n return null\n }\n })}\n {mode === 'pick' && (\n <>\n {switchablePaymentMethods\n ?.filter(({ active }) => active)\n ?.filter(\n (item) =>\n !(\n (item.id === 'APPLE_PAY' &&\n Platform.OS === 'android') ||\n (item.id === 'GOOGLE_PAY' && Platform.OS === 'ios')\n )\n )\n ?.map(({ id }) => (\n (\n getSwitchablePaymentMethodIcon(id, size, color)}\n />\n )}\n right={(props) => renderRightIcon(props, id)}\n onPress={() => {\n const pm = paymentMethods.find(\n (item) => item.id === id\n )\n if(!pm) {\n return\n }\n if (itemSelectionMode) {\n setSelectedPaymentMethod({\n paymentMethod: pm,\n paymentMethodType: pm.id,\n })\n } else {\n navigation.navigate(\n {\n name:navigationTargetOnPaymentSelect,\n params:{\n paymentMethod: pm,\n paymentMethodType: pm.id,\n },\n merge: true\n }\n )\n }\n }}\n />\n ))}\n \n )}\n {enableAddPaymentMethod && (\n (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Add Payment Method', {\n paymentMethodType: 'BANKCARD',\n })\n }\n />\n )}\n \n\n {!isLoading && !!switchablePaymentMethods?.length && (\n \n {switchablePaymentMethods?.map(({ active, id }) => (\n active == false && // Payment methods can only be activated, not deactivated\n (\n getSwitchablePaymentMethodIcon(id, size, color)}\n />\n )}\n right={() => (\n onSwitchValueChange(id, val)}\n />\n )}\n />\n ))}\n \n )}\n\n {!hideVouchers && (\n <>\n \n \n \n {i18n.t('Voucher')}\n \n \n\n {voucherData?.listVouchersByCustomerValidUntil?.items?.map(\n (item) => (\n {\n const productRestrictions = (item?.validProducts?.items?.map(validProduct => {\n return `${validProduct?.product?.productPackage?.name} ${validProduct?.product?.productCategory?.name}`\n }) || []).join(\", \");\n return productRestrictions ? `\\n${i18n.t(\"Valid for\")}: ${productRestrictions}` : '';\n })()}\\n${formatItem(item)}`}\n left={(props) => (\n (\n \n )}\n />\n )}\n right={(props) =>\n item.id == selectedVoucher?.id ? (\n (\n \n )}\n />\n ) : null\n }\n onPress={() => {\n if (itemSelectionMode) {\n if (selectedVoucher?.id != item?.id) {\n setSelectedVoucher(item)\n } else {\n setSelectedVoucher(null)\n }\n }\n }}\n />\n )\n )}\n\n {!voucherQueryLoading && (\n (\n (\n \n )}\n />\n )}\n onPress={() => {\n navigation.navigate('Add Voucher Code')\n }}\n />\n )}\n \n \n )}\n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollView: {\n marginHorizontal: 0,\n },\n})\n\nexport default withTheme(PaymentsComponent)","import React, { useEffect, useState, useRef } from 'react'\nimport {\n ScrollView,\n StyleSheet,\n View,\n Platform,\n TouchableWithoutFeedback,\n Dimensions,\n ActivityIndicator,\n SafeAreaView,\n} from 'react-native'\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport {\n Button,\n withTheme,\n Text,\n Caption,\n Title,\n Appbar,\n List,\n} from 'react-native-paper'\nimport { Ionicons } from '@expo/vector-icons'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\nimport { Picker } from '@react-native-picker/picker'\nimport { useQuery, useMutation } from '@apollo/client'\nimport { v4 as uuid } from 'uuid'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport { extendMoment } from 'moment-range'\nimport Modal from 'react-native-modal'\nconst screenWidth = Dimensions.get('window').width\nconst moment = extendMoment(require('moment-timezone'))\n\nconst CountrySelectorModal = ({ theme, ...props }) => {\n const toggleModal = () => {\n props.setVisible(!props.isVisible)\n }\n const [countryCode, setCountryCode] = useState(Utils.countries[0].code)\n\n return (\n props.setVisible(false)}\n swipeDirection={Platform.OS == 'android' ? ['down'] : []}\n statusBarTranslucent\n propagateSwipe={false}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n }}\n customBackdrop={\n props.setVisible(false)}>\n \n \n }\n >\n \n \n \n props.setVisible(false)} />\n \n\n \n setCountryCode(itemValue)}\n >\n {Utils.countries.map((item) => (\n \n ))}\n \n\n {\n props.setCountry(countryCode)\n toggleModal()\n }}\n >\n {i18n.t('Select')}\n \n \n {i18n.t('Cancel')}\n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n scrollableModal: {\n //height: 300,\n margin: 0,\n },\n})\n\nexport default withTheme(CountrySelectorModal)\n","import React, { useState, useEffect } from 'react';\nimport { View, NativeSyntheticEvent, TextInputFocusEventData } from 'react-native';\nimport { TextInput, List, RadioButton, HelperText, withTheme } from 'react-native-paper';\nimport i18n from 'i18n-js';\nimport CountrySelectorModal from './CountrySelectorModal';\nimport Utils from './Utils';\n\ninterface BillingAddressValues {\n country: string;\n addressLine1: string;\n city: string;\n postalCode: string;\n}\n\ninterface BillingDetailsValues {\n cardholderName: string;\n taxId: string;\n billingAddress: BillingAddressValues;\n}\n\ninterface BillingDetailsProps {\n values: BillingDetailsValues;\n errors: any;\n touched: any;\n handleChange: (field: string) => (text: string) => void;\n handleBlur: (field: string) => (e: NativeSyntheticEvent | any) => void;\n setFieldValue: (field: string, value: any) => void;\n setFieldTouched: (field: string, isTouched: boolean) => void;\n readOnly: boolean;\n theme: any;\n initialBillingType?: 'individual' | 'company';\n setBillingType?: (type: 'individual' | 'company') => void;\n}\n\nconst BillingDetailsComponent: React.FC = ({\n values,\n errors,\n touched,\n handleChange,\n handleBlur,\n setFieldValue,\n setFieldTouched,\n readOnly,\n theme,\n initialBillingType = 'individual',\n setBillingType: setParentBillingType,\n}) => {\n const [billingType, setBillingType] = useState<'individual' | 'company'>(initialBillingType);\n const [isCountrySelectorModalVisible, setCountrySelectorModalVisible] = useState(false);\n\n useEffect(() => {\n console.log('BillingDetailsComponent: initialBillingType prop changed to', initialBillingType);\n console.log('BillingDetailsComponent: updating internal billingType state');\n setBillingType(initialBillingType);\n }, [initialBillingType]);\n\n const handleBillingTypeChange = (value: string) => {\n const typedValue = value as 'individual' | 'company';\n console.log('BillingDetailsComponent: handleBillingTypeChange called with', typedValue);\n setBillingType(typedValue);\n if (setParentBillingType) {\n setParentBillingType(typedValue);\n }\n if (typedValue === 'individual') {\n setFieldValue('taxId', '');\n setFieldTouched('taxId', false);\n }\n };\n\n console.log('BillingDetailsComponent: rendering with billingType =', billingType, 'and initialBillingType =', initialBillingType);\n\n return (\n \n {i18n.t('Billing Details')}\n {readOnly && (\n \n \n \n \n )}\n \n \n\n \n \n {errors.cardholderName}\n \n\n \n \n {errors.billingAddress?.addressLine1}\n \n\n \n \n \n \n {errors.billingAddress?.city}\n \n \n\n \n \n \n {errors.billingAddress?.postalCode}\n \n \n \n\n item.code === values.billingAddress.country\n )?.name || '',\n { defaultValue: '' }\n )}\n label={i18n.t('Country')}\n error={\n errors.billingAddress?.country &&\n touched.billingAddress?.country\n }\n right={\n readOnly ? (\n setCountrySelectorModalVisible(true)}\n icon='square-edit-outline'\n size={20}\n />\n ) : null\n }\n editable={false}\n />\n \n {errors.billingAddress?.country}\n \n\n {(billingType === 'company' || values?.taxId !== '') && (\n <>\n \n \n {errors.taxId}\n \n \n )}\n \n );\n};\n\nexport default withTheme(BillingDetailsComponent); ","import React, { useState, useRef, useImperativeHandle } from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport {\n withTheme,\n TextInput,\n List,\n HelperText,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport * as Yup from 'yup'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport i18n from 'i18n-js'\nimport stripe from './TipsiStripeContainer'\nimport BillingDetailsComponent from './BillingDetailsComponent'\nimport Utils from './Utils'\nconst { CardField } = stripe\n\nconst PaymentSchemaCore = {\n cardDetailsComplete: Yup.boolean()\n .required(() => i18n.t('Required'))\n .oneOf([true], () => i18n.t('Required')),\n cardholderName: Yup.string().required(() => i18n.t('Required')),\n billingAddress: Yup.object().shape({\n country: Yup.string().required(() => i18n.t('Required')),\n addressLine1: Yup.string().required(() => i18n.t('Required')),\n city: Yup.string().required(() => i18n.t('Required')),\n postalCode: Yup.string().required(() => i18n.t('Required')),\n }),\n}\nconst PaymentSchema = Yup.object().shape(PaymentSchemaCore)\nconst PaymentSchemaCompany = Yup.object().shape({\n ...PaymentSchemaCore,\n taxId: Yup.string().required(() => i18n.t('Tax ID mandatory')),\n billingAddress: Yup.object().shape({\n country: Yup.string().required(() => i18n.t('Required')),\n addressLine1: Yup.string().required(() => i18n.t('Required')),\n city: Yup.string().required(() => i18n.t('Required')),\n postalCode: Yup.string().required(() => i18n.t('Required')),\n }),\n})\n\nconst PaymentFormComponent = React.forwardRef((props, ref) => {\n const { onSubmit } = props\n const initialValues = props?.initialValues\n ? {\n ...props?.initialValues,\n cardNumberWithSpaces: props?.initialValues?.cardNumber\n ? props?.initialValues?.cardNumber\n : '',\n expiryYearShort: props?.initialValues?.expiryYear\n ? props?.initialValues?.expiryYear.slice(-2)\n : '',\n }\n : {\n cardNumberWithSpaces: '',\n cardNumber: '',\n expiryMonth: '',\n expiryYearShort: '',\n expiryYear: '',\n cardDetailsComplete: false,\n cvc: '',\n cardholderName: '',\n taxId: '',\n billingAddress: {\n country: 'HU',\n addressLine1: '',\n city: '',\n postalCode: '',\n },\n }\n const enableReinitialize = props?.enableReinitialize || false\n\n const inputRef = useRef()\n useImperativeHandle(ref, () => ({\n handleSubmit: () => {\n inputRef.current.handleSubmit()\n },\n }))\n const readOnly = !(props?.readOnly ? props?.readOnly : false)\n const [billingType, setBillingType] = React.useState('individual')\n\n return (\n onSubmit(values)}\n validationSchema={\n billingType == 'individual' ? PaymentSchema : PaymentSchemaCompany\n }\n innerRef={inputRef}\n >\n {({\n handleChange,\n handleBlur,\n values,\n errors,\n touched,\n setFieldValue,\n setFieldTouched,\n }) => (\n \n \n {i18n.t('Card')}\n {readOnly ? (\n <>\n {\n console.log('cardDetails', cardDetails)\n console.log(cardDetails?.complete)\n setFieldValue('cardDetailsComplete', cardDetails?.complete)\n }}\n onFocus={(focusedField) => {\n console.log('focusField', focusedField)\n }}\n />\n \n {errors.cardDetailsComplete}\n \n \n ) : (\n <>\n {\n handleChange('cardNumberWithSpaces')(text)\n handleChange('cardNumber')(text.replace(/ /g, ''))\n }}\n onBlur={handleBlur('cardNumber')}\n value={values.cardNumberWithSpaces\n .replace(/\\s?/g, '')\n .replace(/(\\d{4})/g, '$1 ')\n .trim()}\n label={i18n.t('Card number')}\n error={errors.cardNumber && touched.cardNumber}\n keyboardType='number-pad'\n maxLength={19}\n autoCompleteType={'cc-number'}\n editable={readOnly}\n />\n \n {errors.cardNumber}\n \n\n \n \n \n \n {errors.expiryMonth}\n \n \n \n {\n handleChange('expiryYearShort')(text)\n handleChange('expiryYear')(`20${text}`)\n }}\n onBlur={handleBlur('expiryYear')}\n value={values.expiryYearShort}\n label={i18n.t('Expiry year')}\n error={errors.expiryYear && touched.expiryYear}\n keyboardType='number-pad'\n maxLength={2}\n autoCompleteType={'cc-exp-year'}\n editable={readOnly}\n />\n\n \n {errors.expiryYear}\n \n \n\n \n \n \n {errors.cvc}\n \n \n \n \n )}\n \n \n \n\n \n \n )}\n \n )\n})\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0, //? Constants.statusBarHeight,\n },\n scrollView: {\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(PaymentFormComponent)\n","import React, { useState, useEffect, useMemo, ComponentType } from 'react';\nimport { View, StyleSheet, GestureResponderEvent } from 'react-native';\nimport { useQuery, useMutation } from '@apollo/client';\nimport gql from 'graphql-tag';\nimport {\n ProgressBar,\n Title,\n Subheading,\n Button,\n withTheme,\n Caption,\n Divider,\n Dialog,\n Portal,\n Paragraph,\n} from 'react-native-paper';\nimport { Formik, FormikProps } from 'formik';\nimport * as Yup from 'yup';\nimport i18n from 'i18n-js';\nimport { useUser } from './contexts/UserContext';\nimport BillingDetailsComponent from './BillingDetailsComponent';\nimport Utils from './Utils';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';\n\n// Define a Theme interface instead of importing it\ninterface Theme {\n colors: {\n primary: string;\n error: string;\n accent: string;\n background: string;\n surface: string;\n text: string;\n disabled: string;\n placeholder: string;\n backdrop: string;\n notification: string;\n onSurface: string;\n onBackground: string;\n onPrimary: string;\n onAccent: string;\n onError: string;\n };\n dark: boolean;\n mode: 'adaptive' | 'exact';\n roundness: number;\n animation: {\n scale: number;\n };\n}\n\n/**\n * GraphQL queries and mutations\n */\nconst LIST_CUSTOMER_BILLING_DETAILS = /* GraphQL */ `\n query ListCustomerBillingDetailsByOwner(\n $owner: ID!\n $createdAt: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelCustomerBillingDetailsFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listCustomerBillingDetailsByOwner(\n owner: $owner\n createdAt: $createdAt\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n owner\n billingDetails {\n name\n email\n phone\n address {\n city\n country\n line1\n line2\n postal_code\n state\n }\n }\n metadata {\n tax_id\n }\n paymentMethodType\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n`;\n\nconst CREATE_CUSTOMER_BILLING_DETAILS = /* GraphQL */ `\n mutation CreateCustomerBillingDetails(\n $input: CreateCustomerBillingDetailsInput!\n $condition: ModelCustomerBillingDetailsConditionInput\n ) {\n createCustomerBillingDetails(input: $input, condition: $condition) {\n id\n owner\n billingDetails {\n name\n email\n phone\n address {\n city\n country\n line1\n line2\n postal_code\n state\n }\n }\n metadata {\n tax_id\n }\n paymentMethodType\n createdAt\n updatedAt\n }\n }\n`;\n\nconst UPDATE_CUSTOMER_BILLING_DETAILS = /* GraphQL */ `\n mutation UpdateCustomerBillingDetails(\n $input: UpdateCustomerBillingDetailsInput!\n $condition: ModelCustomerBillingDetailsConditionInput\n ) {\n updateCustomerBillingDetails(input: $input, condition: $condition) {\n id\n owner\n billingDetails {\n name\n email\n phone\n address {\n city\n country\n line1\n line2\n postal_code\n state\n }\n }\n metadata {\n tax_id\n }\n paymentMethodType\n createdAt\n updatedAt\n }\n }\n`;\n\n/**\n * Type definitions\n */\n\n// Address type definition for billing details\ninterface BillingAddress {\n city: string;\n country: string;\n line1: string;\n line2?: string;\n postal_code: string;\n state?: string;\n}\n\n// Metadata type definition for billing details\ninterface BillingMetadata {\n tax_id?: string;\n}\n\n// Billing details from the API\ninterface BillingDetailsData {\n name?: string;\n email?: string;\n phone?: string;\n address?: BillingAddress;\n metadata?: BillingMetadata;\n}\n\ninterface PaymentMethodType {\n CARD: 'CARD';\n BANKCARD: 'BANKCARD';\n SHELLCARD: 'SHELLCARD';\n DKVCARD: 'DKVCARD';\n INVOICE_PAYMENT: 'INVOICE_PAYMENT';\n BANK_TRANSFER: 'BANK_TRANSFER';\n PAYPAL: 'PAYPAL';\n APPLE_PAY: 'APPLE_PAY';\n GOOGLE_PAY: 'GOOGLE_PAY';\n}\n\n// CustomerBillingDetails from the API\ninterface CustomerBillingDetailsData {\n id: string;\n owner: string;\n billingDetails: BillingDetailsData;\n metadata?: BillingMetadata;\n paymentMethodType: PaymentMethodType;\n createdAt: string;\n updatedAt: string;\n}\n\n// Query result structure\ninterface BillingDetailsQueryResult {\n listCustomerBillingDetailsByOwner: {\n items: CustomerBillingDetailsData[];\n nextToken?: string;\n };\n}\n\n// Mutation result for create operation\ninterface CreateBillingDetailsMutationResult {\n createCustomerBillingDetails: CustomerBillingDetailsData;\n}\n\n// Mutation result for update operation\ninterface UpdateBillingDetailsMutationResult {\n updateCustomerBillingDetails: CustomerBillingDetailsData;\n}\n\n// Form values for billing details\ninterface BillingDetailsFormValues {\n cardholderName: string;\n taxId: string;\n billingAddress: {\n country: string;\n addressLine1: string;\n addressLine2: string;\n city: string;\n postalCode: string;\n };\n isCompany?: boolean;\n}\n\n// Define BillingDetailsComponentProps to better type the component\ninterface BillingDetailsComponentProps {\n values: BillingDetailsFormValues;\n errors: any;\n touched: any;\n handleChange: (field: string) => (text: string) => void;\n handleBlur: (field: string) => (e: any) => void;\n setFieldValue: (field: string, value: any) => void;\n setFieldTouched: (field: string, isTouched: boolean) => void;\n readOnly: boolean;\n initialBillingType: BillingType;\n setBillingType: (type: BillingType) => void;\n}\n\n// Billing type options\ntype BillingType = 'individual' | 'company';\n\n// Props for the PaymentComponentBankTransfer component\ninterface PaymentComponentBankTransferProps {\n theme?: Theme;\n route?: any;\n navigation?: any;\n}\n\n// Add WithThemeProps to make withTheme happy\ninterface WithThemeProps {\n theme: Theme;\n}\n\n// User state interface\ninterface UserState {\n user?: {\n username?: string;\n };\n authStatus?: string;\n}\n\n/**\n * PaymentComponentBankTransfer\n * \n * This component allows users to view and manage their billing details for bank transfers.\n * It fetches billing details from the CustomerBillingDetails table and displays them using\n * the BillingDetailsComponent. If no billing details exist, it provides a form for users\n * to enter new details. Users can also update existing details.\n * \n * The component handles:\n * - Fetching existing billing details based on the user's username\n * - Displaying a form with the BillingDetailsComponent\n * - Saving new or updated billing details back to the database\n * - Toggling between individual and company billing types\n */\nconst PaymentComponentBankTransferWithoutTheme: React.FC = ({\n theme,\n route,\n navigation,\n ...props\n}) => {\n // If the theme prop isn't provided, use a default theme with basic colors\n const defaultTheme: Theme = {\n colors: {\n primary: '#6200ee',\n error: '#B00020',\n accent: '#03dac4',\n background: '#f6f6f6',\n surface: '#ffffff',\n text: '#000000',\n disabled: 'rgba(0, 0, 0, 0.26)',\n placeholder: 'rgba(0, 0, 0, 0.54)',\n backdrop: 'rgba(0, 0, 0, 0.5)',\n notification: '#ff80ab',\n onSurface: '#000000',\n onBackground: '#000000',\n onPrimary: '#ffffff',\n onAccent: '#000000',\n onError: '#ffffff'\n },\n dark: false,\n mode: 'exact',\n roundness: 4,\n animation: {\n scale: 1\n }\n };\n const currentTheme = theme || defaultTheme;\n\n // Get user information from context\n const {\n state: { user, authStatus }\n } = useUser() as { state: UserState };\n\n // Component state\n const [billingType, setBillingType] = useState('individual');\n const [savingDetails, setSavingDetails] = useState(false);\n const [billingDetailsId, setBillingDetailsId] = useState(null);\n const [errorState, setErrorState] = useState(null);\n\n // Dialog state\n const [dialogVisible, setDialogVisible] = useState(false);\n const [dialogTitle, setDialogTitle] = useState('');\n const [dialogMessage, setDialogMessage] = useState('');\n const [dialogAction, setDialogAction] = useState<(() => void) | null>(null);\n\n // Define validation schema for billing details\n const BillingDetailsSchema = Yup.object().shape({\n cardholderName: Yup.string().required(i18n.t('Name is required', { defaultValue: 'Name is required' })),\n taxId: billingType === 'company' ? Yup.string().required(i18n.t('Tax ID is required', { defaultValue: 'Tax ID is required' })) : Yup.string(),\n billingAddress: Yup.object().shape({\n country: Yup.string().required(i18n.t('Country is required', { defaultValue: 'Country is required' })),\n addressLine1: Yup.string().required(i18n.t('Address is required', { defaultValue: 'Address is required' })),\n city: Yup.string().required(i18n.t('City is required', { defaultValue: 'City is required' })),\n postalCode: Yup.string().required(i18n.t('Postal code is required', { defaultValue: 'Postal code is required' })),\n }),\n });\n\n // Create default empty form values\n const defaultValues: BillingDetailsFormValues = {\n cardholderName: '',\n taxId: '',\n billingAddress: {\n country: 'DE',\n addressLine1: '',\n addressLine2: '',\n city: '',\n postalCode: '',\n },\n isCompany: false\n };\n\n // Query to fetch customer billing details\n const {\n data: billingDetailsData,\n loading: billingDetailsLoading,\n error: billingDetailsError\n } = useQuery(gql(LIST_CUSTOMER_BILLING_DETAILS), {\n variables: {\n owner: user?.username,\n sortDirection: 'DESC',\n limit: 1,\n filter: {\n paymentMethodType: {\n eq: 'BANK_TRANSFER'\n }\n }\n },\n skip: !user?.username,\n fetchPolicy: 'network-only',\n onError: (error) => {\n console.error('Error fetching billing details:', error);\n setErrorState(error);\n }\n });\n\n // Extract billing details from query result\n const customerBillingDetails = useMemo(() => {\n if (!billingDetailsData ||\n !billingDetailsData.listCustomerBillingDetailsByOwner ||\n !billingDetailsData.listCustomerBillingDetailsByOwner.items ||\n billingDetailsData.listCustomerBillingDetailsByOwner.items.length === 0) {\n return null;\n }\n return billingDetailsData.listCustomerBillingDetailsByOwner.items[0];\n }, [billingDetailsData]);\n\n // Map database values to component values\n const mapDbToFormValues = (dbData: CustomerBillingDetailsData): BillingDetailsFormValues => {\n try {\n if (!dbData || !dbData.billingDetails) return defaultValues;\n\n // Access metadata safely from the correct location\n const billingDetails = dbData.billingDetails || {};\n const metadata = dbData.metadata || {};\n const address = billingDetails.address || {\n city: '',\n country: '',\n line1: '',\n line2: '',\n postal_code: '',\n state: ''\n };\n\n // Determine if it's a company by checking if tax_id exists and is not empty\n const taxId = metadata.tax_id || '';\n const isCompany = !!taxId && taxId.trim() !== '';\n console.log('isCompany', isCompany);\n return {\n cardholderName: billingDetails.name || '',\n taxId: taxId,\n billingAddress: {\n country: address.country || '',\n addressLine1: address.line1 || '',\n addressLine2: address.line2 || '',\n city: address.city || '',\n postalCode: address.postal_code || '',\n },\n isCompany: isCompany\n };\n } catch (error) {\n console.error('Error mapping billing details:', error);\n return defaultValues;\n }\n };\n\n const initialValues = useMemo(() =>\n customerBillingDetails ? mapDbToFormValues(customerBillingDetails) : defaultValues,\n [customerBillingDetails, defaultValues]\n );\n\n // Initialize billing type from values\n useEffect(() => {\n if (customerBillingDetails) {\n const values = mapDbToFormValues(customerBillingDetails);\n // If metadata.tax_id exists and is not empty, set as company, otherwise set as individual\n if (values.isCompany) {\n console.log('Setting billing type to company based on tax_id:', values.taxId);\n setBillingType('company');\n } else {\n console.log('Setting billing type to individual (no tax_id or empty)');\n setBillingType('individual');\n }\n }\n }, [customerBillingDetails]);\n\n // Helper function to show dialog\n const showDialog = (title: string, message: string, onDismiss?: () => void) => {\n setDialogTitle(title);\n setDialogMessage(message);\n setDialogAction(onDismiss || null);\n setDialogVisible(true);\n };\n\n // Helper function to hide dialog\n const hideDialog = () => {\n setDialogVisible(false);\n if (dialogAction) {\n dialogAction();\n setDialogAction(null);\n }\n };\n\n // Update navigation on completion\n const handleSuccessfulSave = () => {\n // Check if we need to return to a specific screen after saving\n if (route?.params?.returnToScreen) {\n // Include any return parameters that were specified\n const returnParams = route?.params?.returnWithParams || { returnFromBillingDetails: true };\n \n navigation?.navigate({\n name: route.params.returnToScreen,\n params: returnParams,\n merge: true\n });\n } else {\n // Standard navigation back if no specific return screen\n navigation?.goBack();\n }\n };\n\n // Mutations for creating/updating billing details\n const [createBillingDetails, { loading: createLoading, error: createError }] = useMutation(\n gql(CREATE_CUSTOMER_BILLING_DETAILS),\n {\n onCompleted: async (data) => {\n if (data?.createCustomerBillingDetails?.id) {\n setBillingDetailsId(data.createCustomerBillingDetails.id);\n // Success - navigate back with proper params\n handleSuccessfulSave();\n }\n },\n onError: (error) => {\n console.error('Error creating billing details:', error);\n showDialog(\n i18n.t('Error', { defaultValue: 'Error' }),\n i18n.t('Failed to save billing details', { defaultValue: 'Failed to save billing details' })\n );\n }\n }\n );\n\n const [updateBillingDetails, { loading: updateLoading, error: updateError }] = useMutation(\n gql(UPDATE_CUSTOMER_BILLING_DETAILS),\n {\n onCompleted: async (data) => {\n if (data?.updateCustomerBillingDetails) {\n // Success - navigate back with proper params\n handleSuccessfulSave();\n }\n },\n onError: (error) => {\n console.error('Error updating billing details:', error);\n showDialog(\n i18n.t('Error', { defaultValue: 'Error' }),\n i18n.t('Failed to update billing details', { defaultValue: 'Failed to update billing details' })\n );\n }\n }\n );\n\n // Save billing details\n const saveBillingDetails = async (values: BillingDetailsFormValues): Promise => {\n if (!values) {\n console.error('No values provided to save');\n showDialog(\n i18n.t('Error', { defaultValue: 'Error' }),\n i18n.t('Missing billing details', { defaultValue: 'Missing billing details' })\n );\n return;\n }\n\n setSavingDetails(true);\n try {\n // Create the billingDetails input object for the mutation\n const billingDetailsInput: BillingDetailsData = {\n name: values.cardholderName || '',\n address: {\n city: values.billingAddress?.city || '',\n country: values.billingAddress?.country || '',\n line1: values.billingAddress?.addressLine1 || '',\n line2: values.billingAddress?.addressLine2 || '',\n postal_code: values.billingAddress?.postalCode || '',\n state: '',\n }\n };\n\n // Create the metadata input separately - use billingType here, not values.isCompany\n const metadataInput = billingType === 'company' && values.taxId\n ? { tax_id: values.taxId }\n : null;\n\n if (customerBillingDetails?.id) {\n // Update existing record\n await updateBillingDetails({\n variables: {\n input: {\n id: customerBillingDetails.id,\n billingDetails: billingDetailsInput,\n metadata: metadataInput,\n paymentMethodType: 'BANK_TRANSFER'\n },\n },\n });\n // Navigation is now handled in the mutation's onCompleted callback\n } else {\n // Create new record\n await createBillingDetails({\n variables: {\n input: {\n owner: user?.username,\n billingDetails: billingDetailsInput,\n metadata: metadataInput,\n paymentMethodType: 'BANK_TRANSFER'\n },\n },\n });\n // Navigation is now handled in the mutation's onCompleted callback\n }\n } catch (error) {\n console.error('Error in saveBillingDetails:', error);\n showDialog(\n i18n.t('Error', { defaultValue: 'Error' }),\n i18n.t('Failed to save billing details', { defaultValue: 'Failed to save billing details' })\n );\n } finally {\n setSavingDetails(false);\n }\n };\n\n useEffect(() => {\n if (customerBillingDetails?.id) {\n setBillingDetailsId(customerBillingDetails.id);\n }\n }, [customerBillingDetails]);\n\n // Safety check for user\n if (!user?.username) {\n return (\n \n \n {i18n.t('User Information Missing', { defaultValue: 'User Information Missing' })}\n \n \n {i18n.t('Please log in to access bank transfer details', { defaultValue: 'Please log in to access bank transfer details' })}\n \n \n );\n }\n\n // Handle loading state\n if (billingDetailsLoading) {\n return (\n \n \n \n {i18n.t('Loading billing details...', { defaultValue: 'Loading billing details...' })}\n \n \n );\n }\n\n // Handle error state\n if (billingDetailsError || errorState) {\n return (\n \n \n {i18n.t('Error', { defaultValue: 'Error' })}\n \n \n {i18n.t('Failed to load billing details. Please try again later.', { defaultValue: 'Failed to load billing details. Please try again later.' })}\n \n navigation?.goBack()}\n >\n {i18n.t('Go Back', { defaultValue: 'Go Back' })}\n \n \n );\n }\n\n return (\n \n\n \n {(formikProps: FormikProps) => {\n // Extract needed props from formikProps\n const {\n handleSubmit,\n isValid,\n values,\n errors,\n touched,\n setFieldValue,\n setFieldTouched\n } = formikProps;\n\n // Create type-safe handlers for BillingDetailsComponent\n const handleChange = (field: string) => (text: string) => {\n setFieldValue(field, text);\n };\n\n const handleBlur = (field: string) => (e: any) => {\n setFieldTouched(field, true);\n };\n\n // Create a safe handler for the submit button\n const handleFormSubmit = () => {\n handleSubmit();\n };\n\n console.log('Rendering BillingDetailsComponent with billingType:', billingType);\n \n return (\n \n \n \n {i18n.t('Pay by bank transfer details', { defaultValue: 'Pay by bank transfer' })}\n \n\n \n {customerBillingDetails\n ? i18n.t('Update Billing Details', { defaultValue: 'Update Billing Details' })\n : i18n.t('Save Billing Details', { defaultValue: 'Save Billing Details' })}\n \n\n {/* Dialog for alerts that work across all platforms */}\n \n \n {dialogTitle}\n \n {dialogMessage}\n \n \n \n \n \n \n \n );\n }}\n \n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n margin: 20,\n },\n title: {\n textAlign: 'center',\n },\n subheading: {\n textAlign: 'center',\n marginBottom: 10,\n },\n caption: {\n marginVertical: 10,\n },\n divider: {\n marginVertical: 10,\n },\n formContainer: {\n marginBottom: 20,\n },\n button: {\n marginTop: 20,\n }\n});\n\n// Update the export approach to fix TypeScript error\nconst ThemedComponent = withTheme(PaymentComponentBankTransferWithoutTheme as ComponentType);\n\n// Export with proper type casting\nexport default ThemedComponent as React.ComponentType; ","import { useEffect, useRef, useState } from 'react'\nimport { useQuery, useMutation } from '@apollo/client'\nimport { View, StyleSheet } from 'react-native'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport ApplePayLogo from '../assets/Apple_Pay_Mark.svg'\nimport {\n FAB,\n ProgressBar,\n withTheme,\n Title,\n Subheading,\n Dialog,\n Button,\n Portal,\n Paragraph,\n} from 'react-native-paper'\nimport Constants from 'expo-constants'\nimport { Ionicons } from '@expo/vector-icons'\nimport PaymentFormComponent from './PaymentFormComponent'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport { useUser } from './contexts/UserContext'\nimport { useApolloClient } from '@apollo/client';\nimport PaymentComponentBankTransfer from './PaymentComponentBankTransfer'\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst GET_PAYMENT_METHOD = gql(queries.getPaymentMethod)\nconst DELETE_PAYMENT_METHOD = gql(mutations.deletePaymentMethod)\nconst LIST_SERVICEORDERS_BY_OWNER = /* GraphQL */ `\n query ListServiceOrdersByOwner(\n $owner: ID!\n $carAvailableFrom: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelServiceOrderFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listServiceOrdersByOwner(\n owner: $owner\n carAvailableFrom: $carAvailableFrom\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n groupOrderID\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n }\n nextToken\n }\n }\n`\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleUpdatePaymentMethod = (client, mutationData) => {\n if (mutationData && mutationData.data.updatePaymentMethod) {\n const getPaymentMethodData = client.readQuery({\n query: GET_PAYMENT_METHOD,\n variables: {\n id: mutationData.data.updatePaymentMethod.id,\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n },\n })\n client.writeQuery({\n query: GET_PAYMENT_METHOD,\n data: {\n getPaymentMethod: {\n ...getPaymentMethodData.getPaymentMethod,\n ...mutationData.data.updatePaymentMethod,\n },\n },\n })\n }\n}\n\n/* -------------------------------- Component ------------------------------- */\n\nconst DetachPaymentRejectedModal = ({ theme, ...props }) => {\n const toggleModal = () => { props.setVisible(!props.isVisible); };\n return (\n \n props.setVisible(false)}\n >\n {i18n.t(\"DETACH_PAYMENT_REJECTED_TITLE\")}\n \n {i18n.t(\"DETACH_PAYMENT_REJECTED_DETAILS\")}\n \n \n \n \n \n \n\n )\n\n}\n\nconst CarComponent = ({ theme, route, navigation, ...props }) => {\n const formRef = useRef(null)\n const {\n state: { user, authStatus }\n } = useUser();\n const client = useApolloClient()\n const [detachPaymentRejectedModalVisible, setDetachPaymentRejectedModalVisible] = useState(false)\n const paymentMethodId = route.params?.paymentMethod?.id\n const paymentMethodType = route.params?.paymentMethodType\n const {\n data,\n error: queryError,\n loading: queryLoading,\n } = useQuery(GET_PAYMENT_METHOD, {\n variables: {\n id: paymentMethodId,\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n },\n fetchPolicy: 'cache-and-network',\n skip:\n paymentMethodType == 'DKVCARD' ||\n paymentMethodType == 'SHELLCARD' ||\n paymentMethodType == 'INVOICE_PAYMENT' ||\n paymentMethodType == 'BANK_TRANSFER' ||\n paymentMethodType == 'PAYPAL' ||\n paymentMethodType === 'APPLE_PAY' ||\n paymentMethodType === 'GOOGLE_PAY',\n })\n const [\n deletePaymentMethodMutation,\n {\n error: mutationErrorDeletePaymentMethod,\n loading: mutationLoadingDeletePaymentMethod,\n },\n ] = useMutation(DELETE_PAYMENT_METHOD, {\n onCompleted: () => {\n navigation.navigate('Payments')\n },\n })\n\n useEffect(() => {\n queryError && console.log('E R R O R: ', queryError)\n }, [queryError, navigation])\n\n const deletePaymentMethod = async () => {\n const { data: serviceOrdersData } = await client.query({\n query: gql(LIST_SERVICEORDERS_BY_OWNER),\n variables: {\n owner: user?.username,\n sortDirection: 'DESC',\n filter: {\n and: [\n {\n or: [\n {\n state:\n { eq: 'SUBMITTED' }\n },\n {\n state:\n { eq: 'ACCEPTED' }\n },\n {\n state:\n { eq: 'SOS' }\n },\n {\n state:\n { eq: 'PRESTARTED' }\n },\n {\n state:\n { eq: 'STARTED' },\n },\n {\n state:\n { eq: 'PENDING_WITH_CUSTOMER' }\n }\n ]\n },\n {\n paymentMethodID: {\n eq: paymentMethodId\n }\n }\n ]\n },\n limit: 200,\n },\n fetchPolicy: 'network-only',\n })\n console.log(\"serviceOrdersData\", serviceOrdersData)\n if (!serviceOrdersData.listServiceOrdersByOwner) {\n setDetachPaymentRejectedModalVisible(true)\n return\n }\n\n if ((serviceOrdersData?.listServiceOrdersByOwner?.items?.length || 0) > 0) {\n setDetachPaymentRejectedModalVisible(true)\n return\n }\n\n deletePaymentMethodMutation({\n variables: {\n id: paymentMethodId,\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n },\n })\n }\n\n const isLoading = queryLoading || mutationLoadingDeletePaymentMethod\n return (\n <>\n \n {isLoading && (\n \n \n \n )}\n\n \n {paymentMethodType == 'SHELLCARD' ? (\n \n {i18n.t('Shell Fuel Card')}\n \n {i18n.t('Payment on site')}\n \n \n ) : paymentMethodType == 'DKVCARD' ? (\n \n {i18n.t('DKV Card')}\n \n {i18n.t('Payment on site')}\n \n \n ) : paymentMethodType == 'INVOICE_PAYMENT' ? (\n \n {i18n.t('Invoice Payment')}\n \n {i18n.t('Pay by invoice')}\n \n \n ) : paymentMethodType == 'BANK_TRANSFER' ? (\n \n ) : paymentMethodType == 'PAYPAL' ? (\n \n {i18n.t('PayPal')}\n \n {i18n.t('Paypal note')}\n \n \n ) : paymentMethodType == 'APPLE_PAY' ? (\n \n \n {i18n.t('Apple Pay')}\n \n {i18n.t('Apple Pay note')}\n \n \n ) : paymentMethodType == 'GOOGLE_PAY' ? (\n \n {i18n.t('Google Pay')}\n \n {i18n.t('Google Pay note')}\n \n \n ) : data?.getPaymentMethod?.card?.last4 ? (\n \n { }}\n ref={formRef}\n readOnly={true}\n initialValues={\n data?.getPaymentMethod && !queryLoading\n ? {\n cardNumber: `•••• ${data?.getPaymentMethod.card.last4}`,\n expiryMonth: String(\n data?.getPaymentMethod.card.exp_month\n ).padStart(2, '0'),\n expiryYear: `${data?.getPaymentMethod.card.exp_year}`,\n cvc: '•••',\n cardholderName:\n data?.getPaymentMethod?.billing_details.name,\n billingAddress: {\n country:\n data?.getPaymentMethod?.billing_details.address\n ?.country,\n addressLine1:\n data?.getPaymentMethod?.billing_details.address\n ?.line1,\n addressLine2:\n data?.getPaymentMethod?.billing_details.address\n ?.line2,\n city: data?.getPaymentMethod?.billing_details.address\n ?.city,\n postalCode:\n data?.getPaymentMethod?.billing_details.address\n ?.postal_code,\n },\n taxId: data?.getPaymentMethod?.metadata?.tax_id,\n }\n : {\n taxId: '',\n cardNumber: '',\n expiryMonth: '',\n expiryYear: '',\n cvc: '',\n cardholderName: '',\n billingAddress: {\n country: '',\n addressLine1: '',\n addressLine2: '',\n city: '',\n postalCode: '',\n },\n }\n }\n enableReinitialize={true}\n />\n\n \n (\n \n )}\n small\n label={i18n.t('Remove')}\n disabled={isLoading}\n loading={isLoading}\n onPress={deletePaymentMethod}\n testID={'RemovePaymentMethod'}\n />\n \n \n ) : null}\n \n \n )\n}\n\nconst styles = StyleSheet.create({\n fab: {\n position: 'absolute',\n margin: 16,\n left: 0,\n right: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 4,\n },\n container: {\n flex: 1,\n marginTop: 0, //? Constants.statusBarHeight,\n },\n scrollView: {\n marginHorizontal: 0,\n flex: 1,\n },\n text: {\n fontSize: 42,\n },\n formContainer: {\n marginBottom: 20,\n },\n})\n\nexport default withTheme(CarComponent)\n","import React from 'react';\nimport { View, StyleSheet, SafeAreaView, ScrollView } from 'react-native';\nimport { List, withTheme } from 'react-native-paper';\nimport { Ionicons } from '@expo/vector-icons';\nimport i18n from 'i18n-js';\nimport Utils from './Utils';\nimport ErrorDialog from './ErrorDialog';\n\nconst PaymentMethodTypeSelector = ({ theme, route, navigation, ...props }) => {\n const [isErrorModalVisible, setErrorModalVisible] = React.useState(false);\n return (\n <>\n \n \n \n \n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() => {\n navigation.navigate('Add Payment Method', {\n paymentMethodType: 'BANKCARD',\n });\n }}\n />\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() => {\n navigation.navigate('Add Payment Method', {\n paymentMethodType: 'SHELLCARD',\n });\n }}\n />\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() => {\n navigation.navigate('Add Payment Method', {\n paymentMethodType: 'DKVCARD',\n });\n }}\n />\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() => {\n navigation.navigate('Add Payment Method', {\n paymentMethodType: 'PAYPAL',\n });\n }}\n />\n \n \n \n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollView: {\n marginHorizontal: 0,\n },\n});\n\nexport default withTheme(PaymentMethodTypeSelector);\n","import React, { useEffect, useState } from 'react';\nimport {\n Button,\n Dialog,\n Paragraph,\n Text,\n Portal,\n withTheme,\n ActivityIndicator,\n} from 'react-native-paper'\nimport { Platform } from \"react-native\";\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nconst semver = require('semver');\nconst moment = require('moment-timezone')\nimport Constants from 'expo-constants'\nimport { AppState } from 'react-native';\n\nconst SystemMessage = ({ theme }) => {\n const [data, setData] = useState(null);\n const [isDismissed, setDismissed] = useState(false);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n const fetchData = async () => {\n try {\n const timestamp = Date.now(); // Get current timestamp\n const url = `https://s3.eu-central-1.amazonaws.com/www.appicltd.com/cleenup_system_messages/sysmessage-${Utils.isCustomerApp() ? \"customer\" : \"provider\"}-${Constants.expoConfig.extra.env}.json?t=${timestamp}`;\n\n const response = await fetch(url, { cache: 'no-store' });\n\n if (response.ok) {\n const jsonData = await response.json();\n setData(jsonData);\n } else {\n throw new Error('Network response was not ok.');\n }\n } catch (err) {\n setError(err.message);\n } finally {\n setLoading(false);\n }\n };\n\n const appStateListener = AppState.addEventListener('change', (nextAppState) => {\n if (nextAppState === 'active') {\n fetchData();\n }\n });\n\n fetchData();\n\n return () => {\n appStateListener.remove();\n };\n }, []);\n\n const checkVersion = Constants.expoConfig.version;\n const systemMessage = data?.systemMessages.find((message) => {\n const lowVersion = message?.appVersionGTE;\n const highVersion = message?.appVersionLT;\n const range = `>=${lowVersion} <${highVersion}`;\n const isInBetweenVersion = semver.satisfies(checkVersion, range);\n const from = moment(message?.from);\n const until = moment(message?.until);\n const isWithinTimeRange = moment().isBetween(from, until);\n return isInBetweenVersion && isWithinTimeRange\n })\n\n const showDialog = !!systemMessage && systemMessage?.platforms?.includes(Platform.OS) && !isDismissed;\n const title = systemMessage?.text?.[i18n.locale]?.title || systemMessage?.text?.[\"en\"]?.title || \"Something went wrong\"\n const body = systemMessage?.text?.[i18n.locale]?.body || systemMessage?.text?.[\"en\"]?.body || \"Please try again later\"\n return (\n \n {\n if (!systemMessage?.blocking) {\n setDismissed(true)\n }\n }}\n dismissableBackButton={!systemMessage?.blocking}\n dismissable={!systemMessage?.blocking}\n >\n {title}\n \n {body}\n \n \n {!systemMessage?.blocking && {\n setDismissed(true)\n }}\n >\n {i18n.t('Ok')}\n \n }\n \n \n \n );\n};\n\nexport default withTheme(SystemMessage);","import React, { useEffect, useState, useRef } from 'react'\nimport { useMutation } from '@apollo/client'\nimport { View, StyleSheet, Platform } from 'react-native'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport {\n withTheme,\n TextInput,\n FAB,\n ProgressBar,\n List,\n RadioButton,\n Title,\n Subheading,\n HelperText,\n} from 'react-native-paper'\nimport Constants from 'expo-constants'\nimport { Formik } from 'formik'\nimport * as Yup from 'yup'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport ErrorDialog from './ErrorDialog'\nimport { Dimensions } from 'react-native'\nimport CountrySelectorModal from './CountrySelectorModal'\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_PAYMENT_METHODS = gql(queries.listPaymentMethods)\nconst CREATE_PAYMENT_METHOD = gql(mutations.createPaymentMethod)\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleUpdatePaymentMethod = (client, mutationData) => {\n if (!mutationData?.data?.createPaymentMethod) return\n\n const listPaymentMethodsData = client.readQuery({\n query: LIST_PAYMENT_METHODS,\n variables: {\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n filter: { isActive: { eq: true } },\n },\n })\n client.writeQuery({\n query: LIST_PAYMENT_METHODS,\n variables: {\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n filter: { isActive: { eq: true } },\n },\n data: {\n listPaymentMethods: {\n ...listPaymentMethodsData.listPaymentMethods,\n items: [\n ...listPaymentMethodsData.listPaymentMethods.items,\n mutationData.data.createPaymentMethod,\n ],\n },\n },\n })\n}\n\n/* -------------------------------- Component ------------------------------- */\n\nconst AddPaymentComponent = ({ theme, route, navigation, ...props }) => {\n const formRef = useRef(null)\n const paymentMethodType = route.params?.paymentMethodType\n\n const [dimensions, setDimensions] = useState({\n window: Dimensions.get('window'),\n screen: Dimensions.get('screen'),\n })\n const onDimensionsChange = ({ window, screen }) => {\n setDimensions({ window, screen })\n }\n\n const [confirmingSetupIntent, setConfirmingSetupIntent] = useState(false)\n const [clientSecret, setClientSecret] = useState()\n const [intentMode, setIntentMode] = useState(\"card\")\n const [\n createPaymentMethodMutation,\n {\n error: _mutationErrorCreatePaymentMethod,\n loading: mutationLoadingCreatePaymentMethod,\n },\n ] = useMutation(CREATE_PAYMENT_METHOD, {\n onCompleted: (data) => handleMutationResponse(data, 'createPaymentMethod'),\n })\n useEffect(() => {\n if (paymentMethodType == 'BANKCARD') {\n createPaymentMethodMutation({\n variables: {\n paymentMethodType: 'BANKCARD',\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n },\n })\n }\n if (paymentMethodType == 'PAYPAL') {\n createPaymentMethodMutation({\n variables: {\n paymentMethodType: 'PAYPAL',\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n },\n })\n }\n const dimensionsHandler = Dimensions.addEventListener(\n 'change',\n onDimensionsChange\n )\n return () => {\n dimensionsHandler.remove()\n }\n }, [])\n\n const PaymentSchemaCore = {\n cardholderName: Yup.string().required(() => i18n.t('Required')),\n billingAddress: Yup.object().shape({\n country: Yup.string().required(() => i18n.t('Required')),\n addressLine1: Yup.string().required(() => i18n.t('Required')),\n city: Yup.string().required(() => i18n.t('Required')),\n postalCode: Yup.string().required(() => i18n.t('Required')),\n }),\n }\n const PaymentSchema = Yup.object().shape(PaymentSchemaCore)\n const PaymentSchemaCompany = Yup.object().shape({\n ...PaymentSchemaCore,\n taxId: Yup.string().required(() => i18n.t('Tax ID mandatory')),\n billingAddress: Yup.object().shape({\n country: Yup.string().required(() => i18n.t('Required')),\n addressLine1: Yup.string().required(() => i18n.t('Required')),\n city: Yup.string().required(() => i18n.t('Required')),\n postalCode: Yup.string().required(() => i18n.t('Required')),\n }),\n })\n\n const handleMutationResponse = async (data, fieldName) => {\n if (data[fieldName]?.result == 'NO_OPERATION') {\n console.log(`${fieldName} mutation returned no operation`)\n } else if (data[fieldName]?.result == 'SUCCESS') {\n // refetch()\n console.log(data)\n\n try {\n if (\n data[fieldName]?.setupIntentStatus == 'requires_confirmation' ||\n data[fieldName]?.setupIntentStatus == 'requires_action' ||\n data[fieldName]?.setupIntentStatus == 'requires_payment_method'\n ) {\n setClientSecret(data[fieldName]?.clientSecret)\n } else {\n navigation.navigate({ name: 'Payments', merge: true });\n }\n } catch (e) {\n // handle exception here\n console.log('confirmSetupIntent exception:' + JSON.stringify(e))\n setConfirmingSetupIntent(false)\n setErrorModalVisible(true)\n }\n } else if (data[fieldName]?.result == 'FAILED') {\n console.log(`${fieldName} mutation failed`)\n setErrorModalVisible(true)\n } else {\n console.log(`${fieldName} mutation unidentified error`)\n setErrorModalVisible(true)\n }\n }\n\n const handleConfirmPayPalSetup = async () => {\n setIntentMode('paypal')\n createPaymentMethodMutation({\n variables: { paymentMethodType: 'PAYPAL' },\n })\n }\n\n const callSubmit = () => {\n if (paymentMethodType == 'BANKCARD') {\n setIntentMode('card')\n formRef.current.handleSubmit()\n } else if (paymentMethodType == 'SHELLCARD') {\n createPaymentMethodMutation({\n variables: { paymentMethodType: 'SHELLCARD' },\n })\n } else if (paymentMethodType == 'DKVCARD') {\n createPaymentMethodMutation({\n variables: { paymentMethodType: 'DKVCARD' },\n })\n } else if (paymentMethodType == 'PAYPAL') {\n handleConfirmPayPalSetup()\n } else {\n console.log('Unknown Payment Method type, submit skipped.')\n }\n }\n const [isErrorModalVisible, setErrorModalVisible] = React.useState(false)\n const isLoading = mutationLoadingCreatePaymentMethod || confirmingSetupIntent\n\n const appearance = {\n theme: 'stripe',\n variables: {\n colorPrimary: theme.colors.primary,\n colorBackground: theme.colors.background,\n colorText: theme.colors.text,\n colorDanger: theme.colors.error,\n fontFamily: 'Helvetica Neue',\n },\n }\n const readOnly = !(props?.readOnly ? props?.readOnly : false)\n const [billingType, setBillingType] = React.useState('individual')\n const [isCountrySelectorModalVisible, setCountrySelectorModalVisible] =\n useState(false)\n const initialValues = {\n cardNumberWithSpaces: '',\n cardNumber: '',\n expiryMonth: '',\n expiryYearShort: '',\n expiryYear: '',\n cardDetailsComplete: false,\n cvc: '',\n cardholderName: '',\n taxId: '',\n billingAddress: {\n country: 'HU',\n addressLine1: '',\n city: '',\n postalCode: '',\n },\n }\n\n const [elements, setElements] = useState()\n const [stripe, setStripe] = useState()\n useEffect(() => {\n if (clientSecret && intentMode === 'card') {\n const options = {\n clientSecret,\n appearance,\n }\n const stripe = window.Stripe(\n Constants.expoConfig.extra.stripePublishableKey\n )\n\n //? Set up Stripe.js and Elements to use in checkout form, passing the client secret obtained in step 2\n const elements = stripe.elements(options)\n //? Create and mount the Payment Element\n const paymentElement = elements.create('payment', {\n terms: {\n card: 'never',\n },\n fields: {\n billingDetails: {\n name: 'never',\n email: 'never',\n phone: 'never',\n address: {\n line1: 'never',\n line2: 'never',\n city: 'never',\n state: 'never',\n country: 'never',\n postalCode: 'never',\n },\n },\n },\n })\n\n paymentElement.mount('#payment-element')\n setElements(elements)\n setStripe(stripe)\n }\n }, [clientSecret, intentMode])\n\n const [stripeEventListener, setStripeEventListener] = useState()\n\n const renderPaymentMethods = () => {\n switch (paymentMethodType) {\n case 'BANKCARD':\n return (\n \n {Platform.OS == 'web' && !!clientSecret && (\n {\n const form = document.getElementById('payment-form')\n\n const myConfirmSetupIntent = async (event) => {\n event.preventDefault()\n setConfirmingSetupIntent(true)\n const { error } = await stripe.confirmSetup({\n elements,\n redirect: 'if_required',\n confirmParams: {\n payment_method_data: {\n billing_details: {\n name: values?.cardholderName,\n email: '',\n phone: '',\n address: {\n line1: values.billingAddress.addressLine1,\n line2: values.taxId,\n city: values.billingAddress.city,\n state: '',\n country: values.billingAddress.country,\n postal_code: values.billingAddress.postalCode,\n },\n },\n },\n },\n })\n\n if (error) {\n //? This point will only be reached if there is an immediate error when\n //? confirming the payment. Show error to your customer (for example, payment\n //? details incomplete)\n const messageContainer =\n document.querySelector('#error-message')\n messageContainer.textContent = error.message\n setConfirmingSetupIntent(false)\n } else {\n //? Your customer will be redirected to your 'return_url'. For some payment\n //? methods like iDEAL, your customer will be redirected to an intermediate\n //? site first to authorize the payment, then redirected to the 'return_url'.\n navigation.navigate({ name: 'Payments', merge: true });\n }\n }\n if (!!stripeEventListener) {\n form.removeEventListener('submit', stripeEventListener)\n }\n setStripeEventListener(() => myConfirmSetupIntent)\n form.addEventListener('submit', myConfirmSetupIntent)\n document.getElementById('submit').click()\n }}\n validationSchema={\n billingType == 'individual'\n ? PaymentSchema\n : PaymentSchemaCompany\n }\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n values,\n errors,\n touched,\n setFieldValue,\n setFieldTouched,\n }) => (\n \n \n \n
\n
\n \n\n
\n
\n
\n\n \n \n {i18n.t('Billing Details')}\n \n {readOnly && (\n {\n setBillingType(value)\n if (value == 'individual') {\n setFieldValue('taxId', '')\n setFieldTouched('taxId', false)\n }\n }}\n value={billingType}\n >\n \n \n \n )}\n \n \n {errors.cardholderName}\n \n\n \n \n {errors.billingAddress?.addressLine1}\n \n\n \n \n \n \n {errors.billingAddress?.city}\n \n \n\n \n \n \n {errors.billingAddress?.postalCode}\n \n \n \n item.code == values.billingAddress.country\n )?.name || '',\n { defaultValue: '' }\n )}\n label={i18n.t('Country')}\n error={\n errors.billingAddress?.country &&\n touched.billingAddress?.country\n }\n right={\n readOnly ? (\n \n setCountrySelectorModalVisible(true)\n }\n icon='square-edit-outline'\n size={20}\n />\n ) : null\n }\n editable={false}\n />\n \n {errors.billingAddress?.country}\n \n {(billingType == 'company' || values?.taxId !== '') && (\n <>\n \n \n {errors.taxId}\n \n \n )}\n \n \n \n )}\n \n )}\n \n )\n case 'SHELLCARD':\n return (\n \n {i18n.t('Shell Fuel Card')}\n \n {i18n.t('Payment on site')}\n \n \n )\n case 'DKVCARD':\n return (\n \n {i18n.t('DKV Card')}\n \n {i18n.t('Payment on site')}\n \n \n )\n case 'PAYPAL':\n return (\n \n {i18n.t('PayPal')}\n \n {i18n.t('Payment on site')}\n \n \n )\n default:\n return null\n }\n }\n\n return (\n <>\n \n {isLoading && (\n \n \n \n )}\n\n \n {renderPaymentMethods()}\n \n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n fab: {\n position: 'absolute',\n margin: 16,\n left: 0,\n right: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 4,\n },\n container: {\n flex: 1,\n marginTop: 0, //? Constants.statusBarHeight,\n },\n scrollView: {\n marginHorizontal: 0,\n flex: 1,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(AddPaymentComponent)\n","import React, { useEffect, useState } from 'react';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { View, StyleSheet, SafeAreaView, ScrollView, RefreshControl, Platform } from 'react-native';\nimport { v4 as uuid } from 'uuid';\nimport gql from 'graphql-tag';\nimport * as queries from \"../graphql/queries.js\";\nimport * as mutations from \"../graphql/mutations.js\";\nimport { Button, TextInput, Caption, List, Text, Title, Subheading, Modal, Portal, ProgressBar, withTheme } from 'react-native-paper';\nimport Constants from 'expo-constants';\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';\nimport i18n from 'i18n-js';\nimport Utils from './Utils'\nimport ErrorDialog from './ErrorDialog';\n\nconst moment = require('moment-timezone');\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_VOUCHERS_BY_CUSTOMER_VALID_UNTIL = gql(`query ListVouchersByCustomerValidUntil(\n $owner: ID!\n $validUntil: ModelStringKeyConditionInput\n $sortDirection: ModelSortDirection\n $filter: ModelVoucherFilterInput\n $limit: Int\n $nextToken: String\n) {\n listVouchersByCustomerValidUntil(\n owner: $owner\n validUntil: $validUntil\n sortDirection: $sortDirection\n filter: $filter\n limit: $limit\n nextToken: $nextToken\n ) {\n items {\n id\n type\n state\n owner\n serviceOrderID\n serviceOrder {\n id\n groupOrderID\n owner\n submittingPartnerUsername\n state\n stateReason\n carID\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n paymentIntentLastUpdated\n paymentProcessorAccount\n carAvailableFrom\n carAvailableUntil\n isCarIndoors\n isExtraDirty\n offeringID\n areaName\n discountPercentage\n serviceFacilityID\n contactPhoneNumber\n error\n createdAt\n updatedAt\n __typename\n }\n validFrom\n validUntil\n validCarPlate\n validAreaName\n validProducts {\n items {\n product {\n productCategory {\n name\n }\n productPackage {\n name\n }\n }\n }\n }\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n parentVoucher {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n showAsDiscountOnInvoice\n maxClaimCount\n remainingClaimCount\n maxUseCount\n remainingUseCount\n parentVoucherID\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n generatedByUserID\n createdAt\n updatedAt\n __typename\n }\n nextToken\n __typename\n }\n}\n`)\n\nconst today = moment()\n\n/* -------------------------------- Component ------------------------------- */\n\nconst VouchersComponent = ({ theme, route, navigation, ...props }) => {\n const [selectedVoucher, _setSelectedVoucher] = useState();\n\n const selectedVoucherRef = React.useRef(selectedVoucher);\n const setSelectedVoucher = data => {\n selectedVoucherRef.current = data;\n _setSelectedVoucher(data);\n };\n\n const selectedProducts = route.params?.selectedProducts;\n\n const listVoucherParams = route.params?.listVoucherParams || { validUntilGt: today.toISOString(), valueCurrencyAllowed: null };\n\n\n const [user, setUser] = useState();\n const itemSelectionMode = true\n\n const { data: voucherData, error: voucherQueryError, loading: voucherQueryLoading, refetch: refetchVouchers } = useQuery(LIST_VOUCHERS_BY_CUSTOMER_VALID_UNTIL, {\n variables: {\n owner: user?.username,\n validUntil: {\n gt: listVoucherParams.validUntilGt\n },\n sortDirection: \"ASC\",\n filter: {\n state: {\n eq: \"CLAIMED\"\n },\n ...(listVoucherParams.valueCurrencyAllowed && { valueCurrency: { eq: listVoucherParams.valueCurrencyAllowed } })\n }\n },\n fetchPolicy: 'network-only',\n skip: !user?.username\n });\n\n useEffect(() => {\n Utils.fetchUser(setUser)\n }, []);\n\n useEffect(() => {\n (voucherQueryError) && console.log('E R R O R: ', voucherQueryError);\n }, [voucherQueryError]);\n\n useEffect(() => {\n if (!voucherData?.listVouchersByCustomerValidUntil?.items.map(item => item.id).includes(selectedVoucher?.id)) {\n setSelectedVoucher(null)\n }\n }, [voucherData]);\n\n useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n refetchVouchers()\n });\n return unsubscribe\n }, []);\n\n const navigationTargetOnVoucherSelect = route.params?.navigationTargetOnVoucherSelect || \"Payments\";\n const isLoading = voucherQueryLoading\n\n useEffect(() => {\n //console.log(\"selectedVoucher changed\",route.params?.selectedVoucher)\n if (route.params?.selectedVoucher) {\n setSelectedVoucher(route.params?.selectedVoucher)\n }\n }, [route.params?.selectedVoucher]);\n\n useEffect(\n () => {\n if (route.params?.selectedVoucher) {\n setSelectedVoucher(route.params?.selectedVoucher)\n }\n\n const unsubscribe = navigation.addListener('beforeRemove', (e) => {\n if (!itemSelectionMode) {\n return;\n }\n const params = {\n voucher: selectedVoucherRef.current,\n }\n //console.log(params)\n e.preventDefault();\n unsubscribe()\n navigation.navigate({ name: navigationTargetOnVoucherSelect, params: params, merge: true })\n\n })\n //return unsubscribe\n },\n []\n );\n\n return (\n <>\n \n {isLoading &&\n \n \n \n }\n refetchVouchers()}\n />\n }>\n {/* {JSON.stringify(selectedVoucher)} */}\n \n \n {/* {i18n.t(\"Voucher\")} */}\n {/* } />}\n right={props => } />} />}\n onPress={() => {\n navigation.navigate('Vouchers')\n }\n }\n /> */}\n\n {voucherData?.listVouchersByCustomerValidUntil?.items.length > 0 && (\n <>\n\n {voucherData.listVouchersByCustomerValidUntil.items.some(item => Utils.isVoucherCompatible(selectedProducts,item)) && (\n <>\n {i18n.t(\"Compatible Vouchers\")}\n {voucherData.listVouchersByCustomerValidUntil.items\n .filter(item => Utils.isVoucherCompatible(selectedProducts,item))\n .map((item) => (\n {\n const productRestrictions = (item?.validProducts?.items?.map(validProduct => {\n return `${validProduct?.product?.productPackage?.name} ${validProduct?.product?.productCategory?.name}`\n }) || []).join(\", \");\n return productRestrictions ? `${i18n.t(\"Valid for\")}: ${productRestrictions}\\n` : '';\n })()}${item?.type == \"VALUE\" ? Utils.formatCurrency(item?.value, item?.valueCurrency) : item?.type == \"PERCENTAGE\" ? \"-\" + item?.percentage + \"%\" : item?.type == \"PERCENTAGE_AND_VALUE\" ? Utils.formatCurrency(item?.value, item?.valueCurrency) + \", -\" + item?.percentage + \"%\" : \"\"}`}\n left={props => } />}\n right={props => item.id == selectedVoucher?.id ? } /> : null}\n onPress={() => {\n if (itemSelectionMode) {\n if (selectedVoucher?.id != item?.id) {\n setSelectedVoucher(item)\n }\n else {\n setSelectedVoucher(null)\n }\n }\n }}\n />\n ))}\n \n )}\n\n {voucherData.listVouchersByCustomerValidUntil.items.some(item => !Utils.isVoucherCompatible(selectedProducts,item)) && (\n <>\n {i18n.t(\"Incompatible Vouchers\")}\n {voucherData.listVouchersByCustomerValidUntil.items\n .filter(item => !Utils.isVoucherCompatible(selectedProducts,item))\n .map((item) => (\n {\n const productRestrictions = (item?.validProducts?.items?.map(validProduct => {\n return `${validProduct?.product?.productPackage?.name} ${validProduct?.product?.productCategory?.name}`\n }) || []).join(\", \");\n return productRestrictions ? `${i18n.t(\"Valid for\")}: ${productRestrictions}\\n` : '';\n })()}${item?.type == \"VALUE\" ? Utils.formatCurrency(item?.value, item?.valueCurrency) : item?.type == \"PERCENTAGE\" ? \"-\" + item?.percentage + \"%\" : item?.type == \"PERCENTAGE_AND_VALUE\" ? Utils.formatCurrency(item?.value, item?.valueCurrency) + \", -\" + item?.percentage + \"%\" : \"\"}`}\n left={props => } />}\n disabled={true}\n />\n ))}\n \n )}\n \n )}\n {voucherData?.listVouchersByCustomerValidUntil?.items.length == 0 &&\n \n {i18n.t(\"You currently have no vouchers\")}\n {i18n.t(\"Voucher note\")}\n \n }\n {/* {voucherData?.listVouchersByCustomerValidUntil?.items.length > 0 &&\n {i18n.t(\"Pick the voucher you'd like to use\")}\n } */}\n\n } />}\n onPress={() => {\n navigation.navigate('Add Voucher Code', { navigationTargetOnVoucherSelect: \"Vouchers\" })\n }\n }\n />\n \n \n \n \n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollView: {\n marginHorizontal: 0,\n }\n});\n\nexport default withTheme(VouchersComponent);","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { View, StyleSheet, SafeAreaView, ScrollView, TouchableWithoutFeedback, Image, ImageBackground } from 'react-native';\nimport { v4 as uuid } from 'uuid';\nimport gql from 'graphql-tag';\nimport * as queries from \"../graphql/queries.js\";\nimport * as mutations from \"../graphql/mutations.js\";\nimport { withTheme, Button, TextInput, List, Text, Title, Subheading, Portal, ActivityIndicator, HelperText, Menu, Divider, Surface, IconButton, ProgressBar } from 'react-native-paper';\nimport Constants from 'expo-constants';\nimport { Formik } from 'formik';\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';\nimport * as Yup from 'yup';\nimport * as ImagePicker from 'expo-image-picker';\nimport { Platform } from \"react-native\";\nimport Modal from 'react-native-modal';\nimport { Storage } from 'aws-amplify';\nimport i18n from 'i18n-js';\nimport Utils from './Utils'\nimport ColorPalette from 'react-native-color-palette'\nimport ErrorDialog from './ErrorDialog';\nconst AddVoucherSchema = Utils.voucherSchema;\n\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst CLAIM_VOUCHER = gql(mutations.claimVoucher);\n\n\n\n/* -------------------------------- Component ------------------------------- */\n\nconst AddVoucherComponent = ({ route, navigation, theme, ...props }) => {\n const navigationTargetOnVoucherSelect = route.params?.navigationTargetOnVoucherSelect || \"Payments\";\n const formRef = useRef();\n const [image, setImage] = useState(null);\n const [user, setUser] = useState();\n const [claimVoucherMutation, { error: mutationError, loading: mutationLoading }] = useMutation(CLAIM_VOUCHER, {\n onCompleted: (data) => handleMutationResponse(data, \"claimVoucher\"),\n onError: (err) => {\n setErrorModalState({lastError:\"UNKNOWN_ERROR\", visible:true})\n }\n });\n\n\n const [errorModalState, setErrorModalState] = useState({lastError:null, visible:false});\n const setErrorModalVisible = (data) => {\n setErrorModalState({...errorModalState, visible:data})\n }\n\n useEffect(() => {\n Utils.fetchUser(setUser)\n }, []);\n\n useEffect(() => {\n (mutationError) && console.log('E R R O R: ', mutationError);\n }, [mutationError]);\n\n\n\n const handleMutationResponse = (data, fieldName) => {\n //console.log(data)\n if (data[fieldName]?.result == \"SUCCESS\") {\n //console.log(\"mylogged voucher\",data[fieldName]?.voucher)\n navigation.navigate({\n name:navigationTargetOnVoucherSelect,\n params:{selectedVoucher: data[fieldName]?.voucher},\n merge: true\n })\n }\n else if (data[fieldName]?.result == \"FAILED\") {\n setErrorModalState({lastError:data[fieldName]?.resultReason, visible:true})\n }\n else {\n setErrorModalState({lastError:\"UNKNOWN_ERROR\", visible:true})\n refetch()\n }\n }\n\n\n return (\n <>\n \n {\n var claimVoucherMutationInput = {\n voucherCode: values.voucherCode,\n }\n console.log(claimVoucherMutationInput)\n claimVoucherMutation({ variables: claimVoucherMutationInput });\n }}\n innerRef={formRef}\n validationSchema={AddVoucherSchema}\n >\n {({ handleChange, handleBlur, handleSubmit, setFieldValue, values, errors, touched }) => (\n <>\n\n \n \n \n {errors.voucherCode}\n \n\n\n \n {/* {JSON.stringify(values)} */}\n \n\n \n\n\n \n )}\n\n \n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0//Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n});\n\nexport default withTheme(AddVoucherComponent);","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { View, StyleSheet, SafeAreaView, ScrollView, Dimensions } from 'react-native';\nimport { withTheme, ProgressBar,Button, TextInput, List, Text, Title, Subheading, Modal, Portal, ActivityIndicator } from 'react-native-paper';\nimport Constants from 'expo-constants';\nimport { WebView } from 'react-native-webview';\n\nconst CreateConnectedAccountComponent = ({ theme, route, navigation, ...props }) => {\n const [isLoading, setLoading] = React.useState(true);\n const url = route.params?.url;\n return (\n <>\n \n \n \n\n { setLoading(true) }}\n onLoadEnd={(syntheticEvent) => { setLoading(false) }}\n />\n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0//Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n});\n\nexport default withTheme(CreateConnectedAccountComponent);","import React, { useEffect, useState } from 'react';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { View, StyleSheet, SafeAreaView, ScrollView, RefreshControl, Platform } from 'react-native';\nimport { v4 as uuid } from 'uuid';\nimport gql from 'graphql-tag';\nimport * as queries from \"../graphql/queries.js\";\nimport * as mutations from \"../graphql/mutations.js\";\nimport { Button, TextInput, List, Text, Title, Subheading, Modal, Portal, ProgressBar, ActivityIndicator, withTheme, Divider } from 'react-native-paper';\nimport Constants from 'expo-constants';\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';\nimport i18n from 'i18n-js';\nimport Utils from './Utils'\nimport ErrorDialog from './ErrorDialog';\nconst moment = require('moment-timezone');\n\nconst VouchersProviderComponent = ({ theme, route, navigation, ...props }) => {\n\n return (\n <>\n \n \n \n \n {\n navigation.navigate(\"Generate voucher\")\n }}\n left={props => } />}\n right={props => } />}\n />\n \n \n \n \n \n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollView: {\n marginHorizontal: 0,\n }\n});\n\nexport default withTheme(VouchersProviderComponent);","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState, useRef } from 'react';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { View, StyleSheet } from 'react-native';\nimport gql from 'graphql-tag';\nimport * as mutations from \"../graphql/mutations.js\";\nimport { withTheme, Button, TextInput, List, Text, Title, HelperText, RadioButton, Switch, Chip, IconButton } from 'react-native-paper';\nimport { Formik } from 'formik';\nimport { MaterialCommunityIcons } from '@expo/vector-icons';\nimport * as Yup from 'yup';\nimport { Platform } from \"react-native\";\nimport Modal from 'react-native-modal';\nimport i18n from 'i18n-js';\nimport Utils from './Utils'\nimport ErrorDialog from './ErrorDialog';\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport SegmentedControl from '@react-native-segmented-control/segmented-control';\nimport { DatePickerModal } from 'react-native-paper-dates'\nimport * as Localization from 'expo-localization';\nimport { Picker } from '@react-native-picker/picker';\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nvar moment = require('moment-timezone')\nconst GENERATE_VOUCHER = gql(mutations.generateVoucher);\nconst LIST_PRODUCT_PACKAGES = gql`\nquery ListProductPackages($currentDate: String = \"\") {\n listProductPackages {\n items {\n id\n name\n products {\n items {\n id\n productCategory {\n id\n name\n }\n offerings(filter: {offeredFrom: {le: $currentDate}, offeredUntil: {gt: $currentDate}}) {\n items {\n id\n areaNames\n serviceFacilityIDs\n serviceFacilities {\n items {\n id\n serviceFacilityID\n serviceFacility {\n name\n }\n }\n }\n productID\n }\n }\n }\n }\n }\n }\n}\n`;\nvar now = moment.utc();\nvar Budapest_tz_offset = moment.tz.zone(\"Europe/Budapest\").utcOffset(now);\nvar Local_tz_offset = moment.tz.zone(Localization.timezone).utcOffset(now);\nvar offsetBudapestAndLocalHours = (Budapest_tz_offset - Local_tz_offset) / 60\n\nconst MULTI_USE = \"MULTI_USE\"\nconst SINGLE_USE = \"SINGLE_USE\"\nconst VALUE = \"VALUE\"\nconst PERCENTAGE = \"PERCENTAGE\"\nconst HUF = \"HUF\"\nconst EUR = \"EUR\"\nconst USD = \"USD\"\nconst GBP = \"GBP\"\n\nconst supportedCurrencyCodes = [HUF, EUR]\n\n\n\n\n\n/* -------------------------------- Component ------------------------------- */\nconst today = moment()\nconst GenerateVoucherComponent = ({ route, navigation, theme, ...props }) => {\n const formRef = useRef();\n const [image, setImage] = useState(null);\n const [user, setUser] = useState();\n const [generateVoucherMutation, { error: mutationError, loading: mutationLoading }] = useMutation(GENERATE_VOUCHER, {\n onCompleted: (data) => handleMutationResponse(data, \"generateVoucher\"),\n onError: (err) => {\n setErrorModalState({ lastError: \"UNKNOWN_ERROR\", visible: true })\n }\n });\n\n const { data: productPackagesData, loading: productPackagesLoading } = useQuery(LIST_PRODUCT_PACKAGES, { variables: { currentDate: today.format('YYYY-MM-DD') } });\n const productPackagesDataWithActiveOfferings = productPackagesData?.listProductPackages?.items?.filter(pkg => pkg.products.items.some(product => product.offerings.items.length > 0));\n const [selectedPackage, setSelectedPackage] = useState(null);\n const [selectedCategory, setSelectedCategory] = useState(null);\n const [selectedProducts, setSelectedProducts] = useState([]);\n\n const [errorModalState, setErrorModalState] = useState({ lastError: null, visible: false });\n const setErrorModalVisible = (data) => {\n setErrorModalState({ ...errorModalState, visible: data })\n }\n\n useEffect(() => {\n Utils.fetchUser(setUser)\n }, []);\n\n useEffect(() => {\n (mutationError) && console.log('E R R O R: ', mutationError);\n }, [mutationError]);\n\n\n\n const handleMutationResponse = (data, fieldName) => {\n //console.log(data)\n if (data[fieldName]?.result == \"SUCCESS\") {\n //console.log(\"mylogged voucher\",data[fieldName]?.voucher)\n navigation.navigate(\"Vouchers management\")\n }\n else if (data[fieldName]?.result == \"FAILED\") {\n setErrorModalState({ lastError: data[fieldName]?.resultReason, visible: true })\n }\n else {\n setErrorModalState({ lastError: \"UNKNOWN_ERROR\", visible: true })\n }\n }\n\n\n const [openRangePicker, setOpenRangePicker] = React.useState(false);\n\n const onDismissRangePicker = React.useCallback(() => {\n setOpenRangePicker(false);\n }, [setOpenRangePicker]);\n\n const onConfirmRange =\n ({ startDate, endDate }) => {\n if (!endDate) {\n endDate = moment(startDate).toDate()\n }\n setOpenRangePicker(false);\n formRef.current.setFieldValue('range', {\n ...formRef.current.values.range,\n startDate: moment(startDate).add(offsetBudapestAndLocalHours, 'hours').toDate(),\n endDate: moment(Math.max(startDate, endDate)).add(offsetBudapestAndLocalHours, 'hours').toDate()\n });\n }\n\n\n const [discountType, setDiscountType] = useState(VALUE);\n const VoucherSchema = Yup.object().shape({\n nofVouchers: Yup.number()\n .min(1, () => i18n.t('At least one voucher'))\n .max(100, () => i18n.t('Too many vouchers'))\n .required(() => i18n.t(\"Required\")),\n range: Yup.object().shape({\n startDate: Yup.date().required(() => i18n.t(\"Required\")),\n endDate: Yup.date().required(() => i18n.t(\"Required\"))\n }),\n value: Yup.number()\n .min(0.01, () => i18n.t('Value too low'))\n .max(100000, () => i18n.t('Value too high'))\n .when('discountType', {\n is: VALUE,\n then: Yup.number().required(() => i18n.t(\"Required\"))\n }),\n percentage: Yup.number()\n .min(1, () => i18n.t('Percentage too low'))\n .max(100, () => i18n.t('Percentage too high'))\n .when('discountType', {\n is: PERCENTAGE,\n then: Yup.number().required(() => i18n.t(\"Required\"))\n }),\n validAreaName: Yup.string().nullable(),\n showAsDiscountOnInvoice: Yup.boolean().required(() => i18n.t(\"Required\")),\n valueCurrency: Yup.string()\n .oneOf(supportedCurrencyCodes, () => i18n.t('Unsupported currency'))\n .required(() => i18n.t(\"Required\")),\n maxClaimCount: Yup.number()\n .min(1, () => i18n.t('Too low'))\n .max(10000, () => i18n.t('Too high'))\n .when('voucherType', {\n is: MULTI_USE,\n then: Yup.number().required(() => i18n.t(\"Required\"))\n }),\n maxUseCount: Yup.number()\n .min(1, () => i18n.t('Too low'))\n .max(1000, () => i18n.t('Too high'))\n .when('voucherType', {\n is: MULTI_USE,\n then: Yup.number().required(() => i18n.t(\"Required\"))\n }),\n idOverride: Yup.string()\n .when('voucherType', {\n is: MULTI_USE,\n then: Yup.string().min(6, () => i18n.t('Too short')).max(25, () => i18n.t('Too long')).required(() => i18n.t(\"Required\"))\n }),\n });\n\n const PackageSelection = ({ packages, selectedPackage, setSelectedPackage }) => {\n // Sort packages by their names instead of ids\n const sortedPackages = [...packages].sort((a, b) => a.name.localeCompare(b.name));\n\n return (\n \n\n {\n const selected = packages.find(pkg => pkg.id === itemValue);\n setSelectedPackage(selected);\n }}\n style={{ marginHorizontal: 16 }}\n >\n \n {sortedPackages.map((pkg) => (\n \n ))}\n \n \n );\n };\n\n const CategorySelection = ({ categories, selectedCategory, setSelectedCategory }) => {\n return (\n \n\n {\n const selected = categories.find(cat => cat.id === itemValue);\n setSelectedCategory(selected);\n }}\n style={{ marginHorizontal: 16 }}\n >\n \n {categories.map((category) => (\n \n ))}\n \n \n );\n };\n\n const AreaSelection = ({ packages, selectedPackage, selectedCategory, setSelectedProduct, selectedProduct }) => {\n const relevantPackagesAndCategories = packages.filter(pkg => pkg.id === selectedPackage.id && pkg.products.items.some(product => product.productCategory.id === selectedCategory.id));\n const relevantPackagesAndCategoriesFiltered = relevantPackagesAndCategories.map(pkg => ({\n ...pkg,\n products: {\n ...pkg.products,\n items: pkg.products.items.filter(product => product.productCategory.id === selectedCategory.id)\n }\n }));\n const offerings = relevantPackagesAndCategoriesFiltered.flatMap(pkg => pkg.products.items.flatMap(product => product.offerings.items));\n const uniqueOfferingsBasedOnAreaNames = [...new Map(offerings.map(offering => [offering.areaNames.concat(offering.serviceFacilityIDs).join(', '), offering])).values()];\n const uniqueOfferingsBasedOnAreaNamesGroupedByProductID = [...new Map(\n uniqueOfferingsBasedOnAreaNames.reduce((acc, offering) => {\n const existingOffering = acc.get(offering.productID);\n if (existingOffering) {\n return acc.set(offering.productID, {\n ...existingOffering,\n areaNames: [...new Set([...existingOffering.areaNames, ...offering.areaNames])],\n serviceFacilityIDs: [...new Set([...existingOffering.serviceFacilityIDs, ...offering.serviceFacilityIDs])],\n serviceFacilities: {\n items: [...existingOffering.serviceFacilities.items, ...offering.serviceFacilities.items]\n }\n });\n }\n return acc.set(offering.productID, offering);\n }, new Map())\n ).values()];\n return (\n \n\n {\n setSelectedProduct(itemValue);\n }}\n style={{ marginHorizontal: 16 }}\n >\n \n {uniqueOfferingsBasedOnAreaNamesGroupedByProductID.map((offering) => {\n const label = (offering.areaNames || []).concat(offering?.serviceFacilities?.items?.map(sf => sf.serviceFacility.name) || []).join(', ')\n const truncatedLabel = (label.length > 100 ? label.substring(0, 100) + '...' : label) + \" (ID: \" + offering.productID + \")\";\n\n return (\n \n )\n })}\n \n \n );\n };\n\n const ProductModal = ({ visible, onDismiss, productPackages, onConfirm }) => {\n const [step, setStep] = useState(1);\n const [localSelectedPackage, setLocalSelectedPackage] = useState(null);\n const [localSelectedCategory, setLocalSelectedCategory] = useState(null);\n const [localSelectedProduct, setLocalSelectedProduct] = useState(null);\n\n const resetAndDismiss = () => {\n setStep(1);\n setLocalSelectedPackage(null);\n setLocalSelectedCategory(null);\n setLocalSelectedProduct(null);\n onDismiss();\n };\n\n const handleNext = () => {\n if (step === 1 && localSelectedPackage) {\n setStep(2);\n } else if (step === 2 && localSelectedCategory) {\n setStep(3);\n }\n else if (step === 3 && localSelectedProduct) {\n onConfirm(localSelectedPackage, localSelectedCategory, localSelectedProduct);\n resetAndDismiss();\n }\n };\n\n return (\n \n \n \n {i18n.t(\"Add Product Restriction\")}\n \n \n \n {i18n.t(\"Select product restriction note\")}\n \n\n \n \n \n {1}\n \n \n \n \n {2}\n \n \n \n \n {3}\n \n \n \n {step === 1 ? (\n \n ) : step === 2 ? (\n product.productCategory))]}\n selectedCategory={localSelectedCategory}\n setSelectedCategory={setLocalSelectedCategory}\n />\n )\n : \n }\n \n {[1, 2].includes(step) ? i18n.t(\"Next\") : i18n.t(\"Add Restriction\")}\n \n \n \n );\n };\n\n const [isProductModalVisible, setProductModalVisible] = useState(false);\n\n return (\n <>\n \n {\n var generateVoucherMutationInput = {};\n\n const commonFields = {\n validFrom: values.range.startDate.toISOString(),\n validUntil: values.range.endDate.toISOString(),\n value: discountType == VALUE ? parseFloat(values.value) : null,\n percentage: discountType == PERCENTAGE ? parseFloat(values.percentage) : null,\n validAreaName: null,\n validProducts: selectedProducts.map(validProduct => ({\n id: validProduct.id,\n productCategoryID: validProduct.productCategoryID,\n productPackageID: validProduct.productPackageID\n })),\n showAsDiscountOnInvoice: values.showAsDiscountOnInvoice,\n owner: \"n/a\",\n valueCurrency: values.valueCurrency,\n };\n\n if (values.voucherType == SINGLE_USE) {\n generateVoucherMutationInput = {\n singleUseVoucher: {\n ...commonFields,\n nof_vouchers: parseInt(values.nofVouchers),\n }\n }\n } else if (values.voucherType == MULTI_USE) {\n generateVoucherMutationInput = {\n multiUseVoucher: {\n ...commonFields,\n nof_vouchers: 1,\n maxClaimCount: parseInt(values.maxClaimCount),\n maxUseCount: parseInt(values.maxUseCount),\n idOverride: values.idOverride\n }\n }\n }\n console.log(generateVoucherMutationInput)\n generateVoucherMutation({ variables: generateVoucherMutationInput });\n }}\n validationSchema={VoucherSchema}\n >\n {({ handleChange, handleBlur, handleSubmit, setFieldValue, values, errors, touched }) => (\n <>\n \n \n \n {\n\n handleChange(\"voucherType\")(values.voucherType == MULTI_USE ? SINGLE_USE : MULTI_USE)\n }\n }\n\n />\n\n \n\n\n\n {openRangePicker &&\n \n }\n\n {i18n.t(\"Validity period\")}\n setOpenRangePicker(true)}>{`${moment(values.range.startDate).format('L')} - ${moment(values.range.endDate).format('L')}`}\n }\n left={props => } />}\n />\n \n {i18n.t(\"Discount type\")}\n {\n setDiscountType(value)\n if (value == VALUE) {\n //setFieldValue(\"percentage\", 0)\n }\n else if (value == PERCENTAGE) {\n //setFieldValue(\"value\", 0)\n }\n }}\n value={discountType}>\n \n \n \n\n \n\n {discountType == VALUE ?\n <>\n {\n if (!isNaN(value)) {\n handleChange('value')(value)\n }\n }}\n testID={\"ValueTest\"}\n onBlur={handleBlur('value')}\n value={values.value}\n label={i18n.t(\"Value\")}\n placeholder={\"\"}\n error={errors.value && touched.value}\n autoCorrect={false}\n keyboardType='numeric'\n right={}\n />\n \n {errors.value}\n \n \n :\n <>\n {\n if (!isNaN(value)) {\n handleChange('percentage')(value)\n }\n }}\n testID={\"Discount percentage\"}\n onBlur={handleBlur('percentage')}\n value={values.percentage}\n label={i18n.t(\"Discount percentage\")}\n placeholder={\"\"}\n error={errors.percentage && touched.percentage}\n autoCorrect={false}\n keyboardType='numeric'\n right={}\n />\n \n {errors.percentage}\n \n \n }\n\n \n {i18n.t(\"Currency\")}\n {\n setFieldValue(\"valueCurrency\", value)\n }}\n value={values.valueCurrency}>\n \n \n \n\n \n\n \n {i18n.t(\"Show as discount on invoice\")}\n setFieldValue(\"showAsDiscountOnInvoice\", !values.showAsDiscountOnInvoice)} />\n \n\n {values.voucherType == SINGLE_USE &&\n <>\n {\n if (!isNaN(value)) {\n handleChange('nofVouchers')(value)\n }\n }}\n testID={\"Number of vouchers\"}\n onBlur={handleBlur('nofVouchers')}\n value={values.nofVouchers}\n label={i18n.t(\"Number of vouchers\")}\n placeholder={\"\"}\n error={errors.nofVouchers && touched.nofVouchers}\n autoCorrect={false}\n keyboardType='numeric'\n />\n \n {errors.nofVouchers}\n \n \n }\n {values.voucherType == MULTI_USE &&\n <>\n {\n if (!isNaN(value)) {\n handleChange('maxClaimCount')(value)\n }\n }}\n testID={\"maxClaimCount\"}\n onBlur={handleBlur('maxClaimCount')}\n value={values.maxClaimCount}\n label={i18n.t(\"Max voucher claimants\")}\n placeholder={\"\"}\n error={errors.maxClaimCount && touched.maxClaimCount}\n autoCorrect={false}\n keyboardType='numeric'\n />\n \n {errors.maxClaimCount}\n \n\n\n {\n if (!isNaN(value)) {\n handleChange('maxUseCount')(value)\n }\n }}\n testID={\"maxUseCount\"}\n onBlur={handleBlur('maxUseCount')}\n value={values.maxUseCount}\n label={i18n.t(\"Max voucher uses per person\")}\n placeholder={\"\"}\n error={errors.maxUseCount && touched.maxUseCount}\n autoCorrect={false}\n keyboardType='numeric'\n />\n \n {errors.maxUseCount}\n \n\n {\n handleChange('idOverride')(value.toUpperCase())\n }}\n testID={\"idOverride\"}\n onBlur={handleBlur('idOverride')}\n value={values.idOverride}\n label={i18n.t(\"Voucher code\")}\n placeholder={\"\"}\n error={errors.idOverride && touched.idOverride}\n autoCorrect={false}\n />\n \n {errors.idOverride}\n \n\n\n \n }\n\n \n {i18n.t(\"Voucher Product Restrictions\")}\n\n\n {selectedProducts.length > 0 ? (\n \n {selectedProducts.map((product) => {\n const areaLabel = (product?.offerings?.items[0]?.areaNames || []).concat(product?.offerings?.items[0]?.serviceFacilities?.items?.map(sf => sf.serviceFacility.name) || []).join(', ');\n const truncatedAreaLabel = areaLabel.length > 40 ? areaLabel.substring(0, 25) + '...' : areaLabel;\n return (\n setSelectedProducts(selectedProducts.filter(p => p.id !== product.id))}\n style={{ margin: 4 }}\n >\n {`${product.productPackage?.name || 'Unknown Package'} - ${product.productCategory?.name || 'Unknown Category'} (${truncatedAreaLabel})`}\n \n )})}\n \n ) : (\n \n {i18n.t(\"No restrictions - Voucher can be used for any product\")}\n \n )}\n\n setProductModalVisible(true)}\n style={{ marginTop: 10, marginHorizontal: 16 }}\n >\n {i18n.t(\"Add Product Restriction\")}\n \n \n\n setProductModalVisible(false)}\n productPackages={productPackagesDataWithActiveOfferings || []}\n onConfirm={(pkg, category, productID) => {\n const newProduct = pkg.products.items.find(p => p.id === productID);\n if (newProduct) {\n setSelectedProducts(prevSelectedProducts => {\n const productExists = prevSelectedProducts.some(p => p.id === newProduct.id);\n if (!productExists) {\n return [...prevSelectedProducts, {\n id: newProduct.id,\n productCategory: { name: category.name },\n productCategoryID: category.id,\n productPackage: { name: pkg.name },\n productPackageID: pkg.id,\n offerings: newProduct.offerings\n }];\n }\n return prevSelectedProducts;\n });\n }\n setProductModalVisible(false);\n }}\n />\n\n \n {/* {JSON.stringify(errors)} */}\n \n\n \n )}\n\n \n \n );\n};\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: \"center\",\n justifyContent: 'space-between',\n paddingTop: 0,\n paddingBottom: 20,\n paddingHorizontal: 16,\n width: '100%',\n },\n container: {\n flex: 1,\n marginTop: 0//Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n});\n\nexport default withTheme(GenerateVoucherComponent);","import React, { useEffect, useState } from 'react';\nimport { useQuery, useMutation } from '@apollo/client';\nimport { View, StyleSheet, SafeAreaView, ScrollView, Image } from 'react-native';\nimport { v4 as uuid } from 'uuid';\nimport gql from 'graphql-tag';\nimport * as queries from \"../graphql/queries.js\";\nimport * as mutations from \"../graphql/mutations.js\";\nimport { Button, TextInput, List, Text, Title, ProgressBar, IconButton, Subheading, Modal, Portal, Divider, withTheme } from 'react-native-paper';\nimport Constants from 'expo-constants';\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons';\nimport { Storage } from 'aws-amplify';\nimport useCancellablePromise from './CancelablePromiseHook';\nimport ProgressiveImage from './ProgressiveImage';\nimport Utils from './Utils'\nimport i18n from 'i18n-js';\nimport { extendMoment } from 'moment-range';\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED = gql(queries.listOpeningHoursByCountryEffectiveFromUntilEncoded)\nconst UPDATE_OPENING_HOURS = gql(mutations.updateOpeningHours)\nconst moment = extendMoment(require('moment-timezone'));\nconst today = moment()\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleUpdateOpeningHour = (client, mutationData, listOpeningHoursVariables) => {\n //console.log(mutationData)\n if (mutationData && mutationData.data.updateOpeningHours) {\n const listOpeningHoursData = client.readQuery({ query: LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED, variables: listOpeningHoursVariables });\n\n client.writeQuery({\n query: LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED,\n variables: listOpeningHoursVariables,\n data: {\n listOpeningHoursByCountryEffectiveFromUntilEncoded: {\n ...listOpeningHoursData.listOpeningHoursByCountryEffectiveFromUntilEncoded,\n items: [...listOpeningHoursData.listOpeningHoursByCountryEffectiveFromUntilEncoded.items.filter(item => item.id != mutationData.data.updateOpeningHours.id), mutationData.data.updateOpeningHours],\n },\n },\n });\n }\n};\n\n/* -------------------------------- Component ------------------------------- */\n\nconst OpeningHoursComponent = ({ route, navigation, theme, ...props }) => {\n const { cancellablePromise } = useCancellablePromise();\n const [user, setUser] = useState();\n\n\n const serviceFacilities = route.params?.serviceFacilities || []\n\n const listOpeningHoursVariables = {\n \"limit\": 2000,\n \"isoCountryCode\": route.params?.isoCountryCode,\n \"effectiveFromUntilEncoded\": {\n \"between\": Utils.getOpeningHoursZOrderRange(today.toDate(), today.clone().add(1, 'year').toDate())\n },\n \"filter\": {\n \"and\": {\n \"effectiveFrom\": {\n \"le\": today.clone().add(1, 'year').format(\"YYYY-MM-DD\")\n },\n \"effectiveUntil\": {\n \"ge\": today.format(\"YYYY-MM-DD\")\n },\n \"isActive\": {\n \"eq\": true\n }\n }\n }\n }\n\n const relevantAreas = route.params?.areaNames ? route.params?.areaNames.map(areaName => areaName) : []\n const relevantServiceFacitilites = serviceFacilities ? serviceFacilities.map(serviceFacility => serviceFacility.id) : []\n\n const findCommonElements = (arr1, arr2) => {\n return arr1.some(item => arr2.includes(item))\n }\n\n const { data: listOpeningHoursDataRaw, error: queryErrorListOpeningHours, loading: queryLoadingListOpeningHours } = useQuery(LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED, {\n variables: listOpeningHoursVariables,\n // skip: !formRef?.current?.values?.range?.endDate || !formRef?.current?.values?.range?.startDate,\n fetchPolicy: 'cache-and-network'\n });\n\n const listOpeningHoursData = {\n listOpeningHoursByCountryEffectiveFromUntilEncoded: {\n ...listOpeningHoursDataRaw?.listOpeningHoursByCountryEffectiveFromUntilEncoded,\n items: listOpeningHoursDataRaw?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items?.filter(item => {\n return findCommonElements(item?.areaNames || [], relevantAreas) || findCommonElements(item?.serviceFacilityIDs || [], relevantServiceFacitilites)\n })\n }\n }\n\n const [updateOpeningHourMutation, { error: updateOpeningHourMutationError, loading: updateOpeningHourMutationLoading }] = useMutation(UPDATE_OPENING_HOURS, {\n update: (client, mutationData) => handleUpdateOpeningHour(client, mutationData, listOpeningHoursVariables),\n //onCompleted: () => navigation.navigate('Cars')\n });\n\n\n useEffect(() => {\n Utils.fetchUser(setUser)\n }, []);\n\n useEffect(() => {\n (queryErrorListOpeningHours) && console.log('E R R O R: ', queryErrorListOpeningHours);\n (updateOpeningHourMutationError) && console.log('E R R O R: ', updateOpeningHourMutationError);\n }, [queryErrorListOpeningHours, updateOpeningHourMutationError]);\n\n\n const isQueryLoading = queryLoadingListOpeningHours || updateOpeningHourMutationLoading\n // React.useEffect(() => {\n // const unsubscribe = navigation.addListener('focus', () => {\n // fetchCarImageUrls()\n // });\n\n // return unsubscribe;\n // }, [navigation]);\n\n const recurring = listOpeningHoursData?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items?.filter(item => item.isActive == true && item.type == \"RECURRING\").reduce((groups, item) => {\n const groupName = [...(item?.areaNames || []),\n ...(item?.serviceFacilityIDs?.map(item => serviceFacilities.find(facility => item == facility.id)?.name) || [])].join(', ')\n return {\n ...groups,\n [groupName]: [...(groups[groupName] || []), item]\n }\n }, {})\n\n const recurringEntries = recurring ? Object.entries(recurring) : []\n\n const override = listOpeningHoursData?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items?.filter(item => item.isActive == true && item.type == \"OVERRIDE\").reduce((groups, item) => {\n const groupName = [...(item?.areaNames || []),\n ...(item?.serviceFacilityIDs?.map(item => serviceFacilities.find(facility => item == facility.id)?.name) || [])].join(', ')\n return {\n ...groups,\n [groupName]: [...(groups[groupName] || []), item]\n }\n }, {})\n\n const getOpeningHoursText = (item) => {\n if (!item) {\n return \"\"\n }\n return item.reduce((prev, item2, idx2) => {\n if (item2.weekday && item2.openFromHour && item2.openUntilHour) {\n return prev + `\\n${i18n.t(item2.weekday)}: ${Utils.getFormattedTime(item2.openFromHour)} - ${Utils.getFormattedTime(item2.openUntilHour)} ${item2?.capacity ? \"(\" + i18n.t(\"capacity\") + \": \" + item2?.capacity + \")\" : \"\"}`\n }\n else if (item2.weekday) {\n return prev + `\\n${i18n.t(item2.weekday)}: ${i18n.t(\"closed\")}`\n }\n }, \"\").replace(/^\\s+|\\s+$/g, '');\n\n }\n\n\n return (\n \n {isQueryLoading &&\n \n \n \n }\n \n\n \n {recurring && Object.keys(recurring).length > 0 &&\n <>\n \n {recurringEntries.map(([key, value], idx) => {\n return (\n \n {`${key}`}\n {\n value.map((item) =>\n } />}\n // onPress={() => navigation.navigate(\"\", {\n // openingHour: item\n // })}\n />\n )}\n {(idx + 1) != recurringEntries.length &&\n \n }\n \n )\n })}\n \n \n \n }\n\n {override && Object.keys(override).length > 0 &&\n \n\n\n {Object.entries(override).map(([key, value]) => {\n\n\n return (\n \n {`${key}`}\n {\n value.map((item) => {\n var descriptionText = item?.weekdayOpeningHours?.[0]?.weekday && item?.weekdayOpeningHours?.[0]?.openFromHour && item?.weekdayOpeningHours?.[0]?.openUntilHour ? `${Utils.getFormattedTime(item.weekdayOpeningHours[0].openFromHour)} - ${Utils.getFormattedTime(item.weekdayOpeningHours[0].openUntilHour)}${item?.weekdayOpeningHours[0]?.capacity ? \"\\n\" + Utils.capitalizeFirstLetter(i18n.t(\"capacity\")) + \": \" + item?.weekdayOpeningHours[0]?.capacity : \"\"}` : i18n.t(\"closed\")\n if (item?.note) {\n descriptionText += \"\\n\" + item?.note\n }\n return ( } />}\n right={props => \n // \n } />}\n iconColor={theme.colors.error}\n size={size}\n onPress={() => {\n console.log(\"item\" + item)\n var openingHoursMutationInput = {\n input: {\n id: item.id,\n isActive: false\n }\n }\n updateOpeningHourMutation({ variables: openingHoursMutationInput });\n }}\n />\n } />}\n // onPress={() => navigation.navigate(\"\", {\n // openingHour: item\n // })}\n />)\n }\n )\n }\n \n \n )\n })\n }\n\n \n }\n\n {route.params?.areaNames?.length > 0 && route.params?.isoCountryCode &&\n } />}\n onPress={() => navigation.navigate('Add Opening Hours', { areaNames: route.params?.areaNames, serviceFacilities: serviceFacilities, isoCountryCode: route.params?.isoCountryCode, listOpeningHoursVariables: listOpeningHoursVariables })}\n />\n }\n {/* {JSON.stringify(override)} */}\n \n \n \n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n scrollView: {\n marginHorizontal: 0,\n }\n});\n\nexport default withTheme(OpeningHoursComponent);","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState, useRef } from 'react'\nimport { useQuery, useMutation } from '@apollo/client'\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n TouchableWithoutFeedback,\n Image,\n ImageBackground,\n} from 'react-native'\nimport { v4 as uuid } from 'uuid'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport {\n Dialog,\n Paragraph,\n Chip,\n Switch,\n withTheme,\n Button,\n TextInput,\n List,\n Text,\n Title,\n Subheading,\n Portal,\n ActivityIndicator,\n HelperText,\n Menu,\n Divider,\n Surface,\n IconButton,\n ProgressBar,\n} from 'react-native-paper'\nimport Constants from 'expo-constants'\nimport { Formik } from 'formik'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport * as Yup from 'yup'\nimport * as ImagePicker from 'expo-image-picker'\nimport { Platform } from 'react-native'\nimport Modal from 'react-native-modal'\nimport { Storage } from 'aws-amplify'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport ColorPalette from 'react-native-color-palette'\nimport { extendMoment } from 'moment-range'\nimport {\n registerTranslation,\n DatePickerModal,\n TimePickerModal,\n} from 'react-native-paper-dates'\nimport * as Localization from 'expo-localization'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport { Picker } from '@react-native-picker/picker'\nconst AddOpeningHoursSchema = Utils.openingHoursSchema\n\nconst moment = extendMoment(require('moment-timezone'))\nvar now = moment.utc()\nvar Budapest_tz_offset = moment.tz.zone('Europe/Budapest').utcOffset(now)\nvar Local_tz_offset = moment.tz.zone(Localization.timezone).utcOffset(now)\nvar offsetBudapestAndLocalHours = (Budapest_tz_offset - Local_tz_offset) / 60\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst CREATE_OPENING_HOURS = gql(mutations.createOpeningHours)\nconst LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED = gql(\n queries.listOpeningHoursByCountryEffectiveFromUntilEncoded\n)\nconst today = moment()\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleCreateOpeningHour = (\n client,\n mutationData,\n listOpeningHoursVariables\n) => {\n if (mutationData && mutationData.data.createOpeningHours) {\n const listOpeningHoursData = client.readQuery({\n query: LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED,\n variables: listOpeningHoursVariables,\n })\n //console.log(\"listOpeningHoursData\", listOpeningHoursData)\n //console.log(\"listOpeningHoursVariables\", listOpeningHoursVariables)\n client.writeQuery({\n query: LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED,\n variables: listOpeningHoursVariables,\n data: {\n listOpeningHoursByCountryEffectiveFromUntilEncoded: {\n ...listOpeningHoursData.listOpeningHoursByCountryEffectiveFromUntilEncoded,\n items: [\n ...listOpeningHoursData\n .listOpeningHoursByCountryEffectiveFromUntilEncoded.items,\n mutationData.data.createOpeningHours,\n ],\n },\n },\n })\n }\n}\n\n/* -------------------------------- Component ------------------------------- */\n\nconst AddOpeningHoursComponent = ({ route, navigation, theme, ...props }) => {\n const capacityPickerOptions = [\n i18n.t('unlimited'),\n '0',\n '1',\n '2',\n '3',\n '4',\n '5',\n '6',\n '7',\n '8',\n '9',\n '10',\n ]\n const formRef = useRef()\n const [user, setUser] = useState()\n const [showUnsavedChangesWarningDialog, setUnsavedChangesWarningDialog] =\n useState(false)\n const [navigationGoBackAction, setNavigationGoBackAction] = useState(null)\n const [\n createOpeningHourMutation,\n { error: mutationError, loading: mutationLoading },\n ] = useMutation(CREATE_OPENING_HOURS, {\n update: (client, mutationData) =>\n handleCreateOpeningHour(\n client,\n mutationData,\n route.params?.listOpeningHoursVariables\n ),\n onCompleted: () => {\n if (formRef?.current?.resetForm) {\n formRef?.current?.resetForm()\n }\n setTimeout(() => {\n navigation.navigate({ name: 'Opening Hours', merge: true });\n }, 100);\n },\n })\n\n useEffect(() => {\n Utils.fetchUser(setUser)\n }, [])\n\n useEffect(() => {\n console.log('my listener added')\n navigation.addListener('beforeRemove', (e) => {\n console.log('dirtyflag', formRef?.current?.dirty)\n if (!formRef?.current?.dirty) {\n // If we don't have unsaved changes, then we don't need to do anything\n return\n }\n e.preventDefault()\n setNavigationGoBackAction(e.data.action)\n setUnsavedChangesWarningDialog(true)\n })\n }, [])\n\n useEffect(() => {\n mutationError && console.log('E R R O R: ', mutationError)\n }, [mutationError])\n\n const areaNames = route.params?.areaNames || []\n const serviceFacilities = route.params?.serviceFacilities || []\n const isoCountryCode = route.params?.isoCountryCode\n\n return (\n <>\n \n setUnsavedChangesWarningDialog(false)}\n >\n {i18n.t('Discard changes alert title')}\n \n {i18n.t('Discard changes alert text')}\n \n \n {\n setUnsavedChangesWarningDialog(false)\n }}\n >\n {i18n.t(\"Don't leave\")}\n \n {\n if (navigationGoBackAction) {\n navigation.dispatch(navigationGoBackAction)\n } else {\n setUnsavedChangesWarningDialog(false)\n }\n }}\n >\n {i18n.t('Discard')}\n \n \n \n \n {\n var createOpeningHourInput = {\n input: {\n areaNames: values.selectedAreaNames,\n serviceFacilityIDs: values.selectedServiceFacilities.map(\n (item) => item.id\n ),\n effectiveFrom: moment(values.range.startDate).format(\n 'YYYY-MM-DD'\n ),\n effectiveFromUntilEncoded: Utils.getOpeningHoursZOrder(\n values.range.startDate,\n values.range.endDate\n ),\n effectiveUntil: moment(values.range.endDate).format('YYYY-MM-DD'),\n //id: $id,\n isActive: true,\n isoCountryCode: isoCountryCode,\n note: values.description,\n type: 'OVERRIDE',\n weekdayOpeningHours: {\n weekday: 'ANY',\n openUntilHour: values.isClosed\n ? null\n : values.range.endTime.hours,\n openFromHour: values.isClosed\n ? null\n : values.range.startTime.hours,\n capacity:\n values.capacityPicker != i18n.t('unlimited')\n ? parseInt(values.capacityPicker)\n : null,\n },\n },\n }\n createOpeningHourMutation({ variables: createOpeningHourInput })\n //resetForm()\n }}\n innerRef={formRef}\n validationSchema={AddOpeningHoursSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n setFieldValue,\n values,\n errors,\n touched,\n dirty,\n }) => {\n const [openRangePicker, setOpenRangePicker] = React.useState(false)\n\n const onDismissRangePicker = React.useCallback(() => {\n setOpenRangePicker(false)\n }, [setOpenRangePicker])\n\n const onConfirmRange = React.useCallback(\n ({ startDate, endDate }) => {\n if (!endDate) {\n endDate = moment(startDate).toDate()\n }\n setOpenRangePicker(false)\n setFieldValue('range', {\n ...values.range,\n startDate: moment(startDate)\n .add(offsetBudapestAndLocalHours, 'hours')\n .toDate(),\n endDate: moment(Math.max(startDate, endDate))\n .add(offsetBudapestAndLocalHours, 'hours')\n .toDate(),\n })\n },\n [setOpenRangePicker, setFieldValue]\n )\n\n const [isStartTimeVisible, setStartTimeVisible] =\n React.useState(false)\n const onDismissStartTime = React.useCallback(() => {\n setStartTimeVisible(false)\n }, [setStartTimeVisible])\n\n const onConfirmStartTime = React.useCallback(\n ({ hours, minutes }) => {\n setStartTimeVisible(false)\n\n setFieldValue('range', {\n ...values.range,\n startTime: {\n hours,\n minutes: 0,\n },\n endTime: {\n hours: Math.max(hours, values.range.endTime.hours),\n minutes: 0,\n },\n })\n },\n [setStartTimeVisible, setFieldValue, values.range]\n )\n\n const [isEndTimeVisible, setEndTimeVisible] = React.useState(false)\n const onDismissEndTime = React.useCallback(() => {\n setEndTimeVisible(false)\n }, [setEndTimeVisible])\n\n const onConfirmEndTime = React.useCallback(\n ({ hours, minutes }) => {\n setEndTimeVisible(false)\n setFieldValue('range', {\n ...values.range,\n startTime: {\n hours: Math.min(hours, values.range.startTime.hours),\n minutes: 0,\n },\n endTime: {\n hours,\n minutes: 0,\n },\n })\n },\n [setEndTimeVisible, setFieldValue, values.range]\n )\n\n return (\n <>\n {mutationLoading && (\n \n \n \n )}\n\n {openRangePicker && (\n \n )}\n {isStartTimeVisible && (\n \n )}\n {isEndTimeVisible && (\n \n )}\n\n \n \n {areaNames?.length > 0 && (\n <>\n\n \n \n {i18n.t('Area')}\n \n \n \n \n \n \n \n \n {[...areaNames]\n .sort((a, b) => a.localeCompare(b))\n .map((item) => (\n {\n let newSelectedAreaNames\n if (values.selectedAreaNames.includes(item))\n newSelectedAreaNames =\n values.selectedAreaNames.filter(\n (i) => i != item\n )\n else\n newSelectedAreaNames = [\n ...values.selectedAreaNames,\n item,\n ]\n\n setFieldValue(\n 'selectedAreaNames',\n newSelectedAreaNames\n )\n }}\n >\n {item}\n \n ))}\n \n \n \n {errors.selectedAreaNames}\n \n {/* */}\n )}\n {serviceFacilities?.length > 0 && (\n <>\n \n \n {i18n.t('Fix wash')}\n \n \n \n \n \n\n \n\n \n \n {[...serviceFacilities]\n .sort((a, b) => a?.name.localeCompare(b?.name))\n .map((item) => (\n sf.id === item.id)\n : false\n }\n onPress={async () => {\n let newSelectedServiceFacilities;\n if (values.selectedServiceFacilities.some(sf => sf.id === item.id)) {\n newSelectedServiceFacilities = values.selectedServiceFacilities.filter(\n (i) => i.id !== item.id\n );\n } else {\n newSelectedServiceFacilities = [\n ...values.selectedServiceFacilities,\n item,\n ];\n }\n\n setFieldValue(\n 'selectedServiceFacilities',\n newSelectedServiceFacilities\n );\n }}\n >\n {item.name}\n \n ))}\n \n \n \n {errors.selectedServiceFacilities}\n \n \n )}\n\n \n\n {i18n.t('Business hours')}\n setOpenRangePicker(true)}\n >{`${moment(values.range.startDate).format(\n 'L'\n )} - ${moment(values.range.endDate).format(\n 'L'\n )}`}\n }\n left={(props) => (\n (\n \n )}\n />\n )}\n />\n\n \n \n {i18n.t('Closed all day')}\n \n \n setFieldValue('isClosed', !values.isClosed)\n }\n />\n \n\n {!values.isClosed && (\n \n setStartTimeVisible(true)}\n >\n {Utils.getFormattedTime(\n values.range.startTime.hours,\n values.range.startTime.minutes\n )}\n \n }\n left={(props) => (\n (\n \n )}\n />\n )}\n />\n\n setEndTimeVisible(true)}\n >\n {Utils.getFormattedTime(\n values.range.endTime.hours,\n values.range.endTime.minutes\n )}\n \n }\n left={(props) => (\n (\n \n )}\n />\n )}\n />\n \n )}\n \n \n {Utils.capitalizeFirstLetter(i18n.t('capacity'))}\n \n \n handleChange('capacityPicker')(itemValue)\n }\n >\n {capacityPickerOptions.map((item) => (\n \n ))}\n \n \n \n \n {errors.description}\n \n\n \n {i18n.t('Save')}\n \n {/* {JSON.stringify(values)} */}\n \n \n \n )\n }}\n \n \n )\n}\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n justifyContent: 'space-between',\n paddingTop: 0,\n paddingBottom: 20,\n paddingHorizontal: 16,\n width: '100%',\n },\n container: {\n flex: 1,\n marginTop: 0, //Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(AddOpeningHoursComponent)","// src/TestComomponent/TestComomponent.js\n\nimport React, { useEffect, useState, useRef } from 'react'\nimport { useMutation, useApolloClient } from '@apollo/client'\nimport {\n View,\n StyleSheet,\n Dimensions,\n} from 'react-native'\nimport gql from 'graphql-tag'\nimport * as mutations from '../graphql/mutations.js'\nimport {\n withTheme,\n Button,\n Dialog,\n Paragraph,\n ProgressBar,\n FAB,\n TextInput,\n Portal,\n HelperText,\n Snackbar,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport i18n from 'i18n-js'\nimport useCancellablePromise from './CancelablePromiseHook'\nimport { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'\nimport { Auth } from 'aws-amplify'\nimport Utils from './Utils'\nimport * as Yup from 'yup'\nimport 'yup-phone'\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\n//const GET_CAR = gql(queries.getCar)\nconst UPDATE_USER_INFO = gql(mutations.updateUserInfo)\nconst DELETE_USER_ACCOUNT = gql(mutations.deleteUserAccount)\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\n// export const handleUpdateCar = (client, mutationData) => {\n// if (mutationData && mutationData.data.updateUserInfo) {\n// const getCarData = client.readQuery({ query: GET_CAR, variables: { id: mutationData.data.updateUserInfo.id } });\n// client.writeQuery({\n// query: GET_CAR,\n// data: {\n// getCar: {\n// ...getCarData.getCar,\n// ...mutationData.data.updateUserInfo,\n// },\n// },\n// });\n// }\n// };\n\n/* -------------------------------- Component ------------------------------- */\nconst window = Dimensions.get('window')\nconst screen = Dimensions.get('screen')\n\nconst UserProfileComponent = ({ route, theme, navigation, ...props }) => {\n const [signOutInProgress, setSignOutInProgress] = useState(false)\n const UserProfileSchema = Yup.object().shape({\n email: Yup.string()\n .email(() => i18n.t('Invalid email address'))\n .required(() => i18n.t('Required')),\n firstName: Yup.string().required(() => i18n.t('Required')),\n phoneNumber: Yup.string()\n .required(() => i18n.t('Required'))\n .phone('HU', false, `${i18n.t('Invalid phone number')}`), // TODO: fix localisation\n })\n\n const [dimensions, setDimensions] = useState({ window, screen })\n const [user, setUser] = useState()\n const [navigationGoBackAction, setNavigationGoBackAction] = useState(null)\n const [showUnsavedChangesWarningDialog, setUnsavedChangesWarningDialog] =\n useState(false)\n const [\n showAccountDeletionConfirmationDialog,\n setAccountDeletionConfirmationDialog,\n ] = useState(false)\n const onChange = ({ window, screen }) => {\n setDimensions({ window, screen })\n }\n\n useEffect(() => {\n Utils.fetchUserBypassCache(setUser)\n const dimensionsHandler = Dimensions.addEventListener('change', onChange)\n\n return () => {\n dimensionsHandler.remove()\n }\n }, [])\n\n const { cancellablePromise } = useCancellablePromise()\n const formRef = useRef()\n\n const [imageUrl, setImageUrl] = useState(null)\n\n // const { data, error: queryError, loading: queryLoading } = useQuery(GET_CAR, { variables: { id: carId }, fetchPolicy: 'cache-and-network' });\n const client = useApolloClient()\n\n const [\n updateUserInfoMutation,\n { error: mutationError, loading: mutationLoading },\n ] = useMutation(UPDATE_USER_INFO, {\n //update: (client, mutationData) => console.log(\"updateUserInfoMutation update called\")//handleUpdateCar(client, mutationData),\n onCompleted: (data) => {\n Utils.fetchUserBypassCache(setUser)\n },\n })\n\n const [\n deleteUserAccountMutation,\n {\n error: deleteUserAccountMutationError,\n loading: deleteUserAccountMutationLoading,\n },\n ] = useMutation(DELETE_USER_ACCOUNT, {\n //update: (client, mutationData) => console.log(\"updateUserInfoMutation update called\")//handleUpdateCar(client, mutationData),\n onCompleted: async (data) => {\n if (data?.deleteUserAccount?.result == 'SUCCESS') {\n setSignOutInProgress(true)\n try {\n client.cache.reset()\n await client.resetStore()\n await Auth.signOut();\n navigation.navigate('AccountDetails')\n } catch (error) {\n console.log('Error signing out: ', error)\n }\n finally {\n setSignOutInProgress(false)\n }\n } else if (\n data?.deleteUserAccount?.result == 'NO_OPERATION' &&\n data?.deleteUserAccount?.resultReason == 'PREREQUISITES_NOT_MET'\n ) {\n console.log('deleteUserAccountMutation FAILURE')\n setAccountDeletionConfirmationDialog(false)\n setSnackBarMessage(i18n.t('Account closure prerequisites not met'))\n } else {\n console.log('deleteUserAccountMutation FAILURE')\n setAccountDeletionConfirmationDialog(false)\n setSnackBarMessage(i18n.t('Account closure failed'))\n }\n },\n })\n\n useEffect(() => {\n //(queryError || mutationError) && console.log('E R R O R: ', queryError, mutationError);\n ;(mutationError || deleteUserAccountMutationError) &&\n console.log('E R R O R: ', mutationError, deleteUserAccountMutationError)\n }, [mutationError, deleteUserAccountMutationError])\n\n useEffect(() => {\n //(queryError || mutationError) && console.log('E R R O R: ', queryError, mutationError);\n mutationLoading && console.log('mutation loading')\n }, [mutationLoading])\n\n useEffect(\n () =>\n navigation.addListener('beforeRemove', (e) => {\n if (!formRef?.current?.dirty) {\n // If we don't have unsaved changes, then we don't need to do anything\n return\n }\n e.preventDefault()\n setNavigationGoBackAction(e.data.action)\n setUnsavedChangesWarningDialog(true)\n // Alert.alert(\n // i18n.t('Discard changes alert title'),\n // i18n.t('Discard changes alert text'),\n // [\n // { text: i18n.t(\"Don't leave\"), style: 'cancel', onPress: () => {} },\n // {\n // text: i18n.t(\"Discard\"),\n // style: 'destructive',\n // // If the user confirmed, then we dispatch the action we blocked earlier\n // // This will continue the action that had triggered the removal of the screen\n // onPress: () => navigation.dispatch(e.data.action),\n // },\n // ]\n // );\n }),\n [navigation, formRef?.current?.dirty]\n )\n\n // const fetchPhoto = async () => {\n // if (data?.getCar.photoUri)\n // try {\n // const responseUrl = await cancellablePromise(Storage.get(data.getCar.photoUri))\n // setImageUrl(responseUrl)\n // }\n // catch (err) {\n // console.error(\"Fetching photo URL failed\", err)\n // }\n // }\n\n // useEffect(() => {\n // //fetchPhoto()\n // }, [data]);\n\n const updateUserInfo = () => {\n const variables = {\n updateUserInfo: {\n userID: formRef.current.values.userID,\n phoneNumber: formRef.current.values.phoneNumber,\n firstName: formRef.current.values.firstName,\n },\n }\n console.log('calling updateUserInfo', variables)\n updateUserInfoMutation({ variables: variables })\n console.log('finished')\n // { variables: { input: { id: carId, description: formRef.current.values.getCar.description } } });\n }\n\n const [snackBarMessage, setSnackBarMessage] = useState()\n return (\n <>\n \n setSnackBarMessage(null)}\n action={{\n label: i18n.t('Ok'),\n onPress: () => setSnackBarMessage(null),\n }}\n >\n {snackBarMessage}\n \n setUnsavedChangesWarningDialog(false)}\n >\n {i18n.t('Discard changes alert title')}\n \n {i18n.t('Discard changes alert text')}\n \n \n {\n setUnsavedChangesWarningDialog(false)\n }}\n >\n {i18n.t(\"Don't leave\")}\n \n {\n if (navigationGoBackAction) {\n navigation.dispatch(navigationGoBackAction)\n } else {\n setUnsavedChangesWarningDialog(false)\n }\n }}\n >\n {i18n.t('Discard')}\n \n \n \n\n setAccountDeletionConfirmationDialog(false)}\n >\n \n {i18n.t('Confirm Account Deletion Title')}\n \n \n {i18n.t('Confirm Account Deletion Content')}\n \n \n {\n setAccountDeletionConfirmationDialog(false)\n }}\n >\n {i18n.t('Cancel')}\n \n {\n console.log({\n variables: {\n deleteUserAccount: {\n userID: formRef.current.values.userID,\n },\n },\n })\n deleteUserAccountMutation({\n variables: {\n deleteUserAccount: {\n userID: formRef.current.values.userID,\n },\n },\n })\n }}\n testID={'UserProfileComponentDialogDeleteUserAccountButton'}\n >\n {i18n.t('Delete Account')}\n \n \n \n \n\n {mutationLoading && (\n \n \n \n )}\n \n {\n console.log(values)\n updateUserInfo()\n }}\n innerRef={formRef}\n validationSchema={UserProfileSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n dirty,\n values,\n errors,\n touched,\n }) => (\n \n \n \n {errors.email}\n \n\n \n \n {errors.firstName}\n \n\n \n \n {errors.phoneNumber}\n \n \n <>\n \n\n {\n setAccountDeletionConfirmationDialog(true)\n }}\n testID={'UserProfileComponentDeleteUserAccountButton'}\n />\n \n \n \n )}\n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n fab: {\n position: 'relative',\n margin: 0,\n left: 0,\n right: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 4,\n },\n container: {\n flex: 1,\n marginTop: 0, //Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(UserProfileComponent)\n","import React, { memo } from 'react';\nimport { Platform, Dimensions, Animated } from 'react-native'\nimport { TextInput, Subheading, withTheme, useTheme } from 'react-native-paper'\nimport { GooglePlacesAutocomplete, GooglePlacesAutocompleteRef, GooglePlaceDetail } from 'react-native-google-places-autocomplete'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport { MapViewRegionType, AnimateToRegionFn } from './LocationService'\n\ninterface ExtendedGooglePlaceDetail extends GooglePlaceDetail {\n serviceFacilityID?: string;\n}\n\ninterface OrderLocationAutocompleteProps {\n placesAutocompleteRef: React.RefObject\n setHideMaps: (hide: boolean) => void\n setFieldValue: (field: string, value: any) => void\n validateForm: () => void\n setCurrentLocation: (location: any) => void\n setIsFacilityMode: (isFacilityMode: boolean) => void\n mapViewRegion: MapViewRegionType\n setMapViewRegion: (region: MapViewRegionType) => void\n animateToRegion: AnimateToRegionFn\n fitMapToElements: () => void\n fadeAnimBottomBar: Animated.Value\n barHeightAnimation: Animated.Value\n currentLocation: any\n previousAddresses: any[]\n values: any\n googleMapsAPIKey: string\n markerRegionAreaSizeMetres: number\n animationDuration: number\n convertGoogleMapsResponseToLocation: (details: ExtendedGooglePlaceDetail) => any\n}\n\n\nconst OrderLocationAutocomplete: React.FC = memo(({\n placesAutocompleteRef,\n setHideMaps,\n setFieldValue,\n validateForm,\n setCurrentLocation,\n setIsFacilityMode,\n mapViewRegion,\n setMapViewRegion,\n animateToRegion,\n fitMapToElements,\n fadeAnimBottomBar,\n barHeightAnimation,\n currentLocation,\n previousAddresses,\n values,\n googleMapsAPIKey,\n markerRegionAreaSizeMetres,\n animationDuration,\n convertGoogleMapsResponseToLocation,\n}) => {\n const theme = useTheme()\n const GooglePlacesAutocompleteLocationParam =\n values.location?.coordinates?.latitude &&\n values.location?.coordinates?.longitude\n ? {\n location: `${values.location?.coordinates?.latitude},${values.location?.coordinates?.longitude}`,\n radius: 100000,\n }\n : {}\n const handlePlaceSelect = (details: GooglePlaceDetail | null) => {\n setHideMaps(false)\n if (details?.geometry?.location) {\n let location = convertGoogleMapsResponseToLocation(details)\n Utils.analyticsLogEvent(\n 'ServiceLocationSearch',\n Utils.flattenObject(location)\n )\n if (!location?.address?.postalCode) {\n console.log('Postal code missing, fallback to geocoding')\n const myLat = details?.geometry?.location.lat\n const myLon = details?.geometry?.location.lng\n fetch(\n 'https://maps.googleapis.com/maps/api/geocode/json?address=' +\n myLat +\n ',' +\n myLon +\n '&key=' +\n googleMapsAPIKey\n )\n .then((response) => response.json())\n .then((responseJson) => {\n const results = responseJson?.results\n if (results && results.length > 0) {\n console.log('geocoding successful')\n placesAutocompleteRef.current?.setAddressText(\n results[0]?.formatted_address\n )\n const locationFormatted = convertGoogleMapsResponseToLocation(\n results[0]\n )\n setFieldValue('location', locationFormatted)\n // call validateForm 100ms later to ensure the address is set\n setTimeout(() => {\n validateForm()\n }, 100)\n\n setCurrentLocation({\n description: i18n.t('Current Location'),\n ...results[0],\n })\n }\n })\n }\n\n setFieldValue('location', {\n ...location,\n serviceFacilityID: details?.serviceFacilityID,\n })\n let newIsFacilityMode = false\n if (details?.serviceFacilityID) {\n setIsFacilityMode(true)\n newIsFacilityMode = true\n } else {\n setIsFacilityMode(false)\n }\n\n const newRegion = Utils.regionFrom(\n details?.geometry?.location.lat,\n details?.geometry?.location.lng,\n markerRegionAreaSizeMetres\n )\n if (!newIsFacilityMode) {\n animateToRegion(\n mapViewRegion,\n setMapViewRegion,\n newRegion,\n animationDuration\n )\n\n const animation = Animated.parallel([\n Animated.timing(fadeAnimBottomBar, {\n toValue: 1,\n duration: 100,\n useNativeDriver: true,\n }),\n Animated.timing(barHeightAnimation, {\n toValue: 70,\n duration: 400,\n useNativeDriver: Platform.OS == 'web',\n }),\n ])\n animation.start()\n } else {\n fitMapToElements()\n\n const animation = Animated.parallel([\n Animated.timing(fadeAnimBottomBar, {\n toValue: 0,\n duration: 100,\n useNativeDriver: true,\n }),\n Animated.timing(barHeightAnimation, {\n toValue: Math.max(200, Dimensions.get('window').height / 4),\n duration: 400,\n useNativeDriver: Platform.OS == 'web',\n }),\n ])\n animation.start()\n }\n }\n }\n\n return (\n handlePlaceSelect(details)}\n debounce={500}\n minLength={2}\n enablePoweredByContainer={false}\n query={{\n key: googleMapsAPIKey,\n language: i18n.locale,\n components: 'country:de|country:hu|country:lu',\n types: 'address',\n ...GooglePlacesAutocompleteLocationParam,\n }}\n textInputProps={{\n InputComp: TextInput,\n onFocus: Platform.OS == 'web' ? () => { } : () => setHideMaps(true),\n onBlur: Platform.OS == 'web' ? () => { } : () => setHideMaps(false),\n label: i18n.t('Car location'),\n // right:\n // placesAutocompleteRef.current?.getAddressText().length ?? 0 > 1 ? (\n // placesAutocompleteRef.current?.setAddressText('')}\n // icon='close'\n // size={20}\n // />\n // ) : null,\n clearButtonMode: 'always',\n multiline: false,\n testID: 'Location',\n }}\n fetchDetails={true}\n predefinedPlaces={\n [...new Map(\n (currentLocation ? [currentLocation, ...previousAddresses] : [...previousAddresses])\n .map(item => [item.description, item])\n ).values()]\n }\n predefinedPlacesAlwaysVisible={false}\n requestUrl={{\n useOnPlatform: 'web', // or \"all\"\n url: 'https://k2238n7xha.execute-api.eu-west-1.amazonaws.com/dev/items', // or any proxy server that hits https://maps.googleapis.com/maps/api\n }}\n isRowScrollable={false}\n listHoverColor={theme.colors.surfaceDisabled}\n renderRow={(data, index) => (\n \n {data?.description}\n \n )}\n suppressDefaultStyles={true}\n styles={{\n container: {\n flex: 0,\n position: 'absolute',\n height: '100%',\n width: '100%',\n zIndex: 10,\n },\n listView: { backgroundColor: theme.colors.surface },\n }}\n />\n )\n},\n (prevProps, nextProps) => {\n // Custom comparison function\n return (\n prevProps.values.location === nextProps.values.location &&\n prevProps.currentLocation === nextProps.currentLocation &&\n prevProps.previousAddresses === nextProps.previousAddresses\n // Add more conditions for other relevant props\n );\n })\n\nexport default OrderLocationAutocomplete\n","import * as Location from 'expo-location'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport { Platform } from 'react-native'\nimport Constants from 'expo-constants'\nimport { AnimatedRegion, Region } from 'react-native-maps';\n\nexport type MapViewRegionType = Platform[\"OS\"] extends 'web' ? Region : AnimatedRegion;\nexport type AnimateToRegionFn = (\n mapViewRegion: MapViewRegionType,\n setMapViewRegion: (region: MapViewRegionType) => void,\n newRegion: Region,\n duration: number\n ) => void;\n\ninterface GoogleMapsResponse {\n address_components: {\n types: string[]\n long_name: string\n short_name: string\n }[]\n formatted_address: string\n geometry: {\n location: {\n lat: number\n lng: number\n }\n }\n}\n\ninterface LocationResult {\n name?: string\n street?: string\n district?: string\n region?: string\n subregion?: string\n city?: string\n country?: string\n isoCountryCode?: string\n postalCode?: string\n timezone?: string\n}\n\ninterface RegionInterface {\n latitude: number\n longitude: number\n latitudeDelta: number\n longitudeDelta: number\n}\nexport const animationDuration = 1000\nexport const markerRegionAreaSizeMetres = 1250\nexport const defaultLocation =\n i18n.locale == 'hu'\n ? {\n coords: {\n latitude: 47.49805331413439,\n longitude: 19.040295673146097,\n },\n }\n : {\n coords: {\n latitude: 52.51645085156003,\n longitude: 13.377747013513716,\n },\n }\n\nconst googleMapsAPIKey = Constants.expoConfig?.extra?.GOOGLE_MAPS_API_KEY ?? ''\n\nexport const animateToRegion: AnimateToRegionFn = (mapViewRegion, setMapViewRegion, newRegion, duration) => {\n // check if region is valid\n if (\n !newRegion?.latitude ||\n !newRegion?.longitude ||\n !newRegion?.latitudeDelta ||\n !newRegion?.longitudeDelta\n ) {\n console.log('animateToRegion called with invalid region')\n return\n }\n\n if (Platform[\"OS\"] === 'web') {\n setMapViewRegion(newRegion)\n return\n } else {\n mapViewRegion\n .timing({\n ...newRegion,\n duration,\n useNativeDriver: false,\n })\n .start()\n }\n}\nexport const getLocationAsync = async (\n placesAutocompleteRef: React.RefObject,\n mapViewRegion: MapViewRegionType,\n setMapViewRegion: (region: MapViewRegionType) => void,\n callbackSetFormattedAddress: (results: GoogleMapsResponse[]) => void,\n) => {\n var customMarkerRegionAreaSizeMetres = markerRegionAreaSizeMetres\n let { status } = await Location.requestForegroundPermissionsAsync()\n var location\n if (status === 'granted') {\n if (Platform.OS === 'web') {\n location = await Location.getCurrentPositionAsync({})\n } else {\n try {\n location = await Location.getLastKnownPositionAsync()\n } catch (error) {\n console.log('Location not available: ', error)\n }\n }\n console.log(\"location: \", location)\n if (placesAutocompleteRef?.current?.getAddressText() !== '') {\n // user has already typed a location, don't override it\n return\n }\n if (!location?.coords?.latitude || !location?.coords?.longitude) {\n console.log(\n 'getLastKnownPositionAsync returned an invalid location, setting default location'\n )\n location = defaultLocation\n customMarkerRegionAreaSizeMetres = 10000000\n }\n } else {\n console.log('Permission to access location was denied')\n location = defaultLocation\n customMarkerRegionAreaSizeMetres = 10000000\n }\n\n try {\n console.log('Location fetched')\n\n animateToRegion(\n mapViewRegion, setMapViewRegion,\n Utils.regionFrom(\n location?.coords?.latitude,\n location?.coords?.longitude,\n customMarkerRegionAreaSizeMetres\n ),\n animationDuration\n )\n\n const myLat = location.coords.latitude\n const myLon = location.coords.longitude\n fetch(\n 'https://maps.googleapis.com/maps/api/geocode/json?address=' +\n myLat +\n ',' +\n myLon +\n '&key=' +\n googleMapsAPIKey\n )\n .then((response) => response.json())\n .then((responseJson) => {\n const results = responseJson?.results\n callbackSetFormattedAddress(results)\n })\n } catch {\n console.log('Current location not available.')\n }\n}\n\nexport const convertGoogleMapsResponseToLocation = (\n details: GoogleMapsResponse\n) => {\n const getAddressValue = (details: GoogleMapsResponse, fieldName: string) => {\n return details?.address_components.find((item) =>\n item.types.includes(fieldName)\n )\n }\n const location = {\n address: {\n name: details?.formatted_address,\n street: getAddressValue(details, 'route')?.long_name || '',\n district: getAddressValue(details, 'sublocality')?.long_name || '',\n region: '',\n subregion: '',\n city:\n getAddressValue(details, 'locality')?.long_name ||\n getAddressValue(details, 'postal_town')?.long_name ||\n '',\n country: getAddressValue(details, 'country')?.long_name || '',\n isoCountryCode: getAddressValue(details, 'country')?.short_name || '',\n postalCode: getAddressValue(details, 'postal_code')?.short_name || '',\n timezone: '',\n },\n coordinates: {\n latitude: details?.geometry?.location.lat,\n longitude: details?.geometry?.location.lng,\n },\n }\n return location\n}\n\nexport const convertExpoLocationResponseToAddress = (\n result: LocationResult\n) => {\n return {\n name: result?.name || '',\n street: result?.street || '',\n district: result?.district || '',\n region: result?.region || '',\n subregion: result?.subregion || '',\n city: result?.city || '',\n country: result?.country || '',\n isoCountryCode: result?.isoCountryCode || '',\n postalCode: result?.postalCode || '',\n timezone: result?.timezone || '',\n }\n}\n","import React, {\n useEffect,\n useState,\n useRef,\n createRef,\n useCallback,\n useMemo,\n} from 'react'\nimport { useQuery } from '@apollo/client'\nimport debounce from 'lodash.debounce';\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n Animated,\n Platform,\n Dimensions,\n} from 'react-native'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport {\n DefaultTheme,\n Snackbar,\n IconButton,\n withTheme,\n Button,\n Text,\n Subheading,\n Portal,\n ActivityIndicator,\n Divider,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport { useUser } from './contexts/UserContext'\nimport OrderLocationAutocomplete from './OrderLocationAutocomplete'\nimport * as Yup from 'yup'\nimport * as Location from 'expo-location'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport SegmentedControl from '@react-native-segmented-control/segmented-control'\nimport WashpointLogo from '../assets/washpoint.svg'\nimport { Marker } from 'react-native-maps'\nimport Constants from 'expo-constants'\nimport { convertGoogleMapsResponseToLocation, animationDuration, animateToRegion, getLocationAsync, markerRegionAreaSizeMetres } from './LocationService'\nconst moment = require('moment-timezone')\nlet MapView, AnimatedRegion\nMapView = require('react-native-maps').default\nAnimatedRegion = require('react-native-maps').AnimatedRegion\nLocation.installWebGeolocationPolyfill()\n\nconst googleMapsAPIKey = Constants.expoConfig.extra.GOOGLE_MAPS_API_KEY\n\nconst SelectLocationComponentSchema = Yup.object().shape({\n location: Yup.object()\n .shape({\n address: Utils.locationAddressSchema,\n coordinates: Utils.locationCoordinatesSchema,\n })\n .required(() => i18n.t('Required')),\n})\n\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_MANDATORY_ADDONS = gql(\n queries.listMandatoryAddonsByCountryPostalCodeValidUntil\n)\n\nconst LIST_MANDATORY_ADDONS_PREFIX = gql(\n queries.listMandatoryAddonsByCountryPostalCodeValidUntil\n)\n\nconst LIST_OFFERINGS = gql(`\n query ListOfferings(\n $filter: ModelOfferingFilterInput\n $limit: Int\n $nextToken: String\n ) {\n listOfferings(filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n franchiseContracts {\n items {\n franchiseContract {\n minOrderLeadTimeHours\n validUntil\n validFrom\n id\n }\n }\n }\n }\n nextToken\n }\n }\n`)\n\nconst LIST_SERVICE_FACILITIES = gql(`\nquery ListServiceFacilitiesByGeohash($geohash: String!, $today: String, $sortDirection: ModelSortDirection, $filter: ModelServiceFacilityFilterInput, $limit: Int, $nextToken: String) {\n listServiceFacilitiesByGeohash(geohash: $geohash, sortDirection: $sortDirection, filter: $filter, limit: $limit, nextToken: $nextToken) {\n items {\n id\n geohash\n name\n createdAt\n updatedAt\n serviceOrders {\n nextToken\n }\n owner\n ownerships(filter: {validFrom: {le: $today}, validUntil: {ge: $today}}) {\n nextToken\n items {\n id\n }\n }\n location {\n address {\n city\n country\n isoCountryCode\n name\n postalCode\n region\n street\n subregion\n timezone\n district\n }\n coordinates {\n latitude\n longitude\n }\n }\n }\n nextToken\n }\n}\n`)\n\nconst today = moment()\n\nconst SelectLocationComponent = ({ theme, route, navigation, ...props }) => {\n const {\n state: { user, authStatus },\n } = useUser();\n const providerSelectedCustomer = route.params?.providerSelectedCustomer\n const orderUser = providerSelectedCustomer ? providerSelectedCustomer : user\n const [dimensions, setDimensions] = useState({\n window: Dimensions.get('window'),\n screen: Dimensions.get('screen'),\n })\n const onDimensionsChange = debounce(({ window, screen }) => {\n setDimensions({ window, screen });\n }, 300);\n\n const fetchUser = useCallback(async () => {\n if (!!providerSelectedCustomer) {\n navigation.setOptions({\n title: `${i18n.t('Select Location')} ${i18n\n .t('on behalf of')\n .replace('', providerSelectedCustomer?.attributes?.email)}`,\n })\n }\n }, [providerSelectedCustomer])\n\n useEffect(() => {\n fetchUser()\n }, [])\n\n const previousAddresses = route.params?.previousAddresses || []\n const formRef = useRef()\n const [markerRefs, setMarkerRefs] = React.useState([])\n const [isFacilityMode, setIsFacilityMode] = React.useState(0)\n const [snackBarMessage, setSnackBarMessage] = useState()\n const placesAutocompleteRef = useRef()\n return (\n <>\n \n setSnackBarMessage(null)}\n action={{\n label: i18n.t('Ok'),\n onPress: () => setSnackBarMessage(null),\n }}\n >\n {snackBarMessage}\n \n \n \n {/* //! TODO: separate into Form Component */}\n {\n setSnackBarMessage(null)\n navigation.navigate('Select Service', {\n serviceFacilityID: values.location?.serviceFacilityID,\n mandatoryTaskTypeIDs: values?.mandatoryTaskTypeIDs,\n location: { ...values.location, serviceFacilityID: undefined },\n providerSelectedCustomer: providerSelectedCustomer,\n minOrderLeadTimeHoursPrediction: values?.minOrderLeadTimeHoursPrediction\n })\n }}\n innerRef={formRef}\n validationSchema={SelectLocationComponentSchema}\n >\n {({\n setFieldValue,\n isValid,\n\n handleSubmit,\n values,\n validateForm,\n }) => {\n const callbackSetFormattedAddress = (results) => {\n if (results && results.length > 0) {\n setTimeout(() => placesAutocompleteRef.current?.setAddressText(\n results[0]?.formatted_address\n ), 10)\n const locationFormatted = convertGoogleMapsResponseToLocation(\n results[0]\n )\n setTimeout(() => setFieldValue('location', locationFormatted), 20)\n setTimeout(() => validateForm(), 100)\n\n setTimeout(() => setCurrentLocation({\n description: i18n.t('Current Location'),\n ...results[0],\n }), 120)\n }\n }\n const [hideMaps, setHideMaps] = React.useState(false)\n const [currentLocation, setCurrentLocation] =\n React.useState(undefined)\n\n const [mapViewRegion, setMapViewRegion] = React.useState(\n Platform.OS != 'web'\n ? new AnimatedRegion(\n Utils.regionFrom(47.1611615, 19.5057541, 200 * 1000)\n )\n : Utils.regionFrom(47.1611615, 19.5057541, 200 * 1000)\n )\n\n const mapRef = useRef(null)\n\n let offeringTags = ['consumer']\n if (orderUser?.attributes?.['custom:offering_tags']) {\n offeringTags = [\n ...new Set([\n ...(orderUser?.attributes?.['custom:offering_tags'] || '').split(\n ','\n ),\n ]),\n ]\n }\n const offeringTagsFilter = {\n or: offeringTags.map((item) => {\n return { tags: { contains: item } }\n }),\n }\n\n const {\n data: listOfferingsData,\n error: queryErrorListOfferings,\n loading: queryLoadingListOfferings,\n } = useQuery(LIST_OFFERINGS, {\n variables: {\n filter: {\n and: [\n { offeredFrom: { le: today.format('YYYY-MM-DD') } },\n { offeredUntil: { ge: today.format('YYYY-MM-DD') } },\n {\n or: [\n {\n areaNames: {\n contains: values?.location?.address?.city,\n },\n },\n {\n areaNames: {\n contains: values?.location?.address?.isoCountryCode,\n },\n },\n {\n areaNames: {\n contains: values?.location?.address?.isoCountryCode + '-' + values?.location?.address?.postalCode,\n },\n },\n {\n areaNames: {\n contains: values?.location?.address?.isoCountryCode + '-' + values?.location?.address?.postalCode.slice(0, 2),\n },\n }\n ],\n },\n { ...offeringTagsFilter },\n ],\n },\n },\n fetchPolicy: 'cache-and-network',\n skip: values?.location?.address?.city == null,\n })\n\n useEffect(() => {\n const validFranchiseContracts = listOfferingsData?.listOfferings?.items?.flatMap(offering => \n offering.franchiseContracts.items\n .filter(item => \n item.franchiseContract.validFrom <= moment().format('YYYY-MM-DD') && \n item.franchiseContract.validUntil >= moment().format('YYYY-MM-DD')\n )\n .map(item => item.franchiseContract)\n ) || [];\n \n const minLeadTime = validFranchiseContracts.reduce((min, contract) => \n Math.min(min, contract.minOrderLeadTimeHours), \n Number.MAX_SAFE_INTEGER\n );\n \n if (minLeadTime !== Number.MAX_SAFE_INTEGER) {\n setFieldValue('minOrderLeadTimeHoursPrediction', minLeadTime === Number.MAX_SAFE_INTEGER ? 2 : minLeadTime);\n }\n }, [listOfferingsData]); \n const {\n data: listMandatoryAddonsData,\n error: queryErrorListMandatoryAddons,\n loading: queryLoadingListMandatoryAddons,\n } = useQuery(LIST_MANDATORY_ADDONS, {\n variables: {\n isoCountryCodePostalCode: `${values?.location?.address?.isoCountryCode}${values?.location?.address?.postalCode}`,\n sortDirection: 'DESC',\n validUntil: { gt: today.toISOString() },\n filter: {\n validFrom: { le: today.toISOString() },\n },\n },\n fetchPolicy: 'network-only',\n skip: values?.location?.address?.postalCode == null,\n })\n\n const {\n data: listMandatoryAddonsPrefixData,\n error: queryErrorListMandatoryAddonsPrefix,\n loading: queryLoadingListMandatoryAddonsPrefix,\n } = useQuery(LIST_MANDATORY_ADDONS_PREFIX, {\n variables: {\n isoCountryCodePostalCode: `${values?.location?.address?.isoCountryCode}${values?.location?.address?.postalCode?.slice(0, 2)}`,\n sortDirection: 'DESC',\n validUntil: { gt: today.toISOString() },\n filter: {\n validFrom: { le: today.toISOString() },\n },\n },\n fetchPolicy: 'network-only',\n skip: values?.location?.address?.postalCode == null,\n })\n\n // Merge the results\n const mergedMandatoryAddonsData = useMemo(() => {\n if (!listMandatoryAddonsData && !listMandatoryAddonsPrefixData) return null;\n\n const fullPostalCodeItems = listMandatoryAddonsData?.listMandatoryAddonsByCountryPostalCodeValidUntil?.items || [];\n const prefixPostalCodeItems = listMandatoryAddonsPrefixData?.listMandatoryAddonsByCountryPostalCodeValidUntil?.items || [];\n\n // Combine and deduplicate items based on their ID\n const mergedItems = [...fullPostalCodeItems, ...prefixPostalCodeItems].reduce((acc, current) => {\n const x = acc.find(item => item.id === current.id);\n if (!x) {\n return acc.concat([current]);\n } else {\n return acc;\n }\n }, []);\n\n return {\n listMandatoryAddonsByCountryPostalCodeValidUntil: {\n items: mergedItems,\n }\n };\n }, [listMandatoryAddonsData, listMandatoryAddonsPrefixData]);\n\n // Update the loading and error states\n const isQueryLoadingMandatoryAddons = queryLoadingListMandatoryAddons || queryLoadingListMandatoryAddonsPrefix;\n const queryErrorMandatoryAddons = queryErrorListMandatoryAddons || queryErrorListMandatoryAddonsPrefix;\n useEffect(() => {\n if (\n mergedMandatoryAddonsData\n ?.listMandatoryAddonsByCountryPostalCodeValidUntil?.items\n ?.length > 0\n ) {\n const offeringTagsSet = new Set(offeringTags)\n const addonsWithoutExempts = []\n mergedMandatoryAddonsData?.listMandatoryAddonsByCountryPostalCodeValidUntil?.items?.forEach(\n (addon) => {\n let exemptTagsSet = new Set(addon.exemptTags)\n let intersection = new Set(\n [...offeringTagsSet].filter((x) => exemptTagsSet.has(x))\n )\n if (intersection.size == 0) {\n addonsWithoutExempts.push(addon)\n }\n }\n )\n const tastIDs = addonsWithoutExempts.map(\n (addon) => addon?.taskType?.id\n )\n if (tastIDs.length > 0) {\n setSnackBarMessage(i18n.t('Callout fee addon note'))\n setFieldValue('mandatoryTaskTypeIDs', [...new Set(tastIDs)])\n } else {\n setSnackBarMessage(null)\n setFieldValue('mandatoryTaskTypeIDs', [])\n }\n } else {\n setSnackBarMessage(null)\n setFieldValue('mandatoryTaskTypeIDs', [])\n }\n }, [\n mergedMandatoryAddonsData?.listMandatoryAddonsByCountryPostalCodeValidUntil,\n ])\n\n const {\n data: listServiceFacilitiesData,\n error: queryErrorListServiceFacilities,\n loading: queryLoadingListServiceFacilities,\n } = useQuery(LIST_SERVICE_FACILITIES, {\n variables: {\n geohash: values?.location?.address?.isoCountryCode,\n today: today.format('YYYY-MM-DD'),\n filter: { ...offeringTagsFilter },\n },\n skip: !orderUser || !values?.location?.address?.isoCountryCode,\n fetchPolicy: 'cache-and-network',\n })\n const listServiceFacilitiesDataFiltered = listServiceFacilitiesData\n ?.listServiceFacilitiesByGeohash?.items\n ? {\n listServiceFacilitiesByGeohash: {\n items:\n listServiceFacilitiesData?.listServiceFacilitiesByGeohash?.items.filter(\n (item) => item?.ownerships?.items?.length > 0\n ),\n },\n }\n : undefined\n\n const isQueryLoading =\n queryLoadingListServiceFacilities ||\n queryLoadingListOfferings ||\n isQueryLoadingMandatoryAddons\n useEffect(() => {\n ; (queryErrorListOfferings ||\n queryErrorListServiceFacilities ||\n queryErrorMandatoryAddons) &&\n console.log(\n 'E R R O R: ',\n queryErrorListOfferings,\n queryErrorListServiceFacilities,\n queryErrorMandatoryAddons\n )\n const unsubscribe = navigation.addListener('beforeRemove', () => {\n // do something\n //updateServiceOrder()\n })\n\n return unsubscribe\n }, [\n queryErrorListOfferings,\n queryErrorListServiceFacilities,\n queryErrorMandatoryAddons,\n navigation,\n ])\n\n useEffect(() => {\n setMarkerRefs(\n Array(\n listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items.length\n )\n .fill()\n .map((_, i) => createRef())\n )\n if (\n listServiceFacilitiesDataFiltered?.listServiceFacilitiesByGeohash &&\n listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items?.length > 0 &&\n listOfferingsData?.listOfferings &&\n !(listOfferingsData?.listOfferings?.items?.length > 0)\n ) {\n setIsFacilityMode(true)\n }\n }, [listServiceFacilitiesData])\n\n useEffect(() => {\n if (\n listServiceFacilitiesDataFiltered?.listServiceFacilitiesByGeohash &&\n listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items?.length > 0 &&\n listOfferingsData?.listOfferings &&\n !(listOfferingsData?.listOfferings?.items?.length > 0)\n ) {\n setIsFacilityMode(true)\n }\n }, [listOfferingsData])\n\n useEffect(() => {\n if (isFacilityMode == false) {\n animateToRegion(\n mapViewRegion, setMapViewRegion,\n Utils.regionFrom(\n values?.location?.coordinates?.latitude,\n values?.location?.coordinates?.longitude,\n markerRegionAreaSizeMetres\n ),\n animationDuration\n )\n const animation = Animated.parallel([\n Animated.timing(fadeAnimBottomBar, {\n toValue: 1,\n duration: 500,\n useNativeDriver: true,\n }),\n Animated.timing(barHeightAnimation, {\n toValue: 70,\n duration: 400,\n useNativeDriver: Platform.OS == 'web' ? true : false,\n }),\n ])\n animation.start()\n } else {\n fitMapToElements(true)\n\n const animation = Animated.parallel([\n Animated.timing(fadeAnimBottomBar, {\n toValue: 0,\n duration: 100,\n useNativeDriver: true,\n }),\n Animated.timing(barHeightAnimation, {\n toValue:\n Math.min(\n 2.25,\n listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items?.length\n ) * 83 || 200, //Math.max(200, Dimensions.get('window').height / 4),\n duration: 400,\n useNativeDriver: Platform.OS == 'web' ? true : false,\n }),\n ])\n animation.start()\n }\n }, [isFacilityMode])\n\n useEffect(() => {\n getLocationAsync(placesAutocompleteRef, mapViewRegion, setMapViewRegion, callbackSetFormattedAddress)\n const dimensionsHandler = Dimensions.addEventListener(\n 'change',\n onDimensionsChange\n )\n return () => {\n dimensionsHandler.remove()\n }\n }, [])\n\n const isLocationSelected = (item) =>\n item?.location?.coordinates?.latitude ==\n values.location?.coordinates?.latitude\n\n const selectServiceFacilityLocation = (item) => {\n placesAutocompleteRef.current?.setAddressText(item?.name)\n const removeTypename = (obj) => {\n Object.keys(obj).forEach(\n (k) =>\n (obj[k] &&\n typeof obj[k] === 'object' &&\n removeTypename(obj[k])) ||\n (k == '__typename' && delete obj[k])\n )\n return obj\n }\n const locationFormatted = removeTypename(\n JSON.parse(JSON.stringify(item?.location))\n )\n\n setFieldValue('location', {\n ...locationFormatted,\n serviceFacilityID: item?.id,\n }).then(() => validateForm())\n handleSubmit()\n }\n\n const fitMapToElements = () => {\n if (Platform.OS == 'web') {\n if (window.google) {\n const bounds = new window.google.maps.LatLngBounds()\n\n if (\n listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items\n ) {\n listServiceFacilitiesDataFiltered?.listServiceFacilitiesByGeohash?.items\n .map((item) => {\n return {\n lat: item?.location?.coordinates?.latitude,\n lng: item?.location?.coordinates?.longitude,\n }\n })\n .forEach((item) => bounds.extend(item))\n const center = bounds.getCenter()\n const span = bounds.toSpan()\n const region = {\n latitude: center.lat(),\n longitude: center.lng(),\n latitudeDelta: span.lat() * 1.2,\n longitudeDelta: span.lng() * 1.2,\n }\n setMapViewRegion(region)\n }\n }\n } else {\n if (mapRef?.current) {\n if (\n listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items\n ) {\n const markerIdentifierList =\n listServiceFacilitiesDataFiltered?.listServiceFacilitiesByGeohash?.items.reduce(\n (accumulator, _, index) => [\n ...accumulator,\n `marker${index}`,\n ],\n []\n )\n mapRef.current.fitToSuppliedMarkers(markerIdentifierList, {\n edgePadding: {\n top: 500,\n right: 20,\n bottom: 500,\n left: 20,\n },\n animated: true,\n })\n }\n }\n }\n }\n const barHeightAnimation = useRef(new Animated.Value(70)).current\n const fadeAnimBottomBar = useRef(new Animated.Value(1)).current\n return (\n <>\n {Platform.OS == 'web' && (\n \n \n {values?.location?.coordinates?.latitude &&\n values?.location?.coordinates?.longitude && (\n \n )}\n\n {isFacilityMode\n ? listServiceFacilitiesDataFiltered?.listServiceFacilitiesByGeohash?.items.map(\n (item, i) => (\n {\n markerRefs.forEach((markerRef) =>\n markerRef.current.hideCallout()\n )\n markerRefs[i].current.showCallout()\n }}\n >\n \n \n \n {item?.name}\n \n {`${item?.location?.address?.street}`}\n {`${item?.location?.address?.city}`}\n {`${item?.location?.address?.postalCode}`}\n\n \n selectServiceFacilityLocation(item)\n }\n >\n {isLocationSelected(item)\n ? i18n.t('Selected')\n : i18n.t('Select')}\n \n \n \n \n )\n )\n : null}\n \n \n )}\n {Platform.OS != 'web' && (\n \n \n mapViewRegion.setValue(region)\n }\n ref={mapRef}\n customMapStyle={theme.googleMapsStyle}\n onLongPress={(e) => {\n if (!isFacilityMode) {\n setFieldValue('location', {\n ...values.location,\n coordinates: e.nativeEvent.coordinate,\n serviceFacilityID: null,\n })\n const myLat = e.nativeEvent.coordinate.latitude\n const myLon = e.nativeEvent.coordinate.longitude\n fetch(\n 'https://maps.googleapis.com/maps/api/geocode/json?address=' +\n myLat +\n ',' +\n myLon +\n '&key=' +\n googleMapsAPIKey\n )\n .then((response) => response.json())\n .then((responseJson) => {\n const results = responseJson?.results\n if (results && results.length > 0) {\n const locationFormatted =\n convertGoogleMapsResponseToLocation(\n results[0]\n )\n Utils.analyticsLogEvent(\n 'ServiceLocationPinDrag',\n Utils.flattenObject(locationFormatted)\n )\n setFieldValue(\n 'location.address',\n locationFormatted?.address\n )\n setTimeout(() => {\n placesAutocompleteRef.current?.setAddressText(\n results[0]?.formatted_address\n )\n }, 100)\n }\n })\n }\n }}\n >\n {values?.location?.coordinates?.latitude &&\n values?.location?.coordinates?.longitude && (\n {\n setFieldValue('location', {\n ...values.location,\n coordinates: e.nativeEvent.coordinate,\n serviceFacilityID: null,\n })\n\n const myLat = e.nativeEvent.coordinate.latitude\n const myLon = e.nativeEvent.coordinate.longitude\n fetch(\n 'https://maps.googleapis.com/maps/api/geocode/json?address=' +\n myLat +\n ',' +\n myLon +\n '&key=' +\n googleMapsAPIKey\n )\n .then((response) => response.json())\n .then((responseJson) => {\n const results = responseJson?.results\n if (results && results.length > 0) {\n const locationFormatted =\n convertGoogleMapsResponseToLocation(\n results[0]\n )\n Utils.analyticsLogEvent(\n 'ServiceLocationPinDrag',\n Utils.flattenObject(locationFormatted)\n )\n setFieldValue(\n 'location.address',\n locationFormatted?.address\n )\n placesAutocompleteRef.current?.setAddressText(\n results[0]?.formatted_address\n )\n }\n })\n }}\n />\n )}\n\n {isFacilityMode\n ? listServiceFacilitiesDataFiltered?.listServiceFacilitiesByGeohash?.items.map(\n (item, i) => (\n {\n selectServiceFacilityLocation(item)\n }}\n >\n \n \n \n \n )\n )\n : null}\n \n \n )}\n\n \n\n {!hideMaps &&\n listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items?.length > 0 &&\n listOfferingsData?.listOfferings?.items?.length > 0 && (\n \n \n {\n setIsFacilityMode(\n event.nativeEvent.selectedSegmentIndex\n )\n }}\n />\n \n \n )}\n\n {!hideMaps && values?.location?.address && (\n \n \n {!isFacilityMode ? (\n \n {/* //? TODO: Extract this nested ternary operation into an independent statement. */}\n {listOfferingsData?.listOfferings?.items?.length >\n 0 ? (\n mergedMandatoryAddonsData\n ?.listMandatoryAddonsByCountryPostalCodeValidUntil\n ?.items?.length > 0 ? (\n \n \n {i18n.t('Select')}\n \n \n ) : (\n \n {i18n.t('Select')}\n \n )\n ) : isQueryLoading == true ? (\n \n ) : (\n \n {i18n.t(\n 'Sorry, no service at the selected location'\n )}\n \n )}\n \n ) : listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items?.length >\n 0 ? (\n \n \n {[\n ...listServiceFacilitiesDataFiltered\n ?.listServiceFacilitiesByGeohash?.items,\n ]\n .sort((a, b) =>\n Utils.calculateDistanceInKm(\n a?.location?.coordinates?.latitude,\n a?.location?.coordinates?.longitude,\n values?.location?.coordinates?.latitude,\n values?.location?.coordinates?.longitude\n ) >\n Utils.calculateDistanceInKm(\n b?.location?.coordinates?.latitude,\n b?.location?.coordinates?.longitude,\n values?.location?.coordinates?.latitude,\n values?.location?.coordinates?.longitude\n )\n ? 1\n : -1\n )\n .map((item, i) => (\n \n \n \n \n {item?.name}\n \n {`${item?.location?.address?.street}`}\n {`${item?.location?.address?.city} ${item?.location?.address?.postalCode}`}\n \n \n {`${Math.round(\n 10 *\n Utils.calculateDistanceInKm(\n item?.location?.coordinates\n ?.latitude,\n item?.location?.coordinates\n ?.longitude,\n values?.location?.coordinates\n ?.latitude,\n values?.location?.coordinates\n ?.longitude\n )\n ) / 10\n } km`}\n {\n animateToRegion(\n mapViewRegion, setMapViewRegion,\n Utils.regionFrom(\n item?.location?.coordinates\n ?.latitude,\n item?.location?.coordinates\n ?.longitude,\n markerRegionAreaSizeMetres\n ),\n animationDuration\n )\n }}\n />\n\n \n selectServiceFacilityLocation(item)\n }\n >\n {i18n.t('Select')}\n \n \n \n \n \n ))}\n \n \n ) : (\n \n )}\n \n \n )}\n \n )\n }}\n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n actionButton: {\n margin: 1,\n },\n\n mapStyle: {\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n },\n mapStyleWeb: {\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height - 65,\n },\n\n container: {\n flex: 1,\n marginTop: 0,\n },\n scrollView: {\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(SelectLocationComponent)\n","import React, { useEffect, useState, useRef } from 'react'\nimport {\n ScrollView,\n StyleSheet,\n View,\n TouchableWithoutFeedback,\n Dimensions,\n ActivityIndicator,\n SafeAreaView,\n Platform,\n} from 'react-native'\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport {\n Button,\n withTheme,\n Text,\n Caption,\n Title,\n Subheading,\n Appbar,\n} from 'react-native-paper'\n\nimport { Ionicons } from '@expo/vector-icons'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\nimport Modal from 'react-native-modal'\nimport { Picker } from '@react-native-picker/picker'\nimport { extendMoment } from 'moment-range'\nconst moment = extendMoment(require('moment-timezone'))\nconst screenWidth = Dimensions.get('window').width\nconst BusinessHoursInfoModal = ({\n theme,\n listOpeningHoursData,\n isTimeslotMode,\n ...props\n}) => {\n const toggleModal = () => {\n props.setVisible(!props.isVisible)\n }\n\n const recurring =\n listOpeningHoursData?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items.filter(\n (item) => item.type == 'RECURRING'\n )\n const override =\n listOpeningHoursData?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items.filter(\n (item) => item.type == 'OVERRIDE'\n )\n\n return (\n props.setVisible(false)}\n swipeDirection={Platform.OS == 'android' ? ['down'] : []}\n statusBarTranslucent\n propagateSwipe={false}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n }}\n customBackdrop={\n props.setVisible(false)}>\n \n \n }\n >\n \n \n {i18n.t('Business hours')}\n \n {/* {i18n.t(\"Business hours text\")} */}\n {recurring?.length > 0 &&\n recurring.map((item, idx) => {\n return (\n \n {recurring?.length > 1 ? (\n item.effectiveUntil == '2099-12-31' ? (\n {`${i18n.t('Latest Opening Hours')}`}\n ) : (\n {`${moment(item.effectiveFrom).format('L')}-${moment(\n item.effectiveUntil\n ).format('L')}:`}\n )\n ) : null}\n\n {item?.weekdayOpeningHours.map((item2, idx2) => {\n if (\n item2.weekday &&\n item2.openFromHour &&\n item2.openUntilHour\n ) {\n return (\n {`${i18n.t(item2.weekday)}: ${Utils.getFormattedTime(\n item2.openFromHour\n )} - ${Utils.getFormattedTime(\n item2.openUntilHour\n )}`}\n )\n } else if (item2.weekday) {\n return (\n {`${i18n.t(item2.weekday)}: ${i18n.t('closed')}`}\n )\n }\n })}\n \n )\n })}\n {override?.length > 0 && (\n <>\n {`${i18n.t('Special Days')}`}\n {override.map((item, idx) => {\n return item?.weekdayOpeningHours.map((item2, idx2) => {\n var intervalString = Utils.getFormattedInterval(\n item.effectiveFrom,\n item.effectiveUntil\n )\n\n if (\n item2.weekday &&\n item2.openFromHour &&\n item2.openUntilHour\n ) {\n return (\n {`${intervalString}: ${Utils.getFormattedTime(\n item2.openFromHour\n )} - ${\n Utils.getFormattedTime(item2.openUntilHour) +\n (item.note ? ' (' + item.note + ')' : '')\n }`}\n )\n } else if (item2.weekday) {\n return (\n {`${intervalString}: ${\n i18n.t('closed') +\n (item.note ? ' (' + item.note + ')' : '')\n }`}\n )\n }\n })\n })}\n \n )}\n\n {listOpeningHoursData\n ?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items?.length ==\n 0 && (\n \n {i18n.t('Opening hours currently not available')}\n \n )}\n {!isTimeslotMode && (\n \n {i18n.t('Business hours additional info')}\n \n )}\n \n {i18n.t('Ok')}\n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n})\n\nexport default withTheme(BusinessHoursInfoModal)\n","import React, { Component } from 'react';\nimport { ScrollView, StyleSheet, View, Modal, TouchableWithoutFeedback, Dimensions, ActivityIndicator, SafeAreaView } from 'react-native';\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport { Button,Text, withTheme, Caption, Title, Appbar } from 'react-native-paper';\nimport { Table, TableWrapper, Row } from 'react-native-table-component';\nimport { Ionicons } from '@expo/vector-icons';\nimport Utils from './Utils'\nimport i18n from 'i18n-js';\nconst screenWidth = Math.min(Dimensions.get('window').width,800)\nclass ProductPackageDetailsModal extends Component {\n\n constructor(props) {\n super(props);\n\n const flatten = (ary) => ary.reduce((a, b) => a.concat(Array.isArray(b) ? flatten(b) : b), [])\n const productPackageNames = this.props?.offerings.map(offering => offering.product).map(item => item.productPackage.name)\n const productPackageNamesAndPrices = this.props?.offerings.map(offering => {`${offering.product.productPackage.name}`}{`${Utils.formatCurrency(offering.price, offering.priceCurrency)}`})\n\n const taskNames = [...new Set(flatten(this.props?.offerings.map(offering => offering.product).map(productItem => productItem.taskTypes.items.map(taskItem => taskItem.taskType.name))))]\n const rowsUnfiltered = taskNames.map(taskName => [taskName, ...productPackageNames.map(productPackageName => this.props?.offerings.map(offering => offering.product).find(product => product.productPackage.name == productPackageName).taskTypes.items.find(taskTypeItem => taskTypeItem.taskType.name == taskName)?.isIncluded)])\n const rowsFiltered = rowsUnfiltered.filter(row => row.slice(1).some(item => item == true))\n const rows = rowsFiltered.map(row => [{i18n.t(row[0],{defaultValue:row[0]})}, ...row.slice(1).map(item => {item ? : })])\n const tableHead = [{i18n.t(\"Service Item\")}, ...productPackageNamesAndPrices]\n\n\n this.state = {\n scrollOffset: null,\n tableHead: tableHead,\n widthArr: [150, ...Array(productPackageNames.length).fill(Math.floor((screenWidth - 150) / productPackageNames.length))],\n //widthArr: [100,100,100,100,100,100,100],\n rows: rows,\n taskNames: taskNames\n\n\n }\n\n this.scrollViewRef = React.createRef();\n this.close = () => this.props.close();\n this.isVisible = () => this.props.visible;\n this.styles = StyleSheet.create({\n header: { height: 50, backgroundColor: this.props.theme.colors.primaryContainer },\n text: { textAlign: 'center', fontWeight: '100', fontSize: 12 },\n textHeader: { textAlign: 'center', fontWeight: 'bold', fontSize: 12 },\n row: { height: 40, backgroundColor: this.props.theme.colors.surface }\n });\n }\n\n render() {\n\n return (\n\n console.log(\"close me\")}\n visible={this.isVisible()}\n onDismiss={this.close}\n useNativeDriver={true}\n statusBarTranslucent\n scrollOffset={this.state.scrollOffset}\n scrollOffsetMax={200 - 300} // content height - ScrollView height\n propagateSwipe={true}\n animationType=\"slide\"\n transparent={false}\n presentationStyle={'formSheet'}\n hardwareAccelerated={true}\n // statusBarTranslucent={false}\n >\n \n \n \n \n\n \n\n \n \n
\n \n {!(this.props?.offerings.map(offering => offering.product)) ?\n \n \n \n :\n this.state.taskNames && this.state.taskNames.length == 0 ?\n \n {i18n.t(\"No product information available\")}\n \n :\n\n \n\n \n {\n this.state.rows.map((rowData, index) => (\n \n ))\n }\n
\n
\n\n }\n \n
\n \n\n );\n }\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n scrollableModal: {\n //height: 300,\n margin: 0,\n flex:1\n }\n});\n\nexport default withTheme(ProductPackageDetailsModal);","import React, { useEffect, useState, useRef } from 'react';\nimport { ScrollView, StyleSheet, View, TouchableWithoutFeedback, Dimensions, SafeAreaView, Platform } from 'react-native';\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport { FAB, Caption, Switch, withTheme, Chip, ProgressBar, Button, TextInput, List, Text, Title, Subheading, Portal, ActivityIndicator, HelperText, Menu, Divider, IconButton, RadioButton } from 'react-native-paper';\n\nimport { Ionicons } from '@expo/vector-icons';\nimport Utils from './Utils'\nimport i18n from 'i18n-js';\nimport Modal from 'react-native-modal';\nimport { Picker } from '@react-native-picker/picker';\nconst screenWidth = Dimensions.get('window').width\nconst AddonsComponent = ({ theme, offeringSelected, addons, setAddons, ...props }) => {\n const [addonInfoModalState, setAddonInfoModalState] = useState({ itemID: null, title: \"\", message: \"\" });\n const getExclusiveAddonsNulled = (group, item) => group.filter(element => element.exclusiveGroupID == item.exclusiveGroupID).reduce((prev, curr) => {\n if (curr.id != item.id) {\n return { ...prev, [curr.id]: 0 }\n }\n else {\n return prev\n }\n\n }, {})\n const addonsGroupsed = offeringSelected?.addonOptions?.addons?.items.filter(item=>item?.visibility.includes(Utils.isCustomerApp() ? \"customer\" : \"provider\")).filter(item => !offeringSelected.product.taskTypes.items.filter(item => item.isIncluded == true).map(item => item.taskTypeID).includes(item.taskType.id)).reduce((groups, item) => {\n if (item?.groupID) {\n return {\n ...groups,\n [item.groupID]: [...(groups[item.groupID] || []), item]\n }\n }\n else {\n return {\n ...groups,\n [\"MissingGroupID\"]: [...(groups[\"MissingGroupID\"] || []), item]\n }\n }\n }, {})\n\n const Notes = ({ item, ...props }) => {\n return (item?.taskType?.note &&\n (addonInfoModalState?.itemID == item.id ?\n <>\n {i18n.t(addonInfoModalState?.message, { defaultValue: addonInfoModalState?.message })}\n { setAddonInfoModalState({ itemID: null, title: \"\", message: \"\" }) }}>{i18n.t(\"show less\")}\n \n :\n { setAddonInfoModalState({ itemID: item.id, title: item.taskType.name, message: item?.taskType?.note }) }}>{i18n.t(\"learn more\")}\n )\n )\n }\n\n return (\n <>\n {addonsGroupsed &&\n Object.entries(addonsGroupsed).map(([groupID, group], index) => {\n\n return (\n \n {group.map((item, index) => {\n if (item.minUnit == 0 && item.maxUnit == 1) {\n if(item?.visibility?.includes(`${Utils.isCustomerApp() ? \"customer\" : \"provider\"}-only-on`) && addons[item.id] != true) {\n return null\n }\n return (\n \n \n\n {i18n.t(item.taskType.name, { defaultValue: item.taskType.name })}\n \n {`${Utils.formatCurrency(item.price, item.priceCurrency)}`}\n \n {\n var exclusiveAddonsNulled = {}\n if (addons[item.id] == 0) {\n exclusiveAddonsNulled = getExclusiveAddonsNulled(group, item)\n }\n setAddons({ ...addons, ...exclusiveAddonsNulled, [item.id]: addons[item.id] == 1 ? 0 : 1 })\n }}\n disabled={item?.visibility?.includes(`${Utils.isCustomerApp() ? \"customer\" : \"provider\"}-readonly`)}\n />\n \n )\n }\n else {\n return (\n \n \n {i18n.t(item.taskType.name, { defaultValue: item.taskType.name })}\n \n {`${Utils.formatCurrency(item.price, item.priceCurrency)}`}\n \n \n setAddons({ ...addons, [item.id]: Math.max(item.minUnit, -1 + addons[item.id]) })}\n testID={`AddonMinus${index}`}\n />\n {addons[item.id]}\n {\n var exclusiveAddonsNulled = getExclusiveAddonsNulled(group, item)\n setAddons({ ...addons, ...exclusiveAddonsNulled, [item.id]: Math.min(item.maxUnit, 1 + addons[item.id]) })\n }}\n testID={`AddonPlus${index}`}\n />\n\n \n \n )\n }\n })\n }\n {index < (Object.entries(addonsGroupsed)?.length - 1) &&\n \n }\n \n )\n }\n )\n }\n \n\n )\n\n}\n\nconst styles = StyleSheet.create({\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: \"center\",\n justifyContent: 'space-between',\n paddingTop: 16,\n paddingHorizontal: 16,\n width: '100%',\n },\n});\n\nexport default withTheme(AddonsComponent);","//? Ideas:\n//* 1. Variants (contained, outlined, text)\n//* 2. Sizes (small, medium, large)\n//* 3. Colors (primary, secondary, success, error, warning, info, disabled)\n\nimport { Button as PaperBtn, type ButtonProps } from 'react-native-paper'\nimport { FC, memo } from 'react'\n\ntype OmitProps = 'children' | 'title'\ntype Props = Omit & {\n title: string\n}\n\nconst Button: FC = ({ title, ...props }: Props) => {\n return {title}\n}\n\nexport default memo(Button)\n","import React, { useEffect, useState, useRef, useCallback, useMemo } from 'react'\nimport { useQuery } from '@apollo/client'\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n Platform,\n Dimensions,\n} from 'react-native'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport {\n FAB,\n Switch,\n withTheme,\n ProgressBar,\n Snackbar,\n List,\n Text,\n Title,\n Subheading,\n Portal,\n ActivityIndicator,\n HelperText,\n Divider,\n IconButton,\n RadioButton,\n Paragraph,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport * as Yup from 'yup'\nimport {\n TimePickerModal,\n DatePickerModal,\n registerTranslation,\n} from 'react-native-paper-dates'\nimport { extendMoment } from 'moment-range'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport { useSafeAreaInsets } from 'react-native-safe-area-context'\nimport BusinessHoursInfoModal from './BusinessHoursInfoModal'\nimport ProductPackageDetailsModal from './ProductPackageDetailsModal'\nimport AddonsComponent from './AddonsComponent.js'\nimport Button from './components/ui/Button'\nimport { useUpdateServiceOrder } from './lib/stores/updateServiceOrder'\nimport { useUser, AUTHENTICATED } from './contexts/UserContext'\n\nregisterTranslation(i18n.locale, {\n save: i18n.t('Select'),\n selectSingle: 'Select date',\n selectMultiple: 'Select dates',\n selectRange: 'Select period',\n notAccordingToDateFormat: (inputFormat) =>\n `Date format must be ${inputFormat}`,\n mustBeHigherThan: (date) => `Must be later then ${date}`,\n mustBeLowerThan: (date) => `Must be earlier then ${date}`,\n mustBeBetween: (startDate, endDate) =>\n `Must be between ${startDate} - ${endDate}`,\n dateIsDisabled: 'Day is not allowed',\n previous: 'Previous',\n next: 'Next',\n typeInDate: 'Type in date',\n pickDateFromCalendar: 'Pick date from calendar',\n close: 'Close',\n})\n\nconst localTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone\nconst moment = extendMoment(require('moment-timezone'))\nlet now = moment.utc()\n// get the zone offsets for this time, in minutes\nlet Budapest_tz_offset = moment.tz.zone('Europe/Budapest').utcOffset(now)\nlet Local_tz_offset = moment.tz.zone(localTimezone).utcOffset(now)\nlet offsetBudapestAndLocalHours = (Budapest_tz_offset - Local_tz_offset) / 60\n\nconst isoWeekdayToDayMapping = {\n 1: 'MON',\n 2: 'TUE',\n 3: 'WED',\n 4: 'THU',\n 5: 'FRI',\n 6: 'SAT',\n 7: 'SUN',\n}\nfunction isNonEmptyStringArray(variable) {\n return (\n Array.isArray(variable) &&\n variable.length > 0 &&\n variable.every((item) => typeof item === 'string')\n )\n}\nfunction findFirstIntersection(arr1, arr2) {\n console.log(arr1)\n console.log(arr2)\n if (!(isNonEmptyStringArray(arr1) && isNonEmptyStringArray(arr2))) {\n return undefined\n }\n return arr2.find((element) => arr1.includes(element)) || undefined\n}\n\nconst isBusinessHour = (date, openingHoursArray) => {\n if (!openingHoursArray) {\n return false\n }\n const override = openingHoursArray.find((item) => {\n return (\n item.type == 'OVERRIDE' &&\n moment\n .range(\n moment.tz(item.effectiveFrom, 'Europe/Budapest'),\n moment.tz(item.effectiveUntil, 'Europe/Budapest').endOf('day')\n )\n .contains(date.tz('Europe/Budapest'))\n )\n })\n //console.log(\"override\"+override)\n if (override) {\n //console.log(override?.note)\n const weekdayOpeningHour = override.weekdayOpeningHours[0]\n if (\n !(\n weekdayOpeningHour?.weekday == 'ANY' &&\n weekdayOpeningHour?.openFromHour &&\n weekdayOpeningHour?.openUntilHour\n )\n ) {\n return false\n } else {\n const opensAt = date\n .clone()\n .tz('Europe/Budapest')\n .hours(weekdayOpeningHour.openFromHour)\n .minutes(0)\n .seconds(0)\n const closesAt = date\n .clone()\n .tz('Europe/Budapest')\n .hours(weekdayOpeningHour.openUntilHour)\n .minutes(0)\n .seconds(0)\n const openingHours = moment.range(opensAt, closesAt)\n return openingHours.contains(date.tz('Europe/Budapest'))\n }\n } else {\n const recurring = openingHoursArray.find((item) => {\n return (\n item.type == 'RECURRING' &&\n moment\n .range(\n moment.tz(item.effectiveFrom, 'Europe/Budapest'),\n moment.tz(item.effectiveUntil, 'Europe/Budapest').endOf('day')\n )\n .contains(date.tz('Europe/Budapest'))\n )\n })\n\n const recurringWeekdayOpeningHours = recurring?.weekdayOpeningHours.find(\n (item) => item.weekday == isoWeekdayToDayMapping[date.isoWeekday()]\n )\n\n if (\n !!recurringWeekdayOpeningHours?.openFromHour &&\n !!recurringWeekdayOpeningHours?.openUntilHour\n ) {\n const opensAt = date\n .clone()\n .tz('Europe/Budapest')\n .hours(recurringWeekdayOpeningHours.openFromHour)\n .minutes(0)\n .seconds(0)\n const closesAt = date\n .clone()\n .tz('Europe/Budapest')\n .hours(recurringWeekdayOpeningHours.openUntilHour)\n .minutes(0)\n .seconds(0)\n const openingHours = moment.range(opensAt, closesAt)\n return openingHours.contains(date.tz('Europe/Budapest'))\n } else {\n return false\n }\n }\n}\n\nconst getEarliestBusinessHour = (dateFrom, openingHoursArray) => {\n const searchRange = moment.range(\n dateFrom.clone().set('minute', 0),\n dateFrom.clone().set('minute', 0).add(7, 'days')\n )\n const earliestBusinessHour = Array.from(\n searchRange.by('hour', { excludeEnd: true })\n ).find((item) => !!isBusinessHour(item, openingHoursArray) && item > moment())\n if (earliestBusinessHour) {\n return earliestBusinessHour\n } else {\n return dateFrom\n }\n}\n\nconst getDisabledDatesArray = (openingHoursArray) => {\n if (openingHoursArray) {\n const disabledItems = openingHoursArray.filter(\n (item) =>\n item.type == 'OVERRIDE' &&\n (item.openFromHour == null || item.openUntilHour == null)\n )\n //console.log(\"disabledItems\"+JSON.stringify(disabledItems))\n const disabledDatesArray = disabledItems.reduce((prev, curr) => {\n //console.log(\"curr.effectiveFrom\"+moment.tz(curr.effectiveFrom, \"Europe/Budapest\").toDate())\n const range = moment.range(\n moment.tz(curr.effectiveFrom, 'Europe/Budapest'),\n moment.tz(curr.effectiveUntil, 'Europe/Budapest').clone().add(1, 'day')\n )\n //console.log(\"range\"+Array.from(range.by('day', { excludeEnd: true })).map(item=>item.toDate()))\n if (\n curr?.weekdayOpeningHours?.[0]?.weekday == 'ANY' &&\n curr?.weekdayOpeningHours?.[0]?.openFromHour &&\n curr?.weekdayOpeningHours?.[0]?.openUntilHour\n ) {\n return prev\n } else {\n return [\n ...prev,\n ...Array.from(range.by('day', { excludeEnd: true })).map((item) =>\n item.toDate()\n ),\n ]\n }\n }, [])\n //console.log(\"disabledDatesArray\"+JSON.stringify(disabledDatesArray))\n return disabledDatesArray\n } else {\n return []\n }\n}\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_CARS_BY_OWNER = gql(Utils.listCarsByOwner)\nconst GET_TIMESLOTS = gql(queries.getTimeslots)\nconst GET_DISCOUNT = gql(queries.getDiscount)\nconst LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED = gql(\n queries.listOpeningHoursByCountryEffectiveFromUntilEncoded\n)\n\nconst LIST_OFFERINGS_ADVANCED = gql(`\n query ListOfferingsAdvancedV2($listOfferingParams: ListOfferingsParamsInputV2!) {\n listOfferingsAdvancedV2(listOfferingParams: $listOfferingParams) {\n items {\n carTypeCategoryID\n areaNames\n product {\n productCategory {\n name\n id\n }\n productPackage {\n name\n id\n }\n taskTypes {\n nextToken\n items {\n isIncluded\n taskType {\n id\n name\n note\n }\n taskTypeID\n id\n }\n }\n id\n }\n price\n priceCurrency\n durationTarget\n franchiseContracts {\n items {\n franchiseContract {\n minOrderLeadTimeHours\n areaNames\n validUntil\n validFrom\n id\n }\n }\n }\n addonOptions {\n addons {\n items {\n price\n minUnit\n maxUnit\n groupID\n exclusiveGroupID\n visibility\n batchOrderOneOff\n taskType {\n id\n name\n note\n tasks {\n items {\n id\n carTypeCategoryID\n taskTypeID\n durationTarget\n cleenerBonusAmount\n cleenerBonusCurrency\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n id\n priceCurrency\n priceType\n }\n }\n id\n }\n id\n }\n }\n }\n`)\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nconst DateTimePicker = ({\n labelDate,\n labelTime,\n date,\n setDate,\n isDateVisible,\n isTimeVisible,\n setIsDateVisible,\n setIsTimeVisible,\n listOpeningHoursData,\n ...props\n}) => {\n const onDismissDate = React.useCallback(() => {\n setIsDateVisible(false)\n }, [setIsDateVisible])\n\n const onChangeDate = React.useCallback(\n ({ date: selectedDate }) => {\n let selectedDateMoment = moment(selectedDate).add(\n offsetBudapestAndLocalHours,\n 'hours'\n )\n let dateNewMoment = moment(date).set({\n year: selectedDateMoment.get('year'),\n month: selectedDateMoment.get('month'),\n date: selectedDateMoment.get('date'),\n })\n setIsDateVisible(false)\n setDate(dateNewMoment.toDate())\n },\n [setIsDateVisible, setDate, date]\n )\n\n const onDismissTime = React.useCallback(() => {\n setIsTimeVisible(false)\n }, [setIsTimeVisible])\n\n const onChangeTime = React.useCallback(\n ({ hours, minutes }) => {\n let timeNewMoment = moment(date).set({ hour: hours, minute: minutes })\n setIsTimeVisible(false)\n setDate(timeNewMoment.toDate())\n },\n [setIsTimeVisible, setDate, date]\n )\n\n return (\n <>\n {isDateVisible && (\n \n moment(item)\n .clone()\n .add(-offsetBudapestAndLocalHours, 'hour')\n .toDate()\n ),\n }}\n />\n )}\n\n {isTimeVisible && (\n \n )}\n \n )\n}\n\n/* -------------------------------- Component ------------------------------- */\nconst today = moment()\nconst SelectServiceComponent = ({ route, theme, navigation, ...props }) => {\n const updateServiceOrderInput = useUpdateServiceOrder(\n (state) => state.updateServiceOrderInput\n )\n\n const location = route.params?.location || {}\n const serviceFacilityID = route.params?.serviceFacilityID || null\n const isTimeslotMode = !!serviceFacilityID\n const productCategorySelectionInit =\n route.params?.productCategorySelection?.name || ''\n const productPackageSelectionInit =\n route.params?.productPackageSelection?.name || ''\n const isCarIndoorsInit =\n route.params?.isCarIndoors == null ? false : route.params?.isCarIndoors\n const mandatoryTaskTypeIDs = route.params?.mandatoryTaskTypeIDs || []\n const isUpdateMode =\n route.params?.isUpdateMode == null ? false : route.params?.isUpdateMode\n const username = route.params?.username || null\n const {\n state: { user, authStatus },\n } = useUser();\n const providerSelectedCustomer = route.params?.providerSelectedCustomer\n const orderUser = providerSelectedCustomer ? providerSelectedCustomer : user\n const rangeInit =\n isUpdateMode &&\n route.params?.carAvailableFrom &&\n route.params?.carAvailableUntil\n ? {\n startDate: moment(route.params?.carAvailableFrom).toDate(),\n endDate: moment(route.params?.carAvailableUntil).toDate(),\n }\n : null\n const addonsInit = route.params?.addons || {}\n const offeringIdInit = route.params?.offeringId || null\n const carDirtyFlagInit = route.params?.isExtraDirty || false\n const [addons, setAddons] = useState(addonsInit)\n const [snackBarMessage, setSnackBarMessage] = useState()\n\n const [isModalVisible, setModalVisible] = useState(false)\n const [isBusinessHoursInfoModalVisible, setBusinessHoursInfoModalVisible] =\n useState(false)\n\n const [showScrollToBottomButton, setScrollToBottomButton] =\n React.useState(false)\n const [lastScrollEvent, setLastScrollEvent] = React.useState()\n\n const [isCarIndoors, setIsCarIndoors] = React.useState(isCarIndoorsInit)\n const onToggleIsCarIndoors = () => setIsCarIndoors(!isCarIndoors)\n\n const [isCarExtraDirty, setIsCarExtraDirty] = React.useState(carDirtyFlagInit)\n const onToggleIsCarExtraDirty = () => setIsCarExtraDirty(!isCarExtraDirty)\n\n const [carManualSelection, setCarManualSelection] = React.useState(undefined)\n\n const [visibleStartDate, setVisibleStartDate] = React.useState(false)\n const [visibleStartTime, setVisibleStartTime] = React.useState(false)\n\n const [visibleEndDate, setVisibleEndDate] = React.useState(false)\n const [visibleEndTime, setVisibleEndTime] = React.useState(false)\n\n const formRef = useRef()\n\n const fetchUser = useCallback(async () => {\n if (!!providerSelectedCustomer) {\n navigation.setOptions({\n title: `${i18n.t('Select Service')} ${i18n\n .t('on behalf of')\n .replace('', providerSelectedCustomer?.attributes?.email)}`,\n })\n }\n }, [providerSelectedCustomer])\n\n useEffect(() => {\n fetchUser()\n\n if (isUpdateMode) {\n navigation.setOptions({ title: i18n.t('Edit Order') })\n }\n }, [])\n\n useEffect(() => {\n if (route.params?.car) {\n setCarManualSelection(\n Array.isArray(route.params.car) ? route.params.car : [route.params.car]\n )\n if (formRef.current) {\n formRef.current.setFieldValue(\n 'carManualSelection',\n Array.isArray(route.params.car)\n ? route.params.car\n : [route.params.car]\n )\n }\n }\n }, [route.params?.car])\n\n useEffect(() => {\n if (\n formRef.current &&\n route.params?.range?.startDate &&\n route.params?.range?.endDate\n ) {\n formRef.current.setFieldValue('range', {\n startDate: moment(route.params.range.startDate).toDate(),\n endDate: moment(route.params.range.endDate).toDate(),\n })\n }\n }, [route.params?.range])\n\n const {\n data: listCarsByOwnerData,\n error: queryErrorListCars,\n loading: queryLoadingListCars,\n } = useQuery(LIST_CARS_BY_OWNER, {\n variables: {\n owner: username || orderUser?.username,\n sortDirection: 'DESC',\n limit: 1000,\n filter: { isActive: { eq: true } },\n },\n fetchPolicy: 'cache-and-network',\n skip: (!username && !orderUser?.username) || isUpdateMode,\n })\n\n const {\n data: getDiscountData,\n error: queryErrorGetDiscount,\n loading: queryLoadingGetDiscount,\n } = useQuery(GET_DISCOUNT, {\n variables: {\n username: username,\n },\n fetchPolicy: 'cache-and-network',\n skip: !username && !orderUser?.username,\n })\n\n const {\n data: listOfferingsAdvancedDataRaw,\n error: queryErrorListOfferings,\n loading: queryLoadingListOfferings,\n } = useQuery(LIST_OFFERINGS_ADVANCED, {\n variables: {\n listOfferingParams: {\n areaName: location?.address?.city,\n isoCountryCode: location?.address?.isoCountryCode,\n postalCode: location?.address?.postalCode,\n ...(serviceFacilityID && { serviceFacilityID: serviceFacilityID }),\n carTypeCategoryIDs: carManualSelection?.map(\n (car) => car?.carType?.carTypeCategoryID\n ),\n validDate: today.format('YYYY-MM-DD'),\n username: username,\n },\n },\n fetchPolicy: 'cache-and-network',\n skip:\n !carManualSelection ||\n carManualSelection?.length < 1 ||\n !location?.address?.city,\n })\n\n const listOfferingsAdvancedData =\n listOfferingsAdvancedDataRaw?.listOfferingsAdvancedV2\n\n const {\n data: listOpeningHoursDataAll,\n error: queryErrorListOpeningHours,\n loading: queryLoadingListOpeningHours,\n } = useQuery(LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED, {\n variables: {\n limit: 2000,\n isoCountryCode: location?.address?.isoCountryCode,\n effectiveFromUntilEncoded: {\n between: Utils.getOpeningHoursZOrderRange(\n today.clone().startOf('day').toDate(),\n today.clone().add(4, 'weeks').toDate()\n ),\n },\n filter: {\n and: {\n effectiveFrom: {\n le: today.clone().add(4, 'weeks').format('YYYY-MM-DD'),\n },\n effectiveUntil: {\n ge: today.clone().startOf('day').format('YYYY-MM-DD'),\n },\n ...(serviceFacilityID && {\n serviceFacilityIDs: { contains: serviceFacilityID },\n }),\n ...(!serviceFacilityID && {\n or: [\n { areaNames: { contains: location?.address?.city } },\n { areaNames: { contains: location?.address?.isoCountryCode } },\n { areaNames: { contains: location?.address?.isoCountryCode + '-' + location?.address?.postalCode } },\n { areaNames: { contains: location?.address?.isoCountryCode + '-' + location?.address?.postalCode.slice(0, 2) } },\n ],\n }),\n isActive: {\n eq: true,\n },\n },\n },\n },\n fetchPolicy: 'cache-and-network',\n })\n const listOpeningHoursData = useMemo(() => {\n if (!serviceFacilityID && listOpeningHoursDataAll?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items.length > 0) {\n try {\n const openingHoursAreaNames = listOpeningHoursDataAll.listOpeningHoursByCountryEffectiveFromUntilEncoded.items.reduce((prev, curr) => {\n return [...prev, ...curr.areaNames]\n }, [])\n const openingHoursAreaNameIntersection = findFirstIntersection(\n openingHoursAreaNames,\n [location?.address?.isoCountryCode + '-' + location?.address?.postalCode, location?.address?.city, location?.address?.isoCountryCode + '-' + location?.address?.postalCode.slice(0, 2), location?.address?.isoCountryCode]\n )\n const filteredData = {\n listOpeningHoursByCountryEffectiveFromUntilEncoded: {\n ...listOpeningHoursDataAll.listOpeningHoursByCountryEffectiveFromUntilEncoded,\n items: listOpeningHoursDataAll.listOpeningHoursByCountryEffectiveFromUntilEncoded.items.filter(item => item.areaNames.includes(openingHoursAreaNameIntersection))\n }\n }\n return filteredData\n } catch (error) {\n console.log('Error filtering opening hours by area name', error)\n }\n }\n return listOpeningHoursDataAll\n }, [listOpeningHoursDataAll, serviceFacilityID, location])\n\n Yup.addMethod(Yup.date, 'methodName', function (params) {\n const { message } = params\n\n return this.test('test-name', message, function (value) {\n const { startDate } = params\n const endDate = value\n\n const range = moment.range(moment(startDate), endDate)\n\n let openMinutesCount = Array.from(\n range.by('minute', { excludeEnd: true })\n ).reduce(\n (accumulator, currentValue) =>\n accumulator +\n (isBusinessHour(\n currentValue,\n listOpeningHoursData\n ?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items\n )\n ? 1\n : 0),\n 0\n )\n\n return openMinutesCount >= 2 * 60\n })\n })\n\n const [minOrderLeadTimeHours, setMinOrderLeadTimeHours] = useState(route.params?.minOrderLeadTimeHoursPrediction || 2)\n useEffect(() => {\n if (formRef.current) {\n formRef.current.validateForm()\n }\n }, [minOrderLeadTimeHours])\n\n const SelectServiceComponentSchema = Yup.object().shape({\n ...(Utils.isCustomerApp() &&\n !isTimeslotMode && {\n range: Yup.object().shape({\n startDate: Yup.date().min(moment().add(minOrderLeadTimeHours, 'hours').toDate(), () =>\n i18n.t('Please choose a start date at least hours from now').replace('', minOrderLeadTimeHours)\n ),\n endDate: Yup.date().when('startDate', (startDate, schema) =>\n schema\n .min(\n moment(startDate)\n .add(\n 1 + Math.max(0, (carManualSelection?.length || 0) - 1),\n 'hours'\n )\n .toDate(),\n i18n.t('Please choose a wider interval')\n )\n .methodName({\n startDate: startDate,\n message: () => i18n.t('Please choose a wider interval'),\n })\n ),\n }),\n }),\n ...(isTimeslotMode && {\n range: Yup.object().shape({\n startDate: Yup.date().typeError(() => i18n.t('Please change location')),\n endDate: Yup.date(),\n }),\n }),\n carManualSelection: Yup.array()\n .min(1, () => i18n.t('Required'))\n .required(() => i18n.t('Required')),\n productPackageSelection: Yup.string().required(() => i18n.t('Required')),\n productCategorySelection: Yup.string().required(() => i18n.t('Required')),\n location: Yup.object()\n .shape({\n address: Utils.locationAddressSchema,\n coordinates: Utils.locationCoordinatesSchema,\n })\n .required(() => i18n.t('Required')),\n })\n\n useEffect(() => {\n if (\n queryErrorListCars ||\n queryErrorListOfferings ||\n queryErrorGetDiscount ||\n queryErrorListOpeningHours\n ) {\n console.log(\n 'E R R O R: ',\n queryErrorListCars,\n queryErrorListOfferings,\n queryErrorGetDiscount,\n queryErrorListOpeningHours\n )\n }\n }, [\n queryErrorListCars,\n queryErrorListOfferings,\n queryErrorGetDiscount,\n queryErrorListOpeningHours,\n ])\n\n useEffect(() => {\n // alert(JSON.stringify(listCarsByOwnerData))\n if (listCarsByOwnerData?.listCarsByOwner?.items.length > 0 && !route.params?.car) {\n let defaultCar = listCarsByOwnerData?.listCarsByOwner?.items.find(\n (item) => item.isActive\n )\n setCarManualSelection([defaultCar])\n if (formRef.current) {\n formRef.current.setFieldValue('carManualSelection', [defaultCar])\n }\n }\n }, [listCarsByOwnerData])\n\n useEffect(() => {\n // alert(JSON.stringify(listCarsByOwnerData))\n if (\n !rangeInit &&\n !isTimeslotMode &&\n listOpeningHoursData?.listOpeningHoursByCountryEffectiveFromUntilEncoded\n ?.items.length > 0\n ) {\n if (formRef.current) {\n const startDate = getEarliestBusinessHour(\n moment().add(minOrderLeadTimeHours+1, 'hours'),\n listOpeningHoursData\n ?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items\n )\n let endDate = startDate.clone()\n let businessHoursCount = 0\n let hoursCounter = 0\n do {\n endDate = endDate.add(1, 'hour')\n hoursCounter = hoursCounter + 1\n if (\n isBusinessHour(\n endDate,\n listOpeningHoursData\n ?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items\n )\n ) {\n businessHoursCount = businessHoursCount + 1\n }\n } while (\n businessHoursCount <\n 3 + Math.max(0, (carManualSelection?.length || 0) - 1) &&\n hoursCounter < 40\n )\n\n formRef.current.setFieldValue('range', {\n startDate: startDate.toDate(),\n endDate: endDate.toDate(),\n })\n }\n }\n }, [listOpeningHoursData])\n\n useEffect(() => {\n // alert(JSON.stringify(listCarsByOwnerData))\n if (\n !rangeInit &&\n !isTimeslotMode &&\n listOpeningHoursData?.listOpeningHoursByCountryEffectiveFromUntilEncoded\n ?.items.length > 0\n ) {\n if (formRef.current) {\n const startDate = formRef?.current?.values?.range?.startDate ? moment(formRef?.current?.values?.range?.startDate) : getEarliestBusinessHour(\n moment().add(minOrderLeadTimeHours+1, 'hours'),\n listOpeningHoursData\n ?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items\n )\n let endDate = startDate.clone()\n let businessHoursCount = 0\n let hoursCounter = 0\n do {\n endDate = endDate.add(1, 'hour')\n hoursCounter = hoursCounter + 1\n if (\n isBusinessHour(\n endDate,\n listOpeningHoursData\n ?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items\n )\n ) {\n businessHoursCount = businessHoursCount + 1\n }\n } while (\n businessHoursCount <\n 3 + Math.max(0, (carManualSelection?.length || 0) - 1) &&\n hoursCounter < 40\n )\n const originalEndDate = formRef?.current?.values?.range?.endDate ? moment(formRef?.current?.values?.range?.endDate) : endDate\n const maxOfOriginalEndDateAndEndDate = moment.max(originalEndDate, endDate)\n formRef.current.setFieldValue('range', {\n startDate: startDate.toDate(),\n endDate: maxOfOriginalEndDateAndEndDate.toDate(),\n })\n }\n }\n }, [carManualSelection?.length])\n const insets = useSafeAreaInsets()\n\n const scrollViewRef = useRef()\n const isCloseToBottom = ({\n layoutMeasurement,\n contentOffset,\n contentSize,\n }) => {\n const paddingToBottom = 20\n //alert((layoutMeasurement.height + contentOffset.y) + \" vs \" +(contentSize.height - paddingToBottom))\n return (\n layoutMeasurement.height + contentOffset.y >=\n contentSize.height - paddingToBottom\n )\n }\n\n const enableScrollToBottomButton = (scrollEvent) => {\n if (scrollEvent && !isCloseToBottom(scrollEvent)) {\n setScrollToBottomButton(true)\n }\n }\n const discountPercentage =\n getDiscountData?.getDiscount?.discountPercentage || 0\n return (\n {\n const offeringSelected = listOfferingsAdvancedData.items.find(\n (item) =>\n item.product?.productPackage?.name ==\n values.productPackageSelection &&\n item.product?.productCategory?.name ==\n values.productCategorySelection\n )\n if (!offeringSelected) {\n console.error('Invalid offering')\n return\n }\n\n\n const areaNameIntersection = findFirstIntersection(\n offeringSelected.areaNames,\n [location?.address?.isoCountryCode + '-' + location?.address?.postalCode, location?.address?.city, location?.address?.isoCountryCode + '-' + location?.address?.postalCode.slice(0, 2), location?.address?.isoCountryCode]\n )\n console.log('areaNameIntersection', areaNameIntersection)\n if (!isUpdateMode) {\n const offerings = carManualSelection?.map(\n (car) =>\n listOfferingsAdvancedData?.items?.find(\n (item) =>\n item.carTypeCategoryID == car?.carType?.carTypeCategoryID &&\n item.product?.productPackage?.name ==\n values.productPackageSelection &&\n item.product?.productCategory?.name ==\n values.productCategorySelection\n ) || null\n )\n navigation.navigate('Select Payment', {\n cars: carManualSelection,\n offerings: offerings,\n providerSelectedCustomer: providerSelectedCustomer,\n newServiceOrder: {\n carAvailableFrom: moment(values.range.startDate).toISOString(),\n carAvailableUntil: moment(values.range.endDate).toISOString(),\n carLocation: { ...location },\n serviceFacilityID: serviceFacilityID,\n isExtraDirty: isCarExtraDirty,\n isCarIndoors: isCarIndoors,\n offeringIDs: offerings.map((offering) => offering?.id),\n carIDs: carManualSelection?.map((car) => car.id) ?? [],\n areaName: serviceFacilityID ? undefined : areaNameIntersection,\n addons: Object.entries(addons)\n .filter((item) => item[1] > 0)\n .map((item) => {\n return { addonID: item[0], quantity: item[1] }\n }),\n discountPercentage: discountPercentage,\n },\n })\n } else {\n updateServiceOrderInput({\n carAvailableFrom: moment(values.range.startDate).toISOString(),\n carAvailableUntil: moment(values.range.endDate).toISOString(),\n carLocation: { ...location },\n serviceFacilityID,\n isExtraDirty: isCarExtraDirty,\n isCarIndoors,\n offeringID: offeringSelected.id,\n carID: carManualSelection?.id,\n areaName: !!serviceFacilityID ? undefined : areaNameIntersection,\n addons: Object.entries(addons)\n .filter((item) => item[1] > 0)\n .map((item) => {\n return { addonID: item[0], quantity: item[1] }\n }),\n discountPercentage,\n photos: [],\n })\n navigation.navigate('Order', {\n editedServiceOrder: true,\n })\n }\n }}\n innerRef={formRef}\n validationSchema={SelectServiceComponentSchema}\n >\n {({\n setFieldValue,\n setFieldTouched,\n handleSubmit,\n values,\n errors,\n touched,\n isValid,\n }) => {\n const offeringSelected =\n listOfferingsAdvancedData?.items?.find(\n (item) =>\n item.carTypeCategoryID ==\n carManualSelection?.[0]?.carType?.carTypeCategoryID &&\n item.product?.productPackage?.name ==\n values.productPackageSelection &&\n item.product?.productCategory?.name ==\n values.productCategorySelection\n ) || null\n\n const {\n data: getTimeslotsData,\n error: queryErrorGetTimeslots,\n loading: queryLoadingGetTimeslots,\n } = useQuery(GET_TIMESLOTS, {\n variables: {\n timeslotRequirements: {\n serviceFacilityID: serviceFacilityID,\n isoCountryCode: location?.address?.isoCountryCode,\n durationTarget:\n carManualSelection?.length *\n Utils.calculateTargetTime(\n carManualSelection?.[0]?.carType?.carTypeCategoryID,\n offeringSelected,\n Object.entries(addons)\n .filter((item) => item[1] > 0)\n .map((item) => {\n return { addonID: item[0], quantity: item[1] }\n })\n ).totalTime,\n },\n },\n skip: !isTimeslotMode || !offeringSelected,\n fetchPolicy: 'cache-and-network',\n })\n\n //console.log(\"durationTarget\",Utils.calculateTargetTime(carManualSelection?.carType?.carTypeCategoryID, offeringSelected, Object.entries(addons).filter(item => item[1] > 0).map(item => { return { addonID: item[0], quantity: item[1] } })).totalTime)\n useEffect(() => {\n queryErrorGetTimeslots &&\n console.log('E R R O R: ', queryErrorGetTimeslots)\n }, [queryErrorGetTimeslots])\n\n const isQueryLoading =\n queryLoadingListCars ||\n queryLoadingGetDiscount ||\n queryLoadingListOfferings ||\n queryLoadingListOpeningHours ||\n queryLoadingGetTimeslots\n\n useEffect(() => {\n if(isQueryLoading == false) {\n formRef.current?.validateForm()\n }\n }, [isQueryLoading])\n useEffect(() => {\n if (queryLoadingGetTimeslots || queryErrorGetTimeslots) {\n return\n }\n if (!rangeInit) {\n if (getTimeslotsData?.getTimeslots?.timeSlots?.length > 0) {\n if (formRef.current) {\n formRef.current.setFieldValue('range', {\n startDate: moment(\n getTimeslotsData?.getTimeslots?.timeSlots[0].from\n ).toDate(),\n endDate: moment(\n getTimeslotsData?.getTimeslots?.timeSlots[0].until\n ).toDate(),\n })\n console.log('reset range')\n }\n } else if (getTimeslotsData?.getTimeslots?.timeSlots?.length == 0) {\n if (formRef.current) {\n formRef.current.setFieldValue('range', {\n startDate: null,\n endDate: null,\n })\n console.log('no free slots')\n }\n }\n }\n }, [getTimeslotsData])\n\n useEffect(() => {\n if (offeringSelected?.addonOptions?.addons?.items) {\n setAddons(\n offeringSelected?.addonOptions?.addons?.items.reduce(\n (prev, curr) => {\n return {\n ...prev,\n [curr.id]: addons?.[curr.id]\n ? addons?.[curr.id]\n : mandatoryTaskTypeIDs.includes(curr?.taskType?.id)\n ? 1\n : 0,\n }\n },\n {}\n )\n )\n }\n const areaNameIntersection = findFirstIntersection(\n offeringSelected?.areaNames,\n [location?.address?.isoCountryCode + '-' + location?.address?.postalCode, location?.address?.city, location?.address?.isoCountryCode + '-' + location?.address?.postalCode.slice(0, 2), location?.address?.isoCountryCode]\n )\n\n const minOrderLeadTimeHours = offeringSelected?.franchiseContracts?.items?.find(item => item.franchiseContract?.areaNames.includes(areaNameIntersection) && item.franchiseContract.validFrom <= moment().format('YYYY-MM-DD') && item.franchiseContract.validUntil >= moment().format('YYYY-MM-DD'))?.franchiseContract?.minOrderLeadTimeHours\n if (minOrderLeadTimeHours !== undefined) {\n setMinOrderLeadTimeHours(minOrderLeadTimeHours)\n }\n\n }, [offeringSelected])\n\n useEffect(() => {\n if (listOfferingsAdvancedData?.items) {\n if (\n offeringIdInit &&\n !listOfferingsAdvancedData?.items?.find(\n (item) => item.id == offeringIdInit\n )\n ) {\n setSnackBarMessage(i18n.t('Offering no longer available'))\n }\n }\n }, [listOfferingsAdvancedData])\n\n const isSpecialDaysWithinInterval =\n listOpeningHoursData?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items.find(\n (item) => {\n return (\n item.type == 'OVERRIDE' &&\n moment.tz(item.effectiveUntil, 'Europe/Budapest') >=\n moment.tz(values.range.startDate, 'Europe/Budapest') &&\n moment.tz(item.effectiveFrom, 'Europe/Budapest') <=\n moment.tz(values.range.endDate, 'Europe/Budapest')\n )\n }\n )\n\n const multiSelectEnabledOnCarSelect =\n listCarsByOwnerData?.listCarsByOwner?.items?.length > 1 || false\n return (\n <>\n \n setSnackBarMessage(null)}\n action={{\n label: i18n.t('Ok'),\n onPress: () => setSnackBarMessage(null),\n }}\n >\n {snackBarMessage}\n \n \n {isQueryLoading && (\n \n \n \n )}\n \n\n {isModalVisible && (\n \n item?.product?.productCategory?.name ==\n values?.productCategorySelection\n ) ?? []),\n ].sort((a, b) => a.price > b.price ? 1 : -1)}\n visible={isModalVisible}\n close={() => setModalVisible(false)}\n />\n )}\n {\n if (lastScrollEvent) {\n setLastScrollEvent({\n ...lastScrollEvent,\n contentSize: { height: contentHeight, width: contentWidth },\n })\n enableScrollToBottomButton({\n ...lastScrollEvent,\n contentSize: { height: contentHeight, width: contentWidth },\n })\n }\n }}\n onScroll={({ nativeEvent }) => {\n setLastScrollEvent(nativeEvent)\n if (isCloseToBottom(nativeEvent)) {\n setScrollToBottomButton(false)\n }\n }}\n scrollEventThrottle={1000}\n >\n \n {/* {JSON.stringify(carManualSelection)} */}\n {\n const startDateValid = moment\n .max(moment(value), moment())\n .toDate()\n const endDateMinValid = getEarliestBusinessHour(\n moment(startDateValid).add(minOrderLeadTimeHours, 'hours'),\n listOpeningHoursData\n ?.listOpeningHoursByCountryEffectiveFromUntilEncoded\n ?.items\n )\n .add(3, 'hours')\n .toDate()\n const range = { ...values.range }\n if (\n moment(endDateMinValid) > moment(values.range.endDate)\n ) {\n range.endDate = endDateMinValid\n }\n range.startDate = startDateValid\n setFieldValue('range', range)\n }}\n isDateVisible={visibleStartDate}\n isTimeVisible={visibleStartTime}\n setIsDateVisible={setVisibleStartDate}\n setIsTimeVisible={setVisibleStartTime}\n listOpeningHoursData={listOpeningHoursData}\n />\n {\n setFieldValue(\n 'range.endDate',\n moment\n .max(moment(value), moment(values.range.startDate))\n .toDate()\n )\n }}\n isDateVisible={visibleEndDate}\n isTimeVisible={visibleEndTime}\n setIsDateVisible={setVisibleEndDate}\n setIsTimeVisible={setVisibleEndTime}\n listOpeningHoursData={listOpeningHoursData}\n />\n {/* {JSON.stringify(values)} */}\n {!isTimeslotMode && (\n \n \n \n {i18n.t('Car availability')}\n \n (\n \n )}\n iconColor={theme.colors.primary}\n size={20}\n onPress={() => setBusinessHoursInfoModalVisible(true)}\n />\n \n \n setVisibleStartDate(true)}\n title={moment(values.range.startDate).format('L')}\n />\n setVisibleStartTime(true)}\n title={moment(values.range.startDate).format('LT')}\n />\n \n }\n left={(props) => (\n (\n \n )}\n />\n )}\n />\n \n setVisibleEndDate(true)}\n title={moment(values.range.endDate).format('L')}\n />\n\n setVisibleEndTime(true)}\n title={moment(values.range.endDate).format('LT')}\n />\n \n }\n left={(props) => (\n (\n \n )}\n />\n )}\n />\n \n {!!errors?.range?.startDate &&\n `${errors?.range?.startDate}. `}\n {!!errors?.range?.endDate &&\n `${errors?.range?.endDate}. `}\n {isSpecialDaysWithinInterval &&\n `⚠️ ${i18n.t('Special opening hours')}`}\n \n \n )}\n \n {/* {JSON.stringify(Utils.getOpeningHoursZOrderRange(formRef?.current?.values?.range?.startDate,formRef?.current?.values?.range?.endDate))} */}\n {/* {JSON.stringify(listOpeningHoursData?.listOpeningHoursByCountryEffectiveFromUntilEncoded?.items)} */}\n \n {carManualSelection?.length > 0 ? (\n \n {carManualSelection?.length == 1 ? (\n (\n (\n \n )}\n />\n )}\n right={(props) =>\n isUpdateMode ? null : (\n (\n \n )}\n />\n )\n }\n onPress={\n isUpdateMode\n ? () => {}\n : () =>\n navigation.navigate('Cars', {\n providerSelectedCustomer:\n providerSelectedCustomer || undefined,\n carsPreselection: carManualSelection,\n multiSelectEnabledOnCarSelect:\n multiSelectEnabledOnCarSelect,\n navigationTargetOnCarSelect:\n 'Select Service',\n })\n }\n />\n ) : (\n car.plate)\n .join(', ')}\n left={(props) => (\n (\n \n )}\n />\n )}\n right={(props) =>\n isUpdateMode ? null : (\n (\n \n )}\n />\n )\n }\n onPress={\n isUpdateMode\n ? () => {}\n : () =>\n navigation.navigate('Cars', {\n carsPreselection: carManualSelection,\n multiSelectEnabledOnCarSelect:\n multiSelectEnabledOnCarSelect,\n navigationTargetOnCarSelect:\n 'Select Service',\n })\n }\n />\n )}\n\n {!serviceFacilityID && (\n \n {i18n.t('Parking indoor')}\n \n \n )}\n\n \n {i18n.t('Extra dirty')}\n \n \n {isCarExtraDirty && (\n \n {Utils.isCustomerApp()\n ? i18n.t('Extra Dirty Message Customer')\n : i18n.t('Extra Dirty Message Provider')}\n \n )}\n \n ) : (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Cars', {\n navigationTargetOnCarSelect: 'Select Service',\n })\n }\n />\n )}\n \n {`${errors.carManualSelection}`}\n \n \n \n\n {!!listOfferingsAdvancedData?.items?.length && (\n \n \n {i18n.t('Category')}\n {\n setFieldValue('productCategorySelection', value)\n setScrollToBottomButton(true)\n }}\n value={values.productCategorySelection}\n >\n {[\n ...new Set(\n listOfferingsAdvancedData.items\n .filter(\n (item) =>\n item.carTypeCategoryID ==\n carManualSelection?.[0]?.carType\n ?.carTypeCategoryID &&\n item.product?.productCategory?.name\n )\n .map(\n (item) => item.product?.productCategory?.name\n )\n ),\n ]\n .sort()\n .map((item, index) => (\n \n setFieldTouched(\n 'productCategorySelection',\n true\n )\n }\n />\n ))}\n \n \n {`${errors.productCategorySelection}`}\n \n \n\n \n\n {!!values?.productCategorySelection && (\n \n \n {i18n.t('Package')}\n (\n \n )}\n iconColor={theme.colors.primary}\n size={20}\n onPress={() => setModalVisible(true)}\n />\n \n\n {\n setFieldValue('productPackageSelection', value)\n enableScrollToBottomButton(lastScrollEvent)\n }}\n value={values.productPackageSelection}\n >\n {[\n ...new Set(\n listOfferingsAdvancedData.items\n .filter(\n (item) =>\n item.carTypeCategoryID ==\n carManualSelection?.[0]?.carType\n ?.carTypeCategoryID &&\n item.product?.productCategory?.name ==\n values.productCategorySelection\n )\n .filter(\n (item) => item.product?.productPackage?.name\n )\n .map((item) => [\n item.product?.productPackage?.name,\n item.price,\n ])\n ),\n ]\n .sort((a, b) => a[1] >= b[1] ? 1 : -1)\n .map((item) => item[0])\n .map((item, index) => (\n {\n setFieldTouched(\n 'productPackageSelection',\n true\n )\n setScrollToBottomButton(true)\n }}\n />\n ))}\n \n \n {`${errors.productPackageSelection}`}\n \n\n {offeringSelected?.addonOptions?.addons?.items &&\n offeringSelected?.addonOptions?.addons?.items.length >\n 0 && (\n \n \n {/* {JSON.stringify(offeringSelected.product.taskTypes.items.filter(item=>item.isIncluded==true).map(item=>item.taskTypeID))} */}\n \n {i18n.t('Additional Services')}\n \n \n \n )}\n\n {isTimeslotMode && offeringSelected && (\n \n \n\n \n \n {i18n.t('Time slot')}\n \n (\n \n )}\n iconColor={theme.colors.primary}\n size={20}\n onPress={() =>\n setBusinessHoursInfoModalVisible(true)\n }\n />\n \n 0\n ? `${moment(values.range.startDate).format(\n 'LLL'\n )} - ${moment(values.range.endDate).format(\n 'LT'\n )}`\n : i18n.t('No Free Slots')\n }\n left={(props) => (\n (\n \n )}\n />\n )}\n right={(props) => (\n \n queryLoadingGetTimeslots ? (\n \n ) : getTimeslotsData?.getTimeslots\n ?.timeSlots?.length > 0 ? (\n \n ) : null\n }\n />\n )}\n onPress={() => {\n if (\n !queryLoadingGetTimeslots &&\n getTimeslotsData?.getTimeslots?.timeSlots\n ?.length > 0\n ) {\n navigation.navigate('Timeslot Picker', {\n getTimeslotsData: getTimeslotsData,\n })\n }\n }}\n />\n \n {!!errors?.range?.startDate &&\n `${errors?.range?.startDate}. `}\n \n \n )}\n \n )}\n \n )}\n \n \n\n {values?.carManualSelection?.length > 0 && (\n \n \n {!!listOfferingsAdvancedData?.items?.length ? (\n \n {/* {JSON.stringify(addons )} */}\n \n {!!values?.productPackageSelection &&\n !!values?.productCategorySelection ? (\n \n {`${Utils.getPriceAndCurrencyString(\n listOfferingsAdvancedData,\n values,\n addons\n )}`}\n \n ) : (\n \n {Utils.formatCurrency(\n 0,\n listOfferingsAdvancedData?.items[0]?.priceCurrency\n )}\n \n )}\n \n \n \n \n \n ) : isQueryLoading ? (\n \n \n \n ) : (\n \n \n {i18n.t(\n 'Sorry, no service available for your car at the selected time'\n )}\n \n \n )}\n \n \n )}\n \n {Platform.OS != 'web' && (\n {\n scrollViewRef.current.scrollToEnd({ animated: true })\n setScrollToBottomButton(false)\n }}\n testID={'ScrollDown'}\n />\n )}\n \n \n )\n }}\n \n )\n}\n\nconst styles = StyleSheet.create({\n fab: {\n position: 'absolute',\n margin: 16,\n left: 0,\n right: 0,\n bottom: 0 + 70,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 4,\n },\n row: {\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n paddingTop: 16,\n paddingHorizontal: 16,\n width: '100%',\n },\n mapStyle: {\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n },\n container: {\n flex: 1,\n marginTop: 0, //? Constants.statusBarHeight,\n },\n scrollView: {\n marginHorizontal: 0,\n flex: 1,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(SelectServiceComponent)\n","import React, { useEffect, useCallback } from 'react'\nimport { TouchableOpacity, View, StyleSheet } from 'react-native'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport { Text, withTheme, ProgressBar, useTheme } from 'react-native-paper'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\nimport {\n LocaleConfig,\n AgendaList,\n CalendarProvider,\n WeekCalendar,\n} from 'react-native-calendars'\nimport { Platform } from 'react-native'\nimport moment from 'moment'\n\nfunction getDayNames(locale = 'en', format = 'long') {\n const formatter = new Intl.DateTimeFormat(locale, {\n weekday: format,\n timeZone: 'UTC',\n })\n const days = [1, 2, 3, 4, 5, 6, 7].map((day) => {\n const dd = day < 10 ? `0${day}` : day\n return new Date(`2017-01-${dd}T00:00:00+00:00`)\n })\n return days.map((date) => formatter.format(date))\n}\n\nfunction getMonthNames(locale = 'en', format = 'long') {\n const formatter = new Intl.DateTimeFormat(locale, {\n month: format,\n timeZone: 'UTC',\n })\n const months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map((month) => {\n const mm = month < 10 ? `0${month}` : month\n return new Date(`2017-${mm}-01T00:00:00+00:00`)\n })\n return months.map((date) => formatter.format(date))\n}\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst GET_TIMESLOTS = gql(queries.getTimeslots)\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\n/* -------------------------------- Component ------------------------------- */\n\nconst TimeslotPickerComponent = ({ route, navigation, ...props }) => {\n const theme = useTheme()\n //const serviceFacilityID = route.params?.serviceFacilityID || null;\n const getTimeslotsData = route.params?.getTimeslotsData || null\n const queryLoading = false\n const queryError = false\n // const { data, error: queryError, loading: queryLoading } = useQuery(GET_TIMESLOTS, {\n // variables: {\n // timeslotRequirements: {\n // serviceFacilityID: serviceFacilityID\n // }\n // },\n // fetchPolicy: 'cache-and-network',\n // });\n\n // useEffect(() => {\n // (queryError) && console.log('E R R O R: ', queryError);\n // }, [queryError]);\n\n useEffect(() => {\n LocaleConfig.locales[i18n.locale] = {\n monthNames: getMonthNames(i18n.locale, 'long'),\n monthNamesShort: getMonthNames(i18n.locale, 'short'),\n dayNames: getDayNames(i18n.locale, 'long'),\n dayNamesShort: getDayNames(i18n.locale, 'short'),\n today: i18n.t('Today'),\n }\n LocaleConfig.defaultLocale = i18n.locale\n }, [])\n\n function getTheme() {\n return {\n todayButtonTextColor: theme.colors.primary,\n\n calendarBackground: theme.colors.background,\n todayTextColor: theme.colors.secondary,\n // arrows\n arrowColor: theme.colors.primary,\n arrowStyle: { padding: 0 },\n // month\n monthTextColor: theme.colors.text,\n textMonthFontSize: 16,\n textMonthFontFamily: 'HelveticaNeue', //'HelveticaNeue',\n // textMonthFontWeight: theme.fonts.thin.fontWeight,\n // day names\n textSectionTitleColor: 'black',\n textDayHeaderFontSize: 12,\n textDayHeaderFontFamily: 'HelveticaNeue',\n textDayHeaderFontWeight: 'normal',\n // dates\n dayTextColor: theme.colors.text,\n textDayFontSize: 18,\n textDayFontFamily: 'HelveticaNeue',\n textDayFontWeight: '500',\n textDayStyle: { marginTop: Platform.OS === 'android' ? 2 : 4 },\n // selected date\n selectedDayBackgroundColor: theme.colors.primary,\n selectedDayTextColor: theme.colors.text,\n // disabled date\n textDisabledColor: theme.colors.disabled,\n // dot (marked date)\n dotColor: theme.colors.secondary,\n selectedDotColor: theme.colors.primary,\n disabledDotColor: theme.colors.disabled,\n dotStyle: { marginTop: -2 },\n }\n }\n\n const mytheme = getTheme()\n const toggleModal = () => {\n props.setVisible(!props.isVisible)\n }\n const testIDs = {\n menu: {\n CONTAINER: 'menu',\n CALENDARS: 'calendars_btn',\n CALENDAR_LIST: 'calendar_list_btn',\n HORIZONTAL_LIST: 'horizontal_list_btn',\n AGENDA: 'agenda_btn',\n EXPANDABLE_CALENDAR: 'expandable_calendar_btn',\n WEEK_CALENDAR: 'week_calendar_btn',\n TIMELINE_CALENDAR: 'timeline_calendar_btn',\n },\n calendars: {\n CONTAINER: 'calendars',\n FIRST: 'first_calendar',\n LAST: 'last_calendar',\n },\n calendarList: { CONTAINER: 'calendarList' },\n horizontalList: { CONTAINER: 'horizontalList' },\n agenda: {\n CONTAINER: 'agenda',\n ITEM: 'item',\n },\n expandableCalendar: { CONTAINER: 'expandableCalendar' },\n weekCalendar: { CONTAINER: 'weekCalendar' },\n }\n\n const today = new Date().toISOString().split('T')[0]\n const futureDates = getFutureDates(31)\n const dates = [today].concat(futureDates)\n\n function isEmpty(value) {\n return (\n value === undefined ||\n value === null ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (typeof value === 'string' && value.trim().length === 0)\n )\n }\n const AgendaItem = React.memo(function AgendaItem(props) {\n const { item } = props\n\n const buttonPressed = useCallback(() => {\n console.log('Show me more')\n }, [])\n\n const itemPressed = useCallback(() => {\n navigation.navigate({\n name:'Select Service',\n params:{\n range: {\n startDate: item.from.toISOString(),\n endDate: item.until.toISOString(),\n },\n },\n merge: true\n })\n }, [])\n\n if (isEmpty(item)) {\n return (\n \n \n {i18n.t('No Free Slots')}\n \n \n )\n }\n\n return (\n \n {/* \n {item.hour}\n {item.duration}\n */}\n {`${item.from.format('LT')} - ${item.until.format('LT')}`}\n {/* \n \n \n \n );\n};\n\nexport default LoginPrompt;","import { useEffect, useRef, useMemo, Fragment, useCallback } from 'react'\nimport { useQuery, useMutation } from '@apollo/client'\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n Dimensions,\n Platform,\n} from 'react-native'\nimport gql from 'graphql-tag'\nimport {\n withTheme,\n ProgressBar,\n Caption,\n Chip,\n TextInput,\n List,\n Title,\n Subheading,\n ActivityIndicator,\n HelperText,\n Banner,\n Text,\n} from 'react-native-paper'\nimport Constants from 'expo-constants'\nimport { Formik } from 'formik'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport moment from 'moment-timezone'\nimport { useUser, AUTHENTICATED } from './contexts/UserContext'\nimport Utils from './Utils'\nimport * as mutations from '../graphql/mutations'\nimport { SelectPaymentSchema } from './lib/schema/selectPayment'\nimport { validPayPalPaymentCurrencies } from './lib/utils/payment'\nimport stripe from './TipsiStripeContainer'\nimport { renderPaymentMethod } from './lib/utils/renderPaymentMethod'\nimport { useCurrentServiceOrder } from './lib/stores/currentServiceOrder'\nimport Button from './components/ui/Button'\nimport { stringToDouble } from './lib/utils/stringToDouble'\nimport LoginPrompt from './components/LoginPrompt';\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_PAYMENT_METHODS = gql(Utils.listPaymentMethods)\nconst LIST_SERVICEORDERS_BY_OWNER = gql(Utils.listServiceOrdersByOwner)\nconst CREATE_SERVICEORDER = gql(Utils.createServiceOrderAdvanced)\nconst CREATE_SETUP_INTENT = gql(mutations.createSetupIntent)\nconst CREATE_STRIPE_PAYMENT_METHOD = gql(mutations.createStripePaymentMethod)\n\n// Add query for CustomerBillingDetails\nconst LIST_CUSTOMER_BILLING_DETAILS = gql`\n query ListCustomerBillingDetailsByOwner(\n $owner: ID!\n $sortDirection: ModelSortDirection\n $limit: Int\n ) {\n listCustomerBillingDetailsByOwner(\n owner: $owner\n sortDirection: $sortDirection\n limit: $limit\n ) {\n items {\n id\n billingDetails {\n name\n address {\n city\n country\n line1\n line2\n postal_code\n state\n }\n }\n metadata {\n tax_id\n }\n }\n }\n }\n`\n\n/* -------------------------- Cache Update Handler -------------------------- */\n\nexport const handleUpdateServiceOrder = (client, mutationData, orderUser) => {\n if (!!mutationData?.data?.createServiceOrderAdvancedV2) {\n const variables = {\n owner: orderUser?.username,\n sortDirection: 'DESC',\n limit: 50,\n }\n const listServiceOrdersByOwnerData = client.readQuery({\n query: LIST_SERVICEORDERS_BY_OWNER,\n variables: variables,\n })\n\n if (!!listServiceOrdersByOwnerData?.listServiceOrdersByOwner) {\n client.writeQuery({\n query: LIST_SERVICEORDERS_BY_OWNER,\n data: {\n listServiceOrdersByOwner: {\n ...listServiceOrdersByOwnerData.listServiceOrdersByOwner,\n items: [\n ...listServiceOrdersByOwnerData.listServiceOrdersByOwner.items,\n ...mutationData.data.createServiceOrderAdvancedV2,\n ],\n },\n },\n })\n }\n }\n}\n\n/* -------------------------------- Component ------------------------------- */\n\nconst SelectServiceComponent = ({ route, theme, navigation, ...props }) => {\n const providerSelectedCustomer = route.params?.providerSelectedCustomer\n const {\n state: { user: appUser, authStatus: appUserAuthStatus },\n dispatch: userDispatch\n } = useUser();\n const orderUser = providerSelectedCustomer ? providerSelectedCustomer : appUser\n const formRef = useRef()\n const { confirmPlatformPaySetupIntent, PlatformPay, StripeProvider } = stripe\n\n const updateServiceOrder = useCurrentServiceOrder(\n (state) => state.updateServiceOrder\n )\n const currentServiceOrder = useCurrentServiceOrder((state) => state.data)\n const { paymentMethod, voucher, user, details, offerings, cars, input } =\n currentServiceOrder\n\n const products = offerings?.map(offering => offering?.product)\n useEffect(() => {\n if (voucher) {\n const isVoucherCompatible = Utils.isVoucherCompatible(products, voucher)\n console.log('isVoucherCompatible', isVoucherCompatible)\n if (!isVoucherCompatible) {\n updateServiceOrder({ voucher: null })\n }\n }\n }, [products]);\n\n const isUserAuthenticated = appUserAuthStatus == AUTHENTICATED\n const listPaymentMethodsServiceOrder = {\n carLocation: currentServiceOrder?.details?.carLocation,\n carAvailableFrom: currentServiceOrder?.details?.carAvailableFrom,\n carAvailableUntil: currentServiceOrder?.details?.carAvailableUntil,\n areaName: currentServiceOrder?.details?.areaName,\n serviceFacilityID: currentServiceOrder?.details?.serviceFacilityID\n }\n const priceObject = Utils.getPriceObject(\n offerings,\n details?.addons,\n details?.discountPercentage,\n [voucher]\n )\n\n const priceCurrency = useMemo(\n () => offerings?.[0]?.priceCurrency || 'HUF',\n [offerings]\n )\n\n const {\n data: listPaymentMethodsDataUnfiltered,\n error: _queryErrorListPaymentMethods,\n loading: queryLoadingListPaymentMethods,\n } = useQuery(LIST_PAYMENT_METHODS, {\n variables: {\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n providerSelectedCustomerUsername: providerSelectedCustomer?.username,\n serviceOrder: listPaymentMethodsServiceOrder,\n filter: {\n isActive: {\n eq: true,\n },\n },\n },\n skip: !isUserAuthenticated,\n fetchPolicy: 'cache-and-network',\n })\n\n const listPaymentMethodsData = useMemo(\n () => ({listPaymentMethods:{items: listPaymentMethodsDataUnfiltered?.listPaymentMethods?.items.filter(item=>(!item?.restriction || item?.restriction === 'NO_RESTRICTION')) ?? []}}),\n [listPaymentMethodsDataUnfiltered?.listPaymentMethods?.items]\n )\n\n const [\n createStripePaymentMethodMutation,\n {\n error: _mutationErrorCreateStripePaymentMethod,\n loading: mutationLoadingCreateStripePaymentMethod,\n },\n ] = useMutation(CREATE_STRIPE_PAYMENT_METHOD, {\n onCompleted: async (data) => {\n // console.log(data)\n\n const { paymentMethodId, paymentMethod, metadata } =\n data.createStripePaymentMethod\n\n if (!paymentMethodId) throw new Error('Invalid payment method id')\n\n // console.log('paymentMethod', paymentMethod)\n // console.log('metadata', metadata)\n\n createServiceOrderMutation({\n variables: {\n ...input,\n serviceOrderInput: {\n ...input.serviceOrderInput,\n paymentMethodID: paymentMethodId,\n cars: cars.map(car => {\n return {\n id: car.id,\n description: car?.description,\n plate: car.plate,\n color: car.color,\n year: car?.year,\n isActive: car.isActive,\n carTypeID: car.carTypeID,\n }\n })\n },\n },\n })\n },\n })\n\n const [\n createSetupIntentMutation,\n {\n error: _mutationErrorCreateSetupIntent,\n loading: mutationLoadingCreateSetupIntent,\n },\n ] = useMutation(CREATE_SETUP_INTENT, {\n onCompleted: async (data) => {\n // console.log(data)\n\n const { clientSecret, type } = data.createSetupIntent\n const price = `${Math.ceil(priceObject?.totalPrice * 100) / 100 ?? 0}`\n const priceFloat = stringToDouble(price)\n\n try {\n const { error, setupIntent } = await confirmPlatformPaySetupIntent(\n clientSecret,\n {\n applePay: {\n currencyCode: priceCurrency,\n merchantCountryCode: 'DE',\n cartItems: [\n {\n label: 'CleenUp',\n amount: price,\n paymentType: 'Immediate',\n },\n ],\n requiredBillingContactFields: [\n PlatformPay?.ContactField?.Name ?? '',\n PlatformPay?.ContactField?.PostalAddress ?? '',\n PlatformPay?.ContactField?.EmailAddress ?? '',\n PlatformPay?.ContactField?.PhoneNumber ?? '',\n ],\n // requiredShippingAddressFields: [\n // PlatformPay?.ContactField?.Name ?? '',\n // PlatformPay?.ContactField?.PostalAddress ?? '',\n // PlatformPay?.ContactField?.EmailAddress ?? '',\n // PlatformPay?.ContactField?.PhoneNumber ?? '',\n // ],\n },\n googlePay: {\n testEnv: Constants?.expoConfig?.extra?.env == 'prod' ? false : true,\n currencyCode: priceCurrency,\n merchantCountryCode: 'DE',\n amount: priceFloat * 100,\n label: 'CleenUp',\n allowCreditCards: true,\n billingAddressConfig: {\n format: PlatformPay?.BillingAddressFormat?.Full ?? '',\n isRequired: true,\n },\n },\n }\n )\n\n if (error) {\n console.error(error)\n throw new Error(error?.raw?.message ?? error?.message ?? error)\n } else {\n // console.log(setupIntent)\n\n const { paymentMethodId, paymentMethod } = setupIntent ?? {}\n\n if (!paymentMethodId) throw new Error('Invalid payment method id')\n\n createStripePaymentMethodMutation({\n variables: {\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n paymentMethodId,\n last4: paymentMethod.Card.last4,\n metadata: {\n isApplePay: type === 'APPLE_PAY',\n isGooglePay: type === 'GOOGLE_PAY',\n },\n },\n })\n }\n } catch (error) {\n console.error(error)\n throw new Error(error)\n }\n },\n })\n\n const [\n createServiceOrderMutation,\n { error: mutationError, loading: mutationLoadingCreateServiceOrder },\n ] = useMutation(CREATE_SERVICEORDER, {\n update: (client, mutationData) =>\n handleUpdateServiceOrder(client, mutationData, orderUser),\n onCompleted: async (data) => {\n data?.createServiceOrderAdvancedV2.forEach((serviceOrder) => {\n const priceObject = Utils.calculatePrice(\n serviceOrder?.offering,\n serviceOrder?.addons,\n serviceOrder?.discountPercentage,\n serviceOrder?.vouchers?.items\n )\n const analyticsPayload = {\n serviceOrderId: serviceOrder?.id,\n totalDiscountPercentage: priceObject.totalDiscountPercentage || 0,\n voucherTotalValue: priceObject.voucherTotalValue || 0,\n productName: serviceOrder?.offering?.product?.productPackage?.name,\n productCategory:\n serviceOrder?.offering?.product?.productCategory?.name,\n additionalServices: `${Utils.enrichAddons(\n serviceOrder?.addons,\n serviceOrder?.offering\n )\n .map((item) => `${item.taskType.name} x ${item?.quantity}`)\n .join(', ')}`,\n totalPrice: priceObject?.totalPrice,\n currency: serviceOrder?.offering?.priceCurrency,\n }\n Utils.analyticsLogEvent('AppOrderSent', analyticsPayload)\n })\n navigation.navigate('Order Confirmed', {\n newServiceOrderId: data.createServiceOrderAdvancedV2?.[0]?.id,\n providerSelectedCustomer: providerSelectedCustomer,\n })\n },\n })\n\n // Add query for billing details when BANK_TRANSFER is selected\n const {\n data: billingDetailsData,\n loading: billingDetailsLoading,\n refetch: refetchBillingDetails\n } = useQuery(LIST_CUSTOMER_BILLING_DETAILS, {\n variables: {\n owner: orderUser?.username,\n sortDirection: 'DESC',\n limit: 1,\n },\n skip: !isUserAuthenticated || (paymentMethod?.id !== 'BANK_TRANSFER'),\n fetchPolicy: 'network-only',\n });\n\n // Track if we have valid billing details for bank transfer\n const hasBillingDetails = useMemo(() => {\n if (!billingDetailsData || !billingDetailsData.listCustomerBillingDetailsByOwner) {\n return false;\n }\n \n const items = billingDetailsData.listCustomerBillingDetailsByOwner.items;\n return items && items.length > 0;\n }, [billingDetailsData]);\n\n const subheadingText = useMemo(() => {\n switch (true) {\n case priceObject?.totalDiscountPercentage > 0 &&\n priceObject?.voucherTotalValue == 0:\n return `(-${Math.round(priceObject?.totalDiscountPercentage * 10) / 10\n }%)`\n\n case priceObject?.totalDiscountPercentage == 0 &&\n priceObject?.voucherTotalValue > 0:\n return `(-${Utils.formatCurrency(\n priceObject?.voucherTotalValue,\n priceCurrency\n )})`\n\n default:\n return `(-${Math.round(priceObject?.totalDiscountPercentage * 10) / 10\n }%, -${Utils.formatCurrency(\n priceObject?.voucherTotalValue,\n priceCurrency\n )})`\n }\n })\n\n const formattedBillingInfo = useMemo(() => {\n const { billing_details, metadata } = paymentMethod || {}\n const { name, address } = billing_details || {}\n\n return [\n name || ' ',\n address?.line1 || '',\n address?.city || '',\n address?.postal_code || '',\n metadata?.tax_id ? `\\n${metadata.tax_id}` : '',\n ].join(' ')\n }, [paymentMethod])\n\n const getVoucherDescription = () => {\n switch (voucher?.type) {\n case 'VALUE':\n return Utils.formatCurrency(voucher?.value, voucher?.valueCurrency)\n\n case 'PERCENTAGE':\n return `-${voucher?.percentage}%`\n\n case 'PERCENTAGE_AND_VALUE':\n return `${Utils.formatCurrency(\n voucher?.value,\n voucher?.valueCurrency\n )}, -${voucher?.percentage}%`\n\n default:\n return ''\n }\n }\n\n const handleSubmit = (values) => {\n if (!paymentMethod) return\n \n // Check if BANK_TRANSFER is selected but no billing details exist\n if (paymentMethod.id === 'BANK_TRANSFER' && !hasBillingDetails) {\n // Navigate to the bank transfer payment component to enter billing details\n navigation.navigate('Payment', { \n paymentMethodType: 'BANK_TRANSFER',\n returnToScreen: 'Select Payment' \n });\n return;\n }\n\n const valuesFiltered = { ...values }\n let voucherIDs = []\n\n try {\n if (valuesFiltered.serviceFacilityID == null) {\n delete valuesFiltered['serviceFacilityID']\n }\n } catch (err) {\n console.error(err)\n }\n\n try {\n if (valuesFiltered?.voucherID) {\n voucherIDs = [valuesFiltered['voucherID']]\n delete valuesFiltered['voucherID']\n }\n } catch (err) {\n console.error(err)\n }\n\n const addonsWithoutOneOffs = valuesFiltered?.addons?.filter(\n (addon) =>\n !offerings?.[0]?.addonOptions?.addons?.items.find(\n (item) => item.id == addon?.addonID\n )?.batchOrderOneOff\n )\n\n if (\n paymentMethod?.id == 'APPLE_PAY' ||\n paymentMethod?.id == 'GOOGLE_PAY' ||\n paymentMethod?.id == 'PAYPAL'\n ) {\n createSetupIntentMutation({\n variables: {\n offSession: true,\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n type: paymentMethod?.id,\n },\n })\n\n updateServiceOrder({\n input: {\n serviceOrderInput: {\n ...valuesFiltered,\n addonsWithoutOneOffs,\n },\n voucherIDs,\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n providerSelectedCustomerUsername: providerSelectedCustomer?.username,\n },\n })\n\n return\n }\n\n createServiceOrderMutation({\n variables: {\n serviceOrderInput: {\n ...valuesFiltered,\n addonsWithoutOneOffs,\n cars: cars.map(car => {\n return {\n id: car.id,\n description: car?.description,\n plate: car.plate,\n color: car.color,\n year: car?.year,\n isActive: car.isActive,\n carTypeID: car.carTypeID,\n }\n })\n },\n voucherIDs,\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n providerSelectedCustomerUsername: providerSelectedCustomer?.username\n },\n })\n }\n\n // Add custom validation to check for bank transfer billing details\n const validatePaymentMethod = (paymentMethod) => {\n if (!paymentMethod) {\n return i18n.t('Please select a payment method', { defaultValue: 'Please select a payment method' });\n }\n \n if (paymentMethod.id === 'BANK_TRANSFER' && !hasBillingDetails) {\n return i18n.t('Bank transfer requires billing details. Please add your billing information.', { defaultValue: 'Bank transfer requires billing details. Please add your billing information.' });\n }\n \n return undefined;\n };\n\n // Override renderPaymentMethodError to handle bank transfer validation\n const renderPaymentMethodError = (errors) => {\n // Add custom validation for BANK_TRANSFER\n const bankTransferError = paymentMethod?.id === 'BANK_TRANSFER' && !hasBillingDetails\n ? i18n.t('Bank transfer requires billing details. Please add your billing information.', { defaultValue: 'Bank transfer requires billing details. Please add your billing information.' })\n : null;\n \n if (bankTransferError) {\n return bankTransferError;\n }\n \n switch (true) {\n case Array.isArray(errors.paymentMethodSelection):\n return errors.paymentMethodSelection.map((error, index) => (\n \n {error}\n
\n
\n ))\n\n case typeof errors.paymentMethodSelection === 'object':\n return 'An error occurred with the payment method selection.'\n\n default:\n return errors.paymentMethodSelection\n }\n }\n\n useEffect(() => {\n mutationError && console.log('E R R O R: ', mutationError)\n }, [mutationError])\n\n useEffect(() => {\n if (!!route.params?.paymentMethod) {\n updateServiceOrder({ paymentMethod: route.params.paymentMethod })\n // console.log(route.params.paymentMethod)\n if (formRef?.current) {\n formRef.current.setFieldValue(\n 'paymentMethodID',\n route.params.paymentMethod.id\n )\n }\n }\n }, [route.params?.paymentMethod, priceCurrency])\n\n useEffect(() => {\n if (!!route.params?.voucher) {\n updateServiceOrder({ voucher: route.params.voucher })\n if (formRef?.current) {\n formRef.current.setFieldValue('voucherID', route.params.voucher.id)\n }\n }\n }, [route.params?.voucher])\n\n useEffect(() => {\n if (formRef?.current) {\n formRef.current.validateForm()\n }\n }, [paymentMethod, hasBillingDetails])\n\n const fetchUser = useCallback(async () => {\n const setUser = (user) => {\n updateServiceOrder({ user })\n }\n if (!!providerSelectedCustomer) {\n setUser(providerSelectedCustomer)\n navigation.setOptions({\n title: `${i18n.t('Select Payment')} ${i18n\n .t('on behalf of')\n .replace('', providerSelectedCustomer?.attributes?.email)}`,\n })\n } else {\n setUser(orderUser)\n }\n }, [providerSelectedCustomer])\n\n useEffect(() => {\n fetchUser()\n }, [])\n\n useEffect(() => {\n fetchUser()\n }, [appUser])\n\n useEffect(() => {\n if (formRef?.current?.values && orderUser?.attributes?.phone_number) {\n formRef.current.setFieldValue(\n 'contactPhoneNumber',\n orderUser?.attributes?.phone_number\n )\n } else {\n formRef.current.setFieldValue('contactPhoneNumber', '')\n }\n formRef.current.validateForm()\n }, [orderUser])\n\n useEffect(() => {\n if (formRef?.current) {\n formRef.current.validateForm()\n }\n }, [paymentMethod])\n\n useEffect(() => {\n const paymentMethodItems =\n listPaymentMethodsData?.listPaymentMethods?.items?.filter((item) =>\n Platform.OS === 'ios'\n ? item.id !== 'GOOGLE_PAY'\n : item.id !== 'APPLE_PAY'\n ) ?? []\n if (paymentMethodItems.length === 0) return\n\n let defaultPaymentMethod = null\n\n //! Temporary solution to hide PayPal payment method\n const _hidePayPalPaymentOption = true\n\n if (\n _hidePayPalPaymentOption ||\n !validPayPalPaymentCurrencies.includes(priceCurrency.toLowerCase())\n ) {\n defaultPaymentMethod = paymentMethodItems?.filter(\n (item) => item.id !== 'PAYPAL'\n )?.[0]\n } else {\n defaultPaymentMethod = paymentMethodItems?.[0]\n }\n\n if (!!defaultPaymentMethod) {\n updateServiceOrder({ paymentMethod: defaultPaymentMethod })\n if (formRef?.current) {\n formRef.current.setFieldValue(\n 'paymentMethodID',\n defaultPaymentMethod.id\n )\n }\n }\n }, [listPaymentMethodsData, priceCurrency])\n\n useEffect(() => {\n if (!!route.params?.newServiceOrder) {\n updateServiceOrder({ details: route.params.newServiceOrder })\n }\n if (!!route.params?.offerings) {\n updateServiceOrder({ offerings: route.params.offerings })\n }\n if (!!route.params?.cars) {\n updateServiceOrder({ cars: route.params.cars })\n }\n }, [\n route.params?.newServiceOrder,\n route.params?.offerings,\n route.params?.cars,\n ])\n\n // Refresh billing details when payment method changes\n useEffect(() => {\n if (paymentMethod?.id === 'BANK_TRANSFER' && isUserAuthenticated) {\n refetchBillingDetails();\n }\n }, [paymentMethod, isUserAuthenticated]);\n\n // Update isLoading to include billing details loading state\n const isLoading = useMemo(() => {\n return (\n queryLoadingListPaymentMethods ||\n billingDetailsLoading ||\n mutationLoadingCreateServiceOrder ||\n mutationLoadingCreateStripePaymentMethod ||\n mutationLoadingCreateSetupIntent\n )\n }, [\n queryLoadingListPaymentMethods,\n billingDetailsLoading,\n mutationLoadingCreateServiceOrder,\n mutationLoadingCreateStripePaymentMethod,\n mutationLoadingCreateSetupIntent,\n ])\n\n // Check if user returned from adding billing details\n useEffect(() => {\n // Check if we're returning from the payment/billing details screen\n if (route.params?.returnFromBillingDetails && paymentMethod?.id === 'BANK_TRANSFER') {\n // Refetch billing details to check if they were added\n refetchBillingDetails();\n }\n }, [route.params?.returnFromBillingDetails]);\n\n // Update the banner to show loading state when checking for billing details\n const renderBillingDetailsWarning = () => {\n if (paymentMethod?.id !== 'BANK_TRANSFER' || hasBillingDetails || billingDetailsLoading) {\n return null;\n }\n \n const bannerStyle = {\n backgroundColor: theme.colors.secondary,\n marginHorizontal: 10,\n marginTop: 10,\n marginBottom: 10,\n borderRadius: 8,\n elevation: 1,\n maxWidth: Utils.maxColumnWidth,\n alignSelf: 'center',\n width: '100%'\n };\n \n const textStyle = {\n color: theme.colors.onSecondary || '#FFFFFF',\n fontSize: 14,\n lineHeight: 20,\n };\n \n // if (billingDetailsLoading) {\n // return (\n // \n // (\n // \n // )}\n // contentStyle={{ padding: 0 }}\n // >\n // \n // {i18n.t('Checking billing details...', { defaultValue: 'Checking billing details...' })}\n // \n // \n // \n // );\n // }\n \n if (!hasBillingDetails) {\n return (\n \n (\n \n )}\n contentStyle={{ padding: 0 }}\n >\n \n {i18n.t('Bank transfer requires valid billing details. Please add your billing information before continuing.', { defaultValue: 'Bank transfer requires valid billing details. Please add your billing information before continuing.' })}\n \n \n \n );\n }\n \n // Show confirmation banner when billing details exist\n // if (hasBillingDetails) {\n // return (\n // \n // (\n // \n // )}\n // contentStyle={{ padding: 0 }}\n // >\n // \n // {i18n.t('Billing details saved successfully.', { defaultValue: 'Billing details saved successfully.' })}\n // \n // \n // \n // );\n // }\n \n return null;\n };\n\n return (\n \n \n {({ handleChange, handleBlur, values, errors, isValid, touched }) => (\n \n {isLoading && (\n \n \n \n )}\n \n {/* Use new render function instead of inline banner */}\n {renderBillingDetailsWarning()}\n \n \n \n {offerings?.length > 0 && (\n \n \n \n {`${Utils.formatCurrency(\n priceObject?.totalPrice,\n priceCurrency\n )}`}\n \n \n\n {(priceObject?.totalDiscountPercentage > 0 ||\n priceObject?.voucherTotalValue > 0) && (\n \n {`${Utils.formatCurrency(\n priceObject?.totalPriceWithoutDiscount,\n priceCurrency\n )}`}\n \n {subheadingText}\n \n \n )}\n \n )}\n {!isUserAuthenticated ?\n \n : <>\n \n {i18n.t('Payment')}\n {paymentMethod ? (\n \n {renderPaymentMethod({\n paymentMethod,\n voucher,\n details,\n priceCurrency,\n navigation,\n providerSelectedCustomer,\n listPaymentMethodsServiceOrder\n })}\n \n ) : (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n \n queryLoadingListPaymentMethods ? (\n \n ) : (\n \n )\n }\n />\n )}\n onPress={() =>\n navigation.navigate('Payments', {\n navigationTargetOnPaymentSelect: 'Select Payment',\n serviceOrder: listPaymentMethodsServiceOrder\n })\n }\n testID='SelectPaymentSelectPaymentMethodButton'\n />\n )}\n \n {renderPaymentMethodError(errors)}\n \n \n\n \n {i18n.t('Voucher')}\n {voucher ? (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Vouchers', {\n navigationTargetOnVoucherSelect: 'Select Payment',\n selectedVoucher: voucher,\n selectedProducts: offerings?.map(offering => offering?.product),\n listVoucherParams: {\n validUntilGt: details?.carAvailableFrom,\n valueCurrencyAllowed: priceCurrency,\n },\n })\n }\n />\n ) : (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Vouchers', {\n navigationTargetOnVoucherSelect: 'Select Payment',\n selectedVoucher: voucher,\n selectedProducts: offerings?.map(offering => offering?.product),\n listVoucherParams: {\n validUntilGt: details?.carAvailableFrom,\n valueCurrencyAllowed: priceCurrency,\n },\n })\n }\n />\n )}\n \n\n \n {i18n.t('Contact')}\n\n \n \n {errors.contactPhoneNumber}\n \n \n \n }\n \n {i18n.t('Review Order')}\n\n \n `${car.plate || ''} ${car.carType.make || ''} ${car.carType.model || ''\n }`\n )\n ?.join('\\n')\n : ''\n }\n label={i18n.t('Car')}\n editable={false}\n style={{ backgroundColor: theme.colors.surface }}\n multiline={true}\n />\n \n `${offering?.product?.productPackage?.name || ''\n } - ${offering?.product?.productCategory?.name\n ? i18n.t(\n offering?.product?.productCategory?.name\n )\n : ''\n }`\n )\n .join('\\n')\n : ''\n }\n label={i18n.t('Service')}\n editable={false}\n style={{ backgroundColor: theme.colors.surface }}\n multiline={true}\n />\n {details?.addons?.length > 0 && (\n \n `${i18n.t(item.taskType.name, {\n defaultValue: item.taskType.name,\n })} x ${item?.quantity}`\n )\n .join('\\n')}`}\n label={i18n.t('Additional Services')}\n editable={false}\n multiline={true}\n style={{ backgroundColor: theme.colors.surface }}\n />\n )}\n \n\n \n {!!paymentMethod?.billing_details?.name && (\n \n )}\n \n {i18n.t('Payment after completion')}\n \n \n \n \n\n \n \n 0 || \n !isValid\n }\n buttonColor={theme.colors.primary}\n onPress={() => {\n if (formRef.current) {\n if (paymentMethod?.id === 'BANK_TRANSFER' && !hasBillingDetails) {\n navigation.navigate('Payment', { \n paymentMethodType: 'BANK_TRANSFER',\n returnToScreen: 'Select Payment',\n returnWithParams: { returnFromBillingDetails: true }\n })\n }\n else {\n formRef.current.handleSubmit()\n }\n }\n }}\n mode='contained'\n title={\n paymentMethod?.id === 'BANK_TRANSFER' && !hasBillingDetails\n ? i18n.t('Add Billing Details', { defaultValue: 'Add Billing Details' })\n : i18n.t('Submit Order', { defaultValue: 'Submit Order' })\n }\n />\n \n \n \n )}\n \n \n )\n}\n\nconst styles = StyleSheet.create({\n mapStyle: {\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n },\n container: {\n flex: 1,\n marginTop: 0,\n },\n scrollView: {\n marginHorizontal: 0,\n flexGrow: 1,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(SelectServiceComponent)\n","export const stringToDouble = (strValue: string): number => {\n const value = parseFloat(strValue.replace(',', '.'))\n return isNaN(value) ? 0 : value\n}\n","import { useEffect, useState, useRef, useMemo } from 'react'\nimport { useQuery, useMutation } from '@apollo/client'\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n Dimensions,\n} from 'react-native'\nimport gql from 'graphql-tag'\nimport * as queries from '../graphql/queries.js'\nimport * as mutations from '../graphql/mutations.js'\nimport {\n withTheme,\n Chip,\n Button,\n List,\n Title,\n Subheading,\n ActivityIndicator,\n HelperText,\n ProgressBar,\n} from 'react-native-paper'\nimport Constants from 'expo-constants'\nimport { Formik } from 'formik'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport * as Yup from 'yup'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport ErrorDialog from './ErrorDialog'\n\nconst PaymentOnSessionSchema = Yup.object().shape({\n serviceOrderId: Yup.string().required('Invalid service order'),\n paymentMethodID: Yup.string().required('Please select payment method'),\n})\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_PAYMENT_METHODS = gql(queries.listPaymentMethods)\nconst RETRY_PAYMENT_ONSESSION = gql(mutations.retryPaymentOnSession)\nconst stripe = Constants.expoConfig.extra.stripePublishableKey\n ? window.Stripe(Constants.expoConfig.extra.stripePublishableKey)\n : null\n/* -------------------------------- Component ------------------------------- */\n\nconst PaymentOnSessionComponent = ({ route, theme, navigation, ...props }) => {\n const [clientSecret, setClientSecret] = useState()\n const [paymentMethodSelection, setPaymentMethodSelection] = useState()\n const serviceOrder = route.params?.serviceOrder\n\n const listPaymentMethodsServiceOrder = {\n carLocation: Utils.removeTypename(serviceOrder?.carLocation),\n carAvailableFrom: serviceOrder?.carAvailableFrom,\n carAvailableUntil: serviceOrder?.carAvailableUntil,\n areaName: serviceOrder?.areaName,\n serviceFacilityID: serviceOrder?.serviceFacilityID\n }\n console.log('listPaymentMethodsServiceOrder', listPaymentMethodsServiceOrder)\n const formRef = useRef()\n\n const {\n data: listPaymentMethodsDataUnfiltered,\n error: _queryErrorListPaymentMethods,\n loading: queryLoadingListPaymentMethods,\n } = useQuery(LIST_PAYMENT_METHODS, {\n variables: {\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n filter: { isActive: { eq: true } },\n },\n fetchPolicy: 'cache-and-network',\n })\n\n const listPaymentMethodsData = useMemo(\n () => ({listPaymentMethods:{items: listPaymentMethodsDataUnfiltered?.listPaymentMethods?.items.filter(item=>(!item?.restriction || item?.restriction === 'NO_RESTRICTION')) ?? []}}),\n [listPaymentMethodsDataUnfiltered?.listPaymentMethods?.items]\n )\n\n const [\n retryPaymentOnSession,\n { error: mutationError, loading: mutationLoadingRetryPaymentOnSession },\n ] = useMutation(RETRY_PAYMENT_ONSESSION, {\n onCompleted: (data) =>\n handleMutationResponse(data, 'retryPaymentOnSession'),\n })\n\n const onClientSecretChanged = async (clientSecret) => {\n console.log('useEffect clientSecret triggered')\n if (clientSecret) {\n try {\n const { error } = await stripe.confirmCardPayment(clientSecret, {\n payment_method: paymentMethodSelection.id,\n })\n if (error) {\n setErrorModalVisible(true)\n console.log(error)\n setConfirmingPaymentIntent(false)\n setClientSecret(null)\n } else {\n navigation.navigate({\n name:'ServiceOrders',\n params:{\n expandedAccordionId: 'UPCOMING',\n },\n merge: true\n })\n }\n } catch (err) {\n console.error(err)\n setClientSecret(null)\n }\n }\n }\n\n useEffect(() => {\n onClientSecretChanged(clientSecret)\n }, [clientSecret])\n\n const [confirmingPaymentIntent, setConfirmingPaymentIntent] = useState(false)\n const handleMutationResponse = async (data, fieldName) => {\n console.log('handleMutationResponse', JSON.stringify(data))\n if (data[fieldName]?.result == 'NO_OPERATION') {\n console.log(`${fieldName} mutation returned no operation`)\n } else if (data[fieldName]?.result == 'SUCCESS') {\n //console.log(data)\n try {\n setConfirmingPaymentIntent(true)\n if (\n data[fieldName]?.paymentIntentStatus == 'requires_confirmation' ||\n data[fieldName]?.paymentIntentStatus == 'requires_action' ||\n data[fieldName]?.paymentIntentStatus == 'requires_payment_method'\n ) {\n console.log('setClientSecret', data[fieldName]?.clientSecret)\n setClientSecret(data[fieldName]?.clientSecret)\n }\n } catch (e) {\n //? handle exception here\n console.log('confirmPaymentIntent exception:' + e?.message)\n setConfirmingPaymentIntent(false)\n }\n } else if (data[fieldName]?.result == 'FAILED') {\n console.log(`${fieldName} mutation failed`)\n setErrorModalVisible(true)\n } else {\n console.log(`${fieldName} mutation unidentified error`)\n setErrorModalVisible(true)\n }\n }\n\n useEffect(() => {\n mutationError && console.log('E R R O R: ', mutationError)\n }, [mutationError])\n\n useEffect(() => {\n if (route.params?.paymentMethod) {\n setPaymentMethodSelection(route.params.paymentMethod)\n if (formRef.current) {\n formRef.current.setFieldValue(\n 'paymentMethodID',\n route.params.paymentMethod.id\n )\n }\n }\n }, [route.params?.paymentMethod])\n\n useEffect(() => {\n if (formRef.current) {\n formRef.current.validateForm()\n }\n }, [])\n\n useEffect(() => {\n //console.log(\"run:\",paymentMethodSelection )\n if (listPaymentMethodsData?.listPaymentMethods?.items.length > 0) {\n let defaultPaymentMethod =\n listPaymentMethodsData?.listPaymentMethods?.items.find(\n (item) => item.id == serviceOrder.paymentMethodID\n )\n if (!defaultPaymentMethod) {\n defaultPaymentMethod =\n listPaymentMethodsData?.listPaymentMethods?.items[0]\n }\n if (defaultPaymentMethod) {\n setPaymentMethodSelection(defaultPaymentMethod)\n // console.log(\"defaultPaymentMethod:\",JSON.stringify(defaultPaymentMethod ))\n formRef.current.setFieldValue(\n 'paymentMethodID',\n defaultPaymentMethod.id\n )\n }\n }\n }, [listPaymentMethodsData])\n\n const [isErrorModalVisible, setErrorModalVisible] = useState(false)\n const [isGoToAppModalVisible, setGoToAppModalVisible] = useState(false)\n const isLoading =\n mutationLoadingRetryPaymentOnSession || confirmingPaymentIntent\n\n const priceObject = Utils.calculatePrice(\n serviceOrder?.offering,\n serviceOrder?.addons,\n serviceOrder?.discountPercentage,\n serviceOrder?.vouchers?.items\n )\n\n const renderDiscount = () => {\n switch (true) {\n case priceObject?.voucherTotalValue === 0:\n return (\n {`(-${priceObject?.totalDiscountPercentage}%)`}\n )\n\n case priceObject?.totalDiscountPercentage === 0 &&\n priceObject?.voucherTotalValue > 0:\n return (\n {`(-${Utils.formatCurrency(\n priceObject?.voucherTotalValue,\n serviceOrder?.offering?.priceCurrency\n )})`}\n )\n\n default:\n return (\n {`(-${\n priceObject?.totalDiscountPercentage\n }%, -${Utils.formatCurrency(\n priceObject?.voucherTotalValue,\n serviceOrder?.offering?.priceCurrency\n )})`}\n )\n }\n }\n\n const renderPaymentMethod = () => {\n switch (paymentMethodSelection.id) {\n case 'SHELLCARD':\n return (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Payments', {\n showBankCardsOnly: true,\n navigationTargetOnPaymentSelect: 'Payment on-session',\n serviceOrder: listPaymentMethodsServiceOrder\n })\n }\n />\n )\n\n case 'DKVCARD':\n return (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Payments', {\n showBankCardsOnly: true,\n navigationTargetOnPaymentSelect: 'Payment on-session',\n serviceOrder: listPaymentMethodsServiceOrder\n })\n }\n />\n )\n\n case 'INVOICE_PAYMENT':\n return (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Payments', {\n showBankCardsOnly: true,\n navigationTargetOnPaymentSelect: 'Payment on-session',\n serviceOrder: listPaymentMethodsServiceOrder\n })\n }\n />\n )\n\n case 'BANK_TRANSFER':\n return (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Payments', {\n showBankCardsOnly: true,\n navigationTargetOnPaymentSelect: 'Payment on-session',\n serviceOrder: listPaymentMethodsServiceOrder\n })\n }\n />\n )\n\n default:\n if (paymentMethodSelection?.card?.last4) {\n return (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Payments', {\n showBankCardsOnly: true,\n navigationTargetOnPaymentSelect: 'Payment on-session',\n serviceOrder: listPaymentMethodsServiceOrder\n })\n }\n />\n )\n } else {\n return null\n }\n }\n }\n\n return (\n {\n console.log('submit', values)\n retryPaymentOnSession({\n variables: {\n serviceOrderId: values.serviceOrderId,\n paymentMethodID: paymentMethodSelection.id,\n paymentMethodType: 'BANKCARD',\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n },\n })\n }}\n innerRef={formRef}\n validationSchema={PaymentOnSessionSchema}\n >\n {({ errors, isValid }) => (\n <>\n \n \n {isLoading && (\n \n \n \n )}\n \n <>\n {serviceOrder?.offering && (\n \n \n \n {`${Utils.formatCurrency(\n priceObject?.totalPrice,\n serviceOrder?.offering.priceCurrency\n )}`}\n \n \n {(priceObject?.totalDiscountPercentage > 0 ||\n priceObject?.voucherTotalValue > 0) && (\n \n {`${Utils.formatCurrency(\n priceObject?.totalPriceWithoutDiscount,\n serviceOrder?.offering.priceCurrency\n )}`}\n {priceObject?.totalDiscountPercentage > 0 &&\n renderDiscount()}\n \n )}\n \n )}\n \n {i18n.t('Payment')}\n {paymentMethodSelection ? (\n {renderPaymentMethod()}\n ) : (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n \n queryLoadingListPaymentMethods ? (\n \n ) : (\n \n )\n }\n />\n )}\n onPress={() =>\n navigation.navigate('Payments', {\n showBankCardsOnly: true,\n navigationTargetOnPaymentSelect: 'Payment on-session',\n serviceOrder: listPaymentMethodsServiceOrder\n })\n }\n />\n )}\n \n {`${errors.paymentMethodSelection}`}\n \n \n \n \n\n \n \n {\n if (formRef.current) {\n formRef.current.handleSubmit()\n }\n }}\n >\n {i18n.t('Pay')}\n \n \n \n \n )}\n \n )\n}\n\nconst styles = StyleSheet.create({\n mapStyle: {\n width: Dimensions.get('window').width,\n height: Dimensions.get('window').height,\n },\n container: {\n flex: 1,\n marginTop: 0,\n },\n scrollView: {\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(PaymentOnSessionComponent)\n","// src/TestComomponent/TestComomponent.js\n\nimport React from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { FAB, withTheme, Headline, Paragraph } from 'react-native-paper'\nimport { Ionicons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\n\nconst OrderConfirmedComponent = ({ route, navigation, ...props }) => {\n const providerSelectedCustomer = route.params?.providerSelectedCustomer\n return (\n \n \n \n {i18n.t('Order submitted')}\n \n {!!providerSelectedCustomer ? (\n \n {i18n\n .t('Order submitted on behalf of')\n .replace('', providerSelectedCustomer?.attributes?.email)}\n \n ) : (\n <>\n \n {i18n.t('Thank you for submitting your order')}\n \n \n {i18n.t('Check order status part1')}\n \n {i18n.t('Check order status part2')}\n \n {i18n.t('Check order status part3')}\n \n \n )}\n\n {\n navigation.navigate('ServiceOrders', {\n screen: 'Orders',\n params: {\n screen: \"ServiceOrders\",\n params: {\n newServiceOrderId: route.params?.newServiceOrderId,\n expandedAccordionId: 'UPCOMING',\n }\n },\n })\n }}\n testID={'Track My Order'}\n />\n \n )\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n marginTop: 0, //Constants.statusBarHeight,\n },\n scrollView: {\n //backgroundColor: 'pink',\n marginHorizontal: 0,\n },\n text: {\n fontSize: 42,\n },\n})\n\nexport default withTheme(OrderConfirmedComponent)\n","import React from 'react'\nimport { View, Platform } from 'react-native'\nimport { withTheme } from 'react-native-paper'\nimport { Calendar, momentLocalizer } from 'react-big-calendar'\n\nconst moment = require('moment-timezone')\nconst localizer = momentLocalizer(moment)\n\nconst CalendarComponent = ({\n route,\n navigation,\n theme,\n dimensions,\n listServiceOrdersData,\n ...props\n}) => {\n if (Platform.OS == 'web') {\n if (theme.colorScheme === 'dark') {\n import('./react-big-calendar-dark.css')\n } else {\n import('./react-big-calendar.css')\n }\n }\n\n return (\n <>\n \n {\n navigation.navigate('Order', {\n serviceOrder: item.serviceOrder,\n })\n }}\n events={\n listServiceOrdersData?.items?.map((item) => {\n return {\n id: item.id,\n start: moment(item.carAvailableFrom).toDate(),\n end: moment(item.carAvailableUntil).toDate(),\n title: `${item?.car?.plate} ${item?.car?.carType?.make} ${item?.car?.carType?.model}`,\n //summary: `${item?.offering?.product?.productPackage?.name} - ${i18n.t(item?.offering?.product?.productCategory?.name)}\\n${i18n.t(item.state)}${item?.assignments?.items?.[0]?.provider ? \" (\" + item?.assignments?.items?.[0]?.provider?.firstName.charAt(0) + item?.assignments?.items?.[0]?.provider?.lastName.charAt(0) + \")\" : \"\"}\\n${item.carLocation.address.name}`,\n serviceOrder: item,\n //\\n${Utils.formatCurrency(Utils.calculatePrice(item?.offering, item?.addons, item?.discountPercentage, item?.vouchers?.items).totalPrice, item?.offering?.priceCurrency)}\n //${Utils.calculateTargetTime(item?.car?.carType?.carTypeCategoryID, item?.offering, item?.addons).totalTime}\n }\n }) || []\n }\n startAccessor='start'\n endAccessor='end'\n style={{ height: dimensions.window.height - 113 - 80 }}\n />\n \n )\n}\n\nexport default withTheme(CalendarComponent)\n","import i18n from 'i18n-js'\nimport Utils from './Utils'\nimport { useNavigation } from '@react-navigation/native';\nimport {\n View,\n } from 'react-native'\nimport {\n Button,\n Title,\n Card,\n Paragraph,\n Avatar,\n IconButton,\n withTheme,\n} from 'react-native-paper'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nconst moment = require('moment-timezone')\n\nconst ServiceOrderCard = ({ item, index, array, user, theme }) => {\n const paymentIssue = Utils.isServiceOrderPaymentIssue(item)\n const navigation = useNavigation();\n return (\n \n navigation.navigate('Order', {\n serviceOrder: item,\n })\n }\n mode='contained'\n style={{\n marginLeft: 10,\n marginRight: 10,\n marginTop: 10,\n marginBottom: index == array?.length - 1 ? 15 : 0,\n }}\n >\n (\n (\n \n )}\n />\n )}\n // right={(props) => } onPress={() => {}} />}\n right={(props) =>\n Utils.isProviderApp() &&\n item?.assignments?.items?.[0]?.provider ? (\n \n \n {!!item?.groupOrderID ? (\n (\n \n )}\n iconColor={theme.colors.primary}\n size={20}\n />\n ) : null}\n \n ) : (\n \n {!!item?.groupOrderID ? (\n (\n \n )}\n iconColor={theme.colors.primary}\n size={20}\n />\n ) : null}\n \n )\n }\n />\n \n {`${item?.offering?.product?.productPackage?.name\n } - ${i18n.t(\n item?.offering?.product?.productCategory?.name\n )}`}\n \n {i18n.t(\n item.state == 'SOS' && Utils.isCustomerApp()\n ? 'SUBMITTED'\n : item.state\n )}\n \n {`${moment(\n item.carAvailableFrom\n ).format('LLL')} - ${moment(\n item.carAvailableUntil\n ).format('LLL')}`}\n \n {item.carLocation.address.name}\n \n {`${Utils.formatCurrency(\n Utils.calculatePrice(\n item?.offering,\n item?.addons,\n item?.discountPercentage,\n item?.vouchers?.items\n ).totalPrice,\n item?.offering?.priceCurrency\n )}`}\n {/* { paymentIssue &&\n {i18n.t(\"Payment Failed\")}\n } */}\n \n {/* */}\n \n \n navigation.navigate('Order', {\n serviceOrder: item,\n })\n }\n >\n {i18n.t('View')}\n \n\n {paymentIssue && Utils.isUserCustomer(user) && (\n (\n \n )}\n buttonColor={theme.colors.error}\n textColor={theme.colors.onError}\n testID={`RetryPayment_${item.id}`}\n onPress={() =>\n navigation.navigate('Payment on-session', {\n serviceOrder: item,\n })\n }\n >\n {i18n.t('Retry Payment')}\n \n )}\n\n {!paymentIssue && Utils.isUserCustomer(user) && (\n }\n testID={`RepeatOrder_${item.id}`}\n onPress={() =>\n navigation.navigate('Select Service', {\n ...Utils.getSelectServiceOrderParams(\n item\n ),\n isExtraDirty: false,\n })\n }\n >\n {i18n.t('Repeat Order')}\n \n )}\n \n \n )\n}\nexport default withTheme(ServiceOrderCard)\n","import { useMemo } from 'react';\nimport { FlashList } from \"@shopify/flash-list\";\nimport ServiceOrderCard from './ServiceOrderCard'\nimport i18n from 'i18n-js'\nimport {\n List,\n withTheme,\n} from 'react-native-paper'\nimport { View } from 'react-native'\nconst moment = require('moment-timezone')\n\nconst ServiceOrderCardAccordion = ({ theme, groupName, value, user }) => {\n const groupColors = {\n PAYMENT_ISSUE: theme.colors.error,\n STARTED: theme.colors.primary,\n UPCOMING: theme.colors.primary,\n PAST: theme.colors.primary,\n }\n\n const sortedData = useMemo(() => {\n return value.sort((a, b) =>\n (a?.assignments?.items?.[0]?.startDate\n ? moment(a?.assignments?.items?.[0]?.startDate)\n : moment(a.carAvailableFrom)) <\n (b?.assignments?.items?.[0]?.startDate\n ? moment(b?.assignments?.items?.[0]?.startDate)\n : moment(b.carAvailableFrom))\n ? 1\n : -1\n );\n }, [value]);\n\n return (\n 1 ? ' (' + value?.length + ')' : ''\n }`}\n id={groupName}\n testID={`groupedServiceOrdersSorted${groupName}`}\n //left={props => }\n key={groupName}\n titleStyle={{ color: groupColors[groupName] }}\n >\n \n `ServiceOrderCard-${item.id}`}\n renderItem={({ item, index }) => (\n \n )}\n />\n \n \n )\n}\nexport default withTheme(ServiceOrderCardAccordion)\n","var _defs, _use, _use2, _use3, _use4, _use5, _use6, _use7, _use8, _use9, _use10, _use11, _use12, _use13, _use14, _use15, _use16, _use17, _use18, _use19, _use20, _use21, _use22, _use23, _use24, _use25, _use26, _use27, _use28, _use29, _use30, _use31, _use32, _use33, _use34, _use35, _use36, _use37, _use38, _use39, _use40, _use41, _use42, _use43, _use44, _use45, _use46, _use47, _use48, _use49, _use50, _use51, _use52, _use53, _use54, _use55, _use56, _use57, _use58, _use59, _use60, _use61, _use62, _use63, _use64, _use65, _use66, _use67, _use68;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgWelcome = function SvgWelcome(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: 220,\n height: 150\n }, props), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__a\",\n d: \"M188.42 77.36c-.9-.46-1.81-.91-2.71-1.21 1.81-6.47-1.05-13.55-6.92-17.01s-13.4-2.41-18.22 2.26c-.75-.6-1.5-1.2-2.41-1.66-7.22-4.21-16.4-1.8-20.62 5.42-1.95 3.31-2.55 7.08-1.8 10.84-3.61 1.05-6.63 3.46-8.58 6.77a15.016 15.016 0 0 0 5.42 20.62c.9.46 1.8.91 2.86 1.21-1.51 6.47 1.35 13.09 7.07 16.56 2.41 1.35 4.97 2.1 7.68 2.1 2.1 0 4.36-.45 6.32-1.35v18.21c0 3.16-2.56 5.72-5.72 5.72h-31.46c-.45 0-.75.3-.75.75s.3.76.75.76h31.46c4.06 0 7.22-3.32 7.22-7.23v-30.85c0-.16-.15-.46-.15-.61l-8.58-8.58c-.3-.3-.75-.3-1.05 0s-.3.76 0 1.06l8.43 8.43v5.87c-3.31 2.4-7.53 2.56-10.99.6-2.26-1.36-3.91-3.46-4.51-6.02-.61-2.56-.3-5.27 1.05-7.53.15-.3.15-.75-.3-1.05-.3-.15-.75-.15-1.05.3-1.51 2.71-1.96 5.72-1.21 8.73s2.71 5.42 5.27 7.07c1.81 1.06 3.76 1.51 5.72 1.51 2.11 0 4.06-.6 6.02-1.66v3.01c-4.21 2.11-9.18 2.11-13.25-.3-5.41-3.16-7.97-9.48-6.17-15.5v-.6c-.15-.15-.3-.3-.45-.3a14.9 14.9 0 0 1-3.16-1.36c-6.47-3.76-8.58-12.19-4.82-18.66 1.81-3.16 4.82-5.42 8.43-6.32.15 0 .3-.16.45-.31s.15-.45.15-.6c-.9-3.61-.45-7.22 1.36-10.38 3.76-6.48 12.19-8.58 18.66-4.82.91.6 1.81 1.2 2.56 1.96.15.15.3.15.6.15.31 0 .46-.15.61-.3 4.36-4.67 11.44-5.72 16.85-2.56 5.42 3.16 7.98 9.93 6.03 15.95v.6c.15.15.3.31.45.46 1.05.3 2.1.75 3.01 1.35 3.16 1.81 5.42 4.82 6.32 8.28s.45 7.22-1.36 10.23c-1.8 3.17-4.81 5.42-8.42 6.33-.16 0-.31.15-.46.3s-.15.45-.15.6c.91 3.46.45 7.22-1.35 10.38-3.46 5.87-10.99 8.28-17.31 5.57v-2.86c1.65.91 3.46 1.21 5.12 1.21 3.91 0 7.82-1.96 9.93-5.72.15-.3.15-.75-.3-1.06-.3-.15-.9-.15-1.05.31-1.36 2.25-3.47 3.91-6.02 4.51-2.56.6-5.27.3-7.53-1.05h-.15v-6.47c5.42-5.42 8.43-8.43 9.03-9.04.3-.3.3-.75 0-1.05s-.75-.3-1.05 0c-.92.92-8.27 8.26-9.18 9.18-.16.15-.16.3-.16.6v30.86c0 4.06 3.32 7.23 7.23 7.23h38.23c.45 0 .75-.31.75-.76s-.3-.75-.75-.75h-38.23c-3.16 0-5.72-2.56-5.72-5.72v-17.91c6.77 2.71 14.9.15 18.66-6.32 1.96-3.31 2.56-7.08 1.81-10.84 3.16-1.2 6.17-3.61 7.98-6.92 4.21-7.23 1.8-16.41-5.42-20.62\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__b\",\n d: \"M189.32 96.62c.3 0 .45-.15.6-.45 3.16-5.42 1.36-12.49-4.06-15.65-.3-.15-.9-.15-1.05.3-.15.3-.15.75.3 1.05 4.66 2.71 6.32 8.88 3.61 13.55-.3.3-.15.75.15 1.05.15 0 .3.15.45.15\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__c\",\n d: \"M155.31 64.41c.15-.3.15-.75-.31-1.05-2.71-1.51-5.72-1.96-8.73-1.21-3.01.76-5.41 2.71-7.07 5.27-.15.3-.15.75.3 1.05.15 0 .3.16.45.16.3 0 .45-.16.6-.46 1.36-2.25 3.47-3.91 6.02-4.51 2.71-.6 5.42-.15 7.68 1.05.3.15.75.15 1.06-.3\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__d\",\n d: \"M129.42 84.43c-1.51 2.71-1.96 5.72-1.21 8.73s2.71 5.42 5.27 7.07c.15 0 .3.15.45.15.3 0 .45-.15.6-.3.15-.3.15-.75-.3-1.05-2.26-1.35-3.91-3.46-4.51-6.02-.61-2.56-.3-5.27 1.05-7.53.15-.6 0-1.05-.3-1.35-.3-.15-.9-.15-1.05.3\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__e\",\n d: \"M180.14 79.01c.3 0 .45-.15.6-.3 1.51-2.71 1.96-5.72 1.21-8.73-.76-3.01-2.71-5.42-5.27-7.07-5.42-3.17-12.49-1.36-15.66 4.06-.15.3-.15.9.31 1.05.3.15.9.15 1.05-.3 2.71-4.66 8.88-6.32 13.7-3.61 2.25 1.35 3.91 3.46 4.51 6.02s.3 5.27-1.05 7.53c-.3.6-.15 1.05.15 1.2.15 0 .3.15.45.15\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__f\",\n d: \"M155.76 104h.3c.3-.15.45-.45.45-.76V89.7c0-.45-.3-.75-.75-.75s-.76.3-.76.75v11.59c-4.51-4.52-7.02-7.03-7.52-7.53-.3-.3-.75-.3-1.06 0-.3.3-.3.75 0 1.06q.885.9 8.73 9.03c.21.1.41.15.61.15\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__g\",\n d: \"M164.04 104c.15 0 .45 0 .6-.15l9.18-9.19c.3-.3.3-.75 0-1.05s-.75-.3-1.05 0q-.795.78-7.83 7.83V89.85c0-.45-.3-.75-.75-.75-.46 0-.76.3-.76.75v13.54c-.3.16 0 .46.3.61z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__h\",\n d: \"M209.64 36.11c1.81 0 3.16-1.35 3.16-3.16 0-1.8-1.35-3.16-3.16-3.16h-8.73c.15-.6.3-1.2.3-1.95 0-4.37-3.61-7.98-7.97-7.98-1.66 0-3.17.45-4.52 1.35-.75-.75-1.66-1.35-2.71-1.8.3-.76.3-1.66.3-2.41 0-4.67-3.76-8.43-8.43-8.43-4.66 0-8.43 3.76-8.43 8.43v.45c-1.2.45-2.4 1.35-3.16 2.56-.45-.15-1.05-.15-1.5-.15-4.37 0-7.98 3.61-7.98 7.98 0 .6.15 1.35.3 1.95h-2.86c-1.8 0-3.16 1.36-3.16 3.16.15 1.81 1.51 3.16 3.31 3.16zm-51.48-4.96c.31 0 .46-.15.61-.3s.15-.46.15-.61c-.3-.75-.45-1.5-.45-2.4 0-3.62 3.01-6.63 6.62-6.63.6 0 1.05 0 1.65.15.31 0 .61 0 .76-.3.6-1.2 1.8-2.11 3.16-2.56.3-.15.6-.45.45-.75v-.9c0-3.77 3.16-6.93 6.92-6.93 3.77 0 6.93 3.16 6.93 6.93 0 .9-.15 1.8-.45 2.56v.6l.45.45c1.2.45 2.25 1.05 3.16 2.11.3.3.75.3 1.05.15 1.21-.91 2.56-1.51 4.07-1.51 3.61 0 6.62 3.01 6.62 6.63 0 .9-.15 1.65-.45 2.4-.15.15 0 .46 0 .61.15.15.3.3.6.3h9.63c.9 0 1.81.75 1.81 1.8 0 .91-.75 1.81-1.81 1.81H154.4c-.9 0-1.8-.75-1.8-1.81 0-1.05.75-1.8 1.8-1.8z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__i\",\n d: \"M39.71 19.41v-8.88c0-.31-.3-.46-.45-.46-.3 0-.46.31-.46.46v8.88c-.15.15.16.45.46.45s.45-.3.45-.45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__j\",\n d: \"M38.65 53.87c0 .31.31.46.46.46.3 0 .45-.3.45-.46v-8.88c0-.3-.3-.45-.45-.45s-.46.3-.46.45z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__k\",\n d: \"M61.38 32.2c0-.3-.3-.45-.45-.45h-8.88c-.3 0-.45.3-.45.45 0 .3.3.45.45.45h8.88q.45-.3.45-.45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__l\",\n d: \"M16.98 32.2c0 .3.3.45.45.45h8.88c.3 0 .45-.3.45-.45 0-.3-.3-.45-.45-.45h-8.88q-.45.3-.45.45\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__m\",\n d: \"M48.29 23.62c.15 0 .3 0 .3-.15l6.32-6.32c.15-.15.15-.6 0-.75s-.6-.15-.75 0l-6.32 6.32c-.15.15-.15.6.15.75.15.15.24.12.3.15\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__n\",\n d: \"m29.77 40.93-6.32 6.32c-.15.15-.15.6 0 .75.15.16.3.16.3.16.15 0 .3 0 .3-.16.64-.63 5.69-5.69 6.33-6.32.3-.15.3-.6.15-.75s-.61-.15-.76 0\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__o\",\n d: \"M54.91 48c.15-.15.15-.6 0-.75l-6.32-6.32c-.15-.15-.6-.15-.75 0s-.15.6 0 .75L54.16 48c.15 0 .3.16.45.16s.3 0 .3-.16\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__p\",\n d: \"M30.07 23.62c.16 0 .31 0 .31-.15.15-.15.15-.6 0-.75-.64-.63-5.69-5.69-6.33-6.32-.15-.15-.6-.15-.75 0s-.15.6 0 .75l6.47 6.32z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__q\",\n d: \"M44.83 20.61c.24-.54 1.44-3.25 3.61-8.13 1.08-2.53 1.68-3.93 1.8-4.21.15-.3 0-.6-.3-.75-.3-.16-.6 0-.75.3-.29.66-1.75 3.97-4.36 9.93-.64 1.54-.99 2.39-1.06 2.56-.15.3 0 .6.3.75.15-.15.3-.15.3-.15.15 0 .46-.15.46-.3\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__r\",\n d: \"M51.15 27.99h.15l2.56-1.06 5.41-2.11.31-.15c2.61-.99 4.07-1.54 4.36-1.65.3-.15.45-.45.3-.75s-.45-.46-.75-.3l-4.67 1.8c-4.78 1.9-7.44 2.95-7.97 3.16-.15.15-.31.45-.15.75.15.16.3.31.45.31\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__s\",\n d: \"M29.17 56.58c.29-.66 1.75-3.97 4.37-9.93.63-1.54.98-2.39 1.05-2.56.15-.3 0-.6-.3-.75s-.6 0-.75.3c-.24.54-1.45 3.25-3.62 8.13-1.08 2.53-1.68 3.93-1.8 4.21-.15.3 0 .6.3.75.15.16.15.16.3.16s.45-.16.45-.31\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__t\",\n d: \"M63.94 43.04c.15-.3 0-.6-.3-.76-.28-.12-1.69-.72-4.21-1.8l-4.37-1.96-1.35-.6c-1.54-.63-2.39-.98-2.56-1.05-.3-.15-.61 0-.76.3s0 .6.31.75c.25.11 1.5.66 3.76 1.66 5.15 2.25 8.01 3.51 8.58 3.76h.45c.15 0 .45-.15.45-.3\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__u\",\n d: \"m19.09 23.92 8.12 3.61h.16c.15 0 .45-.15.45-.3.15-.3 0-.6-.3-.75-.17-.07-1.03-.42-2.56-1.05-5.96-2.62-9.27-4.08-9.94-4.37-.3-.15-.6 0-.75.3s0 .61.3.76z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__v\",\n d: \"m14.57 42.44 4.52-1.66c4.96-1.99 7.72-3.09 8.28-3.31.3-.15.45-.45.3-.75-.15-.31-.46-.46-.76-.31-.17.07-1.02.43-2.56 1.06-6.05 2.35-9.41 3.65-10.08 3.91-.3.15-.45.45-.3.75.3.15.45.31.6.31\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__w\",\n d: \"M46.78 52.67c1 2.62 1.55 4.07 1.66 4.37.15.15.3.3.45.3h.15c.3-.15.45-.45.3-.76-.22-.56-1.32-3.37-3.31-8.42-.99-2.53-1.55-3.94-1.66-4.22-.15-.3-.45-.45-.75-.3s-.45.45-.3.75c.07.17.42 1.03 1.05 2.56l.76 1.66z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__x\",\n d: \"M34.14 20.46c.15.15.3.3.45.3h.15c.3-.15.45-.45.3-.75-.22-.55-1.32-3.31-3.31-8.28-.99-2.62-1.55-4.07-1.66-4.37-.15-.3-.45-.45-.75-.3s-.45.46-.3.76c.27.67 1.63 4.03 4.06 10.08.64 1.54.99 2.39 1.06 2.56\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__y\",\n d: \"M31.88 24.98c-8.13 10.53 4.06 22.72 14.6 14.6 8.13-10.69-3.91-22.73-14.6-14.6m.75.75c9.64-7.38 20.47 3.46 13.1 13.09-9.48 7.38-20.32-3.61-13.1-13.09\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__z\",\n d: \"M45.58 145.54v1.66H17.13v-1.66z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__A\",\n d: \"M65.45 137.71c-1.21 0-2.11.91-2.11 2.26 0 1.2.9 2.11 2.11 2.11 1.2 0 2.25-.91 2.25-2.11s-1.05-2.26-2.25-2.26\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__B\",\n d: \"M99.31 137.71c-1.2 0-2.26 1.06-2.1 2.26 0 1.2 1.05 2.11 2.25 2.11 1.21 0 2.26-.91 2.26-2.11-.15-1.2-1.2-2.26-2.41-2.26\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__C\",\n d: \"M125.5 124.77h-9.03c-.75 0-1.5.6-1.5 1.5 0 .76.6 1.51 1.5 1.51h9.03c.76 0 1.51-.6 1.51-1.51 0-.9-.75-1.5-1.51-1.5\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__D\",\n d: \"M48.74 124.77h-9.03c-.75 0-1.51.6-1.51 1.5 0 .76.6 1.51 1.51 1.51h9.03c.75 0 1.5-.6 1.5-1.51 0-.9-.6-1.5-1.5-1.5\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__E\",\n d: \"M60.93 111.82c.6-.45.75-1.5.15-2.1-.57-.7-5.15-6.23-5.72-6.93-.45-.6-1.5-.75-2.11-.15-.6.45-.75 1.51-.15 2.11l5.72 6.92c1.01.51 1.71.56 2.11.15\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__F\",\n d: \"M102.32 111.82c3.62-4.06 5.62-6.32 6.02-6.77.61-.6.46-1.5-.15-2.11-.6-.6-1.5-.45-2.1.15-.61.68-5.42 6.1-6.02 6.78-.61.6-.46 1.5.15 2.1.75.46 1.65.46 2.1-.15\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__G\",\n d: \"M108.34 138.62c-.9 0-1.35-.15-1.65-1.06-1.81-5.12-8.28-6.92-12.5-3.16-1.05.9-1.5 2.26-2.4 3.46-.3.3-.76.91-1.06.91h-16.7c-.76 0-.91-.46-1.06-.61-1.05-2.86-2.86-4.81-5.87-5.41-3.76-.91-7.67 1.05-8.88 4.81-.6 1.66-1.65 1.21-2.71 1.21-1.2 0-1.95-.46-2.11-1.51-.15-1.5-.3-3.01 0-4.51.46-1.96.91-3.47 1.66-5.27.3-.6.75-1.06 1.51-1.06h45.3c4.22 0 9.33 3.92 9.94 7.53.6 2.26-1.06 4.52-3.47 4.67m-9.03 6.32c-2.71 0-4.81-2.11-4.96-4.82 0-2.71 2.1-4.97 4.81-4.97s4.97 2.26 4.97 4.82c.15 2.71-2.11 4.97-4.82 4.97m-33.71 0c-2.71 0-4.97-2.11-4.97-4.82s2.11-4.97 4.82-4.97 4.96 2.26 4.96 4.82c0 2.71-2.1 4.97-4.81 4.97m8.58-31.76c1.05 0 1.5.3 1.5 1.35v7.68c0 .75-.15 1.2-1.05 1.2H57.32c3.91-6.02 9.33-9.93 16.86-10.23m4.96.45c8.58.45 13.85 4.06 19.27 9.78H79.59c-.75 0-.9-.45-1.05-.75v-8.58q.15-.45.6-.45m25.74 10.39c-.9-.31-1.8-.91-2.56-1.51-7.67-7.37-13.09-11.89-24.98-12.19-1.36-.15-6.63.45-8.43.9-6.93 1.66-11.44 6.17-14.9 11.89-2.26 3.92-3.92 8.13-3.77 12.8 0 2.86 1.51 4.81 3.77 5.42.9.15 1.8.15 2.71.15.75 0 1.05.3 1.35.9 1.2 3.31 3.91 5.27 7.38 5.27 3.46 0 6.32-1.96 7.37-5.27.3-.75.6-1.05 1.51-1.05h15.65c1.05 0 1.51.15 1.81 1.2 1.05 3.16 4.06 4.97 7.37 4.97s6.17-1.96 7.23-5.12c.3-1.05.75-1.21 1.8-1.21 3.01 0 5.57-2.1 6.32-5.11.76-3.46-.6-6.32-3.16-8.58-1.65-1.51-4.06-2.56-6.47-3.46\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n id: \"welcome_svg__H\",\n d: \"M79.59 96.77v9.03c0 .76.61 1.51 1.51 1.51.75 0 1.51-.6 1.51-1.51v-9.03c0-.75-.61-1.5-1.51-1.5s-1.51.6-1.51 1.5\"\n }))), _use || (_use = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__a\",\n fill: \"#76b72a\"\n })), _use2 || (_use2 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__a\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use3 || (_use3 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__b\",\n fill: \"#76b72a\"\n })), _use4 || (_use4 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__b\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use5 || (_use5 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__c\",\n fill: \"#76b72a\"\n })), _use6 || (_use6 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__c\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use7 || (_use7 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__d\",\n fill: \"#76b72a\"\n })), _use8 || (_use8 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__d\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use9 || (_use9 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__e\",\n fill: \"#76b72a\"\n })), _use10 || (_use10 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__e\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use11 || (_use11 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__f\",\n fill: \"#76b72a\"\n })), _use12 || (_use12 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__f\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use13 || (_use13 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__g\",\n fill: \"#76b72a\"\n })), _use14 || (_use14 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__g\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use15 || (_use15 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__h\",\n fill: \"#76b72a\"\n })), _use16 || (_use16 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__h\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use17 || (_use17 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__i\",\n fill: \"#76b72a\"\n })), _use18 || (_use18 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__i\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use19 || (_use19 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__j\",\n fill: \"#76b72a\"\n })), _use20 || (_use20 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__j\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use21 || (_use21 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__k\",\n fill: \"#76b72a\"\n })), _use22 || (_use22 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__k\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use23 || (_use23 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__l\",\n fill: \"#76b72a\"\n })), _use24 || (_use24 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__l\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use25 || (_use25 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__m\",\n fill: \"#76b72a\"\n })), _use26 || (_use26 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__m\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use27 || (_use27 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__n\",\n fill: \"#76b72a\"\n })), _use28 || (_use28 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__n\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use29 || (_use29 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__o\",\n fill: \"#76b72a\"\n })), _use30 || (_use30 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__o\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use31 || (_use31 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__p\",\n fill: \"#76b72a\"\n })), _use32 || (_use32 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__p\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use33 || (_use33 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__q\",\n fill: \"#76b72a\"\n })), _use34 || (_use34 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__q\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use35 || (_use35 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__r\",\n fill: \"#76b72a\"\n })), _use36 || (_use36 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__r\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use37 || (_use37 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__s\",\n fill: \"#76b72a\"\n })), _use38 || (_use38 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__s\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use39 || (_use39 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__t\",\n fill: \"#76b72a\"\n })), _use40 || (_use40 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__t\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use41 || (_use41 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__u\",\n fill: \"#76b72a\"\n })), _use42 || (_use42 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__u\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use43 || (_use43 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__v\",\n fill: \"#76b72a\"\n })), _use44 || (_use44 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__v\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use45 || (_use45 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__w\",\n fill: \"#76b72a\"\n })), _use46 || (_use46 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__w\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use47 || (_use47 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__x\",\n fill: \"#76b72a\"\n })), _use48 || (_use48 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__x\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use49 || (_use49 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__y\",\n fill: \"#76b72a\"\n })), _use50 || (_use50 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__y\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use51 || (_use51 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__z\",\n fill: \"#76b72a\"\n })), _use52 || (_use52 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__z\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use53 || (_use53 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__A\",\n fill: \"#70b52c\"\n })), _use54 || (_use54 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__A\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use55 || (_use55 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__B\",\n fill: \"#70b52c\"\n })), _use56 || (_use56 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__B\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use57 || (_use57 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__C\",\n fill: \"#70b52c\"\n })), _use58 || (_use58 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__C\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use59 || (_use59 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__D\",\n fill: \"#70b52c\"\n })), _use60 || (_use60 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__D\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use61 || (_use61 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__E\",\n fill: \"#70b52c\"\n })), _use62 || (_use62 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__E\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use63 || (_use63 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__F\",\n fill: \"#70b52c\"\n })), _use64 || (_use64 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__F\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use65 || (_use65 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__G\",\n fill: \"#70b52c\"\n })), _use66 || (_use66 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__G\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })), _use67 || (_use67 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__H\",\n fill: \"#70b52c\"\n })), _use68 || (_use68 = /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#welcome_svg__H\",\n fillOpacity: 0,\n stroke: \"#000\",\n strokeOpacity: 0\n })));\n};\nexport default SvgWelcome;","import React, { useEffect, useState, useRef, createRef, useMemo } from 'react'\nimport { useQuery } from '@apollo/client'\nimport { FlashList } from \"@shopify/flash-list\";\nimport * as Device from 'expo-device';\nimport {\n View,\n StyleSheet,\n SafeAreaView,\n ScrollView,\n Animated,\n Platform,\n} from 'react-native'\nimport gql from 'graphql-tag'\nimport {\n DefaultTheme,\n Button,\n ToggleButton,\n List,\n Text,\n Title,\n Surface,\n Chip,\n FAB,\n Subheading,\n ActivityIndicator,\n IconButton,\n withTheme,\n} from 'react-native-paper'\nimport { Ionicons } from '@expo/vector-icons'\nimport { StatusBar } from 'expo-status-bar'\nimport i18n from 'i18n-js'\nimport Utils from './Utils'\nimport useCancellablePromise from './CancelablePromiseHook'\nimport { LayoutAnimation, Dimensions, UIManager } from 'react-native'\nimport * as StoreReview from 'expo-store-review'\nimport { useUser, AUTHENTICATED } from './contexts/UserContext'\nimport CalendarComponent from './CalendarComponent'\nimport ServiceOrderCardAccordion from './ServiceOrderCardAccordion'\nimport { Marker, Callout } from 'react-native-maps'\nimport WelcomeImage from '../assets/welcome.svg'\nconst moment = require('moment-timezone')\nlet MapView, PROVIDER_GOOGLE, AnimatedRegion\nAnimatedRegion = require('react-native-maps').AnimatedRegion\nMapView = require('react-native-maps').default\n//PROVIDER_GOOGLE = require('react-native-maps').PROVIDER_GOOGLE;\n\n/* ----------------------------- DocumentNodes ----------------------------- */\n\nconst LIST_SERVICEORDERS_BY_OWNER = gql(Utils.listServiceOrdersByOwner)\nconst LIST_SERVICEORDERS_BY_AREAS_AND_FACILITIES = gql(Utils.listServiceOrdersByAreasAndFacilities)\nif (Platform.OS === 'android') {\n if (UIManager.setLayoutAnimationEnabledExperimental) {\n UIManager.setLayoutAnimationEnabledExperimental(true)\n }\n}\n\n//const ON_UPDATE_SERVICEORDER = gql(subscriptions.onUpdateServiceOrder)\nconst ON_UPDATE_SERVICEORDER = gql(`\nsubscription OnUpdateServiceOrder($owner: String) {\n onUpdateServiceOrder(owner: $owner) {\n id\n groupOrderID\n state\n stateReason\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n owner\n areaName\n serviceFacilityID\n carAvailableFrom\n carAvailableUntil\n offeringID\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n addons {\n addonID\n quantity\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n}`)\n\nconst ON_UPDATE_SERVICEORDER_BY_AREA = gql(`\nsubscription OnUpdateServiceOrderByAreaName($areaName: String) {\n onUpdateServiceOrderByAreaName(areaName: $areaName) {\n id\n groupOrderID\n state\n stateReason\n paymentMethodID\n paymentIntentID\n paymentIntentStatus\n owner\n areaName\n serviceFacilityID\n carAvailableFrom\n carAvailableUntil\n offeringID\n offering {\n id\n carTypeCategoryID\n addonOptions {\n addons {\n items {\n price\n taskType {\n id\n name\n }\n id\n priceCurrency\n }\n }\n id\n }\n productID\n product {\n id\n productCategoryID\n productCategory {\n id\n name\n description\n createdAt\n updatedAt\n }\n productPackageID\n productPackage {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n price\n priceCurrency\n offeredFrom\n offeredUntil\n areaNames\n createdAt\n updatedAt\n owner\n }\n addons {\n addonID\n quantity\n }\n vouchers {\n items {\n id\n type\n state\n owner\n serviceOrderID\n validFrom\n validUntil\n validCarPlate\n validAreaName\n serviceFacilityID\n value\n valueUsed\n valueCurrency\n percentage\n createdAt\n updatedAt\n }\n nextToken\n }\n }\n}\n`)\n\nconst ON_CREATE_SERVICEORDER = gql(Utils.onCreateServiceOrder)\nconst ON_CREATE_SERVICEORDER_BY_AREA = gql(Utils.onCreateServiceOrderByAreaName)\nconst GET_AREA_NAMES = gql(`\n query AreaNamesAtProviderCompany($providerID: ID!, $today: String!) {\n employmentByProvider(providerID: $providerID, filter: {validFrom: {lt: $today}, validUntil: {gt: $today}}) {\n nextToken\n items {\n id\n company {\n id\n franchiseContracts(filter: {validFrom: {lt: $today}, validUntil: {gt: $today}}) {\n items {\n id\n areaNames\n }\n }\n serviceFacilityOwnerships(filter: {validFrom: {lt: $today}, validUntil: {gt: $today}}) {\n items {\n serviceFacility {\n name\n id\n }\n }\n }\n }\n }\n }\n }\n`)\n/* -------------------------- Cache Update Handler -------------------------- */\n\n/* -------------------------------- Component ------------------------------- */\n\nconst ServiceOrdersComponent = ({ route, navigation, theme }) => {\n const [dimensions, setDimensions] = useState({\n window: Dimensions.get('window'),\n screen: Dimensions.get('screen'),\n })\n const onDimensionsChange = ({ window, screen }) => {\n setDimensions({ window, screen })\n }\n\n const barHeightAnimation = useRef(new Animated.Value(50)).current\n const orderStates = [\n 'SUBMITTED',\n 'ACCEPTED',\n 'SOS',\n 'PRESTARTED',\n 'STARTED',\n 'FINISHED',\n 'FAILED',\n 'PENDING_WITH_CUSTOMER',\n 'CANCELLED',\n ]\n const [stateFilterSelection, setStateFilterSelection] = useState([])\n\n const { cancellablePromise } = useCancellablePromise()\n const groupSortingOrder = ['PAYMENT_ISSUE', 'STARTED', 'UPCOMING', 'PAST']\n\n\n const {\n state: { user, authStatus }\n } = useUser();\n const isUserAuthenticated = authStatus == AUTHENTICATED\n const unsubscribeServiceOrderUpdatesRef = useRef(null)\n const unsubscribeServiceOrderCreatesRef = useRef(null)\n const [viewMode, setViewMode] = useState(null)\n\n const { data: areaNamesData, error: queryErrorAreaNames } = useQuery(\n GET_AREA_NAMES,\n {\n variables: {\n providerID: user?.username,\n today: moment().format('YYYY-MM-DD'),\n },\n fetchPolicy: 'cache-and-network',\n skip: !Utils.isUserProvider(user),\n }\n )\n\n const areaNames = useMemo(() => \n areaNamesData?.employmentByProvider?.items.reduce(\n (prev, curr) =>\n prev.concat(\n curr?.company?.franchiseContracts.items.reduce(\n (prev, curr) => prev.concat(curr.areaNames),\n []\n )\n ),\n []\n ) || [],\n [areaNamesData]\n );\n \n const serviceFacilities =\n areaNamesData?.employmentByProvider?.items.reduce(\n (prev, curr) =>\n prev.concat(\n curr?.company?.serviceFacilityOwnerships.items.reduce(\n (prev, curr) =>\n prev.concat({\n id: curr.serviceFacility.id,\n name: curr.serviceFacility.name,\n type: 'FACILITY',\n }),\n []\n )\n ),\n []\n ) || []\n\n const partnerWithActiveEmployment = ((areaNames?.length > 0) || (serviceFacilities?.length > 0))\n const areaNamesAndFacilities = [\n ...[...areaNames]\n .sort((a, b) => a.localeCompare(b))\n .map((area) => {\n return { id: `AREA_${area}`, name: area, type: 'AREA' }\n }),\n ...[...serviceFacilities]\n .sort((a, b) => a?.name.localeCompare(b?.name))\n .map((facility) => {\n return {\n id: `FACILITY_${facility.id}`,\n name: facility.name,\n type: 'FACILITY',\n }\n }),\n ]\n\n\n const LIST_SERVICEORDERS = Utils.isCustomerApp()\n ? LIST_SERVICEORDERS_BY_OWNER\n : LIST_SERVICEORDERS_BY_AREAS_AND_FACILITIES\n\n const variables = Utils.isCustomerApp()\n ? {\n owner: user?.username,\n sortDirection: 'DESC',\n limit: 50,\n }\n : { stateFilterSelection: stateFilterSelection }\n\n const listServiceOrdersQueryName = Utils.isCustomerApp()\n ? 'listServiceOrdersByOwner'\n : 'listServiceOrdersByAreasAndFacilities'\n const {\n data,\n loading: queryLoading,\n error: queryError,\n subscribeToMore,\n refetch,\n } = useQuery(LIST_SERVICEORDERS, {\n variables: variables,\n fetchPolicy: 'cache-and-network',\n skip: !(\n Utils.isUserCustomer(user) ||\n (Utils.isUserProvider(user) && areaNames && areaNames.length > 0) ||\n (Utils.isUserProvider(user) &&\n serviceFacilities &&\n serviceFacilities.length > 0)\n ),\n // onCompleted: () => {\n // if(!unsubscribeServiceOrderUpdates && !!user?.username) {\n // subscribeToServiceOrderUpdates()\n // }\n\n // if(!unsubscribeServiceOrderCreates && !!user?.username) {\n // subscribeToServiceOrderCreates()\n // }\n // },\n })\n\n useEffect(() => {\n if (Utils.isUserProvider(user) && (areaNames === undefined || areaNames?.length === 0)) {\n return () => { }\n }\n if (!unsubscribeServiceOrderUpdatesRef.current && isUserAuthenticated) {\n subscribeToServiceOrderUpdates()\n }\n if (!unsubscribeServiceOrderUpdatesRef.current && isUserAuthenticated) {\n subscribeToServiceOrderCreation()\n }\n return () => {\n if (unsubscribeServiceOrderUpdatesRef.current) {\n unsubscribeServiceOrderUpdatesRef.current()\n unsubscribeServiceOrderUpdatesRef.current = null\n }\n if (unsubscribeServiceOrderCreatesRef.current) {\n unsubscribeServiceOrderCreatesRef.current()\n unsubscribeServiceOrderCreatesRef.current = null\n }\n }\n }, [])\n\n useEffect(() => {\n if (Utils.isUserProvider(user) && (areaNames === undefined || areaNames?.length === 0)) {\n return () => { }\n }\n if (!unsubscribeServiceOrderUpdatesRef.current && isUserAuthenticated == true) {\n subscribeToServiceOrderUpdates()\n }\n if (!unsubscribeServiceOrderCreatesRef.current && isUserAuthenticated == true) {\n subscribeToServiceOrderCreation()\n }\n return () => {\n if (unsubscribeServiceOrderUpdatesRef.current) {\n unsubscribeServiceOrderUpdatesRef.current()\n unsubscribeServiceOrderUpdatesRef.current = null\n }\n if (unsubscribeServiceOrderCreatesRef.current) {\n unsubscribeServiceOrderCreatesRef.current()\n unsubscribeServiceOrderCreatesRef.current = null\n }\n }\n }, [user?.username, areaNamesData])\n\n const listServiceOrdersData = Utils.isCustomerApp()\n ? data?.[listServiceOrdersQueryName]\n : data\n ? Object.keys(data).reduce(\n (prev, curr) => {\n return {\n items: [\n ...prev?.items,\n ...data?.[curr].items.filter(\n (item) => !prev?.items.find((pitem) => pitem.id == item.id)\n ),\n ],\n }\n },\n { items: [] }\n )\n : undefined\n const [expandedAccordionId, setExpandedAccordionId] = React.useState('')\n const [groupedServiceOrdersSorted, setGroupedServiceOrdersSorted] =\n React.useState([])\n const [showFilterBar, setShowFilterBar] = React.useState(false)\n\n useEffect(() => {\n if (route.params?.expandedAccordionId) {\n setExpandedAccordionId(route.params?.expandedAccordionId)\n }\n }, [route.params?.expandedAccordionId])\n\n const subscribeToServiceOrderUpdates = async (retrying = 50) => {\n if (!subscribeToMore) return\n console.log('subscribeToServiceOrderUpdates started')\n const owner = user?.username\n // console.log(\"subscribeToServiceOrderUpdates owner \" + owner)\n const variableName = Utils.isCustomerApp() ? 'owner' : 'areaName'\n const variableValue = Utils.isCustomerApp()\n ? owner\n : areaNames\n ? areaNames[0]\n : null\n const document = Utils.isCustomerApp()\n ? ON_UPDATE_SERVICEORDER\n : ON_UPDATE_SERVICEORDER_BY_AREA\n const responseFieldName = Utils.isCustomerApp()\n ? 'onUpdateServiceOrder'\n : 'onUpdateServiceOrderByAreaName'\n\n const unsubscribe = subscribeToMore({\n document: document,\n variables: {\n [variableName]: variableValue,\n },\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev\n console.log('subscribeToServiceOrderUpdates updateQuery called')\n //console.log(\"subscribeToServiceOrderUpdates updateQuery called\", subscriptionData.data)\n const itemUpdate = subscriptionData.data[responseFieldName]\n const itemToBeUpdated = prev?.[listServiceOrdersQueryName].items.find(\n (item) => item.id == itemUpdate.id\n )\n const itemUpdated = Object.assign({}, itemToBeUpdated, itemUpdate)\n return Object.assign({}, prev, {\n [listServiceOrdersQueryName]: {\n ...prev?.[listServiceOrdersQueryName],\n items: [\n itemUpdated,\n ...prev?.[listServiceOrdersQueryName].items.filter(\n (item) => item.id != itemUpdate.id\n ),\n ],\n },\n })\n },\n onError: (error) => {\n console.log('Amplify socket', error)\n if (\n error?.errors &&\n error?.errors?.some((element) =>\n element?.message?.toLowerCase().includes('closed')\n )\n ) {\n console.log(`Will attempt to reconnect in ${retrying}ms`)\n setTimeout(\n async () =>\n await cancellablePromise(\n subscribeToServiceOrderUpdates(Math.min(10000, retrying * 2))\n ),\n retrying\n )\n }\n },\n })\n unsubscribeServiceOrderUpdatesRef.current = unsubscribe\n }\n\n const subscribeToServiceOrderCreation = async (retrying = 50) => {\n if (!subscribeToMore) return\n console.log('subscribeToServiceOrderCreation started')\n const owner = user?.username\n\n const variableName = Utils.isCustomerApp() ? 'owner' : 'areaName'\n const variableValue = Utils.isCustomerApp()\n ? owner\n : areaNames\n ? areaNames[0]\n : null\n const document = Utils.isCustomerApp()\n ? ON_CREATE_SERVICEORDER\n : ON_CREATE_SERVICEORDER_BY_AREA\n const responseFieldName = Utils.isCustomerApp()\n ? 'onCreateServiceOrder'\n : 'onCreateServiceOrderByAreaName'\n\n const unsubscribe = subscribeToMore({\n document: document,\n variables: {\n [variableName]: variableValue,\n },\n updateQuery: (prev, { subscriptionData }) => {\n if (!subscriptionData.data) return prev\n console.log('subscribeToServiceOrderCreation updateQuery called')\n const itemUpdate = subscriptionData.data[responseFieldName]\n\n // Check if prev and listServiceOrdersQueryName exist\n if (!prev || !prev[listServiceOrdersQueryName]) {\n // If they don't exist, create a new structure\n return {\n [listServiceOrdersQueryName]: {\n items: [itemUpdate],\n },\n }\n }\n\n const existingItems = prev[listServiceOrdersQueryName].items || []\n const itemToBeUpdated = existingItems.find(\n (item) => item.id === itemUpdate.id\n )\n\n if (itemToBeUpdated) {\n // Update existing item\n const updatedItems = existingItems.map(item =>\n item.id === itemUpdate.id ? { ...item, ...itemUpdate } : item\n )\n return {\n ...prev,\n [listServiceOrdersQueryName]: {\n ...prev[listServiceOrdersQueryName],\n items: updatedItems,\n },\n }\n } else {\n // Add new item\n return {\n ...prev,\n [listServiceOrdersQueryName]: {\n ...prev[listServiceOrdersQueryName],\n items: [itemUpdate, ...existingItems],\n },\n }\n }\n },\n onError: (error) => {\n console.log('Amplify socket', error)\n if (\n error?.errors &&\n error?.errors?.some((element) =>\n element?.message.toLowerCase().includes('closed')\n )\n ) {\n console.log(`Will attempt to reconnect in ${retrying}ms`)\n setTimeout(\n async () =>\n await cancellablePromise(\n subscribeToServiceOrderCreation(Math.min(10000, retrying * 2))\n ),\n retrying\n )\n }\n },\n })\n unsubscribeServiceOrderCreatesRef.current = unsubscribe\n }\n\n const loadPreferences = async (user) => {\n if (Utils.isUserProvider(user)) {\n let storedStateFilterSelection = await Utils.getData(\n '@CleenUp:stateFilterSelection'\n )\n if (storedStateFilterSelection == null) {\n await Utils.storeData('@CleenUp:stateFilterSelection', [])\n storedStateFilterSelection = []\n }\n setStateFilterSelection(storedStateFilterSelection)\n\n let storedViewMode = await Utils.getData('@CleenUp:viewMode')\n if (storedViewMode == null) {\n await Utils.storeData('@CleenUp:viewMode', 'LIST')\n storedViewMode = 'LIST'\n }\n setViewMode(storedViewMode)\n } else {\n setStateFilterSelection([])\n setViewMode('LIST')\n }\n }\n useEffect(() => {\n loadPreferences(user)\n const dimensionsHandler = Dimensions.addEventListener(\n 'change',\n onDimensionsChange\n )\n return () => {\n dimensionsHandler.remove()\n }\n }, [])\n\n useEffect(() => {\n queryErrorAreaNames && console.log('E R R O R: ', queryErrorAreaNames)\n }, [queryErrorAreaNames])\n\n async function requestReview() {\n if (Device.isDevice == false) {\n return\n }\n const isAvailable = await StoreReview.isAvailableAsync()\n if (isAvailable) {\n console.log('review available')\n\n let lastReviewRequestTimestamp = await Utils.getData(\n '@CleenUp:lastReviewRequestTimestamp'\n )\n\n console.log('lastReviewRequestTimestamp:' + lastReviewRequestTimestamp)\n if (lastReviewRequestTimestamp == null) {\n try {\n await Utils.storeData(\n '@CleenUp:lastReviewRequestTimestamp',\n moment().toISOString()\n )\n await StoreReview.requestReview()\n } catch (err) {\n console.log('Error during requesting first StoreReview:' + err)\n }\n } else {\n try {\n const lastReviewRequestTimestampMoment = moment(\n lastReviewRequestTimestamp\n )\n if (moment().diff(lastReviewRequestTimestampMoment, 'days') > 122) {\n console.log('lastReviewRequest was long ago')\n await Utils.storeData(\n '@CleenUp:lastReviewRequestTimestamp',\n moment().toISOString()\n )\n await StoreReview.requestReview()\n } else {\n console.log('lastReviewRequest was not too long ago')\n }\n } catch (err) {\n console.log('invalid lastReviewRequestTimestampMoment:' + err)\n }\n }\n } else {\n console.log('review not available')\n }\n }\n\n useEffect(() => {\n queryError && console.log('E R R O R: ', queryError)\n\n if (Utils.isCustomerApp() && Platform.OS != 'web') {\n try {\n const successfulServiceOrderCount =\n listServiceOrdersData?.items?.filter(\n (item) => item.state == 'FINISHED'\n )?.length\n if (successfulServiceOrderCount >= 1) {\n requestReview()\n }\n console.log(\n 'successfulServiceOrderCount:' + successfulServiceOrderCount\n )\n } catch { }\n }\n\n let groupedServiceOrders = listServiceOrdersData?.items\n ?.filter((item) => {\n if (stateFilterSelection.includes('showOnlyMine')) {\n return item?.assignments?.items?.[0]?.provider?.id == user?.username\n } else {\n return true\n }\n })\n .reduce((groups, item) => {\n if (Utils.isServiceOrderPaymentIssue(item)) {\n return {\n ...groups,\n ['PAYMENT_ISSUE']: [...(groups['PAYMENT_ISSUE'] || []), item],\n }\n } else if (item.state == 'STARTED') {\n return {\n ...groups,\n ['STARTED']: [...(groups['STARTED'] || []), item],\n }\n } else {\n if (\n moment(item.carAvailableUntil) > moment() &&\n item.state != 'CANCELLED' &&\n item.state != 'FAILED' &&\n item.state != 'FINISHED' &&\n item.state != 'RATED'\n ) {\n return {\n ...groups,\n ['UPCOMING']: [...(groups['UPCOMING'] || []), item],\n }\n } else {\n return {\n ...groups,\n ['PAST']: [...(groups['PAST'] || []), item],\n }\n }\n }\n }, {})\n if (groupedServiceOrders) {\n setGroupedServiceOrdersSorted(\n Object.entries(groupedServiceOrders).sort((a, b) =>\n groupSortingOrder.indexOf(a[0]) > groupSortingOrder.indexOf(b[0])\n ? 1\n : -1\n )\n )\n }\n if (Platform.OS == 'web' && window.google) {\n const bounds = new window.google.maps.LatLngBounds()\n if (listServiceOrdersData?.items) {\n listServiceOrdersData?.items\n .map((item) => {\n return {\n lat: item.carLocation.coordinates.latitude,\n lng: item.carLocation.coordinates.longitude,\n }\n })\n .forEach((item) => bounds.extend(item))\n const center = bounds.getCenter()\n const span = bounds.toSpan()\n const region = {\n latitude: center.lat(),\n longitude: center.lng(),\n latitudeDelta: span.lat(),\n longitudeDelta: span.lng(),\n }\n // console.log(region)\n setMarkerRefs(\n Array(listServiceOrdersData?.items.length)\n .fill()\n .map((_, i) => createRef())\n )\n setMapViewRegion(region)\n }\n } else {\n if (mapRef?.current) mapRef.current.fitToElements(true)\n }\n }, [queryError, data, stateFilterSelection.includes('showOnlyMine')])\n\n useEffect(() => {\n if (groupedServiceOrdersSorted.length > 0 && expandedAccordionId == '')\n setExpandedAccordionId(groupedServiceOrdersSorted[0][0])\n }, [groupedServiceOrdersSorted])\n\n const fadeAnimFilterBar = useRef(new Animated.Value(0)).current\n const fadeAnimViewModeButton = useRef(new Animated.Value(1)).current\n const [mapViewRegion, setMapViewRegion] = useState(\n Platform.OS != 'web'\n ? new AnimatedRegion(Utils.regionFrom(47.1611615, 19.5057541, 200 * 1000))\n : Utils.regionFrom(47.1611615, 19.5057541, 200 * 1000)\n )\n\n const [markerRefs, setMarkerRefs] = React.useState([])\n const mapRef = useRef()\n\n const getPreviousAddressesFormatted = () => {\n if (\n !listServiceOrdersData?.items ||\n listServiceOrdersData?.items?.length == 0\n ) {\n return []\n }\n const addresses = listServiceOrdersData?.items.map((item) => {\n return {\n serviceFacilityID: item?.serviceFacilityID,\n description: item?.carLocation.address.name,\n formatted_address: item?.carLocation.address.name,\n address_components: [\n {\n long_name: item?.carLocation?.address?.street,\n short_name: item?.carLocation?.address?.street,\n types: ['route'],\n },\n {\n long_name: item?.carLocation?.address?.district,\n short_name: item?.carLocation?.address?.district,\n types: ['sublocality'],\n },\n {\n long_name: item?.carLocation?.address?.city,\n short_name: item?.carLocation?.address?.city,\n types: ['locality'],\n },\n {\n long_name: item?.carLocation?.address?.country,\n short_name: item?.carLocation?.address?.isoCountryCode,\n types: ['country'],\n },\n {\n long_name: item?.carLocation?.address?.postalCode,\n short_name: item?.carLocation?.address?.postalCode,\n types: ['postal_code'],\n },\n ],\n geometry: {\n location: {\n lat: item?.carLocation?.coordinates?.latitude,\n lng: item?.carLocation?.coordinates?.longitude,\n },\n },\n }\n })\n\n const uniqueAddresses = [\n ...new Map(\n addresses.map((item) => [\n item.geometry.location.lat + item.geometry.location.lng,\n item,\n ])\n ).values(),\n ]\n return uniqueAddresses.slice(0, 10)\n }\n\n return (\n \n \n {Utils.isUserProvider(user) && (\n \n \n \n \n \n {stateFilterSelection && stateFilterSelection.length > 0\n ? i18n.t('Showing filtered results')\n : i18n.t('No filters applied')}\n \n \n \n \n {\n setStateFilterSelection([])\n await Utils.storeData(\n '@CleenUp:stateFilterSelection',\n []\n )\n }}\n />\n \n\n {/* */}\n \n {queryLoading ? \n :\n (\n \n )}\n iconColor={theme.colors.primary}\n size={20}\n onPress={() => refetch()}\n />\n }\n {\n if (value !== null) {\n await Utils.storeData('@CleenUp:viewMode', value)\n setViewMode(value)\n }\n }}\n value={viewMode}\n >\n \n \n \n \n \n {\n const animation = Animated.parallel([\n Animated.timing(fadeAnimViewModeButton, {\n toValue: showFilterBar ? 1 : 0,\n duration: 500,\n useNativeDriver: true,\n }),\n Animated.timing(fadeAnimFilterBar, {\n toValue: showFilterBar ? 0 : 1,\n duration: 500,\n useNativeDriver: true,\n }),\n Animated.timing(barHeightAnimation, {\n toValue: showFilterBar ? 50 : 315,\n duration: 400,\n useNativeDriver:\n Platform.OS == 'web' ? true : false,\n }),\n ])\n if (showFilterBar) {\n setShowFilterBar(!showFilterBar)\n animation.start()\n } else {\n setShowFilterBar(!showFilterBar)\n animation.start()\n }\n }}\n />\n \n \n \n\n \n {i18n.t('State')}\n \n {orderStates.map((item) => (\n {\n let newStateFilterSelection\n //console.log(stateFilterSelection)\n if (stateFilterSelection.includes(item))\n newStateFilterSelection = stateFilterSelection.filter(\n (i) => i != item\n )\n else\n newStateFilterSelection = [\n ...stateFilterSelection,\n item,\n ]\n\n setStateFilterSelection(newStateFilterSelection)\n await Utils.storeData(\n '@CleenUp:stateFilterSelection',\n newStateFilterSelection\n )\n }}\n >\n {i18n.t(item)}\n \n ))}\n \n {i18n.t('Assignment')}\n \n {\n const item = 'showOnlyMine'\n let newStateFilterSelection\n //console.log(stateFilterSelection)\n if (stateFilterSelection.includes(item))\n newStateFilterSelection = stateFilterSelection.filter(\n (i) => i != item\n )\n else\n newStateFilterSelection = [\n ...stateFilterSelection,\n item,\n ]\n\n setStateFilterSelection(newStateFilterSelection)\n await Utils.storeData(\n '@CleenUp:stateFilterSelection',\n newStateFilterSelection\n )\n }}\n >\n {i18n.t('Assigned to me')}\n \n \n {`${i18n.t('Area')} & ${i18n.t(\n 'Fix wash'\n )}`}\n \n \n {areaNamesAndFacilities.map((item, index) => (\n \n {\n let newStateFilterSelection\n //console.log(stateFilterSelection)\n if (stateFilterSelection.includes(item.id))\n newStateFilterSelection =\n stateFilterSelection.filter((i) => i != item.id)\n else\n newStateFilterSelection = [\n ...stateFilterSelection,\n item.id,\n ]\n\n setStateFilterSelection(newStateFilterSelection)\n await Utils.storeData(\n '@CleenUp:stateFilterSelection',\n newStateFilterSelection\n )\n }}\n >\n {item?.name}\n \n \n ))}\n \n \n \n \n \n \n )}\n {/* {JSON.stringify(areaNamesData)}\n {JSON.stringify(areaNamesFilter)}\n {JSON.stringify([listServiceOrdersQueryName]Variables)} */}\n {/* {JSON.stringify(user)} */}\n {viewMode == 'CALENDAR' ? (\n \n \n \n ) : viewMode == 'LIST' ? (\n \n \n {route?.params?.newServiceOrderId}\n \n\n {\n if (expandedAccordionId == expandedId) {\n setExpandedAccordionId(null)\n } else {\n setExpandedAccordionId(expandedId)\n }\n LayoutAnimation.easeInEaseOut()\n }}\n >\n \n refetch()}\n refreshing={queryLoading}\n estimatedItemSize={1000}\n keyExtractor={([key]) => `ServiceOrderCardAccordion-${key}`}\n renderItem={({ item: [key, value] }) => (\n \n )}\n ListFooterComponent={}\n />\n \n \n \n ) : viewMode == 'MAP' ? (\n Platform.OS == 'web' ? (\n setMapViewRegion(Utils.regionFrom(center.latitude, center.longitude,500))}\n >\n {listServiceOrdersData?.items.map((item, i) => (\n {\n markerRefs.forEach((markerRef) =>\n markerRef.current.hideCallout()\n )\n markerRefs[i].current.showCallout()\n }}\n >\n \n \n {`${item?.car?.plate} ${item?.car?.carType?.make} ${item?.car?.carType?.model}`}\n {`${item?.offering?.product?.productPackage?.name\n } - ${i18n.t(\n item?.offering?.product?.productCategory?.name\n )}`}\n \n {i18n.t(item.state)}\n \n {`${moment(item.carAvailableFrom).format(\n 'L LT'\n )} - ${moment(item.carAvailableUntil).format(\n 'L LT'\n )}`}\n \n {item.carLocation.address.name}\n \n {`${Utils.formatCurrency(\n Utils.calculatePrice(\n item?.offering,\n item?.addons,\n item?.discountPercentage,\n item?.vouchers?.items\n ).totalPrice,\n item?.offering?.priceCurrency\n )}`}\n \n navigation.navigate('Order', {\n serviceOrder: item,\n })\n }\n >\n {i18n.t('View')}\n \n \n \n \n ))}\n \n ) : (\n \n mapViewRegion.setValue(region)}\n ref={mapRef}\n customMapStyle={theme.googleMapsStyle}\n onMapReady={() => mapRef.current.fitToElements(true)}\n showsPointsOfInterest={false}\n >\n {listServiceOrdersData?.items.map((item, i) => (\n markerRefs[i].current.showCallout()}\n >\n \n navigation.navigate('Order', {\n serviceOrder: item,\n })\n }\n >\n \n {`${item?.car?.plate} ${item?.car?.carType?.make} ${item?.car?.carType?.model}`}\n {`${item?.offering?.product?.productPackage?.name\n } - ${i18n.t(\n item?.offering?.product?.productCategory?.name\n )}`}\n \n {i18n.t(item.state)}\n \n {`${moment(item.carAvailableFrom).format(\n 'L LT'\n )} - ${moment(item.carAvailableUntil).format(\n 'L LT'\n )}`}\n \n {item.carLocation.address.name}\n \n {`${Utils.formatCurrency(\n item?.offering?.price,\n item?.offering?.priceCurrency\n )}`}\n {/* */}\n \n \n \n ))}\n \n \n )\n ) : null}\n\n {((data &&\n listServiceOrdersData &&\n listServiceOrdersData.items.length == 0) || !isUserAuthenticated) &&\n Utils.isCustomerApp() && (\n \n\n \n \n \n\n \n {i18n.t('No Orders')}\n \n \n {i18n.t('Order Now')}\n \n \n )}\n {Utils.isUserProvider(user) &&\n areaNamesData?.employmentByProvider?.items.length == 0 && (\n \n \n {i18n.t('No company assignment')}\n \n \n )}\n {Utils.isUserCustomer(user) && (\n \n {\n Utils.analyticsLogEvent('NewOrderButtonTapped')\n //navigation.navigate(\"Timeslot Picker\")\n navigation.navigate('Select Location', {\n previousAddresses: getPreviousAddressesFormatted(),\n })\n }}\n testID={'New Order'}\n />\n \n )}\n {Utils.isUserProvider(user) && partnerWithActiveEmployment && (\n \n {\n Utils.analyticsLogEvent('NewOrderForCustomerButtonTapped')\n //navigation.navigate(\"Timeslot Picker\")\n navigation.navigate('Select Customer', {\n previousAddresses: getPreviousAddressesFormatted(),\n })\n }}\n testID={'New Order for Customer'}\n />\n \n )}\n \n )\n}\n\nconst styles = StyleSheet.create({\n fab: {\n position: 'absolute',\n margin: 16,\n left: 0,\n right: 0,\n bottom: 0,\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 4,\n },\n container: {\n flex: 1,\n },\n scrollView: {\n marginHorizontal: 0,\n flex: 1,\n },\n})\n\nexport default withTheme(ServiceOrdersComponent)","import React, { useEffect, useState, useRef } from 'react'\nimport {\n ScrollView,\n StyleSheet,\n View,\n TouchableWithoutFeedback,\n Dimensions,\n ActivityIndicator,\n SafeAreaView,\n Platform,\n} from 'react-native'\n// @ts-ignore\n//import Modal from 'react-native-modal';\nimport {\n Button,\n withTheme,\n Text,\n Caption,\n Title,\n Appbar,\n} from 'react-native-paper'\n\nimport { Ionicons } from '@expo/vector-icons'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\nimport Modal from 'react-native-modal'\nimport { Picker } from '@react-native-picker/picker'\nconst screenWidth = Dimensions.get('window').width\n\nconst SelectCompanyModal = ({\n theme,\n isLoading,\n companiesAssociated,\n ...props\n}) => {\n const toggleModal = () => {\n props.setVisible(!props.isVisible)\n }\n const [picker, setPicker] = useState(null)\n\n useEffect(() => {\n if (companiesAssociated?.[0].id) {\n setPicker(companiesAssociated?.[0].id)\n }\n }, [companiesAssociated])\n\n return (\n props.setVisible(false)}\n swipeDirection={Platform.OS == 'android' ? ['down'] : []}\n statusBarTranslucent\n propagateSwipe={false}\n style={{\n justifyContent: 'flex-end',\n margin: 0,\n }}\n customBackdrop={\n props.setVisible(false)}>\n \n \n }\n >\n \n \n \n props.setVisible(false)} />\n \n\n \n setPicker(itemValue)}\n >\n {companiesAssociated?.map((item) => (\n \n ))}\n \n\n {\n props.selectCompany(picker)\n }}\n >\n {i18n.t('Select')}\n \n \n {i18n.t('Cancel')}\n \n \n \n \n )\n}\n\nconst styles = StyleSheet.create({\n modal: {\n justifyContent: 'flex-end',\n margin: 0,\n },\n})\n\nexport default withTheme(SelectCompanyModal)\n","import {\n View,\n } from 'react-native'\n import {\n Caption} from 'react-native-paper'\nimport Constants from 'expo-constants'\n\nconst VersionDisplay: React.FC = () => {\n return (\n \n \n {Constants.expoConfig ? `v${Constants.expoConfig.version} ${Constants.expoConfig.extra?.env || ''}` : ''}\n \n \n );\n};\n\nexport default VersionDisplay;","import { Button } from 'react-native-paper'\nimport React from 'react';\nimport { View, Platform } from 'react-native';\nimport { useNavigation } from '@react-navigation/native';\nimport i18n from 'i18n-js';\n\nconst LegalLinks = () => {\n const navigation = useNavigation();\n\n return (\n \n {\n if (Platform.OS === 'web') {\n window.open('https://cleenup.com/legal/', '_blank');\n } else {\n navigation.navigate('Privacy Policy');\n }\n }}\n >\n {i18n.t('Privacy Policy')}\n \n\n {\n if (Platform.OS === 'web') {\n window.open('https://cleenup.com/legal/', '_blank');\n } else {\n navigation.navigate('Terms and Conditions');\n }\n }}\n >\n {i18n.t('Terms and Conditions')}\n \n \n );\n};\n\nexport default LegalLinks;","import { Auth } from 'aws-amplify'\nimport { useEffect, useState } from 'react'\nimport { useQuery, useMutation } from '@apollo/client'\nimport * as WebBrowser from 'expo-web-browser'\nimport { View, Platform, ScrollView } from 'react-native'\nimport * as Linking from 'expo-linking'\nimport { useUser, AUTHENTICATED } from './contexts/UserContext'\nimport { useApolloClient } from '@apollo/client';\nimport {\n ActivityIndicator,\n Divider,\n ProgressBar,\n List\n} from 'react-native-paper'\nimport {\n useTheme,\n} from '@react-navigation/native'\nimport * as MailComposer from 'expo-mail-composer';\nimport SelectCompanyModal from './SelectCompanyModal'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport gql from 'graphql-tag'\nimport Constants from 'expo-constants'\nimport 'react-native-get-random-values'\nimport 'intl'\nimport * as mutations from '../graphql/mutations.js'\nimport Utils from './Utils'\nimport i18n from 'i18n-js'\nimport LoginPrompt from './components/LoginPrompt';\nimport VersionDisplay from './VersionDisplay'\nimport LegalLinks from './LegalLinks';\nconst moment = require('moment-timezone')\n\nconst GET_COMPANY_INFO = gql(`\n query CompanyInfo($providerID: ID!, $today: String!) {\n employmentByProvider(providerID: $providerID, filter: {validFrom: {lt: $today}, validUntil: {gt: $today}}) {\n nextToken\n items {\n company {\n id\n name\n isoCountryCode\n enableTransferToConnectedAccount\n franchiseContracts(filter: {validFrom: {le: $today}, validUntil: {gt: $today}}) {\n items {\n areaNames\n }\n }\n serviceFacilityOwnerships(filter: {validFrom: {le: $today}, validUntil: {gt: $today}}) {\n items {\n serviceFacility {\n name\n id\n }\n }\n }\n }\n }\n }\n }\n `)\n\nconst CREATE_STRIPE_CONNECTED_ACCOUNT = gql(\n mutations.createStripeConnectedAccount\n)\n\nasync function signOut(client, setSignOutInProgress) {\n try {\n if (setSignOutInProgress) {\n setSignOutInProgress(true)\n }\n\n client.cache.reset()\n await client.resetStore()\n\n await Auth.signOut();\n } catch (error) {\n console.log('Error signing out: ', error);\n }\n finally {\n if (setSignOutInProgress) {\n setSignOutInProgress(false)\n }\n }\n}\n\nconst AccountScreen = ({ navigation }) => {\n\n const url = Linking.useURL()\n\n const {\n state: { user, authStatus },\n dispatch: userDispatch\n } = useUser();\n const {\n data,\n error: _queryError,\n loading: companyInfoQueryLoading,\n } = useQuery(GET_COMPANY_INFO, {\n variables: {\n providerID: user?.username,\n today: moment().format('YYYY-MM-DD'),\n },\n fetchPolicy: 'cache-and-network',\n skip: !(Utils.isUserProvider(user) && user?.username),\n })\n const [signOutInProgress, setSignOutInProgress] = useState(false)\n useEffect(() => {\n const unsubscribe = navigation.addListener('focus', () => {\n Utils.fetchUserBypassCache((user) => {\n userDispatch({ type: \"setUser\", value: user })\n })\n });\n\n return unsubscribe\n }, [navigation])\n\n useEffect(() => {\n if (url?.startsWith('https://appicltd.com/')) {\n WebBrowser.dismissBrowser()\n }\n }, [url])\n\n const phoneNumberString = user?.attributes?.phone_number\n ? `\\n${user?.attributes?.phone_number}`\n : ''\n const userFirstName = user?.attributes?.['custom:first_name']\n const userEmail = user?.attributes?.email\n const companiesAssociated = data?.employmentByProvider?.items.reduce(\n (prev, curr) =>\n prev.concat({\n id: curr?.company?.id,\n name: curr?.company?.name,\n enableTransferToConnectedAccount:\n curr?.company?.enableTransferToConnectedAccount,\n }),\n []\n )\n const companiesAssociatedEnabledOnly = companiesAssociated?.filter(\n (company) => !!company?.enableTransferToConnectedAccount\n )\n const areaNames = data?.employmentByProvider?.items.reduce(\n (prev, curr) =>\n prev.concat(\n curr?.company?.franchiseContracts.items.reduce(\n (prev, curr) => prev.concat(curr.areaNames),\n []\n )\n ),\n []\n )\n const areaNamesByCountry = data?.employmentByProvider?.items.reduce(\n (prev, curr) => {\n return {\n ...prev,\n [curr?.company?.isoCountryCode]: [\n ...(prev?.[curr?.company?.isoCountryCode] || []),\n ...curr?.company?.franchiseContracts?.items?.reduce(\n (prev, curr) => prev.concat(curr.areaNames),\n []\n ),\n ],\n }\n },\n {}\n )\n\n const serviceFacilities = data?.employmentByProvider?.items.flatMap((item) =>\n item?.company?.serviceFacilityOwnerships.items.map((facility) => ({\n id: facility.serviceFacility.id,\n name: facility.serviceFacility.name,\n }))\n ) || [];\n\n const serviceFacilitiesByCountry = data?.employmentByProvider?.items.reduce((prev, curr) => {\n const countryCode = curr?.company?.isoCountryCode;\n if (!prev[countryCode]) {\n prev[countryCode] = [];\n }\n\n const facilities = curr?.company?.serviceFacilityOwnerships.items.map(facility => ({\n id: facility.serviceFacility.id,\n name: facility.serviceFacility.name,\n }));\n\n prev[countryCode].push(...facilities);\n\n return prev;\n }, {});\n const partnerWithActiveEmployment = ((areaNames?.length > 0) || (serviceFacilities?.length > 0))\n const tagsString = user?.attributes?.['custom:offering_tags']\n let tags = []\n if (tagsString) {\n tags = tagsString.split(',').filter((item) => item != 'consumer')\n }\n\n const companyNames = data?.employmentByProvider.items.reduce(\n (prev, curr) => prev.concat(curr?.company?.name),\n []\n )\n const isoCountryCodes = [\n ...new Set(\n data?.employmentByProvider.items?.reduce(\n (prev, curr) => prev.concat(curr?.company?.isoCountryCode),\n []\n )\n ),\n ]\n const theme = useTheme()\n const client = useApolloClient()\n const [isSelectCompanyModalVisible, setSelectCompanyModalVisible] = useState()\n\n const [\n createStripeConnectedAccountMutation,\n {\n error: _createStripeConnectedAccountMutationError,\n loading: createStripeConnectedAccountMutationLoading,\n },\n ] = useMutation(CREATE_STRIPE_CONNECTED_ACCOUNT, {\n onCompleted: async (data) => {\n if (Platform.OS == 'web') {\n setSelectCompanyModalVisible(false)\n window.open(data?.createStripeConnectedAccount?.url, '_blank')\n } else {\n const url = data?.createStripeConnectedAccount?.url;\n if (!url) {\n console.error('URL is not defined');\n } else {\n try {\n await WebBrowser.openBrowserAsync(url, {});\n } catch (error) {\n console.error('An error occurred while trying to fetch the URL', error);\n }\n finally {\n setSelectCompanyModalVisible(false)\n }\n }\n }\n },\n })\n\n const queryLoading = companyInfoQueryLoading\n const isUserAuthenticated = authStatus == AUTHENTICATED\n if (!queryLoading && !isUserAuthenticated) {\n return (\n \n \n \n \n \n \n )\n }\n return (\n <>\n {isSelectCompanyModalVisible && (\n {\n createStripeConnectedAccountMutation({\n variables: {\n companyId: companyId,\n paymentProcessorAccount:\n Constants.expoConfig.extra.paymentProcessorAccount,\n },\n })\n }}\n />\n )}\n {!user?.username || queryLoading ? (\n \n \n \n ) : (\n \n \n \n {user && !queryLoading ? (\n 0\n ? `\\n${tags.join(', ')}`\n : '') +\n (Utils.isUserProvider(user) &&\n areaNames &&\n areaNames.length > 0\n ? `\\n${companyNames.join(', ')}\\n${i18n.t(\n 'Area'\n )}: ${areaNames.join(', ')}`\n : '') +\n (Utils.isUserProvider(user) &&\n serviceFacilities &&\n serviceFacilities.length > 0\n ? `\\n${i18n.t('Fix wash')}: ${serviceFacilities\n .map((item) => item.name)\n .join(', ')}`\n : '')\n }\n descriptionNumberOfLines={7}\n left={(props) => (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() => navigation.navigate('UserProfile')}\n testID={'AccountScreenUserProfile'}\n />\n ) : (\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n \n )}\n />\n )}\n \n {Utils.isUserCustomer(user) && (\n <>\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() => navigation.navigate('Cars')}\n />\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() => navigation.navigate('Payments')}\n />\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n MailComposer.composeAsync({\n recipients: ['hello@cleenup.com'],\n body: `Hello CleenUp,\\n\\n\\n---\\n${i18n.t(\n 'Customer number'\n )}: ${user?.username}`,\n subject: 'Cleenup App',\n })\n }\n />\n \n )}\n\n {Utils.isUserProvider(user) && partnerWithActiveEmployment && (\n <>\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Vouchers management', {\n areaNames: areaNames,\n })\n }\n />\n {isoCountryCodes?.map((isoCountryCode, index) => (\n 1\n ? `${i18n.t('Business hours')} (${i18n.t(\n Utils.countries.find(\n (country) =>\n country?.code?.toLowerCase() ==\n isoCountryCode?.toLowerCase()\n )?.name\n )})`\n : i18n.t('Business hours')\n }\n testID={'AccountScreenBusinessHours'}\n key={`AccountScreenBusinessHoursListItem${index}`}\n left={(props) => (\n (\n \n )}\n />\n )}\n right={(props) => (\n (\n \n )}\n />\n )}\n onPress={() =>\n navigation.navigate('Opening Hours', {\n areaNames: areaNamesByCountry?.[isoCountryCode] || [],\n serviceFacilities:\n serviceFacilitiesByCountry?.[isoCountryCode] || [],\n isoCountryCode: isoCountryCode,\n })\n }\n />\n ))}\n\n {companiesAssociatedEnabledOnly?.length > 0 && (\n (\n (\n \n )}\n />\n )}\n right={(props) =>\n createStripeConnectedAccountMutationLoading ? (\n \n ) : (\n (\n \n )}\n />\n )\n }\n onPress={() => {\n setSelectCompanyModalVisible(true)\n }}\n />\n )}\n \n )}\n (\n (\n \n )}\n />\n )}\n right={(props) => (\n signOutInProgress ? \n : null\n )}\n onPress={() => {\n if (signOutInProgress) {\n return\n }\n signOut(client, setSignOutInProgress)\n }}\n />\n \n\n {Utils.isUserCustomer(user) && (\n <>\n \n \n \n )}\n \n \n \n )}\n \n )\n}\n\nexport default AccountScreen","import { useState } from 'react'\nimport { View, StyleSheet } from 'react-native'\nimport { Auth } from 'aws-amplify'\nimport {\n Button,\n TextInput,\n HelperText,\n Banner,\n Text,\n withTheme,\n} from 'react-native-paper'\nimport { Formik } from 'formik'\nimport * as Yup from 'yup'\nimport { Ionicons } from '@expo/vector-icons'\nimport i18n from 'i18n-js'\nimport Constants from 'expo-constants'\nimport Utils from '../Utils'\n\nconst ConfirmSignUpSchema = Yup.object().shape({\n username: Yup.string().email(() => i18n.t('Invalid email address')),\n authCode: Yup.number().required(() => i18n.t('Required')),\n})\n\nexport default withTheme(function ConfirmSignUp({ theme, route, navigation }) {\n const [isLoading, setIsLoading] = useState(false)\n const [errorMessage, setErrorMessage] = useState('')\n const [errorMessageTimerId, setErrorMessageTimerId] = useState(null)\n\n const username = route.params?.username\n const password = route.params?.password;\n async function confirmSignUp(username, authCode) {\n try {\n setIsLoading(true)\n await Auth.confirmSignUp(username, authCode, {\n clientMetadata: { variant: Constants.expoConfig.extra.variant },\n })\n if (!!password) {\n await Auth.signIn(username, password)\n }\n else {\n navigation.navigate('SignIn');\n }\n } catch (error) {\n console.log(\n ' Verification code does not match. Please enter a valid verification code.',\n error.code\n )\n setErrorMessage(i18n.t('Verification code does not match'))\n setIsLoading(false)\n if (errorMessageTimerId) {\n clearTimeout(errorMessageTimerId)\n }\n setErrorMessageTimerId(setTimeout(() => setErrorMessage(''), 5000))\n }\n }\n\n return (\n \n setErrorMessage(''),\n },\n ]}\n icon={({ size, color }) => (\n \n )}\n >\n {errorMessage}\n \n\n {\n confirmSignUp(values.username, values.authCode)\n }}\n validationSchema={ConfirmSignUpSchema}\n >\n {({\n handleChange,\n handleBlur,\n handleSubmit,\n values,\n errors,\n touched,\n }) => (\n \n \n \n {errors.username}\n \n\n \n \n {errors.authCode}\n \n\n \n {i18n.t(\"We've sent you the verification code in email\")}\n \n \n {i18n.t('Confirm Sign Up')}\n \n\n \n \n navigation.navigate('ResendCode', { username: username })\n }\n >\n {i18n.t('Resend Code')}\n \n \n \n )}\n \n \n )\n})\n\nconst styles = StyleSheet.create({\n safeAreaContainer: {\n flex: 1,\n },\n container: {\n flex: 1,\n },\n title: {\n fontSize: 20,\n fontWeight: '500',\n marginVertical: 15,\n textAlign: 'center',\n },\n})\n","import { useEffect, useState, useRef } from 'react'\nimport { Amplify, Analytics, Auth, Hub } from 'aws-amplify'\nimport { ApolloProvider } from '@apollo/client'\nimport config from './src/aws-exports'\nimport * as Device from 'expo-device';\nimport PrivacyPolicyComponent from './src/PrivacyPolicyComponent'\nimport TermsAndConditionsComponent from './src/TermsAndConditionsComponent'\nimport * as Sentry from '@sentry/react-native';\nimport { SafeAreaProvider } from 'react-native-safe-area-context'\nimport * as WebBrowser from 'expo-web-browser'\nimport { View, Appearance, Platform, LogBox } from 'react-native'\nimport * as Linking from 'expo-linking'\nimport { UserProvider, useUser } from \"./src/contexts/UserContext\";\nimport { useApolloClient } from '@apollo/client';\nimport { useCreateApolloClient } from './src/Apollo/use-create-apollo-client';\nimport { createBottomTabNavigator } from '@react-navigation/bottom-tabs'\nimport {\n Provider as PaperProvider,\n Text,\n MD3DarkTheme as PaperDarkTheme,\n MD3LightTheme as PaperDefaultTheme,\n Button,\n ActivityIndicator,\n} from 'react-native-paper'\nimport {\n DarkTheme as NavigationDarkTheme,\n DefaultTheme as NavigationDefaultTheme,\n useTheme,\n NavigationContainer,\n} from '@react-navigation/native'\nimport { createStackNavigator } from '@react-navigation/stack'\nimport SignIn from './src/Authentication/SignIn.js'\nimport SignUp from './src/Authentication/SignUp.js'\nimport ResendCode from './src/Authentication/ResendCode.js'\nimport ForgotPassword from './src/Authentication/ForgotPassword.js'\nimport ForgotPasswordSubmit from './src/Authentication/ForgotPasswordSubmit.js'\nimport CustomerSelector from './src/CustomerSelector'\nimport ServiceOrderComponent from './src/ServiceOrderComponent'\nimport CarsComponent from './src/CarsComponent'\nimport CarComponent from './src/CarComponent'\nimport AddCarComponent from './src/AddCarComponent'\nimport CarMakeModelSelector from './src/CarMakeModelSelector'\nimport PaymentsComponent from './src/PaymentsComponent'\nimport PaymentComponent from './src/PaymentComponent'\nimport PaymentMethodTypeSelector from './src/PaymentMethodTypeSelector'\nimport SystemMessage from './src/SystemMessage'\nimport AddPaymentComponent from './src/AddPaymentComponent'\nimport VouchersComponent from './src/VouchersComponent'\nimport AddVoucherComponent from './src/AddVoucherComponent'\nimport CreateConnectedAccountComponent from './src/CreateConnectedAccountComponent'\nimport VouchersProviderComponent from './src/VouchersProviderComponent'\nimport GenerateVoucherComponent from './src/GenerateVoucherComponent'\nimport OpeningHoursComponent from './src/OpeningHoursComponent'\nimport AddOpeningHoursComponent from './src/AddOpeningHoursComponent'\nimport UserProfileComponent from './src/UserProfileComponent'\nimport SelectLocationComponent from './src/SelectLocationComponent'\nimport SelectServiceComponent from './src/SelectServiceComponent'\nimport TimeslotPickerComponent from './src/TimeslotPickerComponent'\nimport SelectPaymentComponent from './src/SelectPaymentComponent'\nimport PaymentOnSessionComponent from './src/PaymentOnSessionComponent'\nimport OrderConfirmedComponent from './src/OrderConfirmedComponent'\nimport ServiceOrdersComponent from './src/ServiceOrdersComponent'\nimport AccountScreen from './src/AccountScreen'\nimport { Ionicons, MaterialCommunityIcons } from '@expo/vector-icons'\nimport * as Notifications from 'expo-notifications'\nimport Constants from 'expo-constants'\nimport ConfirmSignUp from './src/Authentication/ConfirmSignUp.js'\nimport 'react-native-get-random-values'\nimport 'intl'\nimport * as Localization from 'expo-localization'\nimport Utils from './src/Utils'\nimport i18n from 'i18n-js'\nconst moment = require('moment-timezone')\nrequire('moment/locale/hu')\nrequire('moment/locale/fr')\nrequire('moment/locale/de')\nrequire('moment/locale/en-gb')\n\nimport translationEN from './assets/locales/en/translation.json'\nimport translationHU from './assets/locales/hu/translation.json'\nimport translationDE from './assets/locales/de/translation.json'\nimport translationFR from './assets/locales/fr/translation.json'\nimport 'intl/locale-data/jsonp/en'\nif (Platform.OS == 'android') {\n LogBox.ignoreLogs(['Setting a timer'])\n}\n\nlet materialColors;\n\nif (Constants.expoConfig.extra.variant == 'customer') {\n materialColors = require('./assets/colors-customer.json');\n}\nelse {\n materialColors = require('./assets/colors-provider.json');\n}\n\nmoment.tz.setDefault('Europe/Budapest')\ni18n.translations = {\n en: translationEN,\n hu: translationHU,\n de: translationDE,\n fr: translationFR,\n}\n//? Set the locale once at the beginning of your app.\nconst preferredAvailableLanguage = Localization.getLocales()\n .map((locale) => locale.languageTag)\n .reduce(\n (prev, curr) =>\n prev\n ? prev\n : ['en', 'hu', 'de', 'fr'].includes(curr.split('-')[0])\n ? curr.split('-')[0]\n : '',\n ''\n )\ni18n.locale = preferredAvailableLanguage ?? 'en'\ni18n.fallbacks = true\n\nmoment.locale(i18n.locale)\n\nif (Platform.OS === 'android') {\n //? See https://github.com/expo/expo/issues/6536 for this issue.\n if (Intl.__disableRegExpRestore === 'function') {\n Intl.__disableRegExpRestore()\n }\n}\n\nasync function urlOpener(url, redirectUrl) {\n const { type, url: newUrl } = await WebBrowser.openAuthSessionAsync(\n url,\n redirectUrl\n )\n\n if (type === 'success' && Platform.OS === 'ios') {\n WebBrowser.dismissBrowser()\n return Linking.openURL(newUrl)\n }\n}\n\nAmplify.configure({\n ...config,\n oauth: {\n ...config.oauth,\n domain: Constants.expoConfig.extra.cognitoAuthDomain,\n redirectSignIn:\n Platform.OS === 'web' ? window.location.origin : 'cleenup://',\n redirectSignOut:\n Platform.OS === 'web' ? window.location.origin : 'cleenup://',\n ...(Platform.OS !== 'web' && { urlOpener }),\n },\n})\n\nAnalytics.disable() // In order to remove Amplify Analytics No Credentials warning\nconst appSyncConfig = {\n url: config.aws_appsync_graphqlEndpoint,\n region: config.aws_appsync_region\n}\n\n\nSentry.init({\n dsn: 'https://51aa93e56d774cd9902d67667cbd2aac@o463764.ingest.sentry.io/5606411',\n debug: __DEV__ ? true : false,\n});\n\n\nNotifications.setNotificationHandler({\n handleNotification: async () => ({\n shouldShowAlert: true,\n shouldPlaySound: true,\n shouldSetBadge: false,\n }),\n})\n\nconst OrdersTab = createBottomTabNavigator()\nfunction OrdersTabScreen() {\n const theme = useTheme()\n const client = useApolloClient()\n const getIconName = (routeName, focused) => {\n switch (routeName) {\n case 'Home':\n return focused ? 'home' : 'home-outline'\n case 'Orders':\n return 'receipt'\n case 'Account':\n return focused ? 'person' : 'person-outline'\n case 'New Order':\n return focused ? 'car-sport' : 'car-sport-outline'\n default:\n return ''\n }\n }\n\n return (\n ({\n tabBarTestID: `Tab Bar ${route.name}`,\n tabBarIcon: ({ focused, color, size }) => {\n const iconName = getIconName(route.name, focused)\n\n if (route.name === 'Orders') {\n return (\n \n )\n } else if (route.name === 'Account') {\n return \n } else if (route.name === 'New Order') {\n return \n }\n },\n tabBarActiveTintColor: theme.colors.primary,\n tabBarInactiveTintColor: 'gray',\n headerShown: false,\n })}\n >\n \n \n \n )\n}\n\n/****************************************************************************/\n// Service Order stack screen\n\nconst ServiceOrdersStack = createStackNavigator()\n\nfunction ServiceOrdersStackScreen({ oauthLoading, ...props }) {\n const theme = useTheme()\n const [_user, setUser] = useState()\n\n useEffect(() => {\n Utils.fetchUserBypassCache(setUser)\n }, [])\n\n return (\n \n \n\n \n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Select Location'),\n headerBackTitle: i18n.t('Back'),\n gestureEnabled: Platform.OS != 'ios',\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Select Service'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n \n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Customer Selector'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n \n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Car'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Car'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Make and Model'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Select Payment'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n \n {(props) => }\n \n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Payment'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Payment Method'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Payment Method'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n \n\n \n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Voucher Code'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n headerShown: false,\n title: i18n.t('Select Payment'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n headerShown: false,\n title: i18n.t(\"Select Payment\"),\n headerBackTitle: i18n.t(\"Back\")\n })} >\n {props => }\n\n \n \n )\n}\n\n/****************************************************************************/\n// Orders stack screen\n\nconst OrdersStack = createStackNavigator()\n\nfunction OrdersStackScreen() {\n const theme = useTheme()\n const client = useApolloClient()\n return (\n \n \n \n )\n}\n\n/****************************************************************************/\n// Account stack screen\n\nconst AccountStack = createStackNavigator()\n\nfunction AccountStackScreen({ client }) {\n const theme = useTheme()\n\n return (\n \n \n \n \n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Car'),\n })}\n />\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Car'),\n })}\n />\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Make and Model'),\n })}\n />\n \n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Payment'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Payment Method'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Payment Method'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n \n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Voucher Code'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n \n\n \n\n \n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Voucher management'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Generate voucher'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Business hours'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n ({\n headerTintColor: theme.colors.primary,\n title: i18n.t('Add Rule'),\n headerBackTitle: i18n.t('Back'),\n })}\n />\n \n )\n}\n\n\nconst CombinedDefaultTheme = {\n ...PaperDefaultTheme,\n ...NavigationDefaultTheme,\n colors: {\n ...PaperDefaultTheme.colors,\n ...NavigationDefaultTheme.colors,\n },\n}\nconst CombinedDarkTheme = {\n ...PaperDarkTheme,\n ...NavigationDarkTheme,\n colors: {\n ...PaperDarkTheme.colors,\n ...NavigationDarkTheme.colors,\n },\n}\n\nconst AuthenticationStack = createStackNavigator()\nconst AuthenticationNavigator = (props) => {\n const theme = useTheme()\n return (\n \n \n {(screenProps) => (\n \n )}\n \n\n \n\n \n \n \n \n\n \n\n \n \n )\n}\n\nconst Initializing = ({ theme }) => {\n return (\n \n \n \n )\n}\n\nconst WrongAppVariantCustomer = ({ setUserLoggedIn, theme }) => {\n return (\n \n \n {i18n.t('WrongAppVariantCustomer')}\n \n {\n await Auth.signOut()\n setUserLoggedIn('loggedOut')\n }}\n >\n {i18n.t('Back')}\n \n \n )\n}\n\nconst WrongAppVariantProvider = ({ setUserLoggedIn, theme }) => {\n return (\n \n \n {i18n.t('WrongAppVariantProvider')}\n \n {\n await Auth.signOut()\n setUserLoggedIn('loggedOut')\n }}\n >\n {i18n.t('Back')}\n \n \n )\n}\n\nconst WrongAppVariant = ({ setUserLoggedIn, theme }) => {\n return (\n \n {i18n.t('WrongAppVariant')}\n {\n await Auth.signOut()\n setUserLoggedIn('loggedOut')\n }}\n >\n {i18n.t('Back')}\n \n \n )\n}\n\nasync function registerForPushNotificationsAsync() {\n let experienceId\n if (Constants.appOwnership !== 'expo') {\n experienceId =\n Constants.expoConfig.extra.variant == 'customer'\n ? '@gbarany/cleenup'\n : Constants.expoConfig.extra.variant == 'provider'\n ? '@gbarany/cleenup-partner'\n : undefined\n }\n\n let token;\n\n if (Platform.OS === 'android') {\n await Notifications.setNotificationChannelAsync('default', {\n name: 'default',\n importance: Notifications.AndroidImportance.MAX,\n vibrationPattern: [0, 250, 250, 250],\n lightColor: '#FF231F7C',\n });\n }\n\n if (Device.isDevice) {\n const { status: existingStatus } = await Notifications.getPermissionsAsync();\n let finalStatus = existingStatus;\n if (existingStatus !== 'granted') {\n const { status } = await Notifications.requestPermissionsAsync();\n finalStatus = status;\n }\n if (finalStatus !== 'granted') {\n console.log('Failed to get push token for push notification!');\n return;\n }\n // Learn more about projectId:\n // https://docs.expo.dev/push-notifications/push-notifications-setup/#configure-projectid\n // EAS projectId is used here.\n try {\n const projectId =\n Constants?.expoConfig?.extra?.eas?.projectId ?? Constants?.easConfig?.projectId;\n if (!projectId) {\n throw new Error('Project ID not found');\n }\n token = (\n await Notifications.getExpoPushTokenAsync({\n projectId,\n })\n ).data;\n console.log(token);\n } catch (e) {\n token = `${e}`;\n }\n } else {\n console.log('Must use physical device for Push Notifications');\n }\n\n return token;\n}\n\nconst tabBarListeners = ({ navigation, route }) => ({\n tabPress: () => navigation.navigate(route.name),\n})\n\nfunction App() {\n const {\n state: { authStatus },\n dispatch: dispatchUser,\n } = useUser();\n const [isUserLoggedIn, setUserLoggedIn] = useState('initializing')\n const [expoPushToken, setExpoPushToken] = useState('')\n const [channels, setChannels] = useState([]);\n const [notification, setNotification] = useState(false) //? need or not?\n const notificationListener = useRef()\n const responseListener = useRef()\n const [oauthLoading, setOauthLoading] = useState('')\n useEffect(() => {\n Hub.listen('auth', ({ payload: { event, data } }) => {\n switch (event) {\n case 'parsingCallbackUrl':\n if (data?.url === 'cleenup://') {\n setOauthLoading('')\n } else if (data?.url) {\n setOauthLoading('oauth')\n }\n break\n case 'signIn':\n setOauthLoading('')\n checkAuthState()\n break\n case 'signOut':\n setOauthLoading('')\n setUserLoggedIn('loggedOut')\n dispatchUser({ type: \"setAuthStatus\", value: \"unauthenticated\" });\n break\n case 'customOAuthState':\n checkAuthState()\n break\n }\n })\n checkAuthState()\n updateLocalesInAmplify()\n\n if (Platform.OS != 'web') {\n registerForPushNotificationsAsync().then(token => token && setExpoPushToken(token));\n\n if (Platform.OS === 'android') {\n Notifications.getNotificationChannelsAsync().then(value => setChannels(value ?? []));\n }\n notificationListener.current = Notifications.addNotificationReceivedListener(notification => {\n setNotification(notification);\n });\n\n responseListener.current = Notifications.addNotificationResponseReceivedListener(response => {\n console.log(response);\n });\n\n return () => {\n notificationListener.current &&\n Notifications.removeNotificationSubscription(notificationListener.current);\n responseListener.current &&\n Notifications.removeNotificationSubscription(responseListener.current);\n };\n }\n }, [])\n\n useEffect(() => {\n updateExpoPushTokenInAmplify()\n }, [expoPushToken])\n\n async function updateExpoPushTokenInAmplify() {\n try {\n const user = await Auth.currentAuthenticatedUser()\n if (user && expoPushToken) {\n const tokenAmplify = user?.attributes?.['custom:expo_push_token']\n if (tokenAmplify != expoPushToken) {\n await Auth.updateUserAttributes(user, {\n 'custom:expo_push_token': expoPushToken,\n })\n console.log('Push token updated')\n } else {\n console.log('Push token already up-to-date')\n }\n }\n } catch (e) {\n console.log('User is not authenticated:' + e)\n }\n }\n\n async function updateLocalesInAmplify() {\n try {\n if (Localization.locales) {\n const user = await Auth.currentAuthenticatedUser()\n const localesAmplify = user?.attributes?.['custom:locales']\n const localesDevice = Localization.locales\n .map((locale) => locale.split('-')[0])\n .join(',')\n if (localesAmplify != localesDevice) {\n await Auth.updateUserAttributes(user, {\n 'custom:locales': localesDevice,\n })\n console.log('Locales updated')\n } else {\n console.log('Locales already up-to-date')\n }\n }\n } catch {\n console.log('Locales update failed')\n }\n }\n\n async function checkAuthState() {\n try {\n const user = await Auth.currentAuthenticatedUser()\n dispatchUser({ type: \"setUser\", value: user });\n console.log(' User is signed in')\n Utils.analyticsSetUserId(user?.username)\n if (\n (Utils.isUserProvider(user) &&\n Constants.expoConfig.extra.variant == 'provider') ||\n (Utils.isUserCustomer(user) &&\n Constants.expoConfig.extra.variant == 'customer')\n ) {\n setUserLoggedIn('loggedIn')\n await updateExpoPushTokenInAmplify()\n } else {\n if (Utils.isUserCustomer(user))\n setUserLoggedIn('wrongAppVariantCustomer')\n else if (Utils.isUserProvider(user))\n setUserLoggedIn('wrongAppVariantProvider')\n else setUserLoggedIn('wrongAppVariant')\n }\n } catch (err) {\n console.log('User is not signed in:' + err)\n dispatchUser({ type: \"setAuthStatus\", value: \"unauthenticated\" });\n setUserLoggedIn('loggedOut')\n }\n }\n\n function useColorScheme(delay) {\n if (delay === void 0) {\n delay = 500\n }\n let _a = useState(Appearance.getColorScheme()),\n colorScheme = _a[0],\n setColorScheme = _a[1]\n let timeout = useRef(null).current\n useEffect(function () {\n const appearanceChangeHandler =\n Appearance.addChangeListener(onColorSchemeChange)\n return function () {\n resetCurrentTimeout()\n appearanceChangeHandler.remove()\n }\n }, [])\n function onColorSchemeChange(preferences) {\n resetCurrentTimeout()\n timeout = setTimeout(function () {\n setColorScheme(preferences.colorScheme)\n }, delay)\n }\n function resetCurrentTimeout() {\n if (timeout) {\n clearTimeout(timeout)\n }\n }\n return colorScheme\n }\n\n let colorScheme = useColorScheme()\n const themeColors =\n colorScheme === 'dark'\n ? CombinedDarkTheme.colors\n : CombinedDefaultTheme.colors\n\n const theme = {\n ...(colorScheme === 'dark' ? CombinedDarkTheme : CombinedDefaultTheme),\n dark: colorScheme === 'dark',\n roundness: 2,\n version: 3,\n colors: {\n ...themeColors,\n ...colorScheme === 'dark' ? materialColors?.schemes?.dark : materialColors?.schemes?.light,\n signInWithApple: colorScheme === 'dark' ? '#ffffff' : '#000000',\n },\n googleMapsStyle:\n colorScheme === 'dark'\n ? Utils.googleMapsStyleDark\n : Utils.googleMapsStyleBright,\n colorScheme,\n }\n\n const navigationRef = useRef()\n const routeNameRef = useRef()\n const client = useCreateApolloClient(appSyncConfig)\n return (\n \n \n \n \n (routeNameRef.current =\n navigationRef.current?.getCurrentRoute()?.name)\n }\n onStateChange={async () => {\n const previousRouteName = routeNameRef.current\n const currentRouteName =\n navigationRef.current?.getCurrentRoute()?.name\n\n if (previousRouteName !== currentRouteName) {\n Utils.analyticsSetCurrentScreen(currentRouteName)\n }\n routeNameRef.current = currentRouteName\n }}\n theme={theme}\n >\n {isUserLoggedIn === 'initializing' ? (\n \n ) : isUserLoggedIn === 'wrongAppVariant' ? (\n \n ) : isUserLoggedIn === 'wrongAppVariantCustomer' ? (\n \n ) : isUserLoggedIn === 'wrongAppVariantProvider' ? (\n \n ) : isUserLoggedIn === 'loggedIn' || Constants.expoConfig.extra.variant == 'customer' ? (\n \n \n <>\n \n \n \n \n \n ) : isUserLoggedIn === 'loggedOut' ? (\n \n ) : null}\n \n \n \n \n )\n}\n\nconst AppWithProvider = () => (\n \n \n \n);\n\nexport default Sentry.wrap(AppWithProvider);","import { registerRootComponent } from 'expo';\n\nimport App from './App';\n\n// registerRootComponent calls AppRegistry.registerComponent('main', () => App);\n// It also ensures that whether you load the app in the Expo client or in a native build,\n// the environment is set up appropriately\nregisterRootComponent(App);\n","var map = {\n\t\"./af\": 17582,\n\t\"./af.js\": 17582,\n\t\"./ar\": 93042,\n\t\"./ar-dz\": 54265,\n\t\"./ar-dz.js\": 54265,\n\t\"./ar-kw\": 92553,\n\t\"./ar-kw.js\": 92553,\n\t\"./ar-ly\": 85352,\n\t\"./ar-ly.js\": 85352,\n\t\"./ar-ma\": 67097,\n\t\"./ar-ma.js\": 67097,\n\t\"./ar-ps\": 76150,\n\t\"./ar-ps.js\": 76150,\n\t\"./ar-sa\": 84427,\n\t\"./ar-sa.js\": 84427,\n\t\"./ar-tn\": 7221,\n\t\"./ar-tn.js\": 7221,\n\t\"./ar.js\": 93042,\n\t\"./az\": 60458,\n\t\"./az.js\": 60458,\n\t\"./be\": 17596,\n\t\"./be.js\": 17596,\n\t\"./bg\": 93830,\n\t\"./bg.js\": 93830,\n\t\"./bm\": 27044,\n\t\"./bm.js\": 27044,\n\t\"./bn\": 58573,\n\t\"./bn-bd\": 13296,\n\t\"./bn-bd.js\": 13296,\n\t\"./bn.js\": 58573,\n\t\"./bo\": 25614,\n\t\"./bo.js\": 25614,\n\t\"./br\": 62041,\n\t\"./br.js\": 62041,\n\t\"./bs\": 91786,\n\t\"./bs.js\": 91786,\n\t\"./ca\": 75833,\n\t\"./ca.js\": 75833,\n\t\"./cs\": 52711,\n\t\"./cs.js\": 52711,\n\t\"./cv\": 48655,\n\t\"./cv.js\": 48655,\n\t\"./cy\": 84977,\n\t\"./cy.js\": 84977,\n\t\"./da\": 8770,\n\t\"./da.js\": 8770,\n\t\"./de\": 67342,\n\t\"./de-at\": 81566,\n\t\"./de-at.js\": 81566,\n\t\"./de-ch\": 87544,\n\t\"./de-ch.js\": 87544,\n\t\"./de.js\": 67342,\n\t\"./dv\": 82875,\n\t\"./dv.js\": 82875,\n\t\"./el\": 78536,\n\t\"./el.js\": 78536,\n\t\"./en-au\": 38617,\n\t\"./en-au.js\": 38617,\n\t\"./en-ca\": 79227,\n\t\"./en-ca.js\": 79227,\n\t\"./en-gb\": 59754,\n\t\"./en-gb.js\": 59754,\n\t\"./en-ie\": 37217,\n\t\"./en-ie.js\": 37217,\n\t\"./en-il\": 85418,\n\t\"./en-il.js\": 85418,\n\t\"./en-in\": 80800,\n\t\"./en-in.js\": 80800,\n\t\"./en-nz\": 67299,\n\t\"./en-nz.js\": 67299,\n\t\"./en-sg\": 76305,\n\t\"./en-sg.js\": 76305,\n\t\"./eo\": 8673,\n\t\"./eo.js\": 8673,\n\t\"./es\": 71301,\n\t\"./es-do\": 3187,\n\t\"./es-do.js\": 3187,\n\t\"./es-mx\": 48223,\n\t\"./es-mx.js\": 48223,\n\t\"./es-us\": 37634,\n\t\"./es-us.js\": 37634,\n\t\"./es.js\": 71301,\n\t\"./et\": 4976,\n\t\"./et.js\": 4976,\n\t\"./eu\": 11847,\n\t\"./eu.js\": 11847,\n\t\"./fa\": 74372,\n\t\"./fa.js\": 74372,\n\t\"./fi\": 41628,\n\t\"./fi.js\": 41628,\n\t\"./fil\": 56802,\n\t\"./fil.js\": 56802,\n\t\"./fo\": 42874,\n\t\"./fo.js\": 42874,\n\t\"./fr\": 9853,\n\t\"./fr-ca\": 87170,\n\t\"./fr-ca.js\": 87170,\n\t\"./fr-ch\": 22825,\n\t\"./fr-ch.js\": 22825,\n\t\"./fr.js\": 9853,\n\t\"./fy\": 68876,\n\t\"./fy.js\": 68876,\n\t\"./ga\": 93533,\n\t\"./ga.js\": 93533,\n\t\"./gd\": 82770,\n\t\"./gd.js\": 82770,\n\t\"./gl\": 98602,\n\t\"./gl.js\": 98602,\n\t\"./gom-deva\": 63059,\n\t\"./gom-deva.js\": 63059,\n\t\"./gom-latn\": 48212,\n\t\"./gom-latn.js\": 48212,\n\t\"./gu\": 23409,\n\t\"./gu.js\": 23409,\n\t\"./he\": 17210,\n\t\"./he.js\": 17210,\n\t\"./hi\": 4750,\n\t\"./hi.js\": 4750,\n\t\"./hr\": 51315,\n\t\"./hr.js\": 51315,\n\t\"./hu\": 47626,\n\t\"./hu.js\": 47626,\n\t\"./hy-am\": 91317,\n\t\"./hy-am.js\": 91317,\n\t\"./id\": 26892,\n\t\"./id.js\": 26892,\n\t\"./is\": 97577,\n\t\"./is.js\": 97577,\n\t\"./it\": 57628,\n\t\"./it-ch\": 3046,\n\t\"./it-ch.js\": 3046,\n\t\"./it.js\": 57628,\n\t\"./ja\": 92504,\n\t\"./ja.js\": 92504,\n\t\"./jv\": 25917,\n\t\"./jv.js\": 25917,\n\t\"./ka\": 64513,\n\t\"./ka.js\": 64513,\n\t\"./kk\": 94935,\n\t\"./kk.js\": 94935,\n\t\"./km\": 96661,\n\t\"./km.js\": 96661,\n\t\"./kn\": 89964,\n\t\"./kn.js\": 89964,\n\t\"./ko\": 98067,\n\t\"./ko.js\": 98067,\n\t\"./ku\": 61165,\n\t\"./ku-kmr\": 85158,\n\t\"./ku-kmr.js\": 85158,\n\t\"./ku.js\": 61165,\n\t\"./ky\": 11177,\n\t\"./ky.js\": 11177,\n\t\"./lb\": 2967,\n\t\"./lb.js\": 2967,\n\t\"./lo\": 81972,\n\t\"./lo.js\": 81972,\n\t\"./lt\": 58469,\n\t\"./lt.js\": 58469,\n\t\"./lv\": 33155,\n\t\"./lv.js\": 33155,\n\t\"./me\": 87935,\n\t\"./me.js\": 87935,\n\t\"./mi\": 74483,\n\t\"./mi.js\": 74483,\n\t\"./mk\": 32501,\n\t\"./mk.js\": 32501,\n\t\"./ml\": 73120,\n\t\"./ml.js\": 73120,\n\t\"./mn\": 20266,\n\t\"./mn.js\": 20266,\n\t\"./mr\": 19406,\n\t\"./mr.js\": 19406,\n\t\"./ms\": 80109,\n\t\"./ms-my\": 90864,\n\t\"./ms-my.js\": 90864,\n\t\"./ms.js\": 80109,\n\t\"./mt\": 22904,\n\t\"./mt.js\": 22904,\n\t\"./my\": 44067,\n\t\"./my.js\": 44067,\n\t\"./nb\": 21301,\n\t\"./nb.js\": 21301,\n\t\"./ne\": 81152,\n\t\"./ne.js\": 81152,\n\t\"./nl\": 76735,\n\t\"./nl-be\": 97761,\n\t\"./nl-be.js\": 97761,\n\t\"./nl.js\": 76735,\n\t\"./nn\": 37569,\n\t\"./nn.js\": 37569,\n\t\"./oc-lnc\": 20833,\n\t\"./oc-lnc.js\": 20833,\n\t\"./pa-in\": 3044,\n\t\"./pa-in.js\": 3044,\n\t\"./pl\": 34249,\n\t\"./pl.js\": 34249,\n\t\"./pt\": 87585,\n\t\"./pt-br\": 26826,\n\t\"./pt-br.js\": 26826,\n\t\"./pt.js\": 87585,\n\t\"./ro\": 62526,\n\t\"./ro.js\": 62526,\n\t\"./ru\": 62204,\n\t\"./ru.js\": 62204,\n\t\"./sd\": 43270,\n\t\"./sd.js\": 43270,\n\t\"./se\": 61541,\n\t\"./se.js\": 61541,\n\t\"./si\": 71921,\n\t\"./si.js\": 71921,\n\t\"./sk\": 49935,\n\t\"./sk.js\": 49935,\n\t\"./sl\": 46254,\n\t\"./sl.js\": 46254,\n\t\"./sq\": 59897,\n\t\"./sq.js\": 59897,\n\t\"./sr\": 42496,\n\t\"./sr-cyrl\": 11135,\n\t\"./sr-cyrl.js\": 11135,\n\t\"./sr.js\": 42496,\n\t\"./ss\": 32215,\n\t\"./ss.js\": 32215,\n\t\"./sv\": 84716,\n\t\"./sv.js\": 84716,\n\t\"./sw\": 50803,\n\t\"./sw.js\": 50803,\n\t\"./ta\": 31538,\n\t\"./ta.js\": 31538,\n\t\"./te\": 2302,\n\t\"./te.js\": 2302,\n\t\"./tet\": 25280,\n\t\"./tet.js\": 25280,\n\t\"./tg\": 14100,\n\t\"./tg.js\": 14100,\n\t\"./th\": 95385,\n\t\"./th.js\": 95385,\n\t\"./tk\": 736,\n\t\"./tk.js\": 736,\n\t\"./tl-ph\": 79726,\n\t\"./tl-ph.js\": 79726,\n\t\"./tlh\": 41873,\n\t\"./tlh.js\": 41873,\n\t\"./tr\": 36463,\n\t\"./tr.js\": 36463,\n\t\"./tzl\": 27491,\n\t\"./tzl.js\": 27491,\n\t\"./tzm\": 29500,\n\t\"./tzm-latn\": 80196,\n\t\"./tzm-latn.js\": 80196,\n\t\"./tzm.js\": 29500,\n\t\"./ug-cn\": 91287,\n\t\"./ug-cn.js\": 91287,\n\t\"./uk\": 35341,\n\t\"./uk.js\": 35341,\n\t\"./ur\": 36246,\n\t\"./ur.js\": 36246,\n\t\"./uz\": 55550,\n\t\"./uz-latn\": 77254,\n\t\"./uz-latn.js\": 77254,\n\t\"./uz.js\": 55550,\n\t\"./vi\": 78796,\n\t\"./vi.js\": 78796,\n\t\"./x-pseudo\": 22736,\n\t\"./x-pseudo.js\": 22736,\n\t\"./yo\": 28621,\n\t\"./yo.js\": 28621,\n\t\"./zh-cn\": 67601,\n\t\"./zh-cn.js\": 67601,\n\t\"./zh-hk\": 39053,\n\t\"./zh-hk.js\": 39053,\n\t\"./zh-mo\": 71248,\n\t\"./zh-mo.js\": 71248,\n\t\"./zh-tw\": 74725,\n\t\"./zh-tw.js\": 74725\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 = 35358;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"609\":\"1f5da3a8\",\"818\":\"55e7b5de\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"609\":\"280d70ae\",\"818\":\"0bee12d7\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"web:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"609\":1,\"818\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkweb\"] = self[\"webpackChunkweb\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [254], () => (__webpack_require__(90744)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["StyleSheet","create","container","flex","marginTop","scrollView","marginHorizontal","text","fontSize","withTheme","_ref","theme","_objectWithoutPropertiesLoose","_excluded","isLoading","setLoading","React","_jsxs","_Fragment","children","_jsx","View","style","width","position","zIndex","top","ProgressBar","indeterminate","visible","color","colors","primary","WebView","source","uri","onLoadStart","syntheticEvent","onLoadEnd","UserContext","AUTHENTICATED","defaultUnauthenticatedUser","username","signInUserSession","accessToken","payload","Constants","expoConfig","extra","variant","userReducer","state","action","type","isValidUser","value","attributes","email","Object","assign","user","userFirstName","given_name","userEmail","authStatus","clearUser","console","log","originRouteNameBeforeAuth","undefined","Error","UserProvider","dispatch","Provider","useUser","context","region","url","httpLink","amplifyAuthLink","createAuthLink","appSyncConfig","HttpLink","cachedAmplifyAuthLink","concat","ApolloLink","operation","forward","getContext","request","resetToken","createCognitoAuthLink","session","from","awsCreateAuthLink","auth","jwtToken","async","Auth","currentSession","getIdToken","getJwtToken","AUTH_TYPE","AMAZON_COGNITO_USER_POOLS","createSubscriptionHandshakeLink","createIamAuthLink","credentials","currentUserCredentials","AWS_IAM","setContext","then","catch","error","onError","networkError","name","statusCode","config","aws_appsync_graphqlEndpoint","aws_appsync_region","JSON","stringify","useCreateApolloClient","client","ApolloClient","cache","InMemoryCache","link","handler","addListeners","handleAuthEvents","event","data","Hub","listen","remove","removeListeners","firebaseConfig","web","firebase","app","initializeApp","webAnalytics","getAnalytics","sendAnalyticsLogEventAsync","args","logEvent","moment","extendMoment","require","formatCurrency","currency","i18n","unit","precision","format","hasDecimal","calculatePrice","offering","addons","discountPercentage","vouchers","packagePrice","price","voucherTotalValue","voucherTotalDiscount","Array","isArray","reduce","prev","curr","percentage","addonsPrice","addonPrice","quantity","addonOptions","items","find","item","id","addonID","totalPriceWithoutDiscount","totalDiscountPercentage","totalPrice","Math","max","totalDiscountPercentageCombined","removeTypename","obj","parse","k","v","carColorDictionary","black","blue","grey","white","red","orange","green","brown","purple","isUserInGroup","groupName","map","toLowerCase","includes","err","flattenObject","flattened","keys","forEach","key","interleave","x","y","convertDateStringToUnixTimeDays","dateString","unixTimeZero","Date","floor","convertDateToUnixTimeDays","date","fetchUser","setFunction","currentAuthenticatedUser","e","fetchUserBypassCache","bypassCache","fetchUserCallback","callback","isUserCustomer","isUserProvider","formatDuration","duration","parts","toISOString","years","push","months","days","hours","minutes","seconds","join","regionFrom","lat","lon","distance","angularDistance","latitude","longitude","latitudeDelta","longitudeDelta","abs","atan2","sin","cos","locationAddressSchema","Yup","shape","required","street","district","subregion","city","country","isoCountryCode","postalCode","timezone","locationCoordinatesSchema","photoSchema","description","carSchema","plate","min","carTypeId","carColor","openingHoursSchema","selectedAreaNames","when","is","selectedServiceFacilities","length","of","voucherSchema","voucherCode","carColorsArray","carColorCodeToText","colorCode","carColorTextToCode","colorText","getData","jsonValue","AsyncStorage","getItem","storeData","setItem","enrichAddons","addon","addonDetailed","taskType","tasks","capitalizeFirstLetter","string","charAt","toUpperCase","slice","calculateTargetTime","carTypeCategoryID","packageTime","durationTarget","addonsTime","addonTime","totalTime","isTipsiStripeCompatible","isServiceOrderPaymentIssue","serviceOrder","paymentIntentID","paymentIntentStatus","getOpeningHoursZOrderRange","startDate","endDate","getOpeningHoursZOrder","promiseTimeout","ms","promise","timeout","Promise","resolve","reject","setTimeout","clearTimeout","race","analyticsLogEvent","env","analyticsSetCurrentScreen","screen_name","analyticsSetUserId","setUserId","sendAnalyticsSetUserIdAsync","getFormattedTime","time","day","tz","splitTime","split","parseInt","milliseconds","getFormattedInterval","date1","date2","uploadToStorage","pathToImageFile","targetFileName","setUploadProgress","manipResult","manipulateAsync","resize","height","compress","SaveFormat","JPEG","response","fetch","blob","Storage","put","contentType","progressCallback","progress","loaded","total","pickImages","setImages","allowsMultipleSelection","result","ImagePicker","launchImageLibraryAsync","mediaTypes","Images","allowsEditing","canceled","assets","asset","message","pickCameraImages","launchCameraAsync","sanitizeString","str","replace","trim","getImageSize","Image","getSize","commonStyles","widthLimited","flexDirection","maxWidth","alignSelf","widthLimitedModal","widthLimitedSnackbar","widthLimitedDialog","getPriceObject","offerings","priceArray","index","addonsArrayWithoutOneOffs","filter","batchOrderOneOff","priceObject","acc","numberOfOrdersBatched","voucherTotalDiscountValue","getPriceAndCurrencyString","listOfferingsAdvancedData","values","offeringSelected","addonsArray","entries","carManualSelection","accumulator","car","carType","product","productPackage","productPackageSelection","productCategory","productCategorySelection","priceCurrency","maxColumnWidth","isVoucherCompatible","selectedProducts","voucher","validProducts","every","selectedProduct","some","getSelectServiceOrderParams","isUpdateMode","params","owner","serviceFacilityID","location","carLocation","offeringId","isExtraDirty","isCarIndoors","addonsAllZero","addonsValidValues","mapAddons","carAvailableFrom","carAvailableUntil","listServiceOrders","listServiceOrdersByOwner","listServiceOrdersByArea","listServiceOrdersByAreaCore","listServiceOrdersByAreas","listServiceOrdersByFacilitiesCore","listCars","listDiscountsByCustomer","listPaymentMethods","listPaymentMethodEligibilityByCustomer","listCarsByOwner","createServiceOrder","createServiceOrderAdvanced","onCreateServiceOrder","onCreateServiceOrderByAreaName","isCustomerApp","isProviderApp","isEmpty","setOpacity","rgbString","opacity","googleMapsStyleDark","elementType","stylers","featureType","visibility","googleMapsStyleBright","calculateDistanceInKm","lat1","lon1","lat2","lon2","p","c","a","asin","sqrt","countries","code","listServiceOrdersByAreasAndFacilities","PAYMENT_ICON_SIZE","SignInSchema","password","navigation","props","setIsLoading","useState","errorMessage","setErrorMessage","errorMessageTimerId","setErrorMessageTimerId","userDispatch","useEffect","route","navigate","isAnyLoginLoading","oauthLoading","ScrollView","styles","safeAreaContainer","keyboardShouldPersistTaps","Banner","actions","label","onPress","icon","size","Ionicons","tertiary","Formik","initialValues","onSubmit","signIn","validationSchema","handleChange","handleBlur","handleSubmit","errors","touched","Utils","TextInput","onChangeText","onBlur","autoCapitalize","autoCorrect","keyboardType","textContentType","testID","HelperText","secureTextEntry","Button","loading","disabled","mode","alignItems","paddingTop","compact","Text","marginBottom","Divider","marginLeft","marginRight","buttonColor","federatedSignIn","provider","signInWithApple","window","open","alignContent","title","fontWeight","marginVertical","textAlign","PNF","phoneUtil","getInstance","SignUpSchema","firstName","phoneNumber","phone","number","parseAndKeepRawInput","numberE164Format","E164","signUp","phone_number","KeyboardAwareScrollView","enableOnAndroid","viewIsInsideTabBar","placeholder","ResendCodeSchema","resendSignUp","resendCode","ForgotPasswordSchema","forgotPassword","authCode","forgotPasswordSubmit","editable","listMandatoryAddonsByCountryPostalCodeValidUntil","listOpeningHoursByCountryEffectiveFromUntilEncoded","getTimeslots","LIST_CUSTOMERS","gql","CustomerSelector","searchQuery","setSearchQuery","debouncedValue","setDebouncedValue","debouncer","_","cancel","queryError","fetchMore","useQuery","variables","customerSearchCriteria","limit","fetchPolicy","handleFetchMore","listCustomers","nextPaginationToken","paginationToken","updateQuery","fetchMoreResult","__typename","SafeAreaView","Searchbar","query","backgroundColor","surfaceContainer","clearIcon","justifyContent","ActivityIndicator","onScroll","nativeEvent","isCloseToBottom","layoutMeasurement","contentOffset","contentSize","scrollEventThrottle","userString","startsWith","List","offeringTags","titleStyle","providerSelectedCustomer","createPaymentMethod","AddPhotoSchema","Dimensions","get","photo","modal","margin","isVisible","setVisible","addServiceOrderPhoto","images","uploadProgress","isRestricted","serviceOrderPhotos","image","uuid","setFieldValue","Portal","Modal","propagateSwipe","surface","Appbar","Header","Content","Action","contentContainerStyle","padding","horizontal","ImageBackground","imageStyle","borderRadius","borderWidth","right","IconButton","iconColor","Picker","selectedValue","onValueChange","itemValue","itemIndex","Item","RadioButton","Group","secondary","modalState","setModalState","photos","imageUrls","removeServiceOrderPhoto","setImage","selectedIndex","setSelectedIndex","toggleModal","picker","setPicker","pickerOptions","setPickerOptions","serviceOrderState","options","backdropTransitionOutTiming","onSwipeComplete","swipeDirection","statusBarTranslucent","customBackdrop","TouchableWithoutFeedback","background","textColor","cancelServiceOrder","rating","setRating","feedbackText","setFeedbackText","Dialog","dismissable","onDismiss","Title","AirbnbRating","count","reviews","selectedColor","reviewSize","reviewColor","unSelectedColor","defaultRating","onFinishRating","multiline","Actions","rateServiceOrder","GET_EMPLOYEES","scrollableModal","carAvailabilityRange","range","serviceOrderData","carAvailabilityRangeOptions","by","step","excludeEnd","employeesData","queryErrorEmployeesData","queryLoadingEmployeesData","refetch","refetchEmployeesData","providerID","userName","today","areaName","employeesDataFiltered","employmentByProvider","company","franchiseContracts","serviceFacilityOwnerships","setStartDate","setEndDate","providerId","setProviderId","defaultProviderId","employments","lastName","itemStyle","totalTargetTime","newEndDate","add","closestItemAfterNewEndDate","toString","newStartDate","lastItemBeforeNewStartDate","itemsBeforeNewStartDate","pop","start","grantedUserApprovalsParam","assignServiceOrder","setLastUserIntent","Paragraph","requiredUserApprovals","cancelled","approved","suspendServiceOrder","imageOverlay","left","bottom","ProgressiveImage","thumbnailAnimated","Animated","Value","imageAnimated","handleThumbnailLoad","timing","this","toValue","useNativeDriver","onImageLoad","render","_this$props","onLoad","makeCancelable","isCanceled","wrappedPromise","val","useCancellablePromise","cancelable","emptyPromise","promises","useRef","current","cancellablePromise","cPromise","useUpdateServiceOrder","set","serviceOrderId","serviceOrderInput","updateServiceOrderId","updateServiceOrderInput","input","GET_SERVICE_ORDER","UPDATE_SERVICE_ORDER","CREATE_COMMENT","MapView","ASSIGN_SERVICE_ORDER","GET_USER_INFO","UNASSIGN_SERVICE_ORDER","CANCEL_SERVICE_ORDER","REVERT_SERVICE_ORDER_TO_ACCEPTED","PRESTART_SERVICE_ORDER","START_SERVICE_ORDER","COMPLETE_SERVICE_ORDER","RATE_SERVICE_ORDER","SUSPEND_SERVICE_ORDER","RESUME_SERVICE_ORDER","CONFIRM_SERVICE_ORDER_BANK_TRANSFER","fab","mapStyle","dimensions","setDimensions","screen","onDimensionsChange","formRef","queryLoading","updateServiceOrderMutation","mutationError","mutationLoading","useMutation","update","mutationData","handleUpdateServiceOrder","updateServiceOrderAdvanced","getServiceOrderData","readQuery","writeQuery","getServiceOrder","isFABVisible","setFABVisible","setUser","setAddons","isCancellationModalVisible","setCancellationModalVisible","isSuspensionModalVisible","setSuspensionModalVisible","isRatingModalVisible","setRatingModalVisible","isAddPhotoModalVisible","setAddPhotoModalVisible","imageSwiperModalState","setImageSwiperModalState","setRequiredUserApprovals","lastUserIntent","isConfirmApprovalModalVisible","setConfirmApprovalModalVisible","lastError","setLastError","isErrorModalVisible","setErrorModalVisible","isAcceptanceModalVisible","setAcceptanceModalVisible","showEvents","setShowEvents","bannerState","setBannerState","timerId","createCommentMutation","mutationErrorComment","mutationLoadingComment","handleUpdateComment","createComment","serviceOrderID","comments","addListener","assignMutation","mutationErrorAssignment","mutationLoadingAssignment","onCompleted","handleMutationResponse","unassignMutation","mutationErrorUnassignment","mutationLoadingUnassignment","cancelMutation","mutationErrorCancellation","mutationLoadingCancellation","prestartMutation","mutationErrorPrestarting","mutationLoadingPrestarting","revertToAcceptedMutation","mutationErrorRevertToAccepted","mutationLoadingRevertToAccepted","startMutation","mutationErrorStarting","mutationLoadingStarting","confirmBankTransferMutation","mutationErrorConfirmBankTransfer","mutationLoadingConfirmBankTransfer","completeMutation","mutationErrorCompletion","mutationLoadingCompletion","rateMutation","mutationErrorRating","mutationLoadingRating","suspendMutation","mutationErrorSuspension","mutationLoadingSuspension","resumeMutation","mutationErrorResume","mutationLoadingResume","getUserInfo","userInfoData","queryErrorGetUser","queryLoadingGetUser","useLazyQuery","editedServiceOrder","updateServiceOrder","fieldName","resultReason","dimensionsHandler","addEventListener","setImageUrls","photosFiltered","hasOwnProperty","photosFilterCondition","setClipboardWithBannerConfirmation","Clipboard","setStringAsync","showBannerMessage","resetAddonsState","imageUrlsAdded","all","responseUrl","fetchImageUrls","updateOrderInput","newComment","timestamp","serviceOrderPhoto","existingPhotosExcluded","ignoreAssignmentCheck","assignedProviderName","assignedInterval","assignment","assignments","isActive","fullName","finishDate","relevantRatings","ratings","ratingSource","getUserType","sumRating","NaN","meanRating","isNaN","setState","onStateChange","getExtraDirtyStatus","getCarString","make","model","carTypeCategory","navigateToEditOrder","getTargetTimeString","Snackbar","wrapperStyle","ConfirmApprovalDialog","ErrorDialog","ServiceOrderRatingModal","rate","AddPhotoModal","existingPhotos","ServiceOrderCancellationModal","stateReason","grantedUserApprovals","reason","ServiceOrderSuspensionModal","suspend","ServiceOrderAcceptanceModal","companyID","extraHeight","enableReinitialize","innerRef","priceString","ImageSwiperModal","groupOrderID","Icon","MaterialCommunityIcons","defaultValue","dense","Linking","openURL","address","locales","contactPhoneNumber","getPaymentMethod","paymentMethodID","showRating","isDisabled","coordinates","googleMapsStyle","zoomControlOptions","google","maps","ControlPosition","RIGHT_CENTER","mapTypeControl","streetViewControl","fullscreenControl","Marker","coordinate","idx","TouchableHighlight","thumbnailSource","resizeMode","Caption","sort","b","Card","onSubmitEditing","events","expanded","updatedAt","titleNumberOfLines","FAB","Boolean","showLocation","googleForceLatLon","LIST_CARS_BY_OWNER","multiSelectEnabled","multiSelectEnabledOnCarSelect","navigationTargetOnCarSelect","sortDirection","eq","skip","carImageUrls","setCarImageUrls","useCallback","setOptions","carImageUrlsAdded","photoUri","fetchCarImageUrls","carSelection","setCarSelection","carsPreselection","localeCompare","_ref2","_excluded2","getCarImage","merge","GET_CAR","UPDATE_CAR","onChange","carId","imageUrl","setImageUrl","updateCarMutation","handleUpdateCar","updateCar","getCarData","getCar","fetchPhoto","deactivateCar","goBack","AddCarSchema","CREATE_CAR","orderUser","createCar","listCarsByOwnerData","nextToken","createCarMutation","isPhotoSourceModalVisible","setPhotoSourceModalVisible","togglePhotoSourceModal","isColorPickerModalVisible","setColorPickerModalVisible","useApolloClient","carMutationInput","carTypeID","unix","year","ColorPalette","makeModel","LIST_CARTYPES","CarMakeModelSelector","isEnabled","debouncedSearchQuery","delay","useDebounce","onChangeSearch","getCarMakeModelYears","filteredAndSortedData","useMemo","lowerCaseSearchQuery","listCarTypes","search","renderItem","handlePress","FlashList","estimatedItemSize","keyExtractor","CreditCardListItem","itemSelectionModePayment","selectedPaymentMethod","setSelectedPaymentMethod","navigationTargetOnPaymentSelect","card","last4","String","exp_month","padStart","exp_year","paymentMethod","renderRightIcon","paymentMethodType","Bypass","CardField","initStripe","useConfirmSetupIntent","confirmSetupIntent","StripeProvider","useConfirmPayment","confirmPayment","confirmPlatformPaySetupIntent","PlatformPay","_path","_path2","_path3","_extends","bind","n","arguments","t","r","call","apply","xmlns","xmlSpace","d","fill","_g","_path4","_path5","_path6","InvoicePaymentListItem","BankTransferListItem","stripe","LIST_PAYMENT_METHODS","queries","LIST_VOUCHERS_BY_CUSTOMER_VALID_UNTIL","CREATE_PAYMENT_METHOD","mutations","DELETE_USER_CUSTOM_ATTRIBUTE","hidePayPalPaymentOption","itemSelectionMode","enableAddPaymentMethod","_setSelectedPaymentMethod","selectedPaymentMethodRef","selectedVoucher","_setSelectedVoucher","selectedVoucherRef","setSelectedVoucher","switchablePaymentMethods","setSwitchablePaymentMethods","hideVouchers","listVoucherParams","validUntilGt","valueCurrencyAllowed","createPaymentMethodMutation","createPaymentMethodError","createPaymentMethodLoading","deleteUserCustomAttribute","deleteUserCustomAttributeError","deleteUserCustomAttributeLoading","paymentProcessorAccount","providerSelectedCustomerUsername","voucherData","voucherQueryError","voucherQueryLoading","refetchVouchers","validUntil","gt","valueCurrency","shellCardPaymentMethod","isShellCardAllowed","restriction","dkvCardPaymentMethod","switchablePaymentMethodIds","paymentMethods","selectablePaymentMethods","filteredPaymentMethods","formatItem","getPaymentMethodLabel","getCustomUserAttributeById","getSwitchablePaymentMethodIcon","ApplePayLogo","GooglePayLogo","FontAwesome5","unsubscribe","preventDefault","filteredMethods","active","_switchablePaymentMethods","pm","publishableKey","stripePublishableKey","merchantIdentifier","refreshControl","RefreshControl","refreshing","onRefresh","animating","Switch","onSwitchValueChange","attributeName","listVouchersByCustomerValidUntil","parentVoucher","descriptionNumberOfLines","validFrom","productRestrictions","validProduct","countryCode","setCountryCode","setCountry","BillingDetailsComponent","setFieldTouched","readOnly","initialBillingType","setBillingType","setParentBillingType","billingType","isCountrySelectorModalVisible","setCountrySelectorModalVisible","typedValue","CountrySelectorModal","cardholderName","maxLength","billingAddress","addressLine1","taxId","PaymentSchemaCore","cardDetailsComplete","oneOf","PaymentSchema","PaymentSchemaCompany","PaymentFormComponent","ref","cardNumberWithSpaces","cardNumber","expiryYearShort","expiryYear","expiryMonth","cvc","inputRef","useImperativeHandle","postalCodeEnabled","cardStyle","onCardChange","cardDetails","complete","onFocus","focusedField","autoCompleteType","subheading","caption","divider","formContainer","button","ThemedComponent","currentTheme","accent","backdrop","notification","onSurface","onBackground","onPrimary","onAccent","dark","roundness","animation","scale","savingDetails","setSavingDetails","billingDetailsId","setBillingDetailsId","errorState","setErrorState","dialogVisible","setDialogVisible","dialogTitle","setDialogTitle","dialogMessage","setDialogMessage","dialogAction","setDialogAction","BillingDetailsSchema","defaultValues","addressLine2","isCompany","billingDetailsData","billingDetailsLoading","billingDetailsError","customerBillingDetails","listCustomerBillingDetailsByOwner","mapDbToFormValues","dbData","billingDetails","metadata","line1","line2","postal_code","tax_id","showDialog","hideDialog","handleSuccessfulSave","returnToScreen","returnParams","returnWithParams","returnFromBillingDetails","createBillingDetails","createLoading","createError","createCustomerBillingDetails","updateBillingDetails","updateLoading","updateError","updateCustomerBillingDetails","Subheading","billingDetailsInput","metadataInput","formikProps","isValid","field","handleFormSubmit","GET_PAYMENT_METHOD","DELETE_PAYMENT_METHOD","DetachPaymentRejectedModal","detachPaymentRejectedModalVisible","setDetachPaymentRejectedModalVisible","paymentMethodId","deletePaymentMethodMutation","mutationErrorDeletePaymentMethod","mutationLoadingDeletePaymentMethod","PaymentComponentBankTransfer","billing_details","pointerEvents","animated","small","serviceOrdersData","and","or","semver","SystemMessage","setData","isDismissed","setDismissed","setError","fetchData","now","ok","jsonData","json","appStateListener","AppState","nextAppState","checkVersion","version","systemMessage","systemMessages","lowVersion","appVersionGTE","highVersion","appVersionLT","isInBetweenVersion","satisfies","until","isWithinTimeRange","isBetween","platforms","body","blocking","dismissableBackButton","confirmingSetupIntent","setConfirmingSetupIntent","clientSecret","setClientSecret","intentMode","setIntentMode","_mutationErrorCreatePaymentMethod","mutationLoadingCreatePaymentMethod","setupIntentStatus","appearance","colorPrimary","colorBackground","colorDanger","fontFamily","elements","setElements","setStripe","Stripe","terms","fields","mount","stripeEventListener","setStripeEventListener","renderPaymentMethods","form","document","getElementById","myConfirmSetupIntent","confirmSetup","redirect","confirmParams","payment_method_data","querySelector","textContent","removeEventListener","click","hidden","callSubmit","handleConfirmPayPalSetup","navigationTargetOnVoucherSelect","AddVoucherSchema","CLAIM_VOUCHER","claimVoucherMutation","setErrorModalState","errorModalState","claimVoucherMutationInput","GENERATE_VOUCHER","LIST_PRODUCT_PACKAGES","utc","offsetBudapestAndLocalHours","zone","utcOffset","Localization","MULTI_USE","SINGLE_USE","VALUE","PERCENTAGE","HUF","EUR","supportedCurrencyCodes","row","paddingBottom","paddingHorizontal","generateVoucherMutation","productPackagesData","productPackagesLoading","currentDate","productPackagesDataWithActiveOfferings","listProductPackages","pkg","products","selectedPackage","setSelectedPackage","selectedCategory","setSelectedCategory","setSelectedProducts","openRangePicker","setOpenRangePicker","onDismissRangePicker","onConfirmRange","toDate","discountType","setDiscountType","VoucherSchema","nofVouchers","validAreaName","nullable","showAsDiscountOnInvoice","maxClaimCount","maxUseCount","idOverride","PackageSelection","packages","sortedPackages","selected","CategorySelection","categories","cat","category","AreaSelection","setSelectedProduct","flatMap","uniqueOfferingsBasedOnAreaNames","Map","areaNames","serviceFacilityIDs","uniqueOfferingsBasedOnAreaNamesGroupedByProductID","existingOffering","productID","Set","serviceFacilities","sf","serviceFacility","truncatedLabel","substring","ProductModal","productPackages","onConfirm","setStep","localSelectedPackage","setLocalSelectedPackage","localSelectedCategory","setLocalSelectedCategory","localSelectedProduct","setLocalSelectedProduct","resetAndDismiss","onBackdropPress","borderTopLeftRadius","borderTopRightRadius","borderColor","handleNext","isProductModalVisible","setProductModalVisible","voucherType","generateVoucherMutationInput","commonFields","parseFloat","productCategoryID","productPackageID","singleUseVoucher","nof_vouchers","multiUseVoucher","SegmentedControl","tintColor","primaryContainer","fontStyle","DatePickerModal","saveLabel","animationType","locale","validRange","clone","Affix","flexWrap","areaLabel","truncatedAreaLabel","Chip","onClose","newProduct","prevSelectedProducts","LIST_OPENINGHOURS_BY_COUNTRY_EFFECTIVEFROMUNTILENCODED","UPDATE_OPENING_HOURS","listOpeningHoursVariables","relevantAreas","relevantServiceFacitilites","findCommonElements","arr1","arr2","listOpeningHoursDataRaw","queryErrorListOpeningHours","queryLoadingListOpeningHours","listOpeningHoursData","updateOpeningHourMutation","updateOpeningHourMutationError","updateOpeningHourMutationLoading","handleUpdateOpeningHour","updateOpeningHours","isQueryLoading","recurring","groups","facility","recurringEntries","override","getOpeningHoursText","item2","idx2","weekday","openFromHour","openUntilHour","capacity","effectiveUntil","effectiveFrom","weekdayOpeningHours","inset","descriptionText","note","openingHoursMutationInput","AddOpeningHoursSchema","CREATE_OPENING_HOURS","capacityPickerOptions","showUnsavedChangesWarningDialog","setUnsavedChangesWarningDialog","navigationGoBackAction","setNavigationGoBackAction","createOpeningHourMutation","handleCreateOpeningHour","createOpeningHours","resetForm","dirty","capacityPicker","startTime","endTime","isClosed","createOpeningHourInput","effectiveFromUntilEncoded","isStartTimeVisible","setStartTimeVisible","onDismissStartTime","onConfirmStartTime","isEndTimeVisible","setEndTimeVisible","onDismissEndTime","onConfirmEndTime","TimePickerModal","uppercase","cancelLabel","confirmLabel","defaultInputType","use24HourClock","paddingRight","newSelectedAreaNames","i","newSelectedServiceFacilities","UPDATE_USER_INFO","DELETE_USER_ACCOUNT","signOutInProgress","setSignOutInProgress","UserProfileSchema","showAccountDeletionConfirmationDialog","setAccountDeletionConfirmationDialog","updateUserInfoMutation","deleteUserAccountMutation","deleteUserAccountMutationError","deleteUserAccountMutationLoading","deleteUserAccount","reset","resetStore","signOut","setSnackBarMessage","snackBarMessage","userID","updateUserInfo","OrderLocationAutocomplete","memo","placesAutocompleteRef","setHideMaps","validateForm","setCurrentLocation","setIsFacilityMode","mapViewRegion","setMapViewRegion","animateToRegion","fitMapToElements","fadeAnimBottomBar","barHeightAnimation","currentLocation","previousAddresses","googleMapsAPIKey","markerRegionAreaSizeMetres","animationDuration","convertGoogleMapsResponseToLocation","useTheme","GooglePlacesAutocompleteLocationParam","radius","GooglePlacesAutocomplete","details","geometry","myLat","myLon","lng","responseJson","results","setAddressText","formatted_address","locationFormatted","newIsFacilityMode","newRegion","parallel","handlePlaceSelect","debounce","minLength","enablePoweredByContainer","language","components","types","textInputProps","InputComp","clearButtonMode","fetchDetails","predefinedPlaces","predefinedPlacesAlwaysVisible","requestUrl","useOnPlatform","isRowScrollable","listHoverColor","surfaceDisabled","renderRow","suppressDefaultStyles","listView","prevProps","nextProps","defaultLocation","coords","GOOGLE_MAPS_API_KEY","getAddressValue","address_components","long_name","short_name","AnimatedRegion","Location","SelectLocationComponentSchema","LIST_MANDATORY_ADDONS","LIST_MANDATORY_ADDONS_PREFIX","LIST_OFFERINGS","LIST_SERVICE_FACILITIES","actionButton","mapStyleWeb","markerRefs","setMarkerRefs","isFacilityMode","validateOnMount","minOrderLeadTimeHoursPrediction","mandatoryTaskTypeIDs","callbackSetFormattedAddress","hideMaps","offeringTagsFilter","tags","contains","listOfferingsData","queryErrorListOfferings","queryLoadingListOfferings","offeredFrom","le","offeredUntil","ge","minLeadTime","listOfferings","franchiseContract","contract","minOrderLeadTimeHours","Number","MAX_SAFE_INTEGER","listMandatoryAddonsData","queryErrorListMandatoryAddons","queryLoadingListMandatoryAddons","isoCountryCodePostalCode","listMandatoryAddonsPrefixData","queryErrorListMandatoryAddonsPrefix","queryLoadingListMandatoryAddonsPrefix","mergedMandatoryAddonsData","isQueryLoadingMandatoryAddons","queryErrorMandatoryAddons","offeringTagsSet","addonsWithoutExempts","exemptTagsSet","exemptTags","has","tastIDs","listServiceFacilitiesData","queryErrorListServiceFacilities","queryLoadingListServiceFacilities","geohash","listServiceFacilitiesDataFiltered","listServiceFacilitiesByGeohash","ownerships","createRef","customMarkerRegionAreaSizeMetres","status","requestForegroundPermissionsAsync","getCurrentPositionAsync","getAddressText","getLocationAsync","isLocationSelected","selectServiceFacilityLocation","bounds","LatLngBounds","extend","center","getCenter","span","toSpan","initialRegion","identifier","markerRef","hideCallout","showCallout","Callout","DefaultTheme","selectedSegmentIndex","overflow","subtract","ellipsizeMode","round","isTimeslotMode","intervalString","screenWidth","ProductPackageDetailsModal","Component","constructor","super","flatten","ary","productPackageNames","productPackageNamesAndPrices","numberOfLines","taskNames","productItem","taskTypes","taskItem","rows","taskName","productPackageName","taskTypeItem","isIncluded","tableHead","scrollOffset","widthArr","scrollViewRef","close","header","textHeader","onRequestClose","scrollOffsetMax","transparent","presentationStyle","hardwareAccelerated","Table","borderStyle","Row","textStyle","handleOnScroll","rowData","addonInfoModalState","setAddonInfoModalState","itemID","getExclusiveAddonsNulled","group","element","exclusiveGroupID","addonsGroupsed","taskTypeID","groupID","Notes","minUnit","maxUnit","exclusiveAddonsNulled","PaperBtn","registerTranslation","save","selectSingle","selectMultiple","selectRange","notAccordingToDateFormat","inputFormat","mustBeHigherThan","mustBeLowerThan","mustBeBetween","dateIsDisabled","previous","next","typeInDate","pickDateFromCalendar","localTimezone","Intl","DateTimeFormat","resolvedOptions","timeZone","isoWeekdayToDayMapping","isNonEmptyStringArray","variable","findFirstIntersection","isBusinessHour","openingHoursArray","endOf","weekdayOpeningHour","opensAt","closesAt","recurringWeekdayOpeningHours","isoWeekday","getEarliestBusinessHour","dateFrom","searchRange","earliestBusinessHour","getDisabledDatesArray","GET_TIMESLOTS","GET_DISCOUNT","LIST_OFFERINGS_ADVANCED","DateTimePicker","labelDate","labelTime","setDate","isDateVisible","isTimeVisible","setIsDateVisible","setIsTimeVisible","onDismissDate","onChangeDate","selectedDate","selectedDateMoment","dateNewMoment","month","onDismissTime","onChangeTime","timeNewMoment","hour","minute","disabledDates","productCategorySelectionInit","productPackageSelectionInit","isCarIndoorsInit","rangeInit","addonsInit","offeringIdInit","carDirtyFlagInit","isModalVisible","setModalVisible","isBusinessHoursInfoModalVisible","setBusinessHoursInfoModalVisible","showScrollToBottomButton","setScrollToBottomButton","lastScrollEvent","setLastScrollEvent","setIsCarIndoors","onToggleIsCarIndoors","isCarExtraDirty","setIsCarExtraDirty","onToggleIsCarExtraDirty","setCarManualSelection","visibleStartDate","setVisibleStartDate","visibleStartTime","setVisibleStartTime","visibleEndDate","setVisibleEndDate","visibleEndTime","setVisibleEndTime","queryErrorListCars","queryLoadingListCars","getDiscountData","queryErrorGetDiscount","queryLoadingGetDiscount","listOfferingsAdvancedDataRaw","listOfferingParams","carTypeCategoryIDs","validDate","listOfferingsAdvancedV2","listOpeningHoursDataAll","between","startOf","openingHoursAreaNameIntersection","test","currentValue","setMinOrderLeadTimeHours","SelectServiceComponentSchema","schema","methodName","typeError","defaultCar","businessHoursCount","hoursCounter","originalEndDate","maxOfOriginalEndDateAndEndDate","insets","useSafeAreaInsets","enableScrollToBottomButton","scrollEvent","getDiscount","areaNameIntersection","offeringID","carID","cars","newServiceOrder","offeringIDs","carIDs","getTimeslotsData","queryErrorGetTimeslots","queryLoadingGetTimeslots","timeslotRequirements","timeSlots","isSpecialDaysWithinInterval","BusinessHoursInfoModal","onContentSizeChange","contentWidth","contentHeight","startDateValid","endDateMinValid","align","AddonsComponent","maxHeight","getDayNames","formatter","getMonthNames","calendar","paddingLeft","section","textTransform","borderBottomWidth","itemHourText","itemDurationText","itemTitleText","itemButtonContainer","emptyItem","borderBottomColor","emptyItemText","LocaleConfig","monthNames","monthNamesShort","dayNames","dayNamesShort","defaultLocale","mytheme","todayButtonTextColor","calendarBackground","todayTextColor","arrowColor","arrowStyle","monthTextColor","textMonthFontSize","textMonthFontFamily","textSectionTitleColor","textDayHeaderFontSize","textDayHeaderFontFamily","textDayHeaderFontWeight","dayTextColor","textDayFontSize","textDayFontFamily","textDayFontWeight","textDayStyle","selectedDayBackgroundColor","selectedDayTextColor","textDisabledColor","dotColor","selectedDotColor","disabledDotColor","dotStyle","testIDs","CONTAINER","ITEM","futureDates","numberOfDays","array","getFutureDates","AgendaItem","itemPressed","TouchableOpacity","ITEMS_RAW","timeslotsData","dateGroup","isSame","CalendarProvider","disabledOpacity","AgendaList","sections","sectionStyle","invalidPhoneNumber","SelectPaymentSchema","PaymentMethodItem","listPaymentMethodsServiceOrder","renderPaymentMethod","onPressProps","initialServiceOrder","useCurrentServiceOrder","LoginPrompt","surfaceVariant","LIST_SERVICEORDERS_BY_OWNER","CREATE_SERVICEORDER","CREATE_SETUP_INTENT","CREATE_STRIPE_PAYMENT_METHOD","LIST_CUSTOMER_BILLING_DETAILS","flexGrow","appUser","appUserAuthStatus","currentServiceOrder","isUserAuthenticated","listPaymentMethodsDataUnfiltered","_queryErrorListPaymentMethods","queryLoadingListPaymentMethods","listPaymentMethodsData","createStripePaymentMethodMutation","_mutationErrorCreateStripePaymentMethod","mutationLoadingCreateStripePaymentMethod","createStripePaymentMethod","createServiceOrderMutation","createSetupIntentMutation","_mutationErrorCreateSetupIntent","mutationLoadingCreateSetupIntent","createSetupIntent","ceil","priceFloat","strValue","stringToDouble","setupIntent","applePay","currencyCode","merchantCountryCode","cartItems","amount","paymentType","requiredBillingContactFields","ContactField","Name","PostalAddress","EmailAddress","PhoneNumber","googlePay","testEnv","allowCreditCards","billingAddressConfig","BillingAddressFormat","Full","isRequired","raw","isApplePay","isGooglePay","mutationLoadingCreateServiceOrder","createServiceOrderAdvancedV2","listServiceOrdersByOwnerData","analyticsPayload","productName","additionalServices","newServiceOrderId","refetchBillingDetails","hasBillingDetails","subheadingText","formattedBillingInfo","getVoucherDescription","renderPaymentMethodError","bankTransferError","paymentMethodSelection","Fragment","paymentMethodItems","defaultPaymentMethod","renderBillingDetailsWarning","bannerStyle","elevation","onSecondary","lineHeight","contentStyle","valuesFiltered","voucherIDs","voucherID","addonsWithoutOneOffs","offSession","display","textDecorationLine","intensity","PaymentOnSessionSchema","RETRY_PAYMENT_ONSESSION","setPaymentMethodSelection","retryPaymentOnSession","mutationLoadingRetryPaymentOnSession","confirmCardPayment","payment_method","setConfirmingPaymentIntent","expandedAccordionId","onClientSecretChanged","confirmingPaymentIntent","isGoToAppModalVisible","setGoToAppModalVisible","renderDiscount","showBankCardsOnly","Headline","localizer","momentLocalizer","listServiceOrdersData","colorScheme","Calendar","onSelectEvent","end","startAccessor","endAccessor","ServiceOrderCard","paymentIssue","useNavigation","subtitle","Avatar","ServiceOrderCardAccordion","groupColors","PAYMENT_ISSUE","STARTED","UPCOMING","PAST","sortedData","minHeight","_use11","_use12","_use13","_use14","_use15","_use16","_use17","_use18","_use19","_use20","_use21","_use22","_use23","_use24","_use25","_use26","_use27","_use28","_use29","_use30","_use31","_use32","_use33","_use34","_use35","_use36","_use37","_use38","_use39","_use40","_use41","_use42","_use43","_use44","_use45","_use46","_use47","_use48","_use49","_use50","_use51","_use52","_use53","_use54","_use55","_use56","_use57","_use58","_use59","_use60","_use61","_use62","_use63","_use64","_use65","_use66","_use67","_use68","xmlnsXlink","xlinkHref","fillOpacity","stroke","strokeOpacity","LIST_SERVICEORDERS_BY_AREAS_AND_FACILITIES","ON_UPDATE_SERVICEORDER","ON_UPDATE_SERVICEORDER_BY_AREA","ON_CREATE_SERVICEORDER","ON_CREATE_SERVICEORDER_BY_AREA","GET_AREA_NAMES","ServiceOrdersComponent","stateFilterSelection","setStateFilterSelection","groupSortingOrder","unsubscribeServiceOrderUpdatesRef","unsubscribeServiceOrderCreatesRef","viewMode","setViewMode","areaNamesData","queryErrorAreaNames","partnerWithActiveEmployment","areaNamesAndFacilities","area","LIST_SERVICEORDERS","listServiceOrdersQueryName","subscribeToMore","subscribeToServiceOrderUpdates","subscribeToServiceOrderCreation","pitem","setExpandedAccordionId","groupedServiceOrdersSorted","setGroupedServiceOrdersSorted","showFilterBar","setShowFilterBar","retrying","variableName","variableValue","responseFieldName","subscriptionData","itemUpdate","itemToBeUpdated","itemUpdated","existingItems","updatedItems","storedStateFilterSelection","storedViewMode","loadPreferences","groupedServiceOrders","indexOf","mapRef","fitToElements","fadeAnimFilterBar","fadeAnimViewModeButton","getPreviousAddressesFormatted","addresses","StatusBar","translucent","Surface","ToggleButton","showsHorizontalScrollIndicator","newStateFilterSelection","borderLeftWidth","borderLeftColor","CalendarComponent","expandedId","onAccordionPress","LayoutAnimation","easeInEaseOut","ListFooterComponent","initRegion","WelcomeImage","companiesAssociated","selectCompany","VersionDisplay","LegalLinks","GET_COMPANY_INFO","CREATE_STRIPE_CONNECTED_ACCOUNT","AccountScreen","useURL","_queryError","companyInfoQueryLoading","WebBrowser","phoneNumberString","enableTransferToConnectedAccount","companiesAssociatedEnabledOnly","areaNamesByCountry","serviceFacilitiesByCountry","facilities","tagsString","companyNames","isoCountryCodes","isSelectCompanyModalVisible","setSelectCompanyModalVisible","createStripeConnectedAccountMutation","_createStripeConnectedAccountMutationError","createStripeConnectedAccountMutationLoading","createStripeConnectedAccount","SelectCompanyModal","companyId","MailComposer","composeAsync","recipients","subject","ConfirmSignUpSchema","confirmSignUp","clientMetadata","materialColors","setDefault","en","translationEN","hu","translationHU","de","translationDE","fr","translationFR","preferredAvailableLanguage","getLocales","languageTag","Amplify","configure","oauth","domain","cognitoAuthDomain","redirectSignIn","origin","redirectSignOut","Analytics","disable","Sentry","dsn","debug","Notifications","handleNotification","shouldShowAlert","shouldPlaySound","shouldSetBadge","OrdersTab","createBottomTabNavigator","OrdersTabScreen","Navigator","initialRouteName","unmountInactiveRoutes","screenOptions","tabBarTestID","tabBarIcon","focused","iconName","getIconName","routeName","tabBarActiveTintColor","tabBarInactiveTintColor","headerShown","Screen","component","OrdersStackScreen","listeners","tabBarListeners","headerTintColor","tabBarLabel","AccountStackScreen","ServiceOrdersStack","createStackNavigator","ServiceOrdersStackScreen","_user","ServiceOrderComponent","SelectLocationComponent","headerBackTitle","gestureEnabled","SelectServiceComponent","TimeslotPickerComponent","CarsComponent","CarComponent","AddCarComponent","SelectPaymentComponent","PaymentsComponent","PaymentComponent","PaymentMethodTypeSelector","AddPaymentComponent","PaymentOnSessionComponent","VouchersComponent","AddVoucherComponent","OrderConfirmedComponent","AuthenticationNavigator","OrdersStack","AccountStack","UserProfileComponent","PrivacyPolicyComponent","TermsAndConditionsComponent","CreateConnectedAccountComponent","VouchersProviderComponent","GenerateVoucherComponent","OpeningHoursComponent","AddOpeningHoursComponent","CombinedDefaultTheme","PaperDefaultTheme","NavigationDefaultTheme","CombinedDarkTheme","PaperDarkTheme","NavigationDarkTheme","AuthenticationStack","screenProps","SignIn","SignUp","ConfirmSignUp","ResendCode","ForgotPassword","ForgotPasswordSubmit","Initializing","WrongAppVariantCustomer","setUserLoggedIn","WrongAppVariantProvider","WrongAppVariant","tabPress","App","dispatchUser","isUserLoggedIn","expoPushToken","setExpoPushToken","channels","setChannels","setNotification","setOauthLoading","updateExpoPushTokenInAmplify","tokenAmplify","updateUserAttributes","checkAuthState","localesAmplify","localesDevice","updateLocalesInAmplify","_a","Appearance","getColorScheme","setColorScheme","onColorSchemeChange","preferences","resetCurrentTimeout","appearanceChangeHandler","addChangeListener","useColorScheme","themeColors","schemes","light","navigationRef","routeNameRef","SafeAreaProvider","PaperProvider","NavigationContainer","onReady","getCurrentRoute","previousRouteName","currentRouteName","ApolloProvider","AppWithProvider","registerRootComponent","webpackContext","req","webpackContextResolve","__webpack_require__","o","module","exports","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","m","amdO","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","splice","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","ns","def","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","u","miniCssF","g","globalThis","Function","hmd","prop","prototype","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","onerror","onload","doneFns","parentNode","removeChild","target","head","appendChild","Symbol","toStringTag","nmd","paths","loadStylesheet","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","self","__webpack_exports__"],"sourceRoot":""}