@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,316 @@
|
|
|
1
|
+
import OneBlinkAppsError from './errors/oneBlinkAppsError';
|
|
2
|
+
import utilsService from './utils';
|
|
3
|
+
import Sentry from '../Sentry';
|
|
4
|
+
import { getPrefillKey } from '../services/job-prefill';
|
|
5
|
+
function errorHandler(error) {
|
|
6
|
+
Sentry.captureException(error);
|
|
7
|
+
console.error('Local Forage Error', error);
|
|
8
|
+
if (/The serialized value is too large/.test(error.message)) {
|
|
9
|
+
return new OneBlinkAppsError('It seems you have run out of space. To free up space, please connect to the internet to process pending submissions.', {
|
|
10
|
+
originalError: error,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
return error;
|
|
14
|
+
}
|
|
15
|
+
const PENDING_QUEUE_SUBMISSIONS_KEY = 'submissions';
|
|
16
|
+
const pendingQueueListeners = [];
|
|
17
|
+
/**
|
|
18
|
+
* Register a listener function that will be passed an array of
|
|
19
|
+
* PendingFormSubmissions when the pending queue is modified.
|
|
20
|
+
*
|
|
21
|
+
* ### Example
|
|
22
|
+
*
|
|
23
|
+
* ```js
|
|
24
|
+
* const listener = async (pendingSubmissions) => {
|
|
25
|
+
* // use pending submissions here...
|
|
26
|
+
* }
|
|
27
|
+
* const deregister =
|
|
28
|
+
* await submissionService.registerPendingQueueListener(listener)
|
|
29
|
+
*
|
|
30
|
+
* // When no longer needed, remember to deregister the listener
|
|
31
|
+
* deregister()
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @param listener
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
export function registerPendingQueueListener(listener) {
|
|
38
|
+
pendingQueueListeners.push(listener);
|
|
39
|
+
return () => {
|
|
40
|
+
const index = pendingQueueListeners.indexOf(listener);
|
|
41
|
+
if (index !== -1) {
|
|
42
|
+
pendingQueueListeners.splice(index, 1);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function executePendingQueueListeners(newSubmissions, action) {
|
|
47
|
+
console.log('Pending Queue submissions have been updated', action, newSubmissions);
|
|
48
|
+
for (const pendingQueueListener of pendingQueueListeners) {
|
|
49
|
+
pendingQueueListener(newSubmissions, action);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export async function addFormSubmissionToPendingQueue(formSubmission) {
|
|
53
|
+
const pendingTimestamp = new Date().toISOString();
|
|
54
|
+
try {
|
|
55
|
+
const submissions = await getPendingQueueSubmissions();
|
|
56
|
+
submissions.push({
|
|
57
|
+
...formSubmission,
|
|
58
|
+
pendingTimestamp,
|
|
59
|
+
});
|
|
60
|
+
await utilsService.localForage.setItem(PENDING_QUEUE_SUBMISSIONS_KEY, submissions);
|
|
61
|
+
executePendingQueueListeners(submissions, 'ADDITION');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
Sentry.captureException(error);
|
|
65
|
+
throw error instanceof Error ? errorHandler(error) : error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export async function updatePendingQueueSubmission(pendingTimestamp, newSubmission, action, skipSentry) {
|
|
69
|
+
try {
|
|
70
|
+
const submissions = await getPendingQueueSubmissions();
|
|
71
|
+
const newSubmissions = submissions.map((submission) => {
|
|
72
|
+
if (submission.pendingTimestamp === pendingTimestamp) {
|
|
73
|
+
return { ...newSubmission };
|
|
74
|
+
}
|
|
75
|
+
return submission;
|
|
76
|
+
});
|
|
77
|
+
await utilsService.localForage.setItem(PENDING_QUEUE_SUBMISSIONS_KEY, newSubmissions);
|
|
78
|
+
executePendingQueueListeners(newSubmissions, action);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (!skipSentry) {
|
|
82
|
+
Sentry.captureException(error);
|
|
83
|
+
}
|
|
84
|
+
throw error instanceof Error ? errorHandler(error) : error;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Cancel editing a PendingFormSubmission based on the `pendingTimestamp`
|
|
89
|
+
* property. The function marks the submission as ready for processing by the
|
|
90
|
+
* pending queue
|
|
91
|
+
*
|
|
92
|
+
* ### Example
|
|
93
|
+
*
|
|
94
|
+
* ```js
|
|
95
|
+
* const pendingTimestamp = '2020-07-29T01:03:26.573Z'
|
|
96
|
+
*
|
|
97
|
+
* await submissionService.cancelEditingPendingQueueSubmission(
|
|
98
|
+
* pendingTimestamp,
|
|
99
|
+
* )
|
|
100
|
+
* ```
|
|
101
|
+
*
|
|
102
|
+
* @param pendingTimestamp
|
|
103
|
+
*/
|
|
104
|
+
export async function cancelEditingPendingQueueSubmission(pendingTimestamp) {
|
|
105
|
+
try {
|
|
106
|
+
const submissions = await getPendingQueueSubmissions();
|
|
107
|
+
const targetSubmission = submissions.find((submission) => {
|
|
108
|
+
return submission.pendingTimestamp === pendingTimestamp;
|
|
109
|
+
});
|
|
110
|
+
if (targetSubmission) {
|
|
111
|
+
await updatePendingQueueSubmission(pendingTimestamp, { ...targetSubmission, isEditing: false }, 'EDIT_CANCELLED',
|
|
112
|
+
//this is to avoid logging to sentry twice
|
|
113
|
+
true);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
Sentry.captureException(error);
|
|
118
|
+
throw error instanceof Error ? errorHandler(error) : error;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get an array of PendingFormSubmission
|
|
123
|
+
*
|
|
124
|
+
* ### Example
|
|
125
|
+
*
|
|
126
|
+
* ```js
|
|
127
|
+
* const pendingSubmission =
|
|
128
|
+
* await submissionService.getPendingQueueSubmissions()
|
|
129
|
+
* // Display pending submissions to user...
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @returns
|
|
133
|
+
*/
|
|
134
|
+
export async function getPendingQueueSubmissions() {
|
|
135
|
+
const pendingQueueSubmissionsInStorage = await utilsService.localForage.getItem(PENDING_QUEUE_SUBMISSIONS_KEY);
|
|
136
|
+
if (!pendingQueueSubmissionsInStorage) {
|
|
137
|
+
return [];
|
|
138
|
+
}
|
|
139
|
+
// Form submission data use to be stored separate to the array of pending records
|
|
140
|
+
// so to ensure all pending records have submission data we will pull it from
|
|
141
|
+
// where it use to be stored if there is isn't any form submission data.
|
|
142
|
+
// This is could only happen if a user had the latest code (I.e. they are online)
|
|
143
|
+
// and they have a submission in the pending queue that cannot be submitted
|
|
144
|
+
// (E.g. they need to login or one of the attachments could not be uploaded).
|
|
145
|
+
const pendingQueueSubmissions = [];
|
|
146
|
+
for (const pendingQueueSubmission of pendingQueueSubmissionsInStorage) {
|
|
147
|
+
if (pendingQueueSubmission.submission) {
|
|
148
|
+
pendingQueueSubmissions.push(pendingQueueSubmission);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
const formSubmission = await utilsService.getLocalForageItem(`SUBMISSION_${pendingQueueSubmission.pendingTimestamp}`);
|
|
152
|
+
if (formSubmission) {
|
|
153
|
+
pendingQueueSubmission.submission = formSubmission.submission;
|
|
154
|
+
pendingQueueSubmissions.push(pendingQueueSubmission);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return pendingQueueSubmissions;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Delete a PendingFormSubmission before it is processed based on the
|
|
162
|
+
* `pendingTimestamp` property.
|
|
163
|
+
*
|
|
164
|
+
* ### Example
|
|
165
|
+
*
|
|
166
|
+
* ```js
|
|
167
|
+
* const pendingTimestamp = '2020-07-29T01:03:26.573Z'
|
|
168
|
+
* await submissionService.deletePendingQueueSubmission(pendingTimestamp)
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
171
|
+
* @param pendingTimestamp
|
|
172
|
+
*/
|
|
173
|
+
export async function deletePendingQueueSubmission(pendingTimestamp) {
|
|
174
|
+
await removePendingQueueSubmission(pendingTimestamp, 'DELETION');
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Edit a PendingFormSubmission before it is processed based on the
|
|
178
|
+
* `pendingTimestamp` property. The function places the submission in an editing
|
|
179
|
+
* state preventing it from being processed by the pending queue and returns a
|
|
180
|
+
* prefill id and form id
|
|
181
|
+
*
|
|
182
|
+
* ### Example
|
|
183
|
+
*
|
|
184
|
+
* ```js
|
|
185
|
+
* const pendingTimestamp = '2020-07-29T01:03:26.573Z'
|
|
186
|
+
* const { preFillFormDataId, formId } =
|
|
187
|
+
* await submissionService.editPendingQueueSubmission(pendingTimestamp)
|
|
188
|
+
* window.location.href = `https://mycoolforms.apps.oneblink.io/forms/${formId}?preFillFormDataId=${preFillFormDataId}`
|
|
189
|
+
* ```
|
|
190
|
+
*
|
|
191
|
+
* @param pendingTimestamp
|
|
192
|
+
*/
|
|
193
|
+
export async function editPendingQueueSubmission(pendingTimestamp) {
|
|
194
|
+
try {
|
|
195
|
+
const pendingQueueSubmissions = await getPendingQueueSubmissions();
|
|
196
|
+
const formSubmission = pendingQueueSubmissions.find((pendingQueueSubmission) => pendingQueueSubmission.pendingTimestamp === pendingTimestamp);
|
|
197
|
+
if (!formSubmission) {
|
|
198
|
+
throw new Error('Could not find form submission to edit');
|
|
199
|
+
}
|
|
200
|
+
const preFillFormDataId = `PENDING_SUBMISSION_${pendingTimestamp}`;
|
|
201
|
+
const key = getPrefillKey(preFillFormDataId);
|
|
202
|
+
await utilsService.setLocalForageItem(key, formSubmission.submission);
|
|
203
|
+
await updatePendingQueueSubmission(pendingTimestamp, {
|
|
204
|
+
...formSubmission,
|
|
205
|
+
pendingTimestamp,
|
|
206
|
+
isEditing: true,
|
|
207
|
+
isSubmitting: false,
|
|
208
|
+
error: undefined,
|
|
209
|
+
}, 'EDIT_STARTED',
|
|
210
|
+
//this is to avoid logging to sentry twice
|
|
211
|
+
true);
|
|
212
|
+
return { preFillFormDataId, formId: formSubmission.definition.id };
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
Sentry.captureException(error);
|
|
216
|
+
throw error instanceof Error ? errorHandler(error) : error;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
export async function removePendingQueueSubmission(pendingTimestamp, action) {
|
|
220
|
+
try {
|
|
221
|
+
await utilsService.removeLocalForageItem(`SUBMISSION_${pendingTimestamp}`);
|
|
222
|
+
const submissions = await getPendingQueueSubmissions();
|
|
223
|
+
const newSubmissions = submissions.filter((submission) => submission.pendingTimestamp !== pendingTimestamp);
|
|
224
|
+
await utilsService.localForage.setItem(PENDING_QUEUE_SUBMISSIONS_KEY, newSubmissions);
|
|
225
|
+
executePendingQueueListeners(newSubmissions, action);
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
Sentry.captureException(error);
|
|
229
|
+
throw error instanceof Error ? errorHandler(error) : error;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const pendingQueueAttachmentProgressListeners = [];
|
|
233
|
+
/**
|
|
234
|
+
* Register a listener function that will be passed a progress event when an
|
|
235
|
+
* attachment for an item in the pending queue is being processed.
|
|
236
|
+
*
|
|
237
|
+
* ### Example
|
|
238
|
+
*
|
|
239
|
+
* ```js
|
|
240
|
+
* const listener = async ({ progress }) => {
|
|
241
|
+
* // update the UI to reflect the progress here...
|
|
242
|
+
* }
|
|
243
|
+
* const deregister =
|
|
244
|
+
* await submissionService.registerPendingQueueAttachmentProgressListener(
|
|
245
|
+
* attachment.id,
|
|
246
|
+
* listener,
|
|
247
|
+
* )
|
|
248
|
+
*
|
|
249
|
+
* // When no longer needed, remember to deregister the listener
|
|
250
|
+
* deregister()
|
|
251
|
+
* ```
|
|
252
|
+
*
|
|
253
|
+
* @param attachmentId
|
|
254
|
+
* @param listener
|
|
255
|
+
* @returns
|
|
256
|
+
*/
|
|
257
|
+
export function registerPendingQueueAttachmentProgressListener(attachmentId, listener) {
|
|
258
|
+
const item = { attachmentId, listener };
|
|
259
|
+
pendingQueueAttachmentProgressListeners.push(item);
|
|
260
|
+
return () => {
|
|
261
|
+
const index = pendingQueueAttachmentProgressListeners.indexOf(item);
|
|
262
|
+
if (index !== -1) {
|
|
263
|
+
pendingQueueAttachmentProgressListeners.splice(index, 1);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
export function executePendingQueueAttachmentProgressListeners(event) {
|
|
268
|
+
for (const pendingQueueAttachmentProgressListener of pendingQueueAttachmentProgressListeners) {
|
|
269
|
+
if (event.attachmentId === pendingQueueAttachmentProgressListener.attachmentId) {
|
|
270
|
+
pendingQueueAttachmentProgressListener.listener(event);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
const pendingQueueProgressListeners = [];
|
|
275
|
+
/**
|
|
276
|
+
* Register a listener function that will be passed a progress event when an
|
|
277
|
+
* item in the pending queue is being processed.
|
|
278
|
+
*
|
|
279
|
+
* ### Example
|
|
280
|
+
*
|
|
281
|
+
* ```js
|
|
282
|
+
* const listener = async ({ progress }) => {
|
|
283
|
+
* // update the UI to reflect the progress here...
|
|
284
|
+
* }
|
|
285
|
+
* const deregister =
|
|
286
|
+
* await submissionService.registerPendingQueueProgressListener(
|
|
287
|
+
* pendingQueueItem.pendingTimestamp,
|
|
288
|
+
* listener,
|
|
289
|
+
* )
|
|
290
|
+
*
|
|
291
|
+
* // When no longer needed, remember to deregister the listener
|
|
292
|
+
* deregister()
|
|
293
|
+
* ```
|
|
294
|
+
*
|
|
295
|
+
* @param pendingTimestamp
|
|
296
|
+
* @param listener
|
|
297
|
+
* @returns
|
|
298
|
+
*/
|
|
299
|
+
export function registerPendingQueueProgressListener(pendingTimestamp, listener) {
|
|
300
|
+
const item = { pendingTimestamp, listener };
|
|
301
|
+
pendingQueueProgressListeners.push(item);
|
|
302
|
+
return () => {
|
|
303
|
+
const index = pendingQueueProgressListeners.indexOf(item);
|
|
304
|
+
if (index !== -1) {
|
|
305
|
+
pendingQueueProgressListeners.splice(index, 1);
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
export function executePendingQueueProgressListeners(event) {
|
|
310
|
+
for (const pendingQueueProgressListener of pendingQueueProgressListeners) {
|
|
311
|
+
if (event.pendingTimestamp === pendingQueueProgressListener.pendingTimestamp) {
|
|
312
|
+
pendingQueueProgressListener.listener(event);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
//# sourceMappingURL=pending-queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-queue.js","sourceRoot":"","sources":["../../../src/apps/services/pending-queue.ts"],"names":[],"mappings":"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","sourcesContent":["import OneBlinkAppsError from './errors/oneBlinkAppsError'\nimport utilsService from './utils'\nimport Sentry from '../Sentry'\nimport {\n FormSubmission,\n PendingFormSubmission,\n ProgressListener,\n ProgressListenerEvent,\n} from '../types/submissions'\nimport { getPrefillKey } from '../services/job-prefill'\n\nfunction errorHandler(error: Error): Error {\n Sentry.captureException(error)\n console.error('Local Forage Error', error)\n if (/The serialized value is too large/.test(error.message)) {\n return new OneBlinkAppsError(\n 'It seems you have run out of space. To free up space, please connect to the internet to process pending submissions.',\n {\n originalError: error,\n },\n )\n }\n\n return error\n}\n\nconst PENDING_QUEUE_SUBMISSIONS_KEY = 'submissions'\n\nexport type PendingQueueAction =\n | 'SUBMIT_STARTED'\n | 'SUBMIT_FAILED'\n | 'SUBMIT_SUCCEEDED'\n | 'ADDITION'\n | 'DELETION'\n | 'EDIT_STARTED'\n | 'EDIT_CANCELLED'\nexport type PendingQueueListener = (\n results: PendingFormSubmission[],\n action: PendingQueueAction,\n) => unknown\nconst pendingQueueListeners: Array<PendingQueueListener> = []\n\n/**\n * Register a listener function that will be passed an array of\n * PendingFormSubmissions when the pending queue is modified.\n *\n * ### Example\n *\n * ```js\n * const listener = async (pendingSubmissions) => {\n * // use pending submissions here...\n * }\n * const deregister =\n * await submissionService.registerPendingQueueListener(listener)\n *\n * // When no longer needed, remember to deregister the listener\n * deregister()\n * ```\n *\n * @param listener\n * @returns\n */\nexport function registerPendingQueueListener(\n listener: PendingQueueListener,\n): () => void {\n pendingQueueListeners.push(listener)\n\n return () => {\n const index = pendingQueueListeners.indexOf(listener)\n if (index !== -1) {\n pendingQueueListeners.splice(index, 1)\n }\n }\n}\n\nfunction executePendingQueueListeners(\n newSubmissions: PendingFormSubmission[],\n action: PendingQueueAction,\n) {\n console.log(\n 'Pending Queue submissions have been updated',\n action,\n newSubmissions,\n )\n for (const pendingQueueListener of pendingQueueListeners) {\n pendingQueueListener(newSubmissions, action)\n }\n}\n\nexport async function addFormSubmissionToPendingQueue(\n formSubmission: FormSubmission,\n) {\n const pendingTimestamp = new Date().toISOString()\n try {\n const submissions: PendingFormSubmission[] =\n await getPendingQueueSubmissions()\n submissions.push({\n ...formSubmission,\n pendingTimestamp,\n } as PendingFormSubmission)\n await utilsService.localForage.setItem(\n PENDING_QUEUE_SUBMISSIONS_KEY,\n submissions,\n )\n executePendingQueueListeners(submissions, 'ADDITION')\n } catch (error) {\n Sentry.captureException(error)\n throw error instanceof Error ? errorHandler(error) : error\n }\n}\n\nexport async function updatePendingQueueSubmission(\n pendingTimestamp: string,\n newSubmission: PendingFormSubmission,\n action:\n | 'SUBMIT_FAILED'\n | 'SUBMIT_STARTED'\n | 'EDIT_STARTED'\n | 'EDIT_CANCELLED',\n skipSentry?: boolean,\n) {\n try {\n const submissions = await getPendingQueueSubmissions()\n const newSubmissions = submissions.map((submission) => {\n if (submission.pendingTimestamp === pendingTimestamp) {\n return { ...newSubmission }\n }\n return submission\n })\n await utilsService.localForage.setItem(\n PENDING_QUEUE_SUBMISSIONS_KEY,\n newSubmissions,\n )\n executePendingQueueListeners(newSubmissions, action)\n } catch (error) {\n if (!skipSentry) {\n Sentry.captureException(error)\n }\n\n throw error instanceof Error ? errorHandler(error) : error\n }\n}\n\n/**\n * Cancel editing a PendingFormSubmission based on the `pendingTimestamp`\n * property. The function marks the submission as ready for processing by the\n * pending queue\n *\n * ### Example\n *\n * ```js\n * const pendingTimestamp = '2020-07-29T01:03:26.573Z'\n *\n * await submissionService.cancelEditingPendingQueueSubmission(\n * pendingTimestamp,\n * )\n * ```\n *\n * @param pendingTimestamp\n */\nexport async function cancelEditingPendingQueueSubmission(\n pendingTimestamp: string,\n) {\n try {\n const submissions = await getPendingQueueSubmissions()\n const targetSubmission = submissions.find((submission) => {\n return submission.pendingTimestamp === pendingTimestamp\n })\n if (targetSubmission) {\n await updatePendingQueueSubmission(\n pendingTimestamp,\n { ...targetSubmission, isEditing: false },\n 'EDIT_CANCELLED',\n //this is to avoid logging to sentry twice\n true,\n )\n }\n } catch (error) {\n Sentry.captureException(error)\n throw error instanceof Error ? errorHandler(error) : error\n }\n}\n\n/**\n * Get an array of PendingFormSubmission\n *\n * ### Example\n *\n * ```js\n * const pendingSubmission =\n * await submissionService.getPendingQueueSubmissions()\n * // Display pending submissions to user...\n * ```\n *\n * @returns\n */\nexport async function getPendingQueueSubmissions(): Promise<\n PendingFormSubmission[]\n> {\n const pendingQueueSubmissionsInStorage =\n await utilsService.localForage.getItem<PendingFormSubmission[]>(\n PENDING_QUEUE_SUBMISSIONS_KEY,\n )\n\n if (!pendingQueueSubmissionsInStorage) {\n return []\n }\n\n // Form submission data use to be stored separate to the array of pending records\n // so to ensure all pending records have submission data we will pull it from\n // where it use to be stored if there is isn't any form submission data.\n // This is could only happen if a user had the latest code (I.e. they are online)\n // and they have a submission in the pending queue that cannot be submitted\n // (E.g. they need to login or one of the attachments could not be uploaded).\n const pendingQueueSubmissions: PendingFormSubmission[] = []\n for (const pendingQueueSubmission of pendingQueueSubmissionsInStorage) {\n if (pendingQueueSubmission.submission) {\n pendingQueueSubmissions.push(pendingQueueSubmission)\n } else {\n const formSubmission =\n await utilsService.getLocalForageItem<FormSubmission>(\n `SUBMISSION_${pendingQueueSubmission.pendingTimestamp}`,\n )\n if (formSubmission) {\n pendingQueueSubmission.submission = formSubmission.submission\n pendingQueueSubmissions.push(pendingQueueSubmission)\n }\n }\n }\n return pendingQueueSubmissions\n}\n\n/**\n * Delete a PendingFormSubmission before it is processed based on the\n * `pendingTimestamp` property.\n *\n * ### Example\n *\n * ```js\n * const pendingTimestamp = '2020-07-29T01:03:26.573Z'\n * await submissionService.deletePendingQueueSubmission(pendingTimestamp)\n * ```\n *\n * @param pendingTimestamp\n */\nexport async function deletePendingQueueSubmission(pendingTimestamp: string) {\n await removePendingQueueSubmission(pendingTimestamp, 'DELETION')\n}\n\n/**\n * Edit a PendingFormSubmission before it is processed based on the\n * `pendingTimestamp` property. The function places the submission in an editing\n * state preventing it from being processed by the pending queue and returns a\n * prefill id and form id\n *\n * ### Example\n *\n * ```js\n * const pendingTimestamp = '2020-07-29T01:03:26.573Z'\n * const { preFillFormDataId, formId } =\n * await submissionService.editPendingQueueSubmission(pendingTimestamp)\n * window.location.href = `https://mycoolforms.apps.oneblink.io/forms/${formId}?preFillFormDataId=${preFillFormDataId}`\n * ```\n *\n * @param pendingTimestamp\n */\nexport async function editPendingQueueSubmission(\n pendingTimestamp: string,\n): Promise<{ preFillFormDataId: string; formId: number }> {\n try {\n const pendingQueueSubmissions = await getPendingQueueSubmissions()\n const formSubmission = pendingQueueSubmissions.find(\n (pendingQueueSubmission) =>\n pendingQueueSubmission.pendingTimestamp === pendingTimestamp,\n )\n if (!formSubmission) {\n throw new Error('Could not find form submission to edit')\n }\n const preFillFormDataId = `PENDING_SUBMISSION_${pendingTimestamp}`\n const key = getPrefillKey(preFillFormDataId)\n await utilsService.setLocalForageItem(key, formSubmission.submission)\n await updatePendingQueueSubmission(\n pendingTimestamp,\n {\n ...formSubmission,\n pendingTimestamp,\n isEditing: true,\n isSubmitting: false,\n error: undefined,\n },\n 'EDIT_STARTED',\n //this is to avoid logging to sentry twice\n true,\n )\n return { preFillFormDataId, formId: formSubmission.definition.id }\n } catch (error) {\n Sentry.captureException(error)\n throw error instanceof Error ? errorHandler(error) : error\n }\n}\n\nexport async function removePendingQueueSubmission(\n pendingTimestamp: string,\n action: 'SUBMIT_SUCCEEDED' | 'DELETION',\n) {\n try {\n await utilsService.removeLocalForageItem(`SUBMISSION_${pendingTimestamp}`)\n const submissions = await getPendingQueueSubmissions()\n const newSubmissions = submissions.filter(\n (submission) => submission.pendingTimestamp !== pendingTimestamp,\n )\n await utilsService.localForage.setItem(\n PENDING_QUEUE_SUBMISSIONS_KEY,\n newSubmissions,\n )\n executePendingQueueListeners(newSubmissions, action)\n } catch (error) {\n Sentry.captureException(error)\n throw error instanceof Error ? errorHandler(error) : error\n }\n}\n\nconst pendingQueueAttachmentProgressListeners: Array<{\n attachmentId: string\n listener: ProgressListener\n}> = []\n\n/**\n * Register a listener function that will be passed a progress event when an\n * attachment for an item in the pending queue is being processed.\n *\n * ### Example\n *\n * ```js\n * const listener = async ({ progress }) => {\n * // update the UI to reflect the progress here...\n * }\n * const deregister =\n * await submissionService.registerPendingQueueAttachmentProgressListener(\n * attachment.id,\n * listener,\n * )\n *\n * // When no longer needed, remember to deregister the listener\n * deregister()\n * ```\n *\n * @param attachmentId\n * @param listener\n * @returns\n */\nexport function registerPendingQueueAttachmentProgressListener(\n attachmentId: string,\n listener: ProgressListener,\n): () => void {\n const item = { attachmentId, listener }\n pendingQueueAttachmentProgressListeners.push(item)\n\n return () => {\n const index = pendingQueueAttachmentProgressListeners.indexOf(item)\n if (index !== -1) {\n pendingQueueAttachmentProgressListeners.splice(index, 1)\n }\n }\n}\n\nexport function executePendingQueueAttachmentProgressListeners(\n event: ProgressListenerEvent & {\n attachmentId: string\n },\n) {\n for (const pendingQueueAttachmentProgressListener of pendingQueueAttachmentProgressListeners) {\n if (\n event.attachmentId === pendingQueueAttachmentProgressListener.attachmentId\n ) {\n pendingQueueAttachmentProgressListener.listener(event)\n }\n }\n}\n\nconst pendingQueueProgressListeners: Array<{\n pendingTimestamp: string\n listener: ProgressListener\n}> = []\n\n/**\n * Register a listener function that will be passed a progress event when an\n * item in the pending queue is being processed.\n *\n * ### Example\n *\n * ```js\n * const listener = async ({ progress }) => {\n * // update the UI to reflect the progress here...\n * }\n * const deregister =\n * await submissionService.registerPendingQueueProgressListener(\n * pendingQueueItem.pendingTimestamp,\n * listener,\n * )\n *\n * // When no longer needed, remember to deregister the listener\n * deregister()\n * ```\n *\n * @param pendingTimestamp\n * @param listener\n * @returns\n */\nexport function registerPendingQueueProgressListener(\n pendingTimestamp: string,\n listener: ProgressListener,\n): () => void {\n const item = { pendingTimestamp, listener }\n pendingQueueProgressListeners.push(item)\n\n return () => {\n const index = pendingQueueProgressListeners.indexOf(item)\n if (index !== -1) {\n pendingQueueProgressListeners.splice(index, 1)\n }\n }\n}\n\nexport function executePendingQueueProgressListeners(\n event: ProgressListenerEvent & {\n pendingTimestamp: string\n },\n) {\n for (const pendingQueueProgressListener of pendingQueueProgressListeners) {\n if (\n event.pendingTimestamp === pendingQueueProgressListener.pendingTimestamp\n ) {\n pendingQueueProgressListener.listener(event)\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { executePendingQueueAttachmentProgressListeners } from './pending-queue';
|
|
2
|
+
import uploadAttachment from './uploadAttachment';
|
|
3
|
+
export default async function prepareSubmissionData({ definition, submission, }) {
|
|
4
|
+
return await uploadAttachments(definition.id, definition.elements, submission);
|
|
5
|
+
}
|
|
6
|
+
async function maybeUploadAttachment(formId, formElement, value) {
|
|
7
|
+
if (value && typeof value === 'object') {
|
|
8
|
+
const record = value;
|
|
9
|
+
// If the value matches the properties required for an attachment
|
|
10
|
+
// that was never uploaded, we need to upload it.
|
|
11
|
+
if (record.type &&
|
|
12
|
+
typeof record.fileName === 'string' &&
|
|
13
|
+
typeof record._id === 'string') {
|
|
14
|
+
if (record.data instanceof Blob) {
|
|
15
|
+
const attachmentId = record._id;
|
|
16
|
+
return await uploadAttachment({
|
|
17
|
+
formId,
|
|
18
|
+
fileName: record.fileName,
|
|
19
|
+
contentType: record.data.type,
|
|
20
|
+
isPrivate: formElement.storageType !== 'public',
|
|
21
|
+
data: record.data,
|
|
22
|
+
onProgress: (event) => executePendingQueueAttachmentProgressListeners({
|
|
23
|
+
...event,
|
|
24
|
+
attachmentId,
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else if (record.type === 'NEW') {
|
|
29
|
+
return {
|
|
30
|
+
...record,
|
|
31
|
+
type: 'ERROR',
|
|
32
|
+
errorMessage: 'We were unable to read this file from your file system. Please try again. If the problem persists, please contact your application administrators.',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
async function uploadAttachments(formId, formElements, submission) {
|
|
40
|
+
for (const formElement of formElements) {
|
|
41
|
+
switch (formElement.type) {
|
|
42
|
+
case 'page':
|
|
43
|
+
case 'section': {
|
|
44
|
+
await uploadAttachments(formId, formElement.elements, submission);
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
case 'form': {
|
|
48
|
+
const nestedSubmission = submission[formElement.name];
|
|
49
|
+
if (!nestedSubmission || typeof nestedSubmission !== 'object') {
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
await uploadAttachments(formId, formElement.elements || [], nestedSubmission);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case 'repeatableSet': {
|
|
56
|
+
const entries = submission[formElement.name];
|
|
57
|
+
if (!Array.isArray(entries)) {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
for (const entry of entries) {
|
|
61
|
+
await uploadAttachments(formId, formElement.elements, entry);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case 'camera':
|
|
66
|
+
case 'draw':
|
|
67
|
+
case 'arcGISWebMap':
|
|
68
|
+
case 'compliance':
|
|
69
|
+
case 'files': {
|
|
70
|
+
const value = submission[formElement.name];
|
|
71
|
+
if (!value) {
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
switch (formElement.type) {
|
|
75
|
+
case 'camera':
|
|
76
|
+
case 'draw': {
|
|
77
|
+
const newValue = await maybeUploadAttachment(formId, formElement, value);
|
|
78
|
+
submission[formElement.name] = newValue;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
case 'arcGISWebMap': {
|
|
82
|
+
const files = value === null || value === void 0 ? void 0 : value.snapshotImages;
|
|
83
|
+
if (Array.isArray(files)) {
|
|
84
|
+
for (let index = 0; index < files.length; index++) {
|
|
85
|
+
files[index] = await maybeUploadAttachment(formId, formElement, files[index]);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
case 'compliance': {
|
|
91
|
+
const files = value === null || value === void 0 ? void 0 : value.files;
|
|
92
|
+
if (Array.isArray(files)) {
|
|
93
|
+
for (let index = 0; index < files.length; index++) {
|
|
94
|
+
files[index] = await maybeUploadAttachment(formId, formElement, files[index]);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case 'files': {
|
|
100
|
+
if (Array.isArray(value)) {
|
|
101
|
+
for (let index = 0; index < value.length; index++) {
|
|
102
|
+
value[index] = await maybeUploadAttachment(formId, formElement, value[index]);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return submission;
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=prepareSubmissionData.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prepareSubmissionData.js","sourceRoot":"","sources":["../../../src/apps/services/prepareSubmissionData.ts"],"names":[],"mappings":"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","sourcesContent":["import { FormTypes } from '@oneblink/types'\nimport { BaseNewFormSubmission } from '../types/submissions'\nimport { executePendingQueueAttachmentProgressListeners } from './pending-queue'\nimport uploadAttachment from './uploadAttachment'\nimport { Attachment } from '../attachments-service'\n\nexport default async function prepareSubmissionData({\n definition,\n submission,\n}: BaseNewFormSubmission): Promise<BaseNewFormSubmission['submission']> {\n return await uploadAttachments(definition.id, definition.elements, submission)\n}\n\nasync function maybeUploadAttachment(\n formId: number,\n formElement: FormTypes.FormElementBinaryStorage,\n value: unknown,\n) {\n if (value && typeof value === 'object') {\n const record = value as Attachment\n // If the value matches the properties required for an attachment\n // that was never uploaded, we need to upload it.\n if (\n record.type &&\n typeof record.fileName === 'string' &&\n typeof record._id === 'string'\n ) {\n if (record.data instanceof Blob) {\n const attachmentId = record._id\n return await uploadAttachment({\n formId,\n fileName: record.fileName,\n contentType: record.data.type,\n isPrivate: formElement.storageType !== 'public',\n data: record.data,\n onProgress: (event) =>\n executePendingQueueAttachmentProgressListeners({\n ...event,\n attachmentId,\n }),\n })\n } else if (record.type === 'NEW') {\n return {\n ...record,\n type: 'ERROR',\n errorMessage:\n 'We were unable to read this file from your file system. Please try again. If the problem persists, please contact your application administrators.',\n }\n }\n }\n }\n return value\n}\n\nasync function uploadAttachments(\n formId: number,\n formElements: FormTypes.FormElement[],\n submission: BaseNewFormSubmission['submission'],\n): Promise<BaseNewFormSubmission['submission']> {\n for (const formElement of formElements) {\n switch (formElement.type) {\n case 'page':\n case 'section': {\n await uploadAttachments(formId, formElement.elements, submission)\n break\n }\n case 'form': {\n const nestedSubmission = submission[formElement.name]\n if (!nestedSubmission || typeof nestedSubmission !== 'object') {\n break\n }\n await uploadAttachments(\n formId,\n formElement.elements || [],\n nestedSubmission as BaseNewFormSubmission['submission'],\n )\n break\n }\n case 'repeatableSet': {\n const entries = submission[formElement.name]\n if (!Array.isArray(entries)) {\n break\n }\n for (const entry of entries) {\n await uploadAttachments(formId, formElement.elements, entry)\n }\n break\n }\n case 'camera':\n case 'draw':\n case 'arcGISWebMap':\n case 'compliance':\n case 'files': {\n const value = submission[formElement.name]\n if (!value) {\n break\n }\n\n switch (formElement.type) {\n case 'camera':\n case 'draw': {\n const newValue = await maybeUploadAttachment(\n formId,\n formElement,\n value,\n )\n submission[formElement.name] = newValue\n break\n }\n case 'arcGISWebMap': {\n const files = (value as Record<string, unknown> | undefined)\n ?.snapshotImages\n if (Array.isArray(files)) {\n for (let index = 0; index < files.length; index++) {\n files[index] = await maybeUploadAttachment(\n formId,\n formElement,\n files[index],\n )\n }\n }\n break\n }\n case 'compliance': {\n const files = (value as Record<string, unknown> | undefined)?.files\n if (Array.isArray(files)) {\n for (let index = 0; index < files.length; index++) {\n files[index] = await maybeUploadAttachment(\n formId,\n formElement,\n files[index],\n )\n }\n }\n break\n }\n case 'files': {\n if (Array.isArray(value)) {\n for (let index = 0; index < value.length; index++) {\n value[index] = await maybeUploadAttachment(\n formId,\n formElement,\n value[index],\n )\n }\n }\n break\n }\n }\n }\n }\n }\n\n return submission\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function formatQueryString(obj: Record<string, unknown>): string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function formatQueryString(obj) {
|
|
2
|
+
const params = Object.entries(obj).reduce((memo, [key, value]) => {
|
|
3
|
+
if (value === undefined || value === null) {
|
|
4
|
+
return memo;
|
|
5
|
+
}
|
|
6
|
+
if (Array.isArray(value)) {
|
|
7
|
+
value.forEach((val) => memo.append(key, val));
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
memo.append(key, String(value));
|
|
11
|
+
}
|
|
12
|
+
return memo;
|
|
13
|
+
}, new URLSearchParams());
|
|
14
|
+
return params.toString();
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=query-string.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-string.js","sourceRoot":"","sources":["../../../src/apps/services/query-string.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,GAA4B;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CACvC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QACrB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACjC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,EACD,IAAI,eAAe,EAAE,CACtB,CAAA;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAA;AAC1B,CAAC","sourcesContent":["export function formatQueryString(obj: Record<string, unknown>): string {\n const params = Object.entries(obj).reduce<URLSearchParams>(\n (memo, [key, value]) => {\n if (value === undefined || value === null) {\n return memo\n }\n\n if (Array.isArray(value)) {\n value.forEach((val) => memo.append(key, val))\n } else {\n memo.append(key, String(value))\n }\n return memo\n },\n new URLSearchParams(),\n )\n return params.toString()\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { FormSubmissionResult } from '../types/submissions';
|
|
2
|
+
import * as localisationService from '../localisation-service';
|
|
3
|
+
export default function replaceInjectablesWithSubmissionValues(text: string, submissionResult: FormSubmissionResult): ReturnType<typeof localisationService.replaceInjectablesWithSubmissionValues>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as localisationService from '../localisation-service';
|
|
2
|
+
import { getUserProfile } from '../auth-service';
|
|
3
|
+
export default function replaceInjectablesWithSubmissionValues(text, submissionResult) {
|
|
4
|
+
var _a, _b, _c;
|
|
5
|
+
return localisationService.replaceInjectablesWithSubmissionValues(text, {
|
|
6
|
+
previousApprovalId: submissionResult.previousFormSubmissionApprovalId,
|
|
7
|
+
form: submissionResult.definition,
|
|
8
|
+
submission: submissionResult.submission,
|
|
9
|
+
submissionId: submissionResult.submissionId || '',
|
|
10
|
+
submissionTimestamp: submissionResult.submissionTimestamp || '',
|
|
11
|
+
externalId: submissionResult.externalId || undefined,
|
|
12
|
+
userProfile: getUserProfile() || undefined,
|
|
13
|
+
task: (_a = submissionResult.taskCompletion) === null || _a === void 0 ? void 0 : _a.task,
|
|
14
|
+
taskGroup: (_b = submissionResult.taskCompletion) === null || _b === void 0 ? void 0 : _b.taskGroup,
|
|
15
|
+
taskGroupInstance: (_c = submissionResult.taskCompletion) === null || _c === void 0 ? void 0 : _c.taskGroupInstance,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=replaceInjectablesWithSubmissionValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replaceInjectablesWithSubmissionValues.js","sourceRoot":"","sources":["../../../src/apps/services/replaceInjectablesWithSubmissionValues.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,mBAAmB,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,CAAC,OAAO,UAAU,sCAAsC,CAC5D,IAAY,EACZ,gBAAsC;;IAItC,OAAO,mBAAmB,CAAC,sCAAsC,CAAC,IAAI,EAAE;QACtE,kBAAkB,EAAE,gBAAgB,CAAC,gCAAgC;QACrE,IAAI,EAAE,gBAAgB,CAAC,UAAU;QACjC,UAAU,EAAE,gBAAgB,CAAC,UAAU;QACvC,YAAY,EAAE,gBAAgB,CAAC,YAAY,IAAI,EAAE;QACjD,mBAAmB,EAAE,gBAAgB,CAAC,mBAAmB,IAAI,EAAE;QAC/D,UAAU,EAAE,gBAAgB,CAAC,UAAU,IAAI,SAAS;QACpD,WAAW,EAAE,cAAc,EAAE,IAAI,SAAS;QAC1C,IAAI,EAAE,MAAA,gBAAgB,CAAC,cAAc,0CAAE,IAAI;QAC3C,SAAS,EAAE,MAAA,gBAAgB,CAAC,cAAc,0CAAE,SAAS;QACrD,iBAAiB,EAAE,MAAA,gBAAgB,CAAC,cAAc,0CAAE,iBAAiB;KACtE,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import { FormSubmissionResult } from '../types/submissions'\nimport * as localisationService from '../localisation-service'\nimport { getUserProfile } from '../auth-service'\n\nexport default function replaceInjectablesWithSubmissionValues(\n text: string,\n submissionResult: FormSubmissionResult,\n): ReturnType<\n typeof localisationService.replaceInjectablesWithSubmissionValues\n> {\n return localisationService.replaceInjectablesWithSubmissionValues(text, {\n previousApprovalId: submissionResult.previousFormSubmissionApprovalId,\n form: submissionResult.definition,\n submission: submissionResult.submission,\n submissionId: submissionResult.submissionId || '',\n submissionTimestamp: submissionResult.submissionTimestamp || '',\n externalId: submissionResult.externalId || undefined,\n userProfile: getUserProfile() || undefined,\n task: submissionResult.taskCompletion?.task,\n taskGroup: submissionResult.taskCompletion?.taskGroup,\n taskGroupInstance: submissionResult.taskCompletion?.taskGroupInstance,\n })\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { SubmissionEventTypes } from '@oneblink/types';
|
|
2
|
+
import { FormSubmissionResult, BaseNewFormSubmission } from '../types/submissions';
|
|
3
|
+
import { SchedulingUrlConfiguration } from '../types/scheduling';
|
|
4
|
+
type SchedulingSubmissionResult = {
|
|
5
|
+
formSubmissionResult: FormSubmissionResult;
|
|
6
|
+
paymentReceiptUrl: string | undefined;
|
|
7
|
+
paymentFormUrl: string | undefined;
|
|
8
|
+
preventPayment: boolean;
|
|
9
|
+
};
|
|
10
|
+
export declare function getSchedulingSubmissionResult(): Promise<SchedulingSubmissionResult | null>;
|
|
11
|
+
export declare function removeSchedulingSubmissionResult(): Promise<void>;
|
|
12
|
+
type SchedulingBooking = {
|
|
13
|
+
/** The unique identifier for the submission associated with the booking */
|
|
14
|
+
submissionId: string;
|
|
15
|
+
/** Date and time the booking starts */
|
|
16
|
+
startTime: Date;
|
|
17
|
+
/** Date and time the booking ends */
|
|
18
|
+
endTime: Date;
|
|
19
|
+
/** Location of booking */
|
|
20
|
+
location: string | undefined;
|
|
21
|
+
/** `true` if the booking has been rescheduled, otherwise `false` */
|
|
22
|
+
isReschedule: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare function getSchedulingBooking(submissionId: string | null): Promise<SchedulingBooking | undefined>;
|
|
25
|
+
export declare function removeSchedulingBooking(submissionId: string): Promise<void>;
|
|
26
|
+
export declare function setSchedulingBooking(schedulingBooking: SchedulingBooking): Promise<void>;
|
|
27
|
+
declare function checkForSchedulingSubmissionEvent(baseFormSubmission: BaseNewFormSubmission): SubmissionEventTypes.FormSchedulingEvent | undefined;
|
|
28
|
+
declare function handleSchedulingSubmissionEvent({ formSubmissionResult, schedulingSubmissionEvent, schedulingUrlConfiguration, paymentReceiptUrl, paymentFormUrl, preventPayment, }: {
|
|
29
|
+
formSubmissionResult: FormSubmissionResult;
|
|
30
|
+
schedulingSubmissionEvent: SubmissionEventTypes.FormSchedulingEvent;
|
|
31
|
+
schedulingUrlConfiguration: SchedulingUrlConfiguration;
|
|
32
|
+
paymentReceiptUrl: string | undefined;
|
|
33
|
+
paymentFormUrl: string | undefined;
|
|
34
|
+
preventPayment: boolean;
|
|
35
|
+
}): Promise<NonNullable<FormSubmissionResult['scheduling']>>;
|
|
36
|
+
export { SchedulingBooking, checkForSchedulingSubmissionEvent, handleSchedulingSubmissionEvent, };
|