@oneblink/apps-react 9.0.0-beta.1 → 9.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/OneBlinkForm.d.ts +6 -10
- package/dist/OneBlinkForm.js +0 -4
- package/dist/OneBlinkForm.js.map +1 -1
- package/dist/OneBlinkFormBase.d.ts +1 -1
- package/dist/OneBlinkFormBase.js +3 -2
- package/dist/OneBlinkFormBase.js.map +1 -1
- package/dist/OneBlinkReadOnlyForm.d.ts +1 -1
- package/dist/OneBlinkReadOnlyForm.js +1 -1
- package/dist/OneBlinkReadOnlyForm.js.map +1 -1
- package/dist/PaymentReceipt.d.ts +1 -1
- package/dist/PaymentReceipt.js +3 -3
- package/dist/PaymentReceipt.js.map +1 -1
- package/dist/apps/Sentry.d.ts +7 -0
- package/dist/apps/Sentry.js +16 -0
- package/dist/apps/Sentry.js.map +1 -0
- package/dist/apps/approvals-service.d.ts +390 -0
- package/dist/apps/approvals-service.js +987 -0
- package/dist/apps/approvals-service.js.map +1 -0
- package/dist/apps/attachments-service.d.ts +49 -0
- package/dist/apps/attachments-service.js +134 -0
- package/dist/apps/attachments-service.js.map +1 -0
- package/dist/apps/auth-service.d.ts +114 -0
- package/dist/apps/auth-service.js +194 -0
- package/dist/apps/auth-service.js.map +1 -0
- package/dist/apps/auto-save-service.d.ts +82 -0
- package/dist/apps/auto-save-service.js +105 -0
- package/dist/apps/auto-save-service.js.map +1 -0
- package/dist/apps/draft-service.d.ts +148 -0
- package/dist/apps/draft-service.js +583 -0
- package/dist/apps/draft-service.js.map +1 -0
- package/dist/apps/form-service.d.ts +204 -0
- package/dist/apps/form-service.js +718 -0
- package/dist/apps/form-service.js.map +1 -0
- package/dist/apps/form-store-service.d.ts +141 -0
- package/dist/apps/form-store-service.js +114 -0
- package/dist/apps/form-store-service.js.map +1 -0
- package/dist/apps/forms-app-environment-service.d.ts +19 -0
- package/dist/apps/forms-app-environment-service.js +55 -0
- package/dist/apps/forms-app-environment-service.js.map +1 -0
- package/dist/apps/forms-app-service.d.ts +18 -0
- package/dist/apps/forms-app-service.js +53 -0
- package/dist/apps/forms-app-service.js.map +1 -0
- package/dist/apps/index.d.ts +253 -0
- package/dist/apps/index.js +255 -0
- package/dist/apps/index.js.map +1 -0
- package/dist/apps/job-service.d.ts +20 -0
- package/dist/apps/job-service.js +95 -0
- package/dist/apps/job-service.js.map +1 -0
- package/dist/apps/localisation-service.d.ts +207 -0
- package/dist/apps/localisation-service.js +321 -0
- package/dist/apps/localisation-service.js.map +1 -0
- package/dist/apps/notification-service.d.ts +83 -0
- package/dist/apps/notification-service.js +315 -0
- package/dist/apps/notification-service.js.map +1 -0
- package/dist/apps/offline-service.d.ts +18 -0
- package/dist/apps/offline-service.js +25 -0
- package/dist/apps/offline-service.js.map +1 -0
- package/dist/apps/payment-service.d.ts +110 -0
- package/dist/apps/payment-service.js +182 -0
- package/dist/apps/payment-service.js.map +1 -0
- package/dist/apps/prefill-service.d.ts +14 -0
- package/dist/apps/prefill-service.js +19 -0
- package/dist/apps/prefill-service.js.map +1 -0
- package/dist/apps/scheduled-tasks-service.d.ts +127 -0
- package/dist/apps/scheduled-tasks-service.js +240 -0
- package/dist/apps/scheduled-tasks-service.js.map +1 -0
- package/dist/apps/scheduling-service.d.ts +101 -0
- package/dist/apps/scheduling-service.js +171 -0
- package/dist/apps/scheduling-service.js.map +1 -0
- package/dist/apps/services/AWSCognitoClient.d.ts +55 -0
- package/dist/apps/services/AWSCognitoClient.js +436 -0
- package/dist/apps/services/AWSCognitoClient.js.map +1 -0
- package/dist/apps/services/api/drafts.d.ts +7 -0
- package/dist/apps/services/api/drafts.js +236 -0
- package/dist/apps/services/api/drafts.js.map +1 -0
- package/dist/apps/services/api/notifications.d.ts +3 -0
- package/dist/apps/services/api/notifications.js +60 -0
- package/dist/apps/services/api/notifications.js.map +1 -0
- package/dist/apps/services/api/payment.d.ts +23 -0
- package/dist/apps/services/api/payment.js +235 -0
- package/dist/apps/services/api/payment.js.map +1 -0
- package/dist/apps/services/api/post-submission-attachment-urls.d.ts +7 -0
- package/dist/apps/services/api/post-submission-attachment-urls.js +19 -0
- package/dist/apps/services/api/post-submission-attachment-urls.js.map +1 -0
- package/dist/apps/services/api/prefill.d.ts +1 -0
- package/dist/apps/services/api/prefill.js +70 -0
- package/dist/apps/services/api/prefill.js.map +1 -0
- package/dist/apps/services/api/receipt-id.d.ts +2 -0
- package/dist/apps/services/api/receipt-id.js +54 -0
- package/dist/apps/services/api/receipt-id.js.map +1 -0
- package/dist/apps/services/api/scheduling.d.ts +38 -0
- package/dist/apps/services/api/scheduling.js +142 -0
- package/dist/apps/services/api/scheduling.js.map +1 -0
- package/dist/apps/services/api/submissions.d.ts +18 -0
- package/dist/apps/services/api/submissions.js +166 -0
- package/dist/apps/services/api/submissions.js.map +1 -0
- package/dist/apps/services/cognito.d.ts +302 -0
- package/dist/apps/services/cognito.js +441 -0
- package/dist/apps/services/cognito.js.map +1 -0
- package/dist/apps/services/draft-data-store.d.ts +16 -0
- package/dist/apps/services/draft-data-store.js +115 -0
- package/dist/apps/services/draft-data-store.js.map +1 -0
- package/dist/apps/services/errors/oneBlinkAppsError.d.ts +35 -0
- package/dist/apps/services/errors/oneBlinkAppsError.js +32 -0
- package/dist/apps/services/errors/oneBlinkAppsError.js.map +1 -0
- package/dist/apps/services/external-id-generation.d.ts +4 -0
- package/dist/apps/services/external-id-generation.js +59 -0
- package/dist/apps/services/external-id-generation.js.map +1 -0
- package/dist/apps/services/fetch.d.ts +12 -0
- package/dist/apps/services/fetch.js +95 -0
- package/dist/apps/services/fetch.js.map +1 -0
- package/dist/apps/services/forms-key.d.ts +51 -0
- package/dist/apps/services/forms-key.js +83 -0
- package/dist/apps/services/forms-key.js.map +1 -0
- package/dist/apps/services/generate-generic-error.d.ts +3 -0
- package/dist/apps/services/generate-generic-error.js +52 -0
- package/dist/apps/services/generate-generic-error.js.map +1 -0
- package/dist/apps/services/generateOneBlinkDownloader.d.ts +2 -0
- package/dist/apps/services/generateOneBlinkDownloader.js +11 -0
- package/dist/apps/services/generateOneBlinkDownloader.js.map +1 -0
- package/dist/apps/services/generateOneBlinkUploader.d.ts +2 -0
- package/dist/apps/services/generateOneBlinkUploader.js +11 -0
- package/dist/apps/services/generateOneBlinkUploader.js.map +1 -0
- package/dist/apps/services/getDeviceInformation.d.ts +17 -0
- package/dist/apps/services/getDeviceInformation.js +38 -0
- package/dist/apps/services/getDeviceInformation.js.map +1 -0
- package/dist/apps/services/integration-elements.d.ts +383 -0
- package/dist/apps/services/integration-elements.js +761 -0
- package/dist/apps/services/integration-elements.js.map +1 -0
- package/dist/apps/services/job-prefill.d.ts +40 -0
- package/dist/apps/services/job-prefill.js +78 -0
- package/dist/apps/services/job-prefill.js.map +1 -0
- package/dist/apps/services/payment-providers/BPOINTPaymentProvider.d.ts +29 -0
- package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js +59 -0
- package/dist/apps/services/payment-providers/BPOINTPaymentProvider.js.map +1 -0
- package/dist/apps/services/payment-providers/CPPayPaymentProvider.d.ts +27 -0
- package/dist/apps/services/payment-providers/CPPayPaymentProvider.js +63 -0
- package/dist/apps/services/payment-providers/CPPayPaymentProvider.js.map +1 -0
- package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.d.ts +30 -0
- package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js +116 -0
- package/dist/apps/services/payment-providers/NSWGovPayPaymentProvider.js.map +1 -0
- package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.d.ts +49 -0
- package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js +116 -0
- package/dist/apps/services/payment-providers/WestpacQuickStreamPaymentProvider.js.map +1 -0
- package/dist/apps/services/payment-providers/receipt-items.d.ts +8 -0
- package/dist/apps/services/payment-providers/receipt-items.js +58 -0
- package/dist/apps/services/payment-providers/receipt-items.js.map +1 -0
- package/dist/apps/services/pending-queue.d.ts +150 -0
- package/dist/apps/services/pending-queue.js +316 -0
- package/dist/apps/services/pending-queue.js.map +1 -0
- package/dist/apps/services/prepareSubmissionData.d.ts +2 -0
- package/dist/apps/services/prepareSubmissionData.js +113 -0
- package/dist/apps/services/prepareSubmissionData.js.map +1 -0
- package/dist/apps/services/query-string.d.ts +1 -0
- package/dist/apps/services/query-string.js +16 -0
- package/dist/apps/services/query-string.js.map +1 -0
- package/dist/apps/services/replaceInjectablesWithSubmissionValues.d.ts +3 -0
- package/dist/apps/services/replaceInjectablesWithSubmissionValues.js +18 -0
- package/dist/apps/services/replaceInjectablesWithSubmissionValues.js.map +1 -0
- package/dist/apps/services/schedulingHandlers.d.ts +36 -0
- package/dist/apps/services/schedulingHandlers.js +76 -0
- package/dist/apps/services/schedulingHandlers.js.map +1 -0
- package/dist/apps/services/server-validation.d.ts +2 -0
- package/dist/apps/services/server-validation.js +36 -0
- package/dist/apps/services/server-validation.js.map +1 -0
- package/dist/apps/services/serverRequest.d.ts +5 -0
- package/dist/apps/services/serverRequest.js +24 -0
- package/dist/apps/services/serverRequest.js.map +1 -0
- package/dist/apps/services/submit.d.ts +19 -0
- package/dist/apps/services/submit.js +219 -0
- package/dist/apps/services/submit.js.map +1 -0
- package/dist/apps/services/uploadAttachment.d.ts +52 -0
- package/dist/apps/services/uploadAttachment.js +73 -0
- package/dist/apps/services/uploadAttachment.js.map +1 -0
- package/dist/apps/services/user-token.d.ts +27 -0
- package/dist/apps/services/user-token.js +33 -0
- package/dist/apps/services/user-token.js.map +1 -0
- package/dist/apps/services/utils.d.ts +12 -0
- package/dist/apps/services/utils.js +100 -0
- package/dist/apps/services/utils.js.map +1 -0
- package/dist/apps/submission-service.d.ts +226 -0
- package/dist/apps/submission-service.js +425 -0
- package/dist/apps/submission-service.js.map +1 -0
- package/dist/apps/tenants.d.ts +30 -0
- package/dist/apps/tenants.js +155 -0
- package/dist/apps/tenants.js.map +1 -0
- package/dist/apps/types/form.d.ts +4 -0
- package/dist/apps/types/form.js +2 -0
- package/dist/apps/types/form.js.map +1 -0
- package/dist/apps/types/payments.d.ts +45 -0
- package/dist/apps/types/payments.js +2 -0
- package/dist/apps/types/payments.js.map +1 -0
- package/dist/apps/types/scheduling.d.ts +5 -0
- package/dist/apps/types/scheduling.js +2 -0
- package/dist/apps/types/scheduling.js.map +1 -0
- package/dist/apps/types/submissions.d.ts +175 -0
- package/dist/apps/types/submissions.js +2 -0
- package/dist/apps/types/submissions.js.map +1 -0
- package/dist/components/ArcGISWebMap.js +7 -4
- package/dist/components/ArcGISWebMap.js.map +1 -1
- package/dist/components/ConfirmDialog.js +1 -0
- package/dist/components/ConfirmDialog.js.map +1 -1
- package/dist/components/CustomAccordion.d.ts +3 -3
- package/dist/components/Lists.d.ts +4 -1
- package/dist/components/calendar-bookings/CalendarBookingsCancelForm.js +1 -1
- package/dist/components/calendar-bookings/CalendarBookingsCancelForm.js.map +1 -1
- package/dist/components/calendar-bookings/CalendarBookingsForm.d.ts +1 -1
- package/dist/components/calendar-bookings/CalendarBookingsForm.js +1 -1
- package/dist/components/calendar-bookings/CalendarBookingsForm.js.map +1 -1
- package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.js +1 -1
- package/dist/components/calendar-bookings/CalendarBookingsReschedulingForm.js.map +1 -1
- package/dist/components/calendar-bookings/ErrorModal.d.ts +1 -1
- package/dist/components/calendar-bookings/ErrorModal.js +1 -1
- package/dist/components/calendar-bookings/ErrorModal.js.map +1 -1
- package/dist/components/downloadable-files/index.d.ts +1 -1
- package/dist/components/downloadable-files/index.js +1 -1
- package/dist/components/downloadable-files/index.js.map +1 -1
- package/dist/components/downloadable-files/resource-components.d.ts +1 -1
- package/dist/components/downloadable-files/resource-components.js +1 -1
- package/dist/components/downloadable-files/resource-components.js.map +1 -1
- package/dist/components/formStore/FormStoreTableProvider.js +1 -1
- package/dist/components/formStore/FormStoreTableProvider.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js +1 -3
- package/dist/components/formStore/OneBlinkFormStoreClearFiltersButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js +1 -1
- package/dist/components/formStore/OneBlinkFormStoreDownloadButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreProvider.js +1 -1
- package/dist/components/formStore/OneBlinkFormStoreProvider.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js +1 -3
- package/dist/components/formStore/OneBlinkFormStoreRefreshButton.js.map +1 -1
- package/dist/components/formStore/OneBlinkFormStoreTable.js +7 -7
- package/dist/components/formStore/OneBlinkFormStoreTable.js.map +1 -1
- package/dist/components/formStore/display/ElementDisplay.js +2 -2
- package/dist/components/formStore/display/ElementDisplay.js.map +1 -1
- package/dist/components/formStore/table/ColumnFilters.js +1 -1
- package/dist/components/formStore/table/ColumnFilters.js.map +1 -1
- package/dist/components/formStore/table/FormElementTableCell.js +1 -1
- package/dist/components/formStore/table/FormElementTableCell.js.map +1 -1
- package/dist/components/formStore/table/Pickers.js +1 -1
- package/dist/components/formStore/table/Pickers.js.map +1 -1
- package/dist/components/formStore/table/RepeatableSetCell.js +1 -0
- package/dist/components/formStore/table/RepeatableSetCell.js.map +1 -1
- package/dist/components/formStore/table/generateColumns.d.ts +1 -1
- package/dist/components/formStore/table/generateColumns.js.map +1 -1
- package/dist/components/formStore/table/useFormStoreTable.d.ts +1 -1
- package/dist/components/formStore/table/useFormStoreTable.js +3 -1
- package/dist/components/formStore/table/useFormStoreTable.js.map +1 -1
- package/dist/components/formStore/useFormStoreTableContext.d.ts +2 -2
- package/dist/components/mfa/MfaDialog.d.ts +1 -1
- package/dist/components/mfa/MfaDialog.js +1 -1
- package/dist/components/mfa/MfaDialog.js.map +1 -1
- package/dist/components/mfa/MultiFactorAuthentication.d.ts +1 -1
- package/dist/components/payments/PaymentForm.js +1 -1
- package/dist/components/payments/PaymentForm.js.map +1 -1
- package/dist/components/payments/WestpacQuickStreamPaymentForm.d.ts +1 -1
- package/dist/components/payments/WestpacQuickStreamPaymentForm.js +1 -1
- package/dist/components/payments/WestpacQuickStreamPaymentForm.js.map +1 -1
- package/dist/components/renderer/AutocompleteDropdown.js +1 -1
- package/dist/components/renderer/AutocompleteDropdown.js.map +1 -1
- package/dist/components/renderer/LookupNotification.js +2 -2
- package/dist/components/renderer/LookupNotification.js.map +1 -1
- package/dist/components/renderer/Modal.js +3 -1
- package/dist/components/renderer/Modal.js.map +1 -1
- package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js +1 -1
- package/dist/components/renderer/OneBlinkAppsErrorOriginalMessage.js.map +1 -1
- package/dist/components/renderer/OneBlinkFormElements.js.map +1 -1
- package/dist/components/renderer/ReverseGeocode.js +1 -1
- package/dist/components/renderer/ReverseGeocode.js.map +1 -1
- package/dist/components/renderer/Tooltip.js +3 -1
- package/dist/components/renderer/Tooltip.js.map +1 -1
- package/dist/form-elements/FormElementAPINSWLiquorLicence.js +1 -1
- package/dist/form-elements/FormElementAPINSWLiquorLicence.js.map +1 -1
- package/dist/form-elements/FormElementArcGISWebMap.js.map +1 -1
- package/dist/form-elements/FormElementAutocomplete.js +1 -1
- package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
- package/dist/form-elements/FormElementBSB.js +7 -3
- package/dist/form-elements/FormElementBSB.js.map +1 -1
- package/dist/form-elements/FormElementCalculation.js +2 -2
- package/dist/form-elements/FormElementCalculation.js.map +1 -1
- package/dist/form-elements/FormElementCivicaNameRecord.js +1 -1
- package/dist/form-elements/FormElementCivicaNameRecord.js.map +1 -1
- package/dist/form-elements/FormElementCivicaStreetName.js +1 -1
- package/dist/form-elements/FormElementCivicaStreetName.js.map +1 -1
- package/dist/form-elements/FormElementCompliance.d.ts +1 -1
- package/dist/form-elements/FormElementCompliance.js.map +1 -1
- package/dist/form-elements/FormElementDate.js +1 -1
- package/dist/form-elements/FormElementDate.js.map +1 -1
- package/dist/form-elements/FormElementDateTime.js +1 -1
- package/dist/form-elements/FormElementDateTime.js.map +1 -1
- package/dist/form-elements/FormElementFile.d.ts +1 -1
- package/dist/form-elements/FormElementFile.js.map +1 -1
- package/dist/form-elements/FormElementFiles.d.ts +1 -1
- package/dist/form-elements/FormElementFiles.js.map +1 -1
- package/dist/form-elements/FormElementFreshdeskDependentField.js +3 -10
- package/dist/form-elements/FormElementFreshdeskDependentField.js.map +1 -1
- package/dist/form-elements/FormElementGeoscapeAddress.js +1 -1
- package/dist/form-elements/FormElementGeoscapeAddress.js.map +1 -1
- package/dist/form-elements/FormElementGoogleAddress.js +1 -1
- package/dist/form-elements/FormElementGoogleAddress.js.map +1 -1
- package/dist/form-elements/FormElementLocation.js +6 -2
- package/dist/form-elements/FormElementLocation.js.map +1 -1
- package/dist/form-elements/FormElementLookupButton.js +1 -1
- package/dist/form-elements/FormElementLookupButton.js.map +1 -1
- package/dist/form-elements/FormElementNumber.js +1 -1
- package/dist/form-elements/FormElementNumber.js.map +1 -1
- package/dist/form-elements/FormElementPointAddress.js +1 -1
- package/dist/form-elements/FormElementPointAddress.js.map +1 -1
- package/dist/form-elements/FormElementPointAddressV3.js +1 -1
- package/dist/form-elements/FormElementPointAddressV3.js.map +1 -1
- package/dist/form-elements/FormElementPointCadastralParcel.js +1 -1
- package/dist/form-elements/FormElementPointCadastralParcel.js.map +1 -1
- package/dist/form-elements/FormElementSummary.js +4 -2
- package/dist/form-elements/FormElementSummary.js.map +1 -1
- package/dist/form-elements/FormElementTime.js +1 -1
- package/dist/form-elements/FormElementTime.js.map +1 -1
- package/dist/hooks/attachments/useAttachment.d.ts +1 -1
- package/dist/hooks/attachments/useAttachment.js +1 -1
- package/dist/hooks/attachments/useAttachment.js.map +1 -1
- package/dist/hooks/attachments/useAttachments.d.ts +1 -1
- package/dist/hooks/attachments/useAttachments.js.map +1 -1
- package/dist/hooks/form-date-picker/useFormDatePickerProps.js +2 -0
- package/dist/hooks/form-date-picker/useFormDatePickerProps.js.map +1 -1
- package/dist/hooks/useAuth.js +1 -1
- package/dist/hooks/useAuth.js.map +1 -1
- package/dist/hooks/useConditionalLogic.js +1 -1
- package/dist/hooks/useConditionalLogic.js.map +1 -1
- package/dist/hooks/useDrafts.d.ts +1 -1
- package/dist/hooks/useDrafts.js +1 -1
- package/dist/hooks/useDrafts.js.map +1 -1
- package/dist/hooks/useDynamicOptionsLoaderState.d.ts +1 -1
- package/dist/hooks/useDynamicOptionsLoaderState.js +1 -1
- package/dist/hooks/useDynamicOptionsLoaderState.js.map +1 -1
- package/dist/hooks/useFormElementLookups.d.ts +1 -1
- package/dist/hooks/useFormElementLookups.js +1 -1
- package/dist/hooks/useFormElementLookups.js.map +1 -1
- package/dist/hooks/useFormSubmissionAutoSaveState.d.ts +1 -1
- package/dist/hooks/useFormSubmissionAutoSaveState.js +1 -1
- package/dist/hooks/useFormSubmissionAutoSaveState.js.map +1 -1
- package/dist/hooks/useFormSubmissionDuration.js +2 -0
- package/dist/hooks/useFormSubmissionDuration.js.map +1 -1
- package/dist/hooks/useIsOffline.js +1 -1
- package/dist/hooks/useIsOffline.js.map +1 -1
- package/dist/hooks/useLoadDataState.js +3 -1
- package/dist/hooks/useLoadDataState.js.map +1 -1
- package/dist/hooks/useLogin.js +1 -1
- package/dist/hooks/useLogin.js.map +1 -1
- package/dist/hooks/useMfa.d.ts +1 -1
- package/dist/hooks/useMfa.js +1 -1
- package/dist/hooks/useMfa.js.map +1 -1
- package/dist/hooks/useOnUploadAttachment.d.ts +1 -1
- package/dist/hooks/useOnUploadAttachment.js +1 -1
- package/dist/hooks/useOnUploadAttachment.js.map +1 -1
- package/dist/hooks/useOneBlinkFormContainer.d.ts +2 -1
- package/dist/hooks/useOneBlinkFormContainer.js +2 -2
- package/dist/hooks/useOneBlinkFormContainer.js.map +1 -1
- package/dist/hooks/usePendingSubmissions.d.ts +1 -1
- package/dist/hooks/usePendingSubmissions.js +1 -1
- package/dist/hooks/usePendingSubmissions.js.map +1 -1
- package/dist/hooks/useReplaceableText.js +1 -1
- package/dist/hooks/useReplaceableText.js.map +1 -1
- package/dist/hooks/useSignUp.js +1 -1
- package/dist/hooks/useSignUp.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/services/attachments.d.ts +1 -1
- package/dist/services/attachments.js +1 -1
- package/dist/services/attachments.js.map +1 -1
- package/dist/services/blob-utils.js +1 -1
- package/dist/services/blob-utils.js.map +1 -1
- package/dist/services/checkIfAttachmentsExist.d.ts +1 -1
- package/dist/services/checkIfAttachmentsExist.js.map +1 -1
- package/dist/services/defaultCoordinates.js +1 -1
- package/dist/services/defaultCoordinates.js.map +1 -1
- package/dist/services/download-file.d.ts +1 -1
- package/dist/services/download-file.js +2 -2
- package/dist/services/download-file.js.map +1 -1
- package/dist/services/drawTimestampOnCanvas.js +1 -1
- package/dist/services/drawTimestampOnCanvas.js.map +1 -1
- package/dist/services/form-validation/validateSubmission.js +1 -1
- package/dist/services/form-validation/validateSubmission.js.map +1 -1
- package/dist/services/form-validation/validators.d.ts +1 -1
- package/dist/services/form-validation/validators.js.map +1 -1
- package/dist/services/generate-default-data.js +1 -1
- package/dist/services/generate-default-data.js.map +1 -1
- package/dist/services/injectableOptions.js +1 -1
- package/dist/services/injectableOptions.js.map +1 -1
- package/dist/styles.css +208 -204
- package/dist/types/attachments.d.ts +1 -1
- package/dist/types/attachments.js.map +1 -1
- package/dist/utils/sendGoogleAnalyticsEvent.js +1 -1
- package/dist/utils/sendGoogleAnalyticsEvent.js.map +1 -1
- package/package.json +47 -36
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import { isOffline } from './offline-service';
|
|
2
|
+
import { getFormsKeyId, isLoggedIn } from './auth-service';
|
|
3
|
+
import { registerPendingQueueListener, getPendingQueueSubmissions, updatePendingQueueSubmission, cancelEditingPendingQueueSubmission, deletePendingQueueSubmission, editPendingQueueSubmission, registerPendingQueueAttachmentProgressListener, registerPendingQueueProgressListener, executePendingQueueProgressListeners, removePendingQueueSubmission, } from './services/pending-queue';
|
|
4
|
+
import replaceInjectablesWithSubmissionValues from './services/replaceInjectablesWithSubmissionValues';
|
|
5
|
+
import Sentry from './Sentry';
|
|
6
|
+
import prepareSubmissionData from './services/prepareSubmissionData';
|
|
7
|
+
import submitForm from './services/submit';
|
|
8
|
+
import { deleteAutoSaveData } from './auto-save-service';
|
|
9
|
+
import { downloadFormSubmission } from './services/api/submissions';
|
|
10
|
+
import { getSubmissionAttachmentDetails } from './attachments-service';
|
|
11
|
+
import getPostSubmissionAttachments from './services/api/post-submission-attachment-urls';
|
|
12
|
+
let _isProcessingPendingQueue = false;
|
|
13
|
+
/**
|
|
14
|
+
* Force processing the pending queue. This must be called to process the
|
|
15
|
+
* pending queue and is best used when the application comes back online.
|
|
16
|
+
*
|
|
17
|
+
* ### Example
|
|
18
|
+
*
|
|
19
|
+
* ```js
|
|
20
|
+
* await submissionService.processPendingQueue()
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
async function processPendingQueue({ shouldRunExternalIdGeneration, shouldRunServerValidation, }) {
|
|
26
|
+
if (_isProcessingPendingQueue) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
_isProcessingPendingQueue = true;
|
|
30
|
+
console.log('Checking pending queue for submissions.');
|
|
31
|
+
const pendingQueueSubmissions = await getPendingQueueSubmissions();
|
|
32
|
+
console.log(`Found ${pendingQueueSubmissions.length} submission(s) in the pending queue.`);
|
|
33
|
+
for (const pendingQueueSubmission of pendingQueueSubmissions) {
|
|
34
|
+
if (isOffline()) {
|
|
35
|
+
console.log('Application is offline, leaving submission in the pending queue:', pendingQueueSubmission);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (pendingQueueSubmission.isEditing) {
|
|
39
|
+
console.log('submission is being edited, leaving submission in the pending queue:', pendingQueueSubmission);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (pendingQueueSubmission.definition.isAuthenticated &&
|
|
43
|
+
!isLoggedIn() &&
|
|
44
|
+
!getFormsKeyId()) {
|
|
45
|
+
console.log('Authentication is required for this form but the user does not have a valid token, leaving submission in the pending queue:', pendingQueueSubmission);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
console.log('Attempting to process submission from pending queue:', pendingQueueSubmission);
|
|
50
|
+
pendingQueueSubmission.isSubmitting = true;
|
|
51
|
+
pendingQueueSubmission.error = undefined;
|
|
52
|
+
await updatePendingQueueSubmission(pendingQueueSubmission.pendingTimestamp, pendingQueueSubmission, 'SUBMIT_STARTED');
|
|
53
|
+
const preparedSubmission = await prepareSubmissionData(pendingQueueSubmission);
|
|
54
|
+
pendingQueueSubmission.submission = {
|
|
55
|
+
...preparedSubmission,
|
|
56
|
+
};
|
|
57
|
+
const attachments = getSubmissionAttachmentDetails(pendingQueueSubmission.definition.elements, pendingQueueSubmission.submission);
|
|
58
|
+
const failedAttachments = attachments.filter((attachment) => attachment.value.type === 'ERROR');
|
|
59
|
+
if (failedAttachments.length) {
|
|
60
|
+
throw new Error(`Failed to upload ${failedAttachments.length} attachment${failedAttachments.length > 1 ? 's' : ''}.`);
|
|
61
|
+
}
|
|
62
|
+
await submitWithCompletionTimestamp({
|
|
63
|
+
isPendingQueueEnabled: true,
|
|
64
|
+
formSubmission: pendingQueueSubmission,
|
|
65
|
+
onProgress: (event) => {
|
|
66
|
+
executePendingQueueProgressListeners({
|
|
67
|
+
...event,
|
|
68
|
+
pendingTimestamp: pendingQueueSubmission.pendingTimestamp,
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
shouldRunExternalIdGeneration,
|
|
72
|
+
shouldRunServerValidation,
|
|
73
|
+
paymentFormUrl: undefined,
|
|
74
|
+
paymentReceiptUrl: undefined,
|
|
75
|
+
completionTimestamp: pendingQueueSubmission.pendingTimestamp,
|
|
76
|
+
});
|
|
77
|
+
await removePendingQueueSubmission(pendingQueueSubmission.pendingTimestamp, 'SUBMIT_SUCCEEDED');
|
|
78
|
+
console.log('Successfully processed submission from the pending queue', pendingQueueSubmission);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
Sentry.captureException(error);
|
|
82
|
+
console.error('Error processing submission from the pending queue', error);
|
|
83
|
+
pendingQueueSubmission.isSubmitting = false;
|
|
84
|
+
if (error.message) {
|
|
85
|
+
pendingQueueSubmission.error = error.message;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
pendingQueueSubmission.error =
|
|
89
|
+
'An unknown error has occurred, which has prevented your Form from submitting. Please try again, or contact your Administrator if the problem persists.';
|
|
90
|
+
}
|
|
91
|
+
await updatePendingQueueSubmission(pendingQueueSubmission.pendingTimestamp, pendingQueueSubmission, 'SUBMIT_FAILED');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
console.log('Finished attempting to processing submissions in the pending queue.');
|
|
95
|
+
_isProcessingPendingQueue = false;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Submit a FormSubmission. Offline submissions will be added to a pending queue
|
|
99
|
+
* and be processed using the `processPendingQueue()` function. FormSubmissions
|
|
100
|
+
* with payment submission events will return the FormSubmissionResult with a
|
|
101
|
+
* `payment` property set, this should be used to redirect the user to the
|
|
102
|
+
* payment URL. Will also handle cleaning up auto save data (if the
|
|
103
|
+
* `autoSaveKey` property is passed), locally stored drafts and prefill data.
|
|
104
|
+
*
|
|
105
|
+
* ### Example
|
|
106
|
+
*
|
|
107
|
+
* ```js
|
|
108
|
+
* const formSubmission = {
|
|
109
|
+
* formsAppId: 1,
|
|
110
|
+
* submission: {
|
|
111
|
+
* form: 'data',
|
|
112
|
+
* goes: 'here',
|
|
113
|
+
* },
|
|
114
|
+
* definition: OneBlinkForm,
|
|
115
|
+
* captchaTokens: [],
|
|
116
|
+
* formSubmissionDraftId: '2974602c-2c5b-4b46-b086-87ee9b2aa233',
|
|
117
|
+
* jobId: 'bb37d1da-9cda-4950-a36a-22f58b25de3a',
|
|
118
|
+
* preFillFormDataId: '7763f828-4aaf-49dc-9c1b-e2eeea8fa990',
|
|
119
|
+
* externalId: 'external-id-set-by-developer',
|
|
120
|
+
* }
|
|
121
|
+
*
|
|
122
|
+
* // Pass paymentReceiptUrl if submission may require a payment
|
|
123
|
+
* const paymentReceiptUrl = `${window.location.origin}/payment-receipt`
|
|
124
|
+
*
|
|
125
|
+
* // Pass schedulingBookingUrlConfiguration if submission utilise scheduling
|
|
126
|
+
* const schedulingBookingUrlConfiguration = {
|
|
127
|
+
* schedulingBookingUrl: 'https://my-website.com/booking',
|
|
128
|
+
* schedulingRescheduleUrl: 'https://my-website.com/reschedule',
|
|
129
|
+
* schedulingCancelUrl: 'https://my-website.com/cancel',
|
|
130
|
+
* }
|
|
131
|
+
* const submissionResult = await submissionService.submit({
|
|
132
|
+
* formSubmission,
|
|
133
|
+
* paymentReceiptUrl,
|
|
134
|
+
* schedulingBookingUrlConfiguration,
|
|
135
|
+
* })
|
|
136
|
+
*
|
|
137
|
+
* if (submissionResult.scheduling) {
|
|
138
|
+
* // Redirect user to booking form
|
|
139
|
+
* window.location.href = submissionResult.scheduling.bookingUrl
|
|
140
|
+
* return
|
|
141
|
+
* }
|
|
142
|
+
*
|
|
143
|
+
* if (submissionResult.payment) {
|
|
144
|
+
* // Redirect user to payment form
|
|
145
|
+
* window.location.href = submissionResult.payment.hostedFormUrl
|
|
146
|
+
* return
|
|
147
|
+
* }
|
|
148
|
+
*
|
|
149
|
+
* if (submissionResult.isOffline) {
|
|
150
|
+
* if (submissionResult.isInPendingQueue) {
|
|
151
|
+
* // Display message to user that the submission
|
|
152
|
+
* // has been added to the pending queue
|
|
153
|
+
* } else {
|
|
154
|
+
* // Display message to user that this submission can
|
|
155
|
+
* // not be processed while offline (most likely because it requires a payment)
|
|
156
|
+
* }
|
|
157
|
+
* return
|
|
158
|
+
* }
|
|
159
|
+
*
|
|
160
|
+
* // submissionResult.submissionId and submissionResult.submissionTimestamp
|
|
161
|
+
* // will be set if the submission was successful
|
|
162
|
+
* ```
|
|
163
|
+
*
|
|
164
|
+
* @param params
|
|
165
|
+
* @returns
|
|
166
|
+
*/
|
|
167
|
+
async function submit(params) {
|
|
168
|
+
return await submitWithCompletionTimestamp({
|
|
169
|
+
...params,
|
|
170
|
+
completionTimestamp: new Date().toISOString(),
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
async function submitWithCompletionTimestamp({ autoSaveKey, ...params }) {
|
|
174
|
+
const formSubmissionResult = await submitForm(params);
|
|
175
|
+
if (typeof autoSaveKey === 'string') {
|
|
176
|
+
try {
|
|
177
|
+
await deleteAutoSaveData(params.formSubmission.definition.id, autoSaveKey);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
console.warn('Error removing auto save data: ', error);
|
|
181
|
+
Sentry.captureException(error);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return formSubmissionResult;
|
|
185
|
+
}
|
|
186
|
+
async function closeWindow() {
|
|
187
|
+
// @ts-expect-error
|
|
188
|
+
if (window.cordova && window.cordova.plugins.exit) {
|
|
189
|
+
// @ts-expect-error
|
|
190
|
+
window.cordova.plugins.exit();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
window.close();
|
|
194
|
+
// If the browser has not closed after timeout,
|
|
195
|
+
// we throw an error to display to the user
|
|
196
|
+
return new Promise((resolve, reject) => {
|
|
197
|
+
setTimeout(() => {
|
|
198
|
+
console.log('Could not close as window was not opened using JavaScript');
|
|
199
|
+
reject(new Error('We were unable to close your browser, could you please close it manually for us?'));
|
|
200
|
+
}, 500);
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Go back in the browser history or attempts to close the browser tab if there
|
|
205
|
+
* is no history.
|
|
206
|
+
*
|
|
207
|
+
* ### Example
|
|
208
|
+
*
|
|
209
|
+
* ```js
|
|
210
|
+
* try {
|
|
211
|
+
* await submissionService.goBackOrCloseWindow()
|
|
212
|
+
* } catch (error) {
|
|
213
|
+
* // Handle error while closing browser tab.
|
|
214
|
+
* // Display message to user to close it manually
|
|
215
|
+
* }
|
|
216
|
+
* ```
|
|
217
|
+
*
|
|
218
|
+
* @returns
|
|
219
|
+
*/
|
|
220
|
+
async function goBackOrCloseWindow() {
|
|
221
|
+
if (window.history.length <= 1) {
|
|
222
|
+
return closeWindow();
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
window.history.back();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Action to cancel completing a form, currently goes back in the browser
|
|
230
|
+
* history or attempts to close the browser tab if there is no history.
|
|
231
|
+
*
|
|
232
|
+
* ### Example
|
|
233
|
+
*
|
|
234
|
+
* ```js
|
|
235
|
+
* const options = {
|
|
236
|
+
* definition: OneBlinkForm,
|
|
237
|
+
* externalId: 'external-id-set-by-developer',
|
|
238
|
+
* }
|
|
239
|
+
* // Only used for relative URLs
|
|
240
|
+
* const pushRelativePath = (path) => {
|
|
241
|
+
* window.location.href = path
|
|
242
|
+
* }
|
|
243
|
+
* // Only used for aboslute URLS
|
|
244
|
+
* const replaceAbsolutePath = window.location.replace
|
|
245
|
+
*
|
|
246
|
+
* try {
|
|
247
|
+
* await submissionService.executeCancelAction(options, {
|
|
248
|
+
* onRedirectToRelativeUrl: pushRelativePath,
|
|
249
|
+
* onRedirectToAbsoluteUrl: replaceAbsolutePath,
|
|
250
|
+
* })
|
|
251
|
+
* } catch (error) {
|
|
252
|
+
* // Handle error while closing browser tab.
|
|
253
|
+
* // Display message to user to close it manually
|
|
254
|
+
* }
|
|
255
|
+
* ```
|
|
256
|
+
*
|
|
257
|
+
* @param options
|
|
258
|
+
* @param redirectConfig
|
|
259
|
+
*/
|
|
260
|
+
async function executeCancelAction(formSubmissionResultOptions, { onRedirectToRelativeUrl, onRedirectToAbsoluteUrl, }) {
|
|
261
|
+
const formSubmissionResult = {
|
|
262
|
+
...formSubmissionResultOptions,
|
|
263
|
+
formsAppId: NaN,
|
|
264
|
+
formSubmissionDraftId: undefined,
|
|
265
|
+
jobId: undefined,
|
|
266
|
+
externalId: undefined,
|
|
267
|
+
preFillFormDataId: null,
|
|
268
|
+
recaptchas: [],
|
|
269
|
+
submission: {},
|
|
270
|
+
isInPendingQueue: false,
|
|
271
|
+
isOffline: false,
|
|
272
|
+
payment: null,
|
|
273
|
+
scheduling: null,
|
|
274
|
+
submissionId: null,
|
|
275
|
+
submissionTimestamp: null,
|
|
276
|
+
isUploadingAttachments: false,
|
|
277
|
+
};
|
|
278
|
+
let cancelAction = formSubmissionResult.definition.cancelAction;
|
|
279
|
+
let cancelRedirectUrl = formSubmissionResult.definition.cancelRedirectUrl;
|
|
280
|
+
if (formSubmissionResult.taskCompletion) {
|
|
281
|
+
cancelAction = 'URL';
|
|
282
|
+
cancelRedirectUrl = formSubmissionResult.taskCompletion.redirectUrl;
|
|
283
|
+
}
|
|
284
|
+
await executeAction(formSubmissionResult, {
|
|
285
|
+
action: cancelAction,
|
|
286
|
+
redirectUrl: cancelRedirectUrl,
|
|
287
|
+
onRedirectToRelativeUrl,
|
|
288
|
+
onRedirectToAbsoluteUrl,
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* Execute the post submission action for a form after a successful form
|
|
293
|
+
* submission.
|
|
294
|
+
*
|
|
295
|
+
* ### Example
|
|
296
|
+
*
|
|
297
|
+
* ```js
|
|
298
|
+
* const formSubmissionResult = {
|
|
299
|
+
* submissionId: '89c6e98e-f56f-45fc-84fe-c4fc62331d34',
|
|
300
|
+
* submissionTimestamp: '2020-07-29T01:03:26.573Z'
|
|
301
|
+
* formsAppId: 1,
|
|
302
|
+
* submission: {
|
|
303
|
+
* form: 'data',
|
|
304
|
+
* goes: 'here'
|
|
305
|
+
* },
|
|
306
|
+
* definition: OneBlinkForm,
|
|
307
|
+
* payment: {
|
|
308
|
+
* hostedFormUrl: 'https://payment.com/transaction'
|
|
309
|
+
* },
|
|
310
|
+
* formSubmissionDraftId: '2974602c-2c5b-4b46-b086-87ee9b2aa233',
|
|
311
|
+
* jobId: 'bb37d1da-9cda-4950-a36a-22f58b25de3a',
|
|
312
|
+
* preFillFormDataId: '7763f828-4aaf-49dc-9c1b-e2eeea8fa990',
|
|
313
|
+
* externalId: 'external-id-set-by-developer',
|
|
314
|
+
* }
|
|
315
|
+
* // Only used for relative URLs
|
|
316
|
+
* const pushRelativePath = (path) => {
|
|
317
|
+
* window.location.href = path
|
|
318
|
+
* }
|
|
319
|
+
* // Only used for aboslute URLS
|
|
320
|
+
* const replaceAbsolutePath = window.location.replace
|
|
321
|
+
*
|
|
322
|
+
* try {
|
|
323
|
+
* await submissionService.executePostSubmissionAction(formSubmissionResult, {
|
|
324
|
+
* onRedirectToRelativeUrl: pushRelativePath,
|
|
325
|
+
* onRedirectToAbsoluteUrl: replaceAbsolutePath,
|
|
326
|
+
* })
|
|
327
|
+
* } catch (error) {
|
|
328
|
+
* // Handle error while closing browser tab.
|
|
329
|
+
* // Display message to user to close it manually
|
|
330
|
+
* }
|
|
331
|
+
* ```
|
|
332
|
+
*
|
|
333
|
+
* @param submissionResult
|
|
334
|
+
* @param redirectConfig
|
|
335
|
+
*/
|
|
336
|
+
async function executePostSubmissionAction(submissionResult, { onRedirectToRelativeUrl, onRedirectToAbsoluteUrl, }) {
|
|
337
|
+
console.log('Attempting to run post submission action');
|
|
338
|
+
let postSubmissionAction = submissionResult.definition.postSubmissionAction;
|
|
339
|
+
let redirectUrl = submissionResult.definition.redirectUrl;
|
|
340
|
+
if (submissionResult.scheduling) {
|
|
341
|
+
postSubmissionAction = 'URL';
|
|
342
|
+
redirectUrl = submissionResult.scheduling.bookingUrl;
|
|
343
|
+
}
|
|
344
|
+
else if (submissionResult.payment) {
|
|
345
|
+
postSubmissionAction = 'URL';
|
|
346
|
+
redirectUrl = submissionResult.payment.hostedFormUrl;
|
|
347
|
+
}
|
|
348
|
+
else if (submissionResult.taskCompletion) {
|
|
349
|
+
postSubmissionAction = 'URL';
|
|
350
|
+
redirectUrl = submissionResult.taskCompletion.redirectUrl;
|
|
351
|
+
}
|
|
352
|
+
await executeAction(submissionResult, {
|
|
353
|
+
action: postSubmissionAction,
|
|
354
|
+
redirectUrl,
|
|
355
|
+
onRedirectToRelativeUrl,
|
|
356
|
+
onRedirectToAbsoluteUrl,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
async function executeAction(submissionResult, { action, redirectUrl, onRedirectToRelativeUrl, onRedirectToAbsoluteUrl, }) {
|
|
360
|
+
switch (action) {
|
|
361
|
+
case 'CLOSE':
|
|
362
|
+
return closeWindow();
|
|
363
|
+
case 'FORMS_LIBRARY': {
|
|
364
|
+
if (window.location.pathname === '/') {
|
|
365
|
+
onRedirectToAbsoluteUrl(window.location.origin);
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
onRedirectToRelativeUrl('/');
|
|
369
|
+
}
|
|
370
|
+
break;
|
|
371
|
+
}
|
|
372
|
+
case 'URL': {
|
|
373
|
+
const newUrl = replaceInjectablesWithSubmissionValues(redirectUrl || '/', submissionResult).text;
|
|
374
|
+
// Relative URLs can be navigated to internally
|
|
375
|
+
if (newUrl[0] === '/') {
|
|
376
|
+
onRedirectToRelativeUrl(newUrl);
|
|
377
|
+
return;
|
|
378
|
+
}
|
|
379
|
+
onRedirectToAbsoluteUrl(newUrl);
|
|
380
|
+
// If we are in cordova land, we will navigate
|
|
381
|
+
// back to the home screen after redirect
|
|
382
|
+
if (window.cordova) {
|
|
383
|
+
// Wait a couple of seconds to ensure the browser has
|
|
384
|
+
// been opened before navigating away from form.
|
|
385
|
+
setTimeout(() => {
|
|
386
|
+
onRedirectToRelativeUrl('/');
|
|
387
|
+
}, 2000);
|
|
388
|
+
}
|
|
389
|
+
break;
|
|
390
|
+
}
|
|
391
|
+
case 'BACK':
|
|
392
|
+
default: {
|
|
393
|
+
// if there's no post submission action for some reason, use prev. logic...
|
|
394
|
+
return goBackOrCloseWindow();
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
/**
|
|
399
|
+
* Retrieve submission data for a known formId and submissionId
|
|
400
|
+
*
|
|
401
|
+
* #### Example
|
|
402
|
+
*
|
|
403
|
+
* ```js
|
|
404
|
+
* const formId = 1
|
|
405
|
+
* const submissionId = 'fba95b9d-5a9c-463d-ab68-867f431e4120'
|
|
406
|
+
* const credentials = await formSubmissionService.getSubmissionData({
|
|
407
|
+
* formId,
|
|
408
|
+
* submissionId,
|
|
409
|
+
* })
|
|
410
|
+
* ```
|
|
411
|
+
*
|
|
412
|
+
* @param formId
|
|
413
|
+
* @param submissionId
|
|
414
|
+
* @param abortSignal
|
|
415
|
+
* @returns
|
|
416
|
+
*/
|
|
417
|
+
async function getSubmissionData({ formId, submissionId, abortSignal, }) {
|
|
418
|
+
return await downloadFormSubmission({
|
|
419
|
+
formId,
|
|
420
|
+
submissionId,
|
|
421
|
+
abortSignal,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
export { submit, executePostSubmissionAction, executeCancelAction, goBackOrCloseWindow, getPendingQueueSubmissions, deletePendingQueueSubmission, editPendingQueueSubmission, cancelEditingPendingQueueSubmission, registerPendingQueueListener, processPendingQueue, registerPendingQueueAttachmentProgressListener, registerPendingQueueProgressListener, getSubmissionData, getPostSubmissionAttachments, };
|
|
425
|
+
//# sourceMappingURL=submission-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submission-service.js","sourceRoot":"","sources":["../../src/apps/submission-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { isOffline } from './offline-service'\nimport { getFormsKeyId, isLoggedIn } from './auth-service'\nimport {\n registerPendingQueueListener,\n getPendingQueueSubmissions,\n updatePendingQueueSubmission,\n cancelEditingPendingQueueSubmission,\n deletePendingQueueSubmission,\n editPendingQueueSubmission,\n registerPendingQueueAttachmentProgressListener,\n registerPendingQueueProgressListener,\n executePendingQueueProgressListeners,\n removePendingQueueSubmission,\n PendingQueueListener,\n PendingQueueAction,\n} from './services/pending-queue'\nimport replaceInjectablesWithSubmissionValues from './services/replaceInjectablesWithSubmissionValues'\nimport { FormTypes, SubmissionTypes } from '@oneblink/types'\nimport Sentry from './Sentry'\nimport prepareSubmissionData from './services/prepareSubmissionData'\nimport submitForm, {\n SubmissionParams,\n ProgressListener,\n ProgressListenerEvent,\n} from './services/submit'\nimport {\n PendingFormSubmission,\n FormSubmission,\n FormSubmissionResult,\n BaseFormSubmission,\n NewDraftSubmission,\n NewFormSubmission,\n DraftSubmission,\n DraftSubmissionInput,\n} from './types/submissions'\nimport { deleteAutoSaveData } from './auto-save-service'\nimport { downloadFormSubmission } from './services/api/submissions'\nimport { getSubmissionAttachmentDetails } from './attachments-service'\nimport getPostSubmissionAttachments from './services/api/post-submission-attachment-urls'\n\nlet _isProcessingPendingQueue = false\n\n/**\n * Force processing the pending queue. This must be called to process the\n * pending queue and is best used when the application comes back online.\n *\n * ### Example\n *\n * ```js\n * await submissionService.processPendingQueue()\n * ```\n *\n * @returns\n */\nasync function processPendingQueue({\n shouldRunExternalIdGeneration,\n shouldRunServerValidation,\n}: {\n shouldRunExternalIdGeneration: boolean\n shouldRunServerValidation: boolean\n}): Promise<void> {\n if (_isProcessingPendingQueue) {\n return\n }\n _isProcessingPendingQueue = true\n\n console.log('Checking pending queue for submissions.')\n const pendingQueueSubmissions = await getPendingQueueSubmissions()\n\n console.log(\n `Found ${pendingQueueSubmissions.length} submission(s) in the pending queue.`,\n )\n for (const pendingQueueSubmission of pendingQueueSubmissions) {\n if (isOffline()) {\n console.log(\n 'Application is offline, leaving submission in the pending queue:',\n pendingQueueSubmission,\n )\n continue\n }\n\n if (pendingQueueSubmission.isEditing) {\n console.log(\n 'submission is being edited, leaving submission in the pending queue:',\n pendingQueueSubmission,\n )\n continue\n }\n\n if (\n pendingQueueSubmission.definition.isAuthenticated &&\n !isLoggedIn() &&\n !getFormsKeyId()\n ) {\n console.log(\n 'Authentication is required for this form but the user does not have a valid token, leaving submission in the pending queue:',\n pendingQueueSubmission,\n )\n continue\n }\n\n try {\n console.log(\n 'Attempting to process submission from pending queue:',\n pendingQueueSubmission,\n )\n\n pendingQueueSubmission.isSubmitting = true\n pendingQueueSubmission.error = undefined\n await updatePendingQueueSubmission(\n pendingQueueSubmission.pendingTimestamp,\n pendingQueueSubmission,\n 'SUBMIT_STARTED',\n )\n\n const preparedSubmission = await prepareSubmissionData(\n pendingQueueSubmission,\n )\n pendingQueueSubmission.submission = {\n ...preparedSubmission,\n }\n const attachments = getSubmissionAttachmentDetails(\n pendingQueueSubmission.definition.elements,\n pendingQueueSubmission.submission,\n )\n const failedAttachments = attachments.filter(\n (attachment) => attachment.value.type === 'ERROR',\n )\n if (failedAttachments.length) {\n throw new Error(\n `Failed to upload ${failedAttachments.length} attachment${\n failedAttachments.length > 1 ? 's' : ''\n }.`,\n )\n }\n await submitWithCompletionTimestamp({\n isPendingQueueEnabled: true,\n formSubmission: pendingQueueSubmission,\n onProgress: (event) => {\n executePendingQueueProgressListeners({\n ...event,\n pendingTimestamp: pendingQueueSubmission.pendingTimestamp,\n })\n },\n shouldRunExternalIdGeneration,\n shouldRunServerValidation,\n paymentFormUrl: undefined,\n paymentReceiptUrl: undefined,\n completionTimestamp: pendingQueueSubmission.pendingTimestamp,\n })\n\n await removePendingQueueSubmission(\n pendingQueueSubmission.pendingTimestamp,\n 'SUBMIT_SUCCEEDED',\n )\n\n console.log(\n 'Successfully processed submission from the pending queue',\n pendingQueueSubmission,\n )\n } catch (error) {\n Sentry.captureException(error)\n console.error('Error processing submission from the pending queue', error)\n pendingQueueSubmission.isSubmitting = false\n if ((error as Error).message) {\n pendingQueueSubmission.error = (error as Error).message\n } else {\n pendingQueueSubmission.error =\n 'An unknown error has occurred, which has prevented your Form from submitting. Please try again, or contact your Administrator if the problem persists.'\n }\n await updatePendingQueueSubmission(\n pendingQueueSubmission.pendingTimestamp,\n pendingQueueSubmission,\n 'SUBMIT_FAILED',\n )\n }\n }\n\n console.log(\n 'Finished attempting to processing submissions in the pending queue.',\n )\n _isProcessingPendingQueue = false\n}\n\n/**\n * Submit a FormSubmission. Offline submissions will be added to a pending queue\n * and be processed using the `processPendingQueue()` function. FormSubmissions\n * with payment submission events will return the FormSubmissionResult with a\n * `payment` property set, this should be used to redirect the user to the\n * payment URL. Will also handle cleaning up auto save data (if the\n * `autoSaveKey` property is passed), locally stored drafts and prefill data.\n *\n * ### Example\n *\n * ```js\n * const formSubmission = {\n * formsAppId: 1,\n * submission: {\n * form: 'data',\n * goes: 'here',\n * },\n * definition: OneBlinkForm,\n * captchaTokens: [],\n * formSubmissionDraftId: '2974602c-2c5b-4b46-b086-87ee9b2aa233',\n * jobId: 'bb37d1da-9cda-4950-a36a-22f58b25de3a',\n * preFillFormDataId: '7763f828-4aaf-49dc-9c1b-e2eeea8fa990',\n * externalId: 'external-id-set-by-developer',\n * }\n *\n * // Pass paymentReceiptUrl if submission may require a payment\n * const paymentReceiptUrl = `${window.location.origin}/payment-receipt`\n *\n * // Pass schedulingBookingUrlConfiguration if submission utilise scheduling\n * const schedulingBookingUrlConfiguration = {\n * schedulingBookingUrl: 'https://my-website.com/booking',\n * schedulingRescheduleUrl: 'https://my-website.com/reschedule',\n * schedulingCancelUrl: 'https://my-website.com/cancel',\n * }\n * const submissionResult = await submissionService.submit({\n * formSubmission,\n * paymentReceiptUrl,\n * schedulingBookingUrlConfiguration,\n * })\n *\n * if (submissionResult.scheduling) {\n * // Redirect user to booking form\n * window.location.href = submissionResult.scheduling.bookingUrl\n * return\n * }\n *\n * if (submissionResult.payment) {\n * // Redirect user to payment form\n * window.location.href = submissionResult.payment.hostedFormUrl\n * return\n * }\n *\n * if (submissionResult.isOffline) {\n * if (submissionResult.isInPendingQueue) {\n * // Display message to user that the submission\n * // has been added to the pending queue\n * } else {\n * // Display message to user that this submission can\n * // not be processed while offline (most likely because it requires a payment)\n * }\n * return\n * }\n *\n * // submissionResult.submissionId and submissionResult.submissionTimestamp\n * // will be set if the submission was successful\n * ```\n *\n * @param params\n * @returns\n */\nasync function submit(\n params: SubmissionParams & {\n autoSaveKey?: string\n },\n): Promise<FormSubmissionResult> {\n return await submitWithCompletionTimestamp({\n ...params,\n completionTimestamp: new Date().toISOString(),\n })\n}\n\nasync function submitWithCompletionTimestamp({\n autoSaveKey,\n ...params\n}: SubmissionParams & {\n autoSaveKey?: string\n completionTimestamp: string\n}): Promise<FormSubmissionResult> {\n const formSubmissionResult = await submitForm(params)\n if (typeof autoSaveKey === 'string') {\n try {\n await deleteAutoSaveData(params.formSubmission.definition.id, autoSaveKey)\n } catch (error) {\n console.warn('Error removing auto save data: ', error)\n Sentry.captureException(error)\n }\n }\n return formSubmissionResult\n}\n\nasync function closeWindow(): Promise<void> {\n // @ts-expect-error\n if (window.cordova && window.cordova.plugins.exit) {\n // @ts-expect-error\n window.cordova.plugins.exit()\n return\n }\n\n window.close()\n\n // If the browser has not closed after timeout,\n // we throw an error to display to the user\n return new Promise((resolve, reject) => {\n setTimeout(() => {\n console.log('Could not close as window was not opened using JavaScript')\n reject(\n new Error(\n 'We were unable to close your browser, could you please close it manually for us?',\n ),\n )\n }, 500)\n })\n}\n\n/**\n * Go back in the browser history or attempts to close the browser tab if there\n * is no history.\n *\n * ### Example\n *\n * ```js\n * try {\n * await submissionService.goBackOrCloseWindow()\n * } catch (error) {\n * // Handle error while closing browser tab.\n * // Display message to user to close it manually\n * }\n * ```\n *\n * @returns\n */\nasync function goBackOrCloseWindow(): Promise<void> {\n if (window.history.length <= 1) {\n return closeWindow()\n } else {\n window.history.back()\n }\n}\n\n/**\n * Action to cancel completing a form, currently goes back in the browser\n * history or attempts to close the browser tab if there is no history.\n *\n * ### Example\n *\n * ```js\n * const options = {\n * definition: OneBlinkForm,\n * externalId: 'external-id-set-by-developer',\n * }\n * // Only used for relative URLs\n * const pushRelativePath = (path) => {\n * window.location.href = path\n * }\n * // Only used for aboslute URLS\n * const replaceAbsolutePath = window.location.replace\n *\n * try {\n * await submissionService.executeCancelAction(options, {\n * onRedirectToRelativeUrl: pushRelativePath,\n * onRedirectToAbsoluteUrl: replaceAbsolutePath,\n * })\n * } catch (error) {\n * // Handle error while closing browser tab.\n * // Display message to user to close it manually\n * }\n * ```\n *\n * @param options\n * @param redirectConfig\n */\nasync function executeCancelAction(\n formSubmissionResultOptions: {\n definition: FormTypes.Form\n externalId: string | null\n taskCompletion?: FormSubmissionResult['taskCompletion']\n },\n {\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n }: {\n onRedirectToRelativeUrl: (url: string) => void\n onRedirectToAbsoluteUrl: (url: string) => void\n },\n): Promise<void> {\n const formSubmissionResult: FormSubmissionResult = {\n ...formSubmissionResultOptions,\n formsAppId: NaN,\n formSubmissionDraftId: undefined,\n jobId: undefined,\n externalId: undefined,\n preFillFormDataId: null,\n recaptchas: [],\n submission: {},\n isInPendingQueue: false,\n isOffline: false,\n payment: null,\n scheduling: null,\n submissionId: null,\n submissionTimestamp: null,\n isUploadingAttachments: false,\n }\n\n let cancelAction = formSubmissionResult.definition.cancelAction\n let cancelRedirectUrl = formSubmissionResult.definition.cancelRedirectUrl\n\n if (formSubmissionResult.taskCompletion) {\n cancelAction = 'URL'\n cancelRedirectUrl = formSubmissionResult.taskCompletion.redirectUrl\n }\n\n await executeAction(formSubmissionResult, {\n action: cancelAction,\n redirectUrl: cancelRedirectUrl,\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n })\n}\n\n/**\n * Execute the post submission action for a form after a successful form\n * submission.\n *\n * ### Example\n *\n * ```js\n * const formSubmissionResult = {\n * submissionId: '89c6e98e-f56f-45fc-84fe-c4fc62331d34',\n * submissionTimestamp: '2020-07-29T01:03:26.573Z'\n * formsAppId: 1,\n * submission: {\n * form: 'data',\n * goes: 'here'\n * },\n * definition: OneBlinkForm,\n * payment: {\n * hostedFormUrl: 'https://payment.com/transaction'\n * },\n * formSubmissionDraftId: '2974602c-2c5b-4b46-b086-87ee9b2aa233',\n * jobId: 'bb37d1da-9cda-4950-a36a-22f58b25de3a',\n * preFillFormDataId: '7763f828-4aaf-49dc-9c1b-e2eeea8fa990',\n * externalId: 'external-id-set-by-developer',\n * }\n * // Only used for relative URLs\n * const pushRelativePath = (path) => {\n * window.location.href = path\n * }\n * // Only used for aboslute URLS\n * const replaceAbsolutePath = window.location.replace\n *\n * try {\n * await submissionService.executePostSubmissionAction(formSubmissionResult, {\n * onRedirectToRelativeUrl: pushRelativePath,\n * onRedirectToAbsoluteUrl: replaceAbsolutePath,\n * })\n * } catch (error) {\n * // Handle error while closing browser tab.\n * // Display message to user to close it manually\n * }\n * ```\n *\n * @param submissionResult\n * @param redirectConfig\n */\nasync function executePostSubmissionAction(\n submissionResult: FormSubmissionResult,\n {\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n }: {\n onRedirectToRelativeUrl: (url: string) => void\n onRedirectToAbsoluteUrl: (url: string) => void\n },\n): Promise<void> {\n console.log('Attempting to run post submission action')\n let postSubmissionAction = submissionResult.definition.postSubmissionAction\n let redirectUrl = submissionResult.definition.redirectUrl\n\n if (submissionResult.scheduling) {\n postSubmissionAction = 'URL'\n redirectUrl = submissionResult.scheduling.bookingUrl\n } else if (submissionResult.payment) {\n postSubmissionAction = 'URL'\n redirectUrl = submissionResult.payment.hostedFormUrl\n } else if (submissionResult.taskCompletion) {\n postSubmissionAction = 'URL'\n redirectUrl = submissionResult.taskCompletion.redirectUrl\n }\n\n await executeAction(submissionResult, {\n action: postSubmissionAction,\n redirectUrl,\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n })\n}\n\nasync function executeAction(\n submissionResult: FormSubmissionResult,\n {\n action,\n redirectUrl,\n onRedirectToRelativeUrl,\n onRedirectToAbsoluteUrl,\n }: {\n action: FormTypes.FormPostSubmissionAction\n redirectUrl: string | undefined\n onRedirectToRelativeUrl: (url: string) => void\n onRedirectToAbsoluteUrl: (url: string) => void\n },\n): Promise<void> {\n switch (action) {\n case 'CLOSE':\n return closeWindow()\n case 'FORMS_LIBRARY': {\n if (window.location.pathname === '/') {\n onRedirectToAbsoluteUrl(window.location.origin)\n } else {\n onRedirectToRelativeUrl('/')\n }\n break\n }\n case 'URL': {\n const newUrl = replaceInjectablesWithSubmissionValues(\n redirectUrl || '/',\n submissionResult,\n ).text\n // Relative URLs can be navigated to internally\n if (newUrl[0] === '/') {\n onRedirectToRelativeUrl(newUrl)\n return\n }\n\n onRedirectToAbsoluteUrl(newUrl)\n\n // If we are in cordova land, we will navigate\n // back to the home screen after redirect\n if (window.cordova) {\n // Wait a couple of seconds to ensure the browser has\n // been opened before navigating away from form.\n setTimeout(() => {\n onRedirectToRelativeUrl('/')\n }, 2000)\n }\n break\n }\n case 'BACK':\n default: {\n // if there's no post submission action for some reason, use prev. logic...\n return goBackOrCloseWindow()\n }\n }\n}\n\n/**\n * Retrieve submission data for a known formId and submissionId\n *\n * #### Example\n *\n * ```js\n * const formId = 1\n * const submissionId = 'fba95b9d-5a9c-463d-ab68-867f431e4120'\n * const credentials = await formSubmissionService.getSubmissionData({\n * formId,\n * submissionId,\n * })\n * ```\n *\n * @param formId\n * @param submissionId\n * @param abortSignal\n * @returns\n */\nasync function getSubmissionData({\n formId,\n submissionId,\n abortSignal,\n}: {\n formId: number\n submissionId: string\n abortSignal?: AbortSignal\n}): Promise<SubmissionTypes.S3SubmissionData> {\n return await downloadFormSubmission({\n formId,\n submissionId,\n abortSignal,\n })\n}\n\nexport {\n submit,\n executePostSubmissionAction,\n executeCancelAction,\n goBackOrCloseWindow,\n getPendingQueueSubmissions,\n deletePendingQueueSubmission,\n editPendingQueueSubmission,\n cancelEditingPendingQueueSubmission,\n registerPendingQueueListener,\n processPendingQueue,\n BaseFormSubmission,\n NewDraftSubmission,\n NewFormSubmission,\n DraftSubmissionInput,\n DraftSubmission,\n FormSubmission,\n FormSubmissionResult,\n PendingFormSubmission,\n SubmissionParams,\n registerPendingQueueAttachmentProgressListener,\n registerPendingQueueProgressListener,\n ProgressListener,\n ProgressListenerEvent,\n PendingQueueListener,\n PendingQueueAction,\n getSubmissionData,\n getPostSubmissionAttachments,\n}\n"]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
interface OneBlinkAppsTenant {
|
|
2
|
+
awsRegion: string;
|
|
3
|
+
loginDomain: string;
|
|
4
|
+
apiOrigin: string;
|
|
5
|
+
vapidPublicKey: string;
|
|
6
|
+
intlFormats: {
|
|
7
|
+
number: Intl.NumberFormat;
|
|
8
|
+
currency: Intl.NumberFormat;
|
|
9
|
+
date: Intl.DateTimeFormat;
|
|
10
|
+
dateLong: Intl.DateTimeFormat;
|
|
11
|
+
time: Intl.DateTimeFormat;
|
|
12
|
+
olderIOSTime: Intl.DateTimeFormat;
|
|
13
|
+
};
|
|
14
|
+
name: string;
|
|
15
|
+
productShortName: string;
|
|
16
|
+
distanceUnit: string;
|
|
17
|
+
distanceUnitShortName: string;
|
|
18
|
+
}
|
|
19
|
+
declare class Tenants {
|
|
20
|
+
tenant: 'oneblink' | 'civicplus' | 'oneblinkUS';
|
|
21
|
+
constructor();
|
|
22
|
+
get isTestEnvironment(): boolean;
|
|
23
|
+
get current(): OneBlinkAppsTenant;
|
|
24
|
+
get locale(): "en-AU" | "en-US";
|
|
25
|
+
useOneBlink(): void;
|
|
26
|
+
useOneBlinkUS(): void;
|
|
27
|
+
useCivicPlus(): void;
|
|
28
|
+
}
|
|
29
|
+
declare const _default: Tenants;
|
|
30
|
+
export default _default;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
const getCurrency = (locale) => {
|
|
2
|
+
switch (locale) {
|
|
3
|
+
case 'en-US':
|
|
4
|
+
return 'USD';
|
|
5
|
+
case 'en-AU':
|
|
6
|
+
default:
|
|
7
|
+
return 'AUD';
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
const generateFormatters = (locale) => {
|
|
11
|
+
return {
|
|
12
|
+
number: new Intl.NumberFormat(locale, {
|
|
13
|
+
style: 'decimal',
|
|
14
|
+
maximumFractionDigits: 20,
|
|
15
|
+
}),
|
|
16
|
+
currency: new Intl.NumberFormat(locale, {
|
|
17
|
+
style: 'currency',
|
|
18
|
+
currency: getCurrency(locale),
|
|
19
|
+
}),
|
|
20
|
+
date: new Intl.DateTimeFormat(locale, {
|
|
21
|
+
year: 'numeric',
|
|
22
|
+
month: '2-digit',
|
|
23
|
+
day: '2-digit',
|
|
24
|
+
}),
|
|
25
|
+
dateLong: new Intl.DateTimeFormat(locale, {
|
|
26
|
+
dateStyle: 'full',
|
|
27
|
+
}),
|
|
28
|
+
time: new Intl.DateTimeFormat(locale, {
|
|
29
|
+
timeStyle: 'short',
|
|
30
|
+
}),
|
|
31
|
+
olderIOSTime: new Intl.DateTimeFormat(locale, {
|
|
32
|
+
hour: 'numeric',
|
|
33
|
+
minute: 'numeric',
|
|
34
|
+
second: 'numeric',
|
|
35
|
+
}),
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
const tenants = {
|
|
39
|
+
test: {
|
|
40
|
+
oneblink: {
|
|
41
|
+
awsRegion: 'ap-southeast-2',
|
|
42
|
+
loginDomain: 'login.test.oneblink.io',
|
|
43
|
+
apiOrigin: 'https://auth-api.test.blinkm.io',
|
|
44
|
+
vapidPublicKey: 'BE5wtYdaQW3z7DWc08rzNlOwPuituVWFRLW_lUMD78ZJatFOjio8fYDHaIpQCRyeKsJ5j4kLaFU374J4dM90iUc',
|
|
45
|
+
intlFormats: generateFormatters('en-AU'),
|
|
46
|
+
name: 'OneBlink',
|
|
47
|
+
productShortName: 'OneBlink LcS',
|
|
48
|
+
distanceUnit: 'meters',
|
|
49
|
+
distanceUnitShortName: 'm',
|
|
50
|
+
},
|
|
51
|
+
civicplus: {
|
|
52
|
+
awsRegion: 'us-east-2',
|
|
53
|
+
loginDomain: 'login.test.transform.civicplus.com',
|
|
54
|
+
apiOrigin: 'https://auth-api.test.transform.civicplus.com',
|
|
55
|
+
vapidPublicKey: 'BLg2Dn9sYj1a0I3AcS22Fg71uubdMLwoemG8zfnPOljgFKB-5MR3FIxc2Mtt0AzM3zk2QWl3YzEy6EEwIUmz19k',
|
|
56
|
+
intlFormats: generateFormatters('en-US'),
|
|
57
|
+
name: 'CivicPlus',
|
|
58
|
+
productShortName: 'CivicOptimize',
|
|
59
|
+
distanceUnit: 'feet',
|
|
60
|
+
distanceUnitShortName: 'ft',
|
|
61
|
+
},
|
|
62
|
+
oneblinkUS: {
|
|
63
|
+
awsRegion: 'us-east-1',
|
|
64
|
+
loginDomain: 'login.test.us.oneblink.io',
|
|
65
|
+
apiOrigin: 'https://auth-api.test.us.oneblink.io',
|
|
66
|
+
vapidPublicKey: 'BF-WeCKYxp6R55nN5SX7L0_dVRAXlMdVRdsuvbiv0T7zP-yXTGTMw4F1O45pC0UdTk2m6DaOkZRzTJ1XWh2ByZw',
|
|
67
|
+
intlFormats: generateFormatters('en-US'),
|
|
68
|
+
name: 'OneBlink',
|
|
69
|
+
productShortName: 'OneBlink LcS',
|
|
70
|
+
distanceUnit: 'feet',
|
|
71
|
+
distanceUnitShortName: 'ft',
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
prod: {
|
|
75
|
+
oneblink: {
|
|
76
|
+
awsRegion: 'ap-southeast-2',
|
|
77
|
+
loginDomain: 'login.oneblink.io',
|
|
78
|
+
apiOrigin: 'https://auth-api.blinkm.io',
|
|
79
|
+
vapidPublicKey: 'BADH0JnMngI0uFKUnbC79VGXy5d6WutccnEvVuFBMx--BrZtFAHGTgOBiABJXmE8_VHC92_jK5K-2qdP2kZeius',
|
|
80
|
+
intlFormats: generateFormatters('en-AU'),
|
|
81
|
+
name: 'OneBlink',
|
|
82
|
+
productShortName: 'OneBlink LcS',
|
|
83
|
+
distanceUnit: 'meters',
|
|
84
|
+
distanceUnitShortName: 'm',
|
|
85
|
+
},
|
|
86
|
+
civicplus: {
|
|
87
|
+
awsRegion: 'us-east-2',
|
|
88
|
+
loginDomain: 'login.transform.civicplus.com',
|
|
89
|
+
apiOrigin: 'https://auth-api.transform.civicplus.com',
|
|
90
|
+
vapidPublicKey: 'BLoDtCutrC7tEd75x89zBaIyz3Fk8AeWOcABasV3YO4Tei5UO8WjJVPFyilNLYxeseaiKlgoa0DOh1HoR59M_G4',
|
|
91
|
+
intlFormats: generateFormatters('en-US'),
|
|
92
|
+
name: 'CivicPlus',
|
|
93
|
+
productShortName: 'CivicOptimize',
|
|
94
|
+
distanceUnit: 'feet',
|
|
95
|
+
distanceUnitShortName: 'ft',
|
|
96
|
+
},
|
|
97
|
+
oneblinkUS: {
|
|
98
|
+
awsRegion: 'us-east-1',
|
|
99
|
+
loginDomain: 'login.us.oneblink.io',
|
|
100
|
+
apiOrigin: 'https://auth-api.us.oneblink.io',
|
|
101
|
+
vapidPublicKey: 'BKL8Vk_U46_To07_fkVOAExQp8Zi_XjEDunLqCz8cYEXcX3Em0qMdMdROfT6MYb7EKIkUK1Ymgvf3tFnkYrKCfc',
|
|
102
|
+
intlFormats: generateFormatters('en-US'),
|
|
103
|
+
name: 'OneBlink',
|
|
104
|
+
productShortName: 'OneBlink LcS',
|
|
105
|
+
distanceUnit: 'feet',
|
|
106
|
+
distanceUnitShortName: 'ft',
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
class Tenants {
|
|
111
|
+
constructor() {
|
|
112
|
+
this.tenant = 'oneblink';
|
|
113
|
+
}
|
|
114
|
+
get isTestEnvironment() {
|
|
115
|
+
// @ts-expect-error
|
|
116
|
+
return window.ONEBLINK_APPS_ENVIRONMENT === 'test';
|
|
117
|
+
}
|
|
118
|
+
get current() {
|
|
119
|
+
switch (this.tenant) {
|
|
120
|
+
case 'civicplus':
|
|
121
|
+
return this.isTestEnvironment
|
|
122
|
+
? tenants.test.civicplus
|
|
123
|
+
: tenants.prod.civicplus;
|
|
124
|
+
case 'oneblinkUS':
|
|
125
|
+
return this.isTestEnvironment
|
|
126
|
+
? tenants.test.oneblinkUS
|
|
127
|
+
: tenants.prod.oneblinkUS;
|
|
128
|
+
case 'oneblink':
|
|
129
|
+
default:
|
|
130
|
+
return this.isTestEnvironment
|
|
131
|
+
? tenants.test.oneblink
|
|
132
|
+
: tenants.prod.oneblink;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
get locale() {
|
|
136
|
+
switch (this.tenant) {
|
|
137
|
+
case 'civicplus':
|
|
138
|
+
return 'en-US';
|
|
139
|
+
case 'oneblink':
|
|
140
|
+
default:
|
|
141
|
+
return 'en-AU';
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
useOneBlink() {
|
|
145
|
+
this.tenant = 'oneblink';
|
|
146
|
+
}
|
|
147
|
+
useOneBlinkUS() {
|
|
148
|
+
this.tenant = 'oneblinkUS';
|
|
149
|
+
}
|
|
150
|
+
useCivicPlus() {
|
|
151
|
+
this.tenant = 'civicplus';
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
export default new Tenants();
|
|
155
|
+
//# sourceMappingURL=tenants.js.map
|