-
Notifications
You must be signed in to change notification settings - Fork 36
/
index.js
129 lines (111 loc) · 3.95 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/*
Copyright 2019 Square Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
import { NativeModules } from 'react-native'; // eslint-disable-line import/no-unresolved
import ValidateCheckoutParameters from './src/utils';
const {
RNReaderSDKAuthorization,
RNReaderSDKCheckout,
RNReaderSDKReaderSettings,
RNReaderSDKStoreCustomerCard,
} = NativeModules;
export async function authorizeAsync(authCode) {
try {
return await RNReaderSDKAuthorization.authorize(authCode);
} catch (ex) {
throw createReaderSDKError(ex);
}
}
export async function deauthorizeAsync() {
try {
await RNReaderSDKAuthorization.deauthorize();
} catch (ex) {
throw createReaderSDKError(ex);
}
}
export async function isAuthorizedAsync() {
try {
return await RNReaderSDKAuthorization.isAuthorized();
} catch (ex) {
throw createReaderSDKError(ex);
}
}
export async function isAuthorizationInProgressAsync() {
try {
return await RNReaderSDKAuthorization.isAuthorizationInProgress();
} catch (ex) {
throw createReaderSDKError(ex);
}
}
export async function canDeauthorizeAsync() {
try {
return await RNReaderSDKAuthorization.canDeauthorize();
} catch (ex) {
throw createReaderSDKError(ex);
}
}
export async function getAuthorizedLocationAsync() {
try {
return await RNReaderSDKAuthorization.authorizedLocation();
} catch (ex) {
throw createReaderSDKError(ex);
}
}
export async function startCheckoutAsync(checkoutParams) {
try {
ValidateCheckoutParameters(checkoutParams);
return await RNReaderSDKCheckout.startCheckout(checkoutParams);
} catch (ex) {
throw createReaderSDKError(ex);
}
}
export async function startReaderSettingsAsync() {
try {
await RNReaderSDKReaderSettings.startReaderSettings();
} catch (ex) {
throw createReaderSDKError(ex);
}
}
export async function startStoreCardAsync(customerId) {
try {
return await RNReaderSDKStoreCustomerCard.startStoreCard(customerId);
} catch (ex) {
throw createReaderSDKError(ex);
}
}
// error codes are defined below, both iOS and Android *MUST* return same error for these errors:
// Usage error
export const UsageError = 'USAGE_ERROR';
// Expected errors:
// Search KEEP_IN_SYNC_AUTHORIZE_ERROR to update all places
export const AuthorizeErrorNoNetwork = 'AUTHORIZE_NO_NETWORK';
// Search KEEP_IN_SYNC_CHECKOUT_ERROR to update all places
export const CheckoutErrorCanceled = 'CHECKOUT_CANCELED';
export const CheckoutErrorSdkNotAuthorized = 'CHECKOUT_SDK_NOT_AUTHORIZED';
// Search KEEP_IN_SYNC_READER_SETTINGS_ERROR to update all places
export const ReaderSettingsErrorSdkNotAuthorized = 'READER_SETTINGS_SDK_NOT_AUTHORIZED';
// Search KEEP_IN_SYNC_STORE_CUSTOMER_CARD_ERROR to update all places
export const StoreCustomerCardCancelled = 'STORE_CUSTOMER_CARD_CANCELED';
export const StoreCustomerCardInvalidCustomerId = 'STORE_CUSTOMER_CARD_INVALID_CUSTOMER_ID';
export const StoreCustomerCardSdkNotAuthorized = 'STORE_CUSTOMER_CARD_SDK_NOT_AUTHORIZED';
export const StoreCustomerCardNoNetwork = 'STORE_CUSTOMER_CARD_NO_NETWORK';
function createReaderSDKError(ex) {
try {
const errorDetails = JSON.parse(ex.message);
ex.message = errorDetails.message; // eslint-disable-line no-param-reassign
ex.debugCode = errorDetails.debugCode; // eslint-disable-line no-param-reassign
ex.debugMessage = errorDetails.debugMessage; // eslint-disable-line no-param-reassign
} catch (parseEx) {
ex.parseEx = parseEx; // eslint-disable-line no-param-reassign
}
return ex;
}