@oneblink/apps-react 9.0.0-beta.2 → 9.0.0-beta.3
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 -6
- package/dist/OneBlinkFormBase.js +1 -0
- package/dist/OneBlinkFormBase.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 +252 -0
- package/dist/apps/index.js +254 -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 +29 -0
- package/dist/apps/tenants.js +127 -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/CustomAccordion.d.ts +3 -3
- package/dist/components/Lists.d.ts +4 -1
- package/dist/components/formStore/display/ElementDisplay.js +2 -2
- package/dist/components/formStore/display/ElementDisplay.js.map +1 -1
- package/dist/components/formStore/useFormStoreTableContext.d.ts +2 -2
- package/dist/components/mfa/MultiFactorAuthentication.d.ts +1 -1
- package/dist/components/renderer/LookupNotification.js +1 -1
- package/dist/components/renderer/LookupNotification.js.map +1 -1
- package/dist/form-elements/FormElementAutocomplete.js +1 -1
- package/dist/form-elements/FormElementAutocomplete.js.map +1 -1
- package/dist/hooks/attachments/useAttachment.js +1 -1
- package/dist/hooks/attachments/useAttachment.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/download-file.js +1 -1
- package/dist/services/download-file.js.map +1 -1
- package/dist/styles.css +208 -204
- package/package.json +42 -34
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { paymentService } from '@oneblink/sdk-core';
|
|
2
|
+
import OneBlinkAppsError from './services/errors/oneBlinkAppsError';
|
|
3
|
+
import { generatePaymentConfiguration } from './services/api/payment';
|
|
4
|
+
import utilsService from './services/utils';
|
|
5
|
+
import BPOINTPaymentProvider from './services/payment-providers/BPOINTPaymentProvider';
|
|
6
|
+
import CPPayPaymentProvider from './services/payment-providers/CPPayPaymentProvider';
|
|
7
|
+
import NSWGovPayPaymentProvider from './services/payment-providers/NSWGovPayPaymentProvider';
|
|
8
|
+
import WestpacQuickStreamPaymentProvider, * as westpacQuickStream from './services/payment-providers/WestpacQuickStreamPaymentProvider';
|
|
9
|
+
import { replaceSubmissionFormatters } from './localisation-service';
|
|
10
|
+
import { getSchedulingBooking, removeSchedulingBooking, } from './services/schedulingHandlers';
|
|
11
|
+
const KEY = 'PAYMENT_SUBMISSION_RESULT';
|
|
12
|
+
export { westpacQuickStream };
|
|
13
|
+
function getPaymentProvider(formSubmissionResult, paymentSubmissionEvent) {
|
|
14
|
+
switch (paymentSubmissionEvent.type) {
|
|
15
|
+
case 'BPOINT': {
|
|
16
|
+
return new BPOINTPaymentProvider(paymentSubmissionEvent, formSubmissionResult);
|
|
17
|
+
}
|
|
18
|
+
case 'CP_PAY': {
|
|
19
|
+
return new CPPayPaymentProvider(paymentSubmissionEvent, formSubmissionResult);
|
|
20
|
+
}
|
|
21
|
+
case 'NSW_GOV_PAY': {
|
|
22
|
+
return new NSWGovPayPaymentProvider(paymentSubmissionEvent, formSubmissionResult);
|
|
23
|
+
}
|
|
24
|
+
case 'WESTPAC_QUICK_STREAM': {
|
|
25
|
+
return new WestpacQuickStreamPaymentProvider(paymentSubmissionEvent, formSubmissionResult);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Pass in query string parameters after a redirect back to your app after a
|
|
31
|
+
* payment is processed. This function will handle all payment submission events
|
|
32
|
+
* supported by OneBlink. Will return a Transaction and the submission result
|
|
33
|
+
* that was returned from `handlePaymentSubmissionEvent()` before redirecting to
|
|
34
|
+
* `payment.hostedFormUrl`.
|
|
35
|
+
*
|
|
36
|
+
* #### Example
|
|
37
|
+
*
|
|
38
|
+
* ```js
|
|
39
|
+
* import queryString from 'query-string'
|
|
40
|
+
*
|
|
41
|
+
* const query = queryString.parse(window.location.search)
|
|
42
|
+
* const { transaction, submissionResult } =
|
|
43
|
+
* await paymentService.handlePaymentQuerystring(query)
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @param query
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
export async function handlePaymentQuerystring(query) {
|
|
50
|
+
const submissionResult = await utilsService.getLocalForageItem(KEY);
|
|
51
|
+
// If the current transaction does not match the submission
|
|
52
|
+
// we will display message to user indicating
|
|
53
|
+
// they are looking for the wrong transaction receipt.
|
|
54
|
+
if (!submissionResult) {
|
|
55
|
+
throw new OneBlinkAppsError('It looks like you are attempting to view a receipt for an unknown payment.');
|
|
56
|
+
}
|
|
57
|
+
if (!submissionResult.payment || !submissionResult.payment.submissionEvent) {
|
|
58
|
+
throw new OneBlinkAppsError('It looks like you are attempting to view a receipt for a misconfigured payment.');
|
|
59
|
+
}
|
|
60
|
+
const paymentProvider = getPaymentProvider(submissionResult, submissionResult.payment.submissionEvent);
|
|
61
|
+
if (!paymentProvider) {
|
|
62
|
+
throw new OneBlinkAppsError('It looks like you are attempting to view a receipt for an unsupported payment.');
|
|
63
|
+
}
|
|
64
|
+
const verifiedPaymentTransaction = await paymentProvider.verifyPaymentTransaction(query);
|
|
65
|
+
const schedulingBooking = await getSchedulingBooking(verifiedPaymentTransaction.submissionResult.submissionId);
|
|
66
|
+
if (schedulingBooking && verifiedPaymentTransaction.transaction.isSuccess) {
|
|
67
|
+
await removeSchedulingBooking(schedulingBooking.submissionId);
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
...verifiedPaymentTransaction,
|
|
71
|
+
schedulingBooking,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function checkForPaymentSubmissionEvent(formSubmission) {
|
|
75
|
+
const result = paymentService.checkForPaymentEvent(formSubmission.definition, formSubmission.submission);
|
|
76
|
+
if (result) {
|
|
77
|
+
console.log('Form has a payment submission event with amount', result);
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Handle a submission result with a payment submission event. Will throw an
|
|
83
|
+
* error if a transaction has already been made using this submission result.
|
|
84
|
+
* Will return `undefined` if the submission does not have an amount. Will
|
|
85
|
+
* return the submission result passed in with a `payment` property if the
|
|
86
|
+
* submission requires processing.
|
|
87
|
+
*
|
|
88
|
+
* #### Example
|
|
89
|
+
*
|
|
90
|
+
* ```js
|
|
91
|
+
* const formSubmissionResult = {
|
|
92
|
+
* submissionId: '89c6e98e-f56f-45fc-84fe-c4fc62331d34',
|
|
93
|
+
* submissionTimestamp: '2020-07-29T01:03:26.573Z'
|
|
94
|
+
* formsAppId: 1,
|
|
95
|
+
* submission: {
|
|
96
|
+
* form: 'data',
|
|
97
|
+
* goes: 'here',
|
|
98
|
+
* amount: 1.50,
|
|
99
|
+
* }
|
|
100
|
+
* definition: OneBlinkForm,
|
|
101
|
+
* payment: null,
|
|
102
|
+
* }
|
|
103
|
+
* const paymentSubmissionEvent = {
|
|
104
|
+
* type: 'CP_PAY',
|
|
105
|
+
* configuration: {
|
|
106
|
+
* elementId: '12663efc-4c6a-4e72-8505-559edfe3e92e',
|
|
107
|
+
* gatewayId: '6658c5c4-e0db-483b-8af7-6a6464fe772c',
|
|
108
|
+
* },
|
|
109
|
+
* }
|
|
110
|
+
* const paymentReceiptUrl = `${window.location.origin}/payment-receipt`
|
|
111
|
+
* const paymentSubmissionResult = await paymentService.handlePaymentSubmissionEvent({
|
|
112
|
+
* formSubmissionResult,
|
|
113
|
+
* paymentSubmissionEvent,
|
|
114
|
+
* paymentReceiptUrl,
|
|
115
|
+
* })
|
|
116
|
+
* if (paymentSubmissionResult) {
|
|
117
|
+
* window.location.href = paymentSubmissionResult.payment.hostedFormUrl
|
|
118
|
+
* }
|
|
119
|
+
* ```
|
|
120
|
+
*
|
|
121
|
+
* @param options
|
|
122
|
+
* @returns
|
|
123
|
+
*/
|
|
124
|
+
export async function handlePaymentSubmissionEvent({ amount, formSubmissionResult, paymentSubmissionEvent, paymentReceiptUrl, paymentFormUrl, }) {
|
|
125
|
+
const paymentProvider = getPaymentProvider(formSubmissionResult, paymentSubmissionEvent);
|
|
126
|
+
if (!paymentProvider) {
|
|
127
|
+
throw new OneBlinkAppsError('It looks like you are attempting to make a payment using an unsupported payment method.');
|
|
128
|
+
}
|
|
129
|
+
const paymentConfiguration = await generatePaymentConfiguration(paymentProvider, {
|
|
130
|
+
amount,
|
|
131
|
+
redirectUrl: paymentReceiptUrl,
|
|
132
|
+
submissionId: formSubmissionResult.submissionId,
|
|
133
|
+
paymentFormUrl,
|
|
134
|
+
});
|
|
135
|
+
const payment = {
|
|
136
|
+
submissionEvent: paymentSubmissionEvent,
|
|
137
|
+
paymentReceiptUrl,
|
|
138
|
+
hostedFormUrl: paymentConfiguration.hostedFormUrl,
|
|
139
|
+
paymentFormUrl,
|
|
140
|
+
amount,
|
|
141
|
+
};
|
|
142
|
+
console.log('Created Payment configuration to start transaction', payment);
|
|
143
|
+
await utilsService.setLocalForageItem(KEY, {
|
|
144
|
+
...formSubmissionResult,
|
|
145
|
+
scheduling: null,
|
|
146
|
+
payment,
|
|
147
|
+
});
|
|
148
|
+
return payment;
|
|
149
|
+
}
|
|
150
|
+
export async function getFormSubmissionResultPayment() {
|
|
151
|
+
var _a, _b;
|
|
152
|
+
const formSubmissionResult = await utilsService.getLocalForageItem(KEY);
|
|
153
|
+
if (!formSubmissionResult) {
|
|
154
|
+
throw new OneBlinkAppsError('It looks like you are attempting to complete a transaction for an unknown payment.');
|
|
155
|
+
}
|
|
156
|
+
if (!((_a = formSubmissionResult.payment) === null || _a === void 0 ? void 0 : _a.submissionEvent)) {
|
|
157
|
+
throw new OneBlinkAppsError('It looks like you are attempting to complete a transaction for a misconfigured payment.');
|
|
158
|
+
}
|
|
159
|
+
return {
|
|
160
|
+
formSubmissionResult,
|
|
161
|
+
paymentSubmissionEvent: (_b = formSubmissionResult.payment) === null || _b === void 0 ? void 0 : _b.submissionEvent,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Retrieve an array of detail items from a form submission payment.
|
|
166
|
+
*
|
|
167
|
+
* #### Example
|
|
168
|
+
*
|
|
169
|
+
* ```js
|
|
170
|
+
* const detailItems =
|
|
171
|
+
* paymentService.getDisplayDetailsFromFormSubmissionPayment(
|
|
172
|
+
* formSubmissionPayment,
|
|
173
|
+
* )
|
|
174
|
+
* ```
|
|
175
|
+
*
|
|
176
|
+
* @param formSubmissionPayment
|
|
177
|
+
* @returns
|
|
178
|
+
*/
|
|
179
|
+
export function getDisplayDetailsFromFormSubmissionPayment(formSubmissionPayment) {
|
|
180
|
+
return paymentService.getDisplayDetailsFromFormSubmissionPayment(formSubmissionPayment, replaceSubmissionFormatters);
|
|
181
|
+
}
|
|
182
|
+
//# sourceMappingURL=payment-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-service.js","sourceRoot":"","sources":["../../src/apps/payment-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { paymentService } from '@oneblink/sdk-core'\nimport OneBlinkAppsError from './services/errors/oneBlinkAppsError'\nimport { generatePaymentConfiguration } from './services/api/payment'\nimport utilsService from './services/utils'\nimport { SubmissionEventTypes, SubmissionTypes } from '@oneblink/types'\nimport { FormSubmission, FormSubmissionResult } from './types/submissions'\nimport {\n HandlePaymentResult,\n PaymentProvider,\n PaymentReceiptItem,\n} from './types/payments'\nimport BPOINTPaymentProvider from './services/payment-providers/BPOINTPaymentProvider'\nimport CPPayPaymentProvider from './services/payment-providers/CPPayPaymentProvider'\nimport NSWGovPayPaymentProvider from './services/payment-providers/NSWGovPayPaymentProvider'\nimport WestpacQuickStreamPaymentProvider, * as westpacQuickStream from './services/payment-providers/WestpacQuickStreamPaymentProvider'\nimport { replaceSubmissionFormatters } from './localisation-service'\nimport {\n getSchedulingBooking,\n removeSchedulingBooking,\n} from './services/schedulingHandlers'\n\nconst KEY = 'PAYMENT_SUBMISSION_RESULT'\n\nexport { HandlePaymentResult, PaymentReceiptItem, westpacQuickStream }\n\nfunction getPaymentProvider(\n formSubmissionResult: FormSubmissionResult,\n paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent,\n): PaymentProvider<SubmissionEventTypes.FormPaymentEvent> {\n switch (paymentSubmissionEvent.type) {\n case 'BPOINT': {\n return new BPOINTPaymentProvider(\n paymentSubmissionEvent,\n formSubmissionResult,\n )\n }\n case 'CP_PAY': {\n return new CPPayPaymentProvider(\n paymentSubmissionEvent,\n formSubmissionResult,\n )\n }\n case 'NSW_GOV_PAY': {\n return new NSWGovPayPaymentProvider(\n paymentSubmissionEvent,\n formSubmissionResult,\n )\n }\n case 'WESTPAC_QUICK_STREAM': {\n return new WestpacQuickStreamPaymentProvider(\n paymentSubmissionEvent,\n formSubmissionResult,\n )\n }\n }\n}\n\n/**\n * Pass in query string parameters after a redirect back to your app after a\n * payment is processed. This function will handle all payment submission events\n * supported by OneBlink. Will return a Transaction and the submission result\n * that was returned from `handlePaymentSubmissionEvent()` before redirecting to\n * `payment.hostedFormUrl`.\n *\n * #### Example\n *\n * ```js\n * import queryString from 'query-string'\n *\n * const query = queryString.parse(window.location.search)\n * const { transaction, submissionResult } =\n * await paymentService.handlePaymentQuerystring(query)\n * ```\n *\n * @param query\n * @returns\n */\nexport async function handlePaymentQuerystring(\n query: Record<string, unknown>,\n): Promise<HandlePaymentResult> {\n const submissionResult =\n await utilsService.getLocalForageItem<FormSubmissionResult | null>(KEY)\n // If the current transaction does not match the submission\n // we will display message to user indicating\n // they are looking for the wrong transaction receipt.\n if (!submissionResult) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to view a receipt for an unknown payment.',\n )\n }\n if (!submissionResult.payment || !submissionResult.payment.submissionEvent) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to view a receipt for a misconfigured payment.',\n )\n }\n const paymentProvider = getPaymentProvider(\n submissionResult,\n submissionResult.payment.submissionEvent,\n )\n if (!paymentProvider) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to view a receipt for an unsupported payment.',\n )\n }\n\n const verifiedPaymentTransaction =\n await paymentProvider.verifyPaymentTransaction(query)\n\n const schedulingBooking = await getSchedulingBooking(\n verifiedPaymentTransaction.submissionResult.submissionId,\n )\n if (schedulingBooking && verifiedPaymentTransaction.transaction.isSuccess) {\n await removeSchedulingBooking(schedulingBooking.submissionId)\n }\n\n return {\n ...verifiedPaymentTransaction,\n schedulingBooking,\n }\n}\n\nexport function checkForPaymentSubmissionEvent(formSubmission: FormSubmission):\n | {\n paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent\n amount: number\n }\n | undefined {\n const result = paymentService.checkForPaymentEvent(\n formSubmission.definition,\n formSubmission.submission,\n )\n if (result) {\n console.log('Form has a payment submission event with amount', result)\n }\n return result\n}\n\n/**\n * Handle a submission result with a payment submission event. Will throw an\n * error if a transaction has already been made using this submission result.\n * Will return `undefined` if the submission does not have an amount. Will\n * return the submission result passed in with a `payment` property if the\n * submission requires processing.\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 * amount: 1.50,\n * }\n * definition: OneBlinkForm,\n * payment: null,\n * }\n * const paymentSubmissionEvent = {\n * type: 'CP_PAY',\n * configuration: {\n * elementId: '12663efc-4c6a-4e72-8505-559edfe3e92e',\n * gatewayId: '6658c5c4-e0db-483b-8af7-6a6464fe772c',\n * },\n * }\n * const paymentReceiptUrl = `${window.location.origin}/payment-receipt`\n * const paymentSubmissionResult = await paymentService.handlePaymentSubmissionEvent({\n * formSubmissionResult,\n * paymentSubmissionEvent,\n * paymentReceiptUrl,\n * })\n * if (paymentSubmissionResult) {\n * window.location.href = paymentSubmissionResult.payment.hostedFormUrl\n * }\n * ```\n *\n * @param options\n * @returns\n */\nexport async function handlePaymentSubmissionEvent({\n amount,\n formSubmissionResult,\n paymentSubmissionEvent,\n paymentReceiptUrl,\n paymentFormUrl,\n}: {\n amount: number\n formSubmissionResult: FormSubmissionResult\n paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent\n paymentReceiptUrl: string\n paymentFormUrl: string | undefined\n}): Promise<FormSubmissionResult['payment']> {\n const paymentProvider = getPaymentProvider(\n formSubmissionResult,\n paymentSubmissionEvent,\n )\n if (!paymentProvider) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to make a payment using an unsupported payment method.',\n )\n }\n\n const paymentConfiguration = await generatePaymentConfiguration(\n paymentProvider,\n {\n amount,\n redirectUrl: paymentReceiptUrl,\n submissionId: formSubmissionResult.submissionId,\n paymentFormUrl,\n },\n )\n\n const payment = {\n submissionEvent: paymentSubmissionEvent,\n paymentReceiptUrl,\n hostedFormUrl: paymentConfiguration.hostedFormUrl,\n paymentFormUrl,\n amount,\n }\n console.log('Created Payment configuration to start transaction', payment)\n\n await utilsService.setLocalForageItem(KEY, {\n ...formSubmissionResult,\n scheduling: null,\n payment,\n })\n\n return payment\n}\n\nexport async function getFormSubmissionResultPayment(): Promise<{\n formSubmissionResult: FormSubmissionResult\n paymentSubmissionEvent: SubmissionEventTypes.FormPaymentEvent\n}> {\n const formSubmissionResult =\n await utilsService.getLocalForageItem<FormSubmissionResult | null>(KEY)\n\n if (!formSubmissionResult) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to complete a transaction for an unknown payment.',\n )\n }\n if (!formSubmissionResult.payment?.submissionEvent) {\n throw new OneBlinkAppsError(\n 'It looks like you are attempting to complete a transaction for a misconfigured payment.',\n )\n }\n\n return {\n formSubmissionResult,\n paymentSubmissionEvent: formSubmissionResult.payment?.submissionEvent,\n }\n}\n\n/**\n * Retrieve an array of detail items from a form submission payment.\n *\n * #### Example\n *\n * ```js\n * const detailItems =\n * paymentService.getDisplayDetailsFromFormSubmissionPayment(\n * formSubmissionPayment,\n * )\n * ```\n *\n * @param formSubmissionPayment\n * @returns\n */\nexport function getDisplayDetailsFromFormSubmissionPayment(\n formSubmissionPayment: SubmissionTypes.FormSubmissionPayment,\n) {\n return paymentService.getDisplayDetailsFromFormSubmissionPayment(\n formSubmissionPayment,\n replaceSubmissionFormatters,\n )\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { getPrefillFormData } from './services/job-prefill';
|
|
2
|
+
/**
|
|
3
|
+
* Remove prefill data form the local store.
|
|
4
|
+
*
|
|
5
|
+
* ```js
|
|
6
|
+
* const prefillFormDataId = '24faee0a-dca1-4c88-9100-9da2aae8e0ac'
|
|
7
|
+
* await prefillService.removePrefillFormData(prefillFormDataId)
|
|
8
|
+
* ```
|
|
9
|
+
*
|
|
10
|
+
* @param prefillFormDataId
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
export declare function removePrefillFormData(prefillFormDataId: string): Promise<void>;
|
|
14
|
+
export { getPrefillFormData };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import utilsService from './services/utils';
|
|
2
|
+
import { getPrefillKey, getPrefillFormData } from './services/job-prefill';
|
|
3
|
+
/**
|
|
4
|
+
* Remove prefill data form the local store.
|
|
5
|
+
*
|
|
6
|
+
* ```js
|
|
7
|
+
* const prefillFormDataId = '24faee0a-dca1-4c88-9100-9da2aae8e0ac'
|
|
8
|
+
* await prefillService.removePrefillFormData(prefillFormDataId)
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* @param prefillFormDataId
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
export async function removePrefillFormData(prefillFormDataId) {
|
|
15
|
+
const key = getPrefillKey(prefillFormDataId);
|
|
16
|
+
return utilsService.removeLocalForageItem(key);
|
|
17
|
+
}
|
|
18
|
+
export { getPrefillFormData };
|
|
19
|
+
//# sourceMappingURL=prefill-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prefill-service.js","sourceRoot":"","sources":["../../src/apps/prefill-service.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,iBAAyB;IAEzB,MAAM,GAAG,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAA;IAC5C,OAAO,YAAY,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;AAChD,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA","sourcesContent":["import utilsService from './services/utils'\nimport { getPrefillKey, getPrefillFormData } from './services/job-prefill'\n\n/**\n * Remove prefill data form the local store.\n *\n * ```js\n * const prefillFormDataId = '24faee0a-dca1-4c88-9100-9da2aae8e0ac'\n * await prefillService.removePrefillFormData(prefillFormDataId)\n * ```\n *\n * @param prefillFormDataId\n * @returns\n */\nexport async function removePrefillFormData(\n prefillFormDataId: string,\n): Promise<void> {\n const key = getPrefillKey(prefillFormDataId)\n return utilsService.removeLocalForageItem(key)\n}\n\nexport { getPrefillFormData }\n"]}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { ScheduledTasksTypes } from '@oneblink/types';
|
|
2
|
+
export interface TaskAvailability {
|
|
3
|
+
task: ScheduledTasksTypes.Task;
|
|
4
|
+
completedTask?: ScheduledTasksTypes.CompletedTask;
|
|
5
|
+
daysAvailable: number;
|
|
6
|
+
}
|
|
7
|
+
export interface TaskResponse extends TaskAvailability {
|
|
8
|
+
actions: ScheduledTasksTypes.TaskAction[];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Obtain all of the related Tasks for a specific Forms App
|
|
12
|
+
*
|
|
13
|
+
* #### Example
|
|
14
|
+
*
|
|
15
|
+
* ```js
|
|
16
|
+
* const formsAppId = 1
|
|
17
|
+
* const date = '2023-12-01'
|
|
18
|
+
* const tasks = await getTasksForFormsApp({ formsAppId, date })
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @param formsAppId
|
|
22
|
+
* @param abortSignal
|
|
23
|
+
* @returns
|
|
24
|
+
*/
|
|
25
|
+
export declare function getTasksForFormsApp({ formsAppId, date, abortSignal, }: {
|
|
26
|
+
formsAppId: number;
|
|
27
|
+
date: string;
|
|
28
|
+
abortSignal?: AbortSignal;
|
|
29
|
+
}): Promise<{
|
|
30
|
+
taskResponses: TaskResponse[];
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Obtain all of the tasks related to a Task Group Instances in a specific Forms
|
|
34
|
+
* App
|
|
35
|
+
*
|
|
36
|
+
* #### Example
|
|
37
|
+
*
|
|
38
|
+
* ```js
|
|
39
|
+
* const formsAppId = 1
|
|
40
|
+
* const taskGroupInstanceId = 'abc123'
|
|
41
|
+
* const date = '2023-12-01'
|
|
42
|
+
* const tasks = await getTaskGroupInstanceTasks({
|
|
43
|
+
* formsAppId,
|
|
44
|
+
* taskGroupInstanceId,
|
|
45
|
+
* date,
|
|
46
|
+
* })
|
|
47
|
+
* ```
|
|
48
|
+
*
|
|
49
|
+
* @param formsAppId
|
|
50
|
+
* @param taskGroupInstanceId
|
|
51
|
+
* @param abortSignal
|
|
52
|
+
* @returns
|
|
53
|
+
*/
|
|
54
|
+
export declare function getTaskGroupInstanceTasks({ taskGroupInstanceId, date, formsAppId, abortSignal, }: {
|
|
55
|
+
taskGroupInstanceId: string;
|
|
56
|
+
date: string;
|
|
57
|
+
formsAppId: number;
|
|
58
|
+
abortSignal?: AbortSignal;
|
|
59
|
+
}): Promise<{
|
|
60
|
+
taskResponses: TaskResponse[];
|
|
61
|
+
taskGroup: ScheduledTasksTypes.TaskGroup;
|
|
62
|
+
taskGroupInstance: ScheduledTasksTypes.TaskGroupInstance;
|
|
63
|
+
}>;
|
|
64
|
+
/**
|
|
65
|
+
* Obtain all of the Task Group instances for a specific Forms App
|
|
66
|
+
*
|
|
67
|
+
* #### Example
|
|
68
|
+
*
|
|
69
|
+
* ```js
|
|
70
|
+
* const formsAppId = 1
|
|
71
|
+
* const taskGroupInstances = await getTaskGroupInstances(formsAppId)
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @param formsAppId
|
|
75
|
+
* @param abortSignal
|
|
76
|
+
* @returns
|
|
77
|
+
*/
|
|
78
|
+
export declare function getTaskGroupInstances(formsAppId: number, abortSignal?: AbortSignal): Promise<{
|
|
79
|
+
taskGroupInstances: Array<ScheduledTasksTypes.TaskGroupInstance & {
|
|
80
|
+
taskAvailabilities: TaskAvailability[];
|
|
81
|
+
taskGroup: ScheduledTasksTypes.TaskGroup;
|
|
82
|
+
}>;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Complete the related Task for a specific Forms App
|
|
86
|
+
*
|
|
87
|
+
* #### Example
|
|
88
|
+
*
|
|
89
|
+
* ```js
|
|
90
|
+
* const formsAppId = 1
|
|
91
|
+
* const taskId = 2
|
|
92
|
+
* const completedTask = await scheduledTasksService.completeTask({
|
|
93
|
+
* formsAppId,
|
|
94
|
+
* taskId,
|
|
95
|
+
* })
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* @param options
|
|
99
|
+
* @returns
|
|
100
|
+
*/
|
|
101
|
+
export declare function completeTask({ formsAppId, taskId, taskActionId, taskGroupInstanceId, abortSignal, }: {
|
|
102
|
+
formsAppId: number;
|
|
103
|
+
taskId: string;
|
|
104
|
+
taskActionId: string;
|
|
105
|
+
taskGroupInstanceId: string | undefined;
|
|
106
|
+
abortSignal?: AbortSignal;
|
|
107
|
+
}): Promise<ScheduledTasksTypes.CompletedTask>;
|
|
108
|
+
/**
|
|
109
|
+
* Delete the completed task record related to a Task for a specific Forms App
|
|
110
|
+
*
|
|
111
|
+
* #### Example
|
|
112
|
+
*
|
|
113
|
+
* ```js
|
|
114
|
+
* const formsAppId = 1
|
|
115
|
+
* const taskId = 2
|
|
116
|
+
* const completedTask = await scheduledTasksService.completeTask({
|
|
117
|
+
* formsAppId,
|
|
118
|
+
* taskId,
|
|
119
|
+
* })
|
|
120
|
+
* await deleteCompletedTask(completedTask.id)
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* @param id
|
|
124
|
+
* @param abortSignal
|
|
125
|
+
* @returns
|
|
126
|
+
*/
|
|
127
|
+
export declare function deleteCompletedTask(id: string, abortSignal?: AbortSignal): Promise<void>;
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import tenants from './tenants';
|
|
2
|
+
import Sentry from './Sentry';
|
|
3
|
+
import { deleteRequest, getRequest, postRequest, } from './services/fetch';
|
|
4
|
+
import { isOffline } from './offline-service';
|
|
5
|
+
import OneBlinkAppsError from './services/errors/oneBlinkAppsError';
|
|
6
|
+
async function getTasks(url, abortSignal) {
|
|
7
|
+
try {
|
|
8
|
+
return await getRequest(url, abortSignal);
|
|
9
|
+
}
|
|
10
|
+
catch (err) {
|
|
11
|
+
Sentry.captureException(err);
|
|
12
|
+
const error = err;
|
|
13
|
+
if (isOffline()) {
|
|
14
|
+
throw new OneBlinkAppsError('You are currently offline and do not have a local version of these scheduled tasks, please connect to the internet and try again', {
|
|
15
|
+
originalError: error,
|
|
16
|
+
isOffline: true,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
switch (error.status) {
|
|
20
|
+
case 400:
|
|
21
|
+
case 404: {
|
|
22
|
+
throw new OneBlinkAppsError('We could not find the forms app you are looking for. Please contact support if the problem persists.', {
|
|
23
|
+
originalError: error,
|
|
24
|
+
title: 'Unknown Forms App',
|
|
25
|
+
httpStatusCode: error.status,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
default: {
|
|
29
|
+
throw new OneBlinkAppsError('An unknown error has occurred. Please contact support if the problem persists.', {
|
|
30
|
+
originalError: error,
|
|
31
|
+
httpStatusCode: error.status,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Obtain all of the related Tasks for a specific Forms App
|
|
39
|
+
*
|
|
40
|
+
* #### Example
|
|
41
|
+
*
|
|
42
|
+
* ```js
|
|
43
|
+
* const formsAppId = 1
|
|
44
|
+
* const date = '2023-12-01'
|
|
45
|
+
* const tasks = await getTasksForFormsApp({ formsAppId, date })
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @param formsAppId
|
|
49
|
+
* @param abortSignal
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
export async function getTasksForFormsApp({ formsAppId, date, abortSignal, }) {
|
|
53
|
+
const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/scheduled-tasks?date=${date}`;
|
|
54
|
+
return await getTasks(url, abortSignal);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Obtain all of the tasks related to a Task Group Instances in a specific Forms
|
|
58
|
+
* App
|
|
59
|
+
*
|
|
60
|
+
* #### Example
|
|
61
|
+
*
|
|
62
|
+
* ```js
|
|
63
|
+
* const formsAppId = 1
|
|
64
|
+
* const taskGroupInstanceId = 'abc123'
|
|
65
|
+
* const date = '2023-12-01'
|
|
66
|
+
* const tasks = await getTaskGroupInstanceTasks({
|
|
67
|
+
* formsAppId,
|
|
68
|
+
* taskGroupInstanceId,
|
|
69
|
+
* date,
|
|
70
|
+
* })
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @param formsAppId
|
|
74
|
+
* @param taskGroupInstanceId
|
|
75
|
+
* @param abortSignal
|
|
76
|
+
* @returns
|
|
77
|
+
*/
|
|
78
|
+
export async function getTaskGroupInstanceTasks({ taskGroupInstanceId, date, formsAppId, abortSignal, }) {
|
|
79
|
+
const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/scheduled-task-group-instances/${taskGroupInstanceId}?date=${date}`;
|
|
80
|
+
return await getTasks(url, abortSignal);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Obtain all of the Task Group instances for a specific Forms App
|
|
84
|
+
*
|
|
85
|
+
* #### Example
|
|
86
|
+
*
|
|
87
|
+
* ```js
|
|
88
|
+
* const formsAppId = 1
|
|
89
|
+
* const taskGroupInstances = await getTaskGroupInstances(formsAppId)
|
|
90
|
+
* ```
|
|
91
|
+
*
|
|
92
|
+
* @param formsAppId
|
|
93
|
+
* @param abortSignal
|
|
94
|
+
* @returns
|
|
95
|
+
*/
|
|
96
|
+
export async function getTaskGroupInstances(formsAppId, abortSignal) {
|
|
97
|
+
const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/scheduled-task-group-instances`;
|
|
98
|
+
try {
|
|
99
|
+
return await getRequest(url, abortSignal);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
Sentry.captureException(err);
|
|
103
|
+
const error = err;
|
|
104
|
+
if (isOffline()) {
|
|
105
|
+
throw new OneBlinkAppsError('You are currently offline and do not have a local version of these scheduled task groups, please connect to the internet and try again', {
|
|
106
|
+
originalError: error,
|
|
107
|
+
isOffline: true,
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
switch (error.status) {
|
|
111
|
+
case 400:
|
|
112
|
+
case 404: {
|
|
113
|
+
throw new OneBlinkAppsError('We could not find the forms app you are looking for. Please contact support if the problem persists.', {
|
|
114
|
+
originalError: error,
|
|
115
|
+
title: 'Unknown Forms App',
|
|
116
|
+
httpStatusCode: error.status,
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
default: {
|
|
120
|
+
throw new OneBlinkAppsError('An unknown error has occurred. Please contact support if the problem persists.', {
|
|
121
|
+
originalError: error,
|
|
122
|
+
httpStatusCode: error.status,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Complete the related Task for a specific Forms App
|
|
130
|
+
*
|
|
131
|
+
* #### Example
|
|
132
|
+
*
|
|
133
|
+
* ```js
|
|
134
|
+
* const formsAppId = 1
|
|
135
|
+
* const taskId = 2
|
|
136
|
+
* const completedTask = await scheduledTasksService.completeTask({
|
|
137
|
+
* formsAppId,
|
|
138
|
+
* taskId,
|
|
139
|
+
* })
|
|
140
|
+
* ```
|
|
141
|
+
*
|
|
142
|
+
* @param options
|
|
143
|
+
* @returns
|
|
144
|
+
*/
|
|
145
|
+
export async function completeTask({ formsAppId, taskId, taskActionId, taskGroupInstanceId, abortSignal, }) {
|
|
146
|
+
const url = `${tenants.current.apiOrigin}/completed-tasks`;
|
|
147
|
+
try {
|
|
148
|
+
return await postRequest(url, { formsAppId, taskId, taskActionId, taskGroupInstanceId }, abortSignal);
|
|
149
|
+
}
|
|
150
|
+
catch (err) {
|
|
151
|
+
Sentry.captureException(err);
|
|
152
|
+
const error = err;
|
|
153
|
+
if (isOffline()) {
|
|
154
|
+
throw new OneBlinkAppsError('You are currently offline, please connect to the internet and try again', {
|
|
155
|
+
originalError: error,
|
|
156
|
+
isOffline: true,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
switch (error.status) {
|
|
160
|
+
case 403: {
|
|
161
|
+
throw new OneBlinkAppsError('You do not have access to complete this task. Please contact your administrator to gain the correct level of access.', {
|
|
162
|
+
originalError: error,
|
|
163
|
+
requiresAccessRequest: true,
|
|
164
|
+
httpStatusCode: error.status,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
case 400:
|
|
168
|
+
case 404: {
|
|
169
|
+
throw new OneBlinkAppsError(error.message, {
|
|
170
|
+
title: 'Invalid Request',
|
|
171
|
+
httpStatusCode: error.status,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
default: {
|
|
175
|
+
throw new OneBlinkAppsError('An unknown error has occurred. Please contact support if the problem persists.', {
|
|
176
|
+
originalError: error,
|
|
177
|
+
httpStatusCode: error.status,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Delete the completed task record related to a Task for a specific Forms App
|
|
185
|
+
*
|
|
186
|
+
* #### Example
|
|
187
|
+
*
|
|
188
|
+
* ```js
|
|
189
|
+
* const formsAppId = 1
|
|
190
|
+
* const taskId = 2
|
|
191
|
+
* const completedTask = await scheduledTasksService.completeTask({
|
|
192
|
+
* formsAppId,
|
|
193
|
+
* taskId,
|
|
194
|
+
* })
|
|
195
|
+
* await deleteCompletedTask(completedTask.id)
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* @param id
|
|
199
|
+
* @param abortSignal
|
|
200
|
+
* @returns
|
|
201
|
+
*/
|
|
202
|
+
export async function deleteCompletedTask(id, abortSignal) {
|
|
203
|
+
const url = `${tenants.current.apiOrigin}/completed-tasks/${id}`;
|
|
204
|
+
try {
|
|
205
|
+
await deleteRequest(url, abortSignal);
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
Sentry.captureException(err);
|
|
209
|
+
const error = err;
|
|
210
|
+
if (isOffline()) {
|
|
211
|
+
throw new OneBlinkAppsError('You are currently offline, please connect to the internet and try again', {
|
|
212
|
+
originalError: error,
|
|
213
|
+
isOffline: true,
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
switch (error.status) {
|
|
217
|
+
case 403: {
|
|
218
|
+
throw new OneBlinkAppsError('You do not have access to delete completed tasks. Please contact your administrator to gain the correct level of access.', {
|
|
219
|
+
originalError: error,
|
|
220
|
+
requiresAccessRequest: true,
|
|
221
|
+
httpStatusCode: error.status,
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
case 400:
|
|
225
|
+
case 404: {
|
|
226
|
+
throw new OneBlinkAppsError(error.message, {
|
|
227
|
+
title: 'Invalid Request',
|
|
228
|
+
httpStatusCode: error.status,
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
default: {
|
|
232
|
+
throw new OneBlinkAppsError('An unknown error has occurred. Please contact support if the problem persists.', {
|
|
233
|
+
originalError: error,
|
|
234
|
+
httpStatusCode: error.status,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=scheduled-tasks-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled-tasks-service.js","sourceRoot":"","sources":["../../src/apps/scheduled-tasks-service.ts"],"names":[],"mappings":"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","sourcesContent":["import { ScheduledTasksTypes } from '@oneblink/types'\nimport tenants from './tenants'\nimport Sentry from './Sentry'\nimport {\n HTTPError,\n deleteRequest,\n getRequest,\n postRequest,\n} from './services/fetch'\nimport { isOffline } from './offline-service'\nimport OneBlinkAppsError from './services/errors/oneBlinkAppsError'\n\nexport interface TaskAvailability {\n task: ScheduledTasksTypes.Task\n completedTask?: ScheduledTasksTypes.CompletedTask\n daysAvailable: number\n}\n\nexport interface TaskResponse extends TaskAvailability {\n actions: ScheduledTasksTypes.TaskAction[]\n}\n\nasync function getTasks<\n T extends {\n taskResponses: TaskResponse[]\n },\n>(url: string, abortSignal?: AbortSignal) {\n try {\n return await getRequest<T>(url, abortSignal)\n } catch (err) {\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline and do not have a local version of these scheduled tasks, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 400:\n case 404: {\n throw new OneBlinkAppsError(\n 'We could not find the forms app you are looking for. Please contact support if the problem persists.',\n {\n originalError: error,\n title: 'Unknown Forms App',\n httpStatusCode: error.status,\n },\n )\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Obtain all of the related Tasks for a specific Forms App\n *\n * #### Example\n *\n * ```js\n * const formsAppId = 1\n * const date = '2023-12-01'\n * const tasks = await getTasksForFormsApp({ formsAppId, date })\n * ```\n *\n * @param formsAppId\n * @param abortSignal\n * @returns\n */\nexport async function getTasksForFormsApp({\n formsAppId,\n date,\n abortSignal,\n}: {\n formsAppId: number\n date: string\n abortSignal?: AbortSignal\n}): Promise<{\n taskResponses: TaskResponse[]\n}> {\n const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/scheduled-tasks?date=${date}`\n return await getTasks(url, abortSignal)\n}\n\n/**\n * Obtain all of the tasks related to a Task Group Instances in a specific Forms\n * App\n *\n * #### Example\n *\n * ```js\n * const formsAppId = 1\n * const taskGroupInstanceId = 'abc123'\n * const date = '2023-12-01'\n * const tasks = await getTaskGroupInstanceTasks({\n * formsAppId,\n * taskGroupInstanceId,\n * date,\n * })\n * ```\n *\n * @param formsAppId\n * @param taskGroupInstanceId\n * @param abortSignal\n * @returns\n */\nexport async function getTaskGroupInstanceTasks({\n taskGroupInstanceId,\n date,\n formsAppId,\n abortSignal,\n}: {\n taskGroupInstanceId: string\n date: string\n formsAppId: number\n abortSignal?: AbortSignal\n}) {\n const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/scheduled-task-group-instances/${taskGroupInstanceId}?date=${date}`\n return await getTasks<{\n taskResponses: TaskResponse[]\n taskGroup: ScheduledTasksTypes.TaskGroup\n taskGroupInstance: ScheduledTasksTypes.TaskGroupInstance\n }>(url, abortSignal)\n}\n\n/**\n * Obtain all of the Task Group instances for a specific Forms App\n *\n * #### Example\n *\n * ```js\n * const formsAppId = 1\n * const taskGroupInstances = await getTaskGroupInstances(formsAppId)\n * ```\n *\n * @param formsAppId\n * @param abortSignal\n * @returns\n */\nexport async function getTaskGroupInstances(\n formsAppId: number,\n abortSignal?: AbortSignal,\n) {\n const url = `${tenants.current.apiOrigin}/forms-apps/${formsAppId}/scheduled-task-group-instances`\n try {\n return await getRequest<{\n taskGroupInstances: Array<\n ScheduledTasksTypes.TaskGroupInstance & {\n taskAvailabilities: TaskAvailability[]\n taskGroup: ScheduledTasksTypes.TaskGroup\n }\n >\n }>(url, abortSignal)\n } catch (err) {\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline and do not have a local version of these scheduled task groups, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 400:\n case 404: {\n throw new OneBlinkAppsError(\n 'We could not find the forms app you are looking for. Please contact support if the problem persists.',\n {\n originalError: error,\n title: 'Unknown Forms App',\n httpStatusCode: error.status,\n },\n )\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Complete the related Task for a specific Forms App\n *\n * #### Example\n *\n * ```js\n * const formsAppId = 1\n * const taskId = 2\n * const completedTask = await scheduledTasksService.completeTask({\n * formsAppId,\n * taskId,\n * })\n * ```\n *\n * @param options\n * @returns\n */\n\nexport async function completeTask({\n formsAppId,\n taskId,\n taskActionId,\n taskGroupInstanceId,\n abortSignal,\n}: {\n formsAppId: number\n taskId: string\n taskActionId: string\n taskGroupInstanceId: string | undefined\n abortSignal?: AbortSignal\n}): Promise<ScheduledTasksTypes.CompletedTask> {\n const url = `${tenants.current.apiOrigin}/completed-tasks`\n try {\n return await postRequest<ScheduledTasksTypes.CompletedTask>(\n url,\n { formsAppId, taskId, taskActionId, taskGroupInstanceId },\n abortSignal,\n )\n } catch (err) {\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to complete this task. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n\n/**\n * Delete the completed task record related to a Task for a specific Forms App\n *\n * #### Example\n *\n * ```js\n * const formsAppId = 1\n * const taskId = 2\n * const completedTask = await scheduledTasksService.completeTask({\n * formsAppId,\n * taskId,\n * })\n * await deleteCompletedTask(completedTask.id)\n * ```\n *\n * @param id\n * @param abortSignal\n * @returns\n */\n\nexport async function deleteCompletedTask(\n id: string,\n abortSignal?: AbortSignal,\n): Promise<void> {\n const url = `${tenants.current.apiOrigin}/completed-tasks/${id}`\n try {\n await deleteRequest(url, abortSignal)\n } catch (err) {\n Sentry.captureException(err)\n\n const error = err as HTTPError\n if (isOffline()) {\n throw new OneBlinkAppsError(\n 'You are currently offline, please connect to the internet and try again',\n {\n originalError: error,\n isOffline: true,\n },\n )\n }\n switch (error.status) {\n case 403: {\n throw new OneBlinkAppsError(\n 'You do not have access to delete completed tasks. Please contact your administrator to gain the correct level of access.',\n {\n originalError: error,\n requiresAccessRequest: true,\n httpStatusCode: error.status,\n },\n )\n }\n case 400:\n case 404: {\n throw new OneBlinkAppsError(error.message, {\n title: 'Invalid Request',\n httpStatusCode: error.status,\n })\n }\n default: {\n throw new OneBlinkAppsError(\n 'An unknown error has occurred. Please contact support if the problem persists.',\n {\n originalError: error,\n httpStatusCode: error.status,\n },\n )\n }\n }\n }\n}\n"]}
|