tf-checkout-react-native 1.0.12 → 1.0.15
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/README.md +550 -313
- package/android/build.gradle +3 -3
- package/lib/api/ApiClient.d.ts +13 -21
- package/lib/api/ApiClient.js +124 -51
- package/lib/api/ApiClient.js.map +1 -1
- package/lib/api/types.d.ts +23 -11
- package/lib/components/login/Login.d.ts +1 -1
- package/lib/components/login/Login.js +22 -10
- package/lib/components/login/Login.js.map +1 -1
- package/lib/components/login/LoginView.d.ts +1 -1
- package/lib/components/login/LoginView.js +16 -13
- package/lib/components/login/LoginView.js.map +1 -1
- package/lib/components/login/styles.d.ts +2 -1
- package/lib/components/login/styles.js +2 -1
- package/lib/components/login/styles.js.map +1 -1
- package/lib/components/login/types.d.ts +18 -10
- package/lib/components/waitingList/WaitingList.d.ts +1 -1
- package/lib/components/waitingList/WaitingList.js +20 -3
- package/lib/components/waitingList/WaitingList.js.map +1 -1
- package/lib/components/waitingList/WaitingListView.js +19 -7
- package/lib/components/waitingList/WaitingListView.js.map +1 -1
- package/lib/components/waitingList/types.d.ts +10 -0
- package/lib/containers/billingInfo/Billing.d.ts +2 -1
- package/lib/containers/billingInfo/Billing.js +112 -68
- package/lib/containers/billingInfo/Billing.js.map +1 -1
- package/lib/containers/billingInfo/types.d.ts +40 -91
- package/lib/containers/checkout/Checkout.d.ts +1 -1
- package/lib/containers/checkout/Checkout.js +90 -49
- package/lib/containers/checkout/Checkout.js.map +1 -1
- package/lib/containers/checkout/components/styles.js +1 -1
- package/lib/containers/checkout/components/styles.js.map +1 -1
- package/lib/containers/checkout/styles.d.ts +2 -0
- package/lib/containers/checkout/styles.js +3 -1
- package/lib/containers/checkout/styles.js.map +1 -1
- package/lib/containers/checkout/types.d.ts +36 -7
- package/lib/containers/myOrderDetails/MyOrderDetails.js +21 -3
- package/lib/containers/myOrderDetails/MyOrderDetails.js.map +1 -1
- package/lib/containers/myOrderDetails/MyOrderDetailsView.js +10 -7
- package/lib/containers/myOrderDetails/MyOrderDetailsView.js.map +1 -1
- package/lib/containers/myOrderDetails/components/Notification.d.ts +10 -2
- package/lib/containers/myOrderDetails/components/Notification.js +5 -7
- package/lib/containers/myOrderDetails/components/Notification.js.map +1 -1
- package/lib/containers/myOrderDetails/types.d.ts +18 -0
- package/lib/containers/myOrders/MyOrders.js +37 -9
- package/lib/containers/myOrders/MyOrders.js.map +1 -1
- package/lib/containers/myOrders/MyOrdersView.d.ts +1 -1
- package/lib/containers/myOrders/MyOrdersView.js +3 -3
- package/lib/containers/myOrders/MyOrdersView.js.map +1 -1
- package/lib/containers/myOrders/types.d.ts +13 -1
- package/lib/containers/purchaseConfirmation/PurchaseConfirmation.d.ts +1 -1
- package/lib/containers/purchaseConfirmation/PurchaseConfirmation.js +21 -5
- package/lib/containers/purchaseConfirmation/PurchaseConfirmation.js.map +1 -1
- package/lib/containers/purchaseConfirmation/PurchaseConfirmationView.d.ts +2 -2
- package/lib/containers/purchaseConfirmation/PurchaseConfirmationView.js +4 -3
- package/lib/containers/purchaseConfirmation/PurchaseConfirmationView.js.map +1 -1
- package/lib/containers/purchaseConfirmation/types.d.ts +12 -1
- package/lib/containers/tickets/Tickets.d.ts +1 -1
- package/lib/containers/tickets/Tickets.js +37 -9
- package/lib/containers/tickets/Tickets.js.map +1 -1
- package/lib/containers/tickets/TicketsView.d.ts +1 -1
- package/lib/containers/tickets/TicketsView.js +5 -4
- package/lib/containers/tickets/TicketsView.js.map +1 -1
- package/lib/containers/tickets/components/TicketListItem.js +14 -7
- package/lib/containers/tickets/components/TicketListItem.js.map +1 -1
- package/lib/containers/tickets/components/types.d.ts +6 -0
- package/lib/containers/tickets/types.d.ts +18 -11
- package/lib/helpers/LocalStorage.d.ts +1 -1
- package/lib/helpers/LocalStorage.js +1 -3
- package/lib/helpers/LocalStorage.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/res/colors.d.ts +2 -2
- package/lib/res/colors.js +2 -18
- package/lib/res/colors.js.map +1 -1
- package/lib/types/IError.d.ts +5 -0
- package/lib/types/IError.js +2 -0
- package/lib/types/IError.js.map +1 -0
- package/lib/types/ITicket.d.ts +12 -0
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.js +1 -0
- package/lib/types/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -6,53 +6,58 @@ React Native library for Ticket Fairy checkout.
|
|
|
6
6
|
|
|
7
7
|
Configure [ReactNative environment](https://reactnative.dev/docs/environment-setup) for desired platforms (iOS, Android or both).
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
### React Native
|
|
10
|
+
|
|
11
|
+
- Suggested ReactNative version `0.66.3`
|
|
12
|
+
- Suggested Flipper version `0.66`
|
|
13
|
+
- React version `0.17.1`
|
|
14
|
+
|
|
15
|
+
### Android
|
|
10
16
|
|
|
11
17
|
- Android 5.0 (API level 21) and above
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
- Compile Sdk Version and Target Sdk Version `
|
|
15
|
-
- Build Tools Version `30.0.
|
|
18
|
+
- Gradle plugin version `4.2.2`
|
|
19
|
+
- Gradle version `6.7.1`
|
|
20
|
+
- Compile Sdk Version and Target Sdk Version `30`
|
|
21
|
+
- Build Tools Version `30.0.2`
|
|
22
|
+
- Java version `1.8`
|
|
23
|
+
- Kotlin version `1.5.31`
|
|
16
24
|
|
|
17
25
|
Add the following to your Android Manifest as activity property.
|
|
18
26
|
|
|
19
|
-
```
|
|
20
|
-
android:exported="true"
|
|
21
|
-
```
|
|
22
|
-
|
|
23
27
|
To download the PDFs, add the `WRITE_EXTERNAL_STORAGE` permission to the Android's Manifest file.
|
|
24
28
|
|
|
25
29
|
```xml
|
|
26
30
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
|
27
31
|
```
|
|
28
32
|
|
|
29
|
-
|
|
33
|
+
### iOS
|
|
30
34
|
|
|
31
35
|
- Compatible with apps targeting iOS 11 or above.
|
|
32
|
-
|
|
33
|
-
- Pods version `1.11.2`
|
|
36
|
+
- Pods version `1.10.1`
|
|
34
37
|
- Command Line Tools version `13.0`
|
|
35
38
|
|
|
36
39
|
To download the PDFs, add the following flags to `Info.plist` file:
|
|
37
40
|
|
|
41
|
+
```
|
|
38
42
|
- UIFileSharingEnabled: Application supports iTunes file sharing
|
|
39
43
|
- LSSupportsOpeningDocumentsInPlace: Supports opening documents in place
|
|
44
|
+
```
|
|
40
45
|
|
|
41
46
|
# Installation
|
|
42
47
|
|
|
43
|
-
```
|
|
48
|
+
```sh
|
|
44
49
|
yarn add tf-checkout-react-native
|
|
45
50
|
```
|
|
46
51
|
|
|
47
52
|
or
|
|
48
53
|
|
|
49
|
-
```
|
|
54
|
+
```sh
|
|
50
55
|
npm install tf-checkout-react-native
|
|
51
56
|
```
|
|
52
57
|
|
|
53
58
|
Make sure to install all the required dependencies in your project.
|
|
54
59
|
|
|
55
|
-
|
|
60
|
+
### Required for Android
|
|
56
61
|
|
|
57
62
|
Add below dependency to your `app/build.gradle` file with specified version (in our example we are using `1.4.0`).
|
|
58
63
|
|
|
@@ -64,7 +69,7 @@ Set appropriate style in your styles.xml file.
|
|
|
64
69
|
|
|
65
70
|
```xml
|
|
66
71
|
<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
|
|
67
|
-
|
|
72
|
+
<!-- ... -->
|
|
68
73
|
</style>
|
|
69
74
|
```
|
|
70
75
|
|
|
@@ -82,7 +87,6 @@ Use it in your initial useEffect function:
|
|
|
82
87
|
useEffect(() => {
|
|
83
88
|
setConfig({
|
|
84
89
|
DOMAIN: 'https://yourdomain.mx',
|
|
85
|
-
IS_BILLING_STREET_NAME_REQUIRED: false,
|
|
86
90
|
})
|
|
87
91
|
}, [])
|
|
88
92
|
```
|
|
@@ -100,27 +104,23 @@ useEffect(() => {
|
|
|
100
104
|
ARE_SUB_BRANDS_INCLUDED?: boolean
|
|
101
105
|
}
|
|
102
106
|
```
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
`
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
`TIMEOUT` Set custom timeout for the APIs requests.
|
|
115
|
-
|
|
116
|
-
`ARE_SUB_BRANDS_INCLUDED` If true will include orders from the `BRAND` sub-brands.
|
|
107
|
+
### Props
|
|
108
|
+
| Property | Description |
|
|
109
|
+
| -------- | ----------- |
|
|
110
|
+
| DOMAIN | Specify your domains name example: `https://google.com` this is important to maintain cart session active and prevent it from expiring when user login in the BillingInfo component. |
|
|
111
|
+
| BASE_URL | If our dev team gives you a custom BASE_URL.|
|
|
112
|
+
| CLIENT_ID | Set your CLIENT_ID. |
|
|
113
|
+
| CLIENT_SECRET | Set your CLIENT_SECRET. |
|
|
114
|
+
| BRAND | Set your BRAND so users can only see this brand in their orders. |
|
|
115
|
+
| TIMEOUT | Set custom timeout for the APIs requests. |
|
|
116
|
+
| ARE_SUB_BRANDS_INCLUDED | If true will include orders from the `BRAND` sub-brands. Default `false`. |
|
|
117
117
|
|
|
118
118
|
# Run the example app
|
|
119
119
|
|
|
120
120
|
1. Clone this repo.
|
|
121
121
|
2. In the App.tsx file, update the `EVENT_ID` const with the assigned ID to be able to retrieve data from the server.
|
|
122
|
-
3. cd into the
|
|
123
|
-
4. cd into the
|
|
122
|
+
3. cd into the _root project_ folder and `yarn` or `npm install`.
|
|
123
|
+
4. cd into the _example_ folder and `yarn` or `npm install`.
|
|
124
124
|
- If running on iOS, cd into ios folder and `pod install && cd ..`.
|
|
125
125
|
5. Run `yarn ios` or `npm run ios` to initialize and run in the iPhone simulator.
|
|
126
126
|
6. If running on Android, run `yarn android` or `npm run android` to run it in the Android emulator or connected physical device.
|
|
@@ -129,41 +129,61 @@ useEffect(() => {
|
|
|
129
129
|
|
|
130
130
|
This library exports the following components:
|
|
131
131
|
|
|
132
|
-
|
|
132
|
+
### Login
|
|
133
133
|
|
|
134
134
|
Used to authenticate the user.
|
|
135
135
|
|
|
136
|
-
|
|
136
|
+
### Tickets
|
|
137
137
|
|
|
138
138
|
Will retrieve and show a list of tickets corresponding to `eventId`. It also includes a PromoCode component that validates it and updates the tickets list.
|
|
139
139
|
|
|
140
140
|
User can select what ticket type wants to buy and the quantity of tickets.
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
### Billing information
|
|
143
143
|
|
|
144
144
|
User will need to enter its data into a form to create a Ticket Fairy account. Also, depending on the number of tickets selected, will need to fill the information of each one of them.
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
### Checkout
|
|
147
147
|
|
|
148
148
|
Will show the order details and a card form that the user will need to fill with its card details.
|
|
149
149
|
|
|
150
150
|
TicketFairy doesn't store any card related data, we use [Stripe](https://stripe.com/) as payments solution.
|
|
151
151
|
|
|
152
|
-
|
|
152
|
+
### Purchase confirmation
|
|
153
153
|
|
|
154
154
|
This is shown once the payment is successfully completed, could show components to share the purchase in social media or refer it with friends to get discounts on the purchase.
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
### My Orders
|
|
157
157
|
|
|
158
158
|
Will show the purchased orders for the logged user.
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
### My Order details
|
|
161
161
|
|
|
162
162
|
Will show the details for the selected Order, it also allows the user to download the Ticket PDF.
|
|
163
163
|
|
|
164
|
-
#
|
|
165
|
-
|
|
166
|
-
|
|
164
|
+
# Component styling
|
|
165
|
+
### Button
|
|
166
|
+
```js
|
|
167
|
+
interface IButtonStyles {
|
|
168
|
+
container?: StyleProp<ViewStyle>
|
|
169
|
+
button?: StyleProp<ViewStyle>
|
|
170
|
+
text?: StyleProp<TextStyle>
|
|
171
|
+
}
|
|
172
|
+
```
|
|
173
|
+
### Input
|
|
174
|
+
```js
|
|
175
|
+
interface IInputStyles {
|
|
176
|
+
color?: ColorValue
|
|
177
|
+
container?: StyleProp<ViewStyle>
|
|
178
|
+
input?: StyleProp<TextStyle>
|
|
179
|
+
lineWidth?: number
|
|
180
|
+
activeLineWidth?: number
|
|
181
|
+
baseColor?: ColorValue
|
|
182
|
+
errorColor?: ColorValue
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
# Exported components
|
|
186
|
+
## Login
|
|
167
187
|
|
|
168
188
|
Import the component from the library
|
|
169
189
|
|
|
@@ -175,10 +195,23 @@ Then add it to the render function.
|
|
|
175
195
|
|
|
176
196
|
```js
|
|
177
197
|
<Login
|
|
178
|
-
onLoginSuccessful
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
198
|
+
onLoginSuccessful: (userProfile: IUserProfile, accessToken: string) => void
|
|
199
|
+
onLoginError?: (error: IError) => void
|
|
200
|
+
|
|
201
|
+
onFetchUserProfileError?: (error: IError) => void
|
|
202
|
+
onFetchUserProfileSuccess?: (data: any) => void
|
|
203
|
+
|
|
204
|
+
onFetchAccessTokenError?: (error: IError) => void
|
|
205
|
+
onFetchAccessTokenSuccess?: () => void
|
|
206
|
+
|
|
207
|
+
isLoginDialogVisible: boolean
|
|
208
|
+
showLoginDialog: () => void
|
|
209
|
+
hideLoginDialog: () => void
|
|
210
|
+
|
|
211
|
+
//Logout
|
|
212
|
+
onLogoutSuccess?: () => void
|
|
213
|
+
onLogoutError?: () => void
|
|
214
|
+
|
|
182
215
|
userFirstName={loggedUserName}
|
|
183
216
|
refs={{
|
|
184
217
|
inputs?: {
|
|
@@ -192,48 +225,36 @@ Then add it to the render function.
|
|
|
192
225
|
activityIndicator?: any
|
|
193
226
|
loadingText?: any
|
|
194
227
|
}}
|
|
228
|
+
brandImages={
|
|
229
|
+
containerStyle?: StyleProp<ViewStyle>
|
|
230
|
+
image1?: ImageSourcePropType
|
|
231
|
+
image1Style?: StyleProp<ImageStyle>
|
|
232
|
+
image2?: ImageSourcePropType
|
|
233
|
+
image2Style?: StyleProp<ImageStyle>
|
|
234
|
+
}
|
|
235
|
+
styles?: ILoginViewStyles
|
|
236
|
+
texts?: ILoginViewTexts
|
|
195
237
|
/>
|
|
196
238
|
```
|
|
197
239
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
When login was successful, return userProfile data and the access token to use if for future API requests.
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
`showLoginDialog: () => void`
|
|
216
|
-
Callback to show the Login dialog.
|
|
217
|
-
|
|
218
|
-
`hideLoginDialog: () => void`
|
|
219
|
-
Callback to hide the login dialog.
|
|
220
|
-
|
|
221
|
-
`onLogoutSuccess?: () => void`
|
|
222
|
-
Use it to logout the authenticated user. It will delete all the stored data, including access token. Please make sure to update the `userFirstName` prop so the component will show the logged out view.
|
|
223
|
-
|
|
224
|
-
`onLogoutFail?: () => void`
|
|
225
|
-
Will be called if something went wrong while deleting the local data.
|
|
226
|
-
|
|
227
|
-
`styles?: ILoginViewStyles`
|
|
228
|
-
Use this to style your components.
|
|
229
|
-
|
|
230
|
-
`texts?: ILoginViewTexts`
|
|
231
|
-
Use this to change some texts that appear in this component.
|
|
232
|
-
|
|
233
|
-
`userFirstName?: string`
|
|
234
|
-
Once authenticated send the received firstName data to this prop, so the component can render the Logged in view.
|
|
240
|
+
### Props
|
|
241
|
+
| Property | Description |
|
|
242
|
+
|----------|-------------|
|
|
243
|
+
| onLoginSuccessful: (userProfile: IUserProfile, accessToken: string)` |When login was successful, return userProfile data and the access token to use if for future API requests.
|
|
244
|
+
| onLoginFailure?: (error: string) | When login fails will return the error received. |
|
|
245
|
+
| onFetchUserProfileFailure?: (error: string) | This is used if the authentication worked but the fetch of the userProfile failed. |
|
|
246
|
+
| onFetchAccessTokenFailure?: (error: string) | When the fetch of the access token failed. |
|
|
247
|
+
| isLoginDialogVisible: boolean | Flag to show or hide the login dialog. |
|
|
248
|
+
| showLoginDialog: () => void | Callback to show the Login dialog. |
|
|
249
|
+
| hideLoginDialog: () => void | Callback to hide the Login dialog. |
|
|
250
|
+
| onLogoutSuccess?: () => void | Use it to logout the authenticated user. It will delete all the stored data, including access token. Please make sure to update the `userFirstName` prop so the component will show the logged out view. |
|
|
251
|
+
|onLogoutFail?: () => void | Will be called if something went wrong while deleting the local data. |
|
|
252
|
+
|styles?: ILoginViewStyles | Use this to style your components. |
|
|
253
|
+
|texts?: ILoginViewTexts | Use this to change some texts that appear in this component. |
|
|
254
|
+
|userFirstName?: string | Once authenticated send the received firstName data to this prop, so the component can render the Logged in view. |
|
|
255
|
+
|brandImages?: ILoginBrandImages | Receives up to 2 images with their styles and the container style for the images. |
|
|
235
256
|
|
|
236
|
-
|
|
257
|
+
### styles
|
|
237
258
|
|
|
238
259
|
```js
|
|
239
260
|
interface ILoginViewStyles {
|
|
@@ -251,7 +272,6 @@ interface ILoginViewStyles {
|
|
|
251
272
|
input?: IInputStyles
|
|
252
273
|
title?: StyleProp<TextStyle>
|
|
253
274
|
message?: StyleProp<TextStyle>
|
|
254
|
-
logo?: StyleProp<ImageStyle>
|
|
255
275
|
}
|
|
256
276
|
loggedIn?: {
|
|
257
277
|
container?: StyleProp<ViewStyle>
|
|
@@ -261,16 +281,32 @@ interface ILoginViewStyles {
|
|
|
261
281
|
message?: StyleProp<TextStyle>
|
|
262
282
|
}
|
|
263
283
|
}
|
|
264
|
-
|
|
265
284
|
```
|
|
266
285
|
|
|
267
|
-
|
|
286
|
+
\*Note: Logos images styles are passed from the `brandImages` prop.
|
|
268
287
|
|
|
288
|
+
### texts
|
|
289
|
+
```js
|
|
290
|
+
{
|
|
291
|
+
loginButton?: string
|
|
292
|
+
logoutButton?: string
|
|
293
|
+
line1?: string
|
|
294
|
+
line2?: string
|
|
295
|
+
message?: string
|
|
296
|
+
dialog?: {
|
|
297
|
+
loginButton?: string
|
|
298
|
+
message?: string
|
|
299
|
+
}
|
|
300
|
+
logoutDialog?: {
|
|
301
|
+
title?: string
|
|
302
|
+
message?: string
|
|
303
|
+
confirm?: string
|
|
304
|
+
cancel?: string
|
|
305
|
+
}
|
|
306
|
+
```
|
|
269
307
|
---
|
|
270
308
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-

|
|
309
|
+
## Tickets
|
|
274
310
|
|
|
275
311
|
Import the component from the library
|
|
276
312
|
|
|
@@ -284,14 +320,34 @@ Then add it to the render function.
|
|
|
284
320
|
<Tickets eventId={EVENT_ID} onAddToCartSuccess={handleOnAddToCartSuccess} />
|
|
285
321
|
```
|
|
286
322
|
|
|
287
|
-
|
|
323
|
+
### Props
|
|
324
|
+
|
|
288
325
|
```js
|
|
289
326
|
{
|
|
290
327
|
eventId: number
|
|
291
328
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
329
|
+
// Callbacks for when user taps on GET Tickets button
|
|
330
|
+
onAddToCartSuccess: (data: {
|
|
331
|
+
isBillingRequired: boolean
|
|
332
|
+
isPhoneRequired?: boolean
|
|
333
|
+
isAgeRequired?: boolean
|
|
334
|
+
minimumAge?: number
|
|
335
|
+
isNameRequired?: boolean
|
|
336
|
+
}) => void
|
|
337
|
+
onAddToCartError?: (error: {
|
|
338
|
+
code: number
|
|
339
|
+
message: string
|
|
340
|
+
extraData?: any
|
|
341
|
+
}) => void
|
|
342
|
+
|
|
343
|
+
// Callbacks for fetching the tickets
|
|
344
|
+
onFetchTicketsError?: (error: {
|
|
345
|
+
code: number
|
|
346
|
+
message: string
|
|
347
|
+
extraData?: any
|
|
348
|
+
}) => void
|
|
349
|
+
|
|
350
|
+
// Callbacks for fetching the Event base on the eventId prop
|
|
295
351
|
onFetchTicketsSuccess?: (data: {
|
|
296
352
|
tickets: ITicket[]
|
|
297
353
|
promoCodeResponse: {
|
|
@@ -301,7 +357,19 @@ Then add it to the render function.
|
|
|
301
357
|
isInWaitingList: boolean
|
|
302
358
|
isAccessCodeRequired: boolean
|
|
303
359
|
}) => void
|
|
304
|
-
onFetchEventError?: (error:
|
|
360
|
+
onFetchEventError?: (error: {
|
|
361
|
+
code: number
|
|
362
|
+
message: string
|
|
363
|
+
extraData?: any
|
|
364
|
+
}) => void
|
|
365
|
+
|
|
366
|
+
// Callbacks for Waiting list
|
|
367
|
+
onAddToWaitingListSuccess?: (data: any) => void
|
|
368
|
+
onAddToWaitingListError?: (error: {
|
|
369
|
+
code: number
|
|
370
|
+
message: string
|
|
371
|
+
extraData?: any
|
|
372
|
+
}) => void
|
|
305
373
|
|
|
306
374
|
styles?: ITicketsViewStyles
|
|
307
375
|
texts?: ITicketsViewTexts
|
|
@@ -311,6 +379,11 @@ Then add it to the render function.
|
|
|
311
379
|
|
|
312
380
|
onPressMyOrders: () => void
|
|
313
381
|
onPressLogout?: () => void
|
|
382
|
+
|
|
383
|
+
// With the following 3 props you can control the visibility of the stock loading indicators and alerts, so you can use your own.
|
|
384
|
+
onLoadingChange?: (isLoading: boolean) => void
|
|
385
|
+
areAlertsEnabled?: boolean
|
|
386
|
+
areLoadingIndicatorsEnabled?: boolean
|
|
314
387
|
}
|
|
315
388
|
```
|
|
316
389
|
|
|
@@ -320,8 +393,10 @@ Then add it to the render function.
|
|
|
320
393
|
```js
|
|
321
394
|
{
|
|
322
395
|
isBillingRequired: boolean
|
|
323
|
-
|
|
324
|
-
isAgeRequired
|
|
396
|
+
isPhoneRequired?: boolean
|
|
397
|
+
isAgeRequired?: boolean
|
|
398
|
+
minimumAge?: number
|
|
399
|
+
isNameRequired?: boolean
|
|
325
400
|
}
|
|
326
401
|
```
|
|
327
402
|
|
|
@@ -329,11 +404,7 @@ You can then call the `BillingInfo` component and pass them as props in the `car
|
|
|
329
404
|
|
|
330
405
|
`onFetchTicketsSuccess` When tickets fetching was successful, will return fetched data, including `promoCodeResponse`.
|
|
331
406
|
|
|
332
|
-
|
|
333
|
-
## styles
|
|
334
|
-
|
|
335
|
-
Receives several props to style its sub-components.
|
|
336
|
-
|
|
407
|
+
### styles
|
|
337
408
|
```js
|
|
338
409
|
{
|
|
339
410
|
rootContainer?: ViewStyle
|
|
@@ -341,23 +412,109 @@ Receives several props to style its sub-components.
|
|
|
341
412
|
title?: TextStyle
|
|
342
413
|
getTicketsButtonDisabled?: IButtonStyles
|
|
343
414
|
getTicketsButtonActive?: IButtonStyles
|
|
344
|
-
promoCode?:
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
<img width="790" alt="props" src="https://user-images.githubusercontent.com/66479719/153976200-4bd6b254-6e80-49d6-bacc-076c59873434.png">
|
|
415
|
+
promoCode?: {
|
|
416
|
+
rootContainer?: StyleProp<ViewStyle>
|
|
417
|
+
contentWrapper?: StyleProp<ViewStyle>
|
|
418
|
+
content?: StyleProp<ViewStyle>
|
|
419
|
+
input?: TextInputProps['style']
|
|
420
|
+
inputPlaceholderColor?: string
|
|
421
|
+
title?: StyleProp<TextStyle>
|
|
353
422
|
|
|
354
|
-
|
|
423
|
+
mainButton?: IButtonStyles
|
|
424
|
+
cancelButton?: IButtonStyles
|
|
425
|
+
applyButton?: IButtonStyles
|
|
426
|
+
applyDisabledButton?: IButtonStyles
|
|
355
427
|
|
|
356
|
-
<
|
|
428
|
+
messageContainer?: StyleProp<ViewStyle>
|
|
429
|
+
message?: StyleProp<TextStyle>
|
|
430
|
+
}
|
|
431
|
+
ticketList?: {
|
|
432
|
+
listContainer?: ViewStyle
|
|
433
|
+
item?: {
|
|
434
|
+
container?: ViewStyle
|
|
435
|
+
ticketName?: TextStyle
|
|
436
|
+
price?: TextStyle
|
|
437
|
+
oldPrice?: TextStyle
|
|
438
|
+
fees?: TextStyle
|
|
439
|
+
soldOutText?: TextStyle
|
|
440
|
+
soldOutContainer?: ViewStyle
|
|
441
|
+
dropdown?: IDropdownStyles
|
|
442
|
+
pricesContainer?: StyleProp<ViewStyle>
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
loading?: {
|
|
446
|
+
animation?: {
|
|
447
|
+
color?: ActivityIndicatorProps['color']
|
|
448
|
+
size?: ActivityIndicatorProps['size']
|
|
449
|
+
}
|
|
450
|
+
content?: ViewStyle
|
|
451
|
+
text?: TextStyle
|
|
452
|
+
}
|
|
453
|
+
waitingList?: {
|
|
454
|
+
rootContainer?: StyleProp<ViewStyle>
|
|
455
|
+
title?: StyleProp<TextStyle>
|
|
456
|
+
button?: IButtonStyles
|
|
457
|
+
input?: IInputStyles
|
|
458
|
+
buttonDisabled?: IButtonStyles
|
|
459
|
+
success?: {
|
|
460
|
+
container?: StyleProp<ViewStyle>
|
|
461
|
+
title?: StyleProp<ViewStyle>
|
|
462
|
+
message?: StyleProp<ViewStyle>
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
loggedIn?: {
|
|
466
|
+
rootContainer?: StyleProp<ViewStyle>
|
|
467
|
+
myOrdersButton?: IButtonStyles
|
|
468
|
+
logOutButton?: IButtonStyles
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
```
|
|
357
472
|
|
|
473
|
+
### texts
|
|
474
|
+
```js
|
|
475
|
+
{
|
|
476
|
+
promoCode?: {
|
|
477
|
+
promoCodeButton?: string
|
|
478
|
+
inputPlaceHolder?: string
|
|
479
|
+
apply?: string
|
|
480
|
+
cancel?: string
|
|
481
|
+
mainButton?: string
|
|
482
|
+
title?: string
|
|
483
|
+
}
|
|
484
|
+
getTicketsButton?: string
|
|
485
|
+
title?: string
|
|
486
|
+
waitingList?: {
|
|
487
|
+
title?: string
|
|
488
|
+
firstName?: string
|
|
489
|
+
lastName?: string
|
|
490
|
+
email?: string
|
|
491
|
+
button?: string
|
|
492
|
+
successTitle?: string
|
|
493
|
+
successMessage?: string
|
|
494
|
+
}
|
|
495
|
+
loggedInTexts?: {
|
|
496
|
+
logoutDialog?: {
|
|
497
|
+
title?: string
|
|
498
|
+
message?: string
|
|
499
|
+
confirmButton?: string
|
|
500
|
+
cancelButton?: string
|
|
501
|
+
}
|
|
502
|
+
myOrderButtonText?: string
|
|
503
|
+
logOutButtonText?: string
|
|
504
|
+
}
|
|
505
|
+
listItem?: {
|
|
506
|
+
soldOut?: string
|
|
507
|
+
salesNotStarted?: string
|
|
508
|
+
salesEnded?: string
|
|
509
|
+
inclFees?: string
|
|
510
|
+
exclFees?: string
|
|
511
|
+
free?: string
|
|
512
|
+
ticket?: string
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
```
|
|
358
516
|
---
|
|
359
|
-
|
|
360
|
-
# BillingInfo
|
|
517
|
+
## BillingInfo
|
|
361
518
|
|
|
362
519
|
Import the component from the library
|
|
363
520
|
|
|
@@ -369,75 +526,89 @@ Add it to the render function.
|
|
|
369
526
|
|
|
370
527
|
```js
|
|
371
528
|
<BillingInfo
|
|
372
|
-
cartProps:
|
|
529
|
+
cartProps: {
|
|
530
|
+
isBillingRequired: boolean
|
|
531
|
+
isNameRequired: boolean
|
|
532
|
+
isAgeRequired: boolean
|
|
533
|
+
isPhoneRequired: boolean
|
|
534
|
+
minimumAge: number
|
|
535
|
+
}
|
|
536
|
+
// registerNewUser
|
|
373
537
|
onRegisterSuccess?: (tokens: ITokens) => void
|
|
374
|
-
|
|
538
|
+
onRegisterError?: (error: string) => void
|
|
375
539
|
|
|
376
|
-
onCheckoutSuccess: (data:
|
|
377
|
-
|
|
540
|
+
onCheckoutSuccess: (data: {
|
|
541
|
+
id: string
|
|
542
|
+
hash: string
|
|
543
|
+
total: string
|
|
544
|
+
status: string
|
|
545
|
+
}) => void
|
|
546
|
+
onCheckoutError?: (error: IError) => void
|
|
378
547
|
|
|
379
548
|
onLoginSuccess: (data: any) => void
|
|
380
|
-
|
|
549
|
+
onLoginError?: (error: IError) => void
|
|
550
|
+
|
|
381
551
|
|
|
382
552
|
onFetchUserProfileSuccess?: (data: any) => void
|
|
383
|
-
|
|
553
|
+
onFetchUserProfileError?: (error: IError) => void
|
|
384
554
|
|
|
385
|
-
|
|
555
|
+
//fetchCart
|
|
556
|
+
onFetchCartError?: (error: IError) => void
|
|
557
|
+
onFetchCartSuccess?: () => void
|
|
386
558
|
|
|
387
|
-
|
|
388
|
-
|
|
559
|
+
// fetchCountries
|
|
560
|
+
onFetchCountriesError?: (error: IError) => void
|
|
561
|
+
onFetchCountriesSuccess?: () => void
|
|
389
562
|
|
|
390
|
-
|
|
563
|
+
// fetchState
|
|
564
|
+
onFetchStatesError?: (error: IError) => void
|
|
565
|
+
onFetchStatesSuccess?: () => void
|
|
391
566
|
|
|
392
|
-
|
|
393
|
-
|
|
567
|
+
// fetch Token
|
|
568
|
+
onFetchAccessTokenError?: (error: IError) => void
|
|
569
|
+
onFetchAccessTokenSuccess?: () => void
|
|
394
570
|
|
|
395
571
|
styles?: IBillingInfoViewStyles
|
|
396
572
|
texts?: IBillingInfoViewTexts
|
|
397
573
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
## Props
|
|
403
|
-
|
|
404
|
-
### cartProps
|
|
405
|
-
|
|
406
|
-
will receive
|
|
407
|
-
|
|
408
|
-
```js
|
|
409
|
-
{
|
|
410
|
-
isBillingRequired: boolean
|
|
411
|
-
isNameRequired: boolean
|
|
412
|
-
isAgeRequired: boolean
|
|
413
|
-
}
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
### onCheckoutSuccess
|
|
574
|
+
styles?: IBillingInfoViewStyles
|
|
575
|
+
texts?: IBillingInfoViewTexts
|
|
417
576
|
|
|
418
|
-
|
|
577
|
+
// Configure the skipping component visible, when isBillingRequired is false
|
|
578
|
+
skipBillingConfig?: {
|
|
579
|
+
styles?: {
|
|
580
|
+
rootContainer?: StyleProp<ViewStyle>
|
|
581
|
+
dialogContainer?: StyleProp<ViewStyle>
|
|
582
|
+
brandImage?: StyleProp<ImageStyle>
|
|
583
|
+
text?: StyleProp<TextStyle>
|
|
584
|
+
activityIndicator?: {
|
|
585
|
+
color?: ColorValue
|
|
586
|
+
size?: 'large' | 'small'
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
brandImage?: ImageSourcePropType
|
|
590
|
+
isActivityIndicatorVisible?: boolean
|
|
591
|
+
}
|
|
419
592
|
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
}
|
|
593
|
+
loginBrandImages?: {
|
|
594
|
+
containerStyle?: StyleProp<ViewStyle>
|
|
595
|
+
image1?: ImageSourcePropType
|
|
596
|
+
image1Style?: StyleProp<ImageStyle>
|
|
597
|
+
image2?: ImageSourcePropType
|
|
598
|
+
image2Style?: StyleProp<ImageStyle>
|
|
599
|
+
}
|
|
600
|
+
/>
|
|
427
601
|
```
|
|
428
602
|
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
Will skip the need of holder names information and will be automatically filled with the logged user data.
|
|
603
|
+
### Props
|
|
604
|
+
| Property | Description |
|
|
605
|
+
|----------|-------------|
|
|
606
|
+
| cartProps | Received from the Tickets component |
|
|
607
|
+
| onCheckoutSuccess | Will return Order data from the Checkout action |
|
|
608
|
+
| loginBrandImages | Receives styles and images sources to show in the `Login` component |
|
|
609
|
+
| skipBillingConfig | Configure the skipping component, visible when `isBillingRequired` is set to false |
|
|
438
610
|
|
|
439
611
|
### texts
|
|
440
|
-
|
|
441
612
|
```js
|
|
442
613
|
interface IBillingInfoViewTexts {
|
|
443
614
|
loginTexts?: ILoginViewTexts
|
|
@@ -495,22 +666,14 @@ interface IBillingInfoViewStyles {
|
|
|
495
666
|
customCheckbox?: ICheckboxStyles
|
|
496
667
|
|
|
497
668
|
datePicker?: IDatePickerStyles
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
dialogContainer?: StyleProp<ViewStyle>
|
|
501
|
-
brandImage?: StyleProp<ImageStyle>
|
|
502
|
-
message?: StyleProp<TextStyle>
|
|
503
|
-
spinner?: {
|
|
504
|
-
color: ColorValue
|
|
505
|
-
size: 'large' | 'small'
|
|
506
|
-
}
|
|
507
|
-
}
|
|
669
|
+
|
|
670
|
+
privacyPolicyLinkStyle?: StyleProp<TextStyle>
|
|
508
671
|
}
|
|
509
672
|
```
|
|
510
673
|
|
|
511
674
|
---
|
|
512
675
|
|
|
513
|
-
|
|
676
|
+
## Checkout
|
|
514
677
|
|
|
515
678
|
Import the component from the library
|
|
516
679
|
|
|
@@ -520,24 +683,38 @@ import { Checkout } from 'tf-checkout-react-native'
|
|
|
520
683
|
|
|
521
684
|
Add it to the render function.
|
|
522
685
|
|
|
523
|
-
|
|
686
|
+
```js
|
|
687
|
+
<Checkout
|
|
688
|
+
eventId={EVENT_ID}
|
|
689
|
+
hash={hash}
|
|
690
|
+
total={total}
|
|
691
|
+
onPaymentSuccess={handleOnPaymentSuccess}
|
|
692
|
+
onPressExit={handleStripeError}
|
|
693
|
+
areLoadingIndicatorsEnabled={false}
|
|
694
|
+
styles={styles}
|
|
695
|
+
{...props}
|
|
696
|
+
/>
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
### Props
|
|
700
|
+
|
|
524
701
|
```js
|
|
525
702
|
{
|
|
526
703
|
eventId: number
|
|
527
704
|
hash: string
|
|
528
705
|
total: string
|
|
529
706
|
|
|
530
|
-
|
|
707
|
+
onFetchOrderReviewError?: (error: IError) => void
|
|
531
708
|
onFetchOrderReviewSuccess?: (data: any) => void
|
|
532
709
|
|
|
533
|
-
|
|
710
|
+
onFetchEventConditionsError?: (error: IError) => void
|
|
534
711
|
onFetchEventConditionsSuccess?: (data: any) => void
|
|
535
712
|
|
|
536
713
|
onCheckoutCompletedSuccess?: (data: any) => void
|
|
537
|
-
|
|
714
|
+
onCheckoutCompletedError?: (error: IError) => void
|
|
538
715
|
|
|
539
716
|
onPaymentSuccess: (data: any) => void
|
|
540
|
-
onPaymentError?: (error:
|
|
717
|
+
onPaymentError?: (error: IError) => void
|
|
541
718
|
|
|
542
719
|
onStripeInitializeError?: (error: string) => void
|
|
543
720
|
|
|
@@ -550,6 +727,14 @@ Add it to the render function.
|
|
|
550
727
|
exitButton?: string
|
|
551
728
|
payButton?: string
|
|
552
729
|
freeRegistrationButton?: string
|
|
730
|
+
providePaymentInfo?: string
|
|
731
|
+
orderReviewItems?: {
|
|
732
|
+
event?: string
|
|
733
|
+
ticketType?: string
|
|
734
|
+
numberOfTickets?: string
|
|
735
|
+
price?: string
|
|
736
|
+
total?: string
|
|
737
|
+
}
|
|
553
738
|
}
|
|
554
739
|
|
|
555
740
|
styles?: ICheckoutStyles
|
|
@@ -559,22 +744,18 @@ Add it to the render function.
|
|
|
559
744
|
areLoadingIndicatorsEnabled?: boolean
|
|
560
745
|
}
|
|
561
746
|
```
|
|
747
|
+
| Property | Description |
|
|
748
|
+
|----------|-------------|
|
|
749
|
+
| eventId | Same as used in the `Tickets` component. |
|
|
750
|
+
| hash | retrieved from the `onCheckoutSuccess` callback in the `BillingInfo`component. |
|
|
751
|
+
| total | retrieved from the `onCheckoutSuccess` callback in the `BillingInfo` component. |
|
|
752
|
+
| onPaymentSuccess | will handle the success in the payment process. Will return the `hash`. |
|
|
753
|
+
| areLoadingIndicatorsEnabled | whether or not show the Loading Indicator, `default: true`. |
|
|
754
|
+
| areAlertsEnabled | whether or not show the Error Alerts, `default: true`. |
|
|
562
755
|
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
`hash` retrieved from the `onCheckoutSuccess` callback in the `BillingInfo`component.
|
|
566
|
-
|
|
567
|
-
`total` retrieved from the `onCheckoutSuccess` callback in the `BillingInfo` component.
|
|
756
|
+
*Note: If the you need to modify the card container, use the `styles.payment.cardContainer` prop. Useful if the card is to short and the zip code is not visible.*
|
|
568
757
|
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
`areLoadingIndicatorsEnabled` whether or not show the Loading Indicator, `default: true`.
|
|
572
|
-
|
|
573
|
-
`areAlertsEnabled` whether or not show the Error Alerts, `default: true`.
|
|
574
|
-
|
|
575
|
-
If the you need to modify the card container, use the `styles.payment.cardContainer` prop. Useful if the card is to short and the zip code is not visible.
|
|
576
|
-
|
|
577
|
-
`styles`
|
|
758
|
+
### styles
|
|
578
759
|
|
|
579
760
|
```js
|
|
580
761
|
{
|
|
@@ -591,22 +772,25 @@ If the you need to modify the card container, use the `styles.payment.cardContai
|
|
|
591
772
|
payment?: {
|
|
592
773
|
container?: StyleProp<ViewStyle>
|
|
593
774
|
title?: StyleProp<TextStyle>
|
|
775
|
+
cardBackgroundColor?: string
|
|
594
776
|
cardContainer?: StyleProp<ViewStyle>
|
|
595
777
|
button?: IButtonStyles
|
|
596
778
|
buttonDisabled?: IButtonStyles
|
|
597
779
|
}
|
|
598
780
|
}
|
|
599
781
|
```
|
|
782
|
+
|
|
600
783
|
### Stripe
|
|
784
|
+
|
|
601
785
|
Currently, Stripe card is not customizable. Please see the open issues in their Github.
|
|
602
786
|
|
|
603
787
|
- [563](https://github.com/stripe/stripe-react-native/issues/563)
|
|
604
788
|
- [285](https://github.com/stripe/stripe-react-native/issues/285)
|
|
605
789
|
|
|
790
|
+
Additionally, if you are encountering problems with building your project, please take a look at the [Stripe troubleshooting](https://github.com/stripe/stripe-react-native#troubleshooting).
|
|
606
791
|
|
|
607
792
|
---
|
|
608
|
-
|
|
609
|
-
# PurchaseConfirmation
|
|
793
|
+
## Purchase Confirmation
|
|
610
794
|
|
|
611
795
|
Import the component from the library
|
|
612
796
|
|
|
@@ -620,19 +804,44 @@ Add it to the render function.
|
|
|
620
804
|
<PurchaseConfirmation
|
|
621
805
|
orderHash={checkoutProps!.hash}
|
|
622
806
|
onComplete={handleOnComplete}
|
|
623
|
-
/>
|
|
624
|
-
```
|
|
625
807
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
808
|
+
styles?: {
|
|
809
|
+
rootContainer?: StyleProp<ViewStyle>
|
|
810
|
+
title?: StyleProp<TextStyle>
|
|
629
811
|
|
|
630
|
-
|
|
812
|
+
message?: {
|
|
813
|
+
container?: StyleProp<ViewStyle>
|
|
814
|
+
line1?: StyleProp<TextStyle>
|
|
815
|
+
line2?: StyleProp<TextStyle>
|
|
816
|
+
}
|
|
817
|
+
exitButton?: {
|
|
818
|
+
container?: StyleProp<ViewStyle>
|
|
819
|
+
button?: StyleProp<ViewStyle>
|
|
820
|
+
text?: StyleProp<TextStyle>
|
|
821
|
+
}
|
|
822
|
+
}
|
|
631
823
|
|
|
632
|
-
|
|
824
|
+
texts?: {
|
|
825
|
+
title?: string
|
|
826
|
+
message?: {
|
|
827
|
+
line1?: string
|
|
828
|
+
line2?: string
|
|
829
|
+
}
|
|
830
|
+
exitButton?: string
|
|
831
|
+
}
|
|
832
|
+
/>
|
|
833
|
+
```
|
|
834
|
+
### Props
|
|
835
|
+
| Property | Description |
|
|
836
|
+
|----------|-------------|
|
|
837
|
+
| orderHash | The `hash` returned in the `BillingInfo` component |
|
|
838
|
+
| onComplete | To handle the completion of the flow. Here you can handle the unmount of the component or navigate to another screen |
|
|
839
|
+
| styles | Styles for the component |
|
|
840
|
+
| texts | Texts for the component |
|
|
633
841
|
|
|
634
|
-

|
|
635
842
|
|
|
843
|
+
---
|
|
844
|
+
## My Orders
|
|
636
845
|
If there is a valid session, there will appear a button to access `MyOrders` in the `Tickets` component.
|
|
637
846
|
|
|
638
847
|
Import the component from the library.
|
|
@@ -641,80 +850,122 @@ Import the component from the library.
|
|
|
641
850
|
import { MyOrders } from 'tf-checkout-react-native'
|
|
642
851
|
```
|
|
643
852
|
|
|
644
|
-
There is no need to pass any data prop to it.
|
|
645
853
|
|
|
646
854
|
### Props
|
|
647
855
|
|
|
648
|
-
|
|
856
|
+
```js
|
|
857
|
+
{
|
|
858
|
+
onSelectOrder: (order: {
|
|
859
|
+
order: {
|
|
860
|
+
header: {
|
|
861
|
+
isReferralDisabled: boolean
|
|
862
|
+
shareLink: string
|
|
863
|
+
total: string
|
|
864
|
+
salesReferred: string
|
|
865
|
+
},
|
|
866
|
+
items: [
|
|
867
|
+
{
|
|
868
|
+
name: string
|
|
869
|
+
currency: string
|
|
870
|
+
price: string
|
|
871
|
+
discount: string
|
|
872
|
+
quantity: string
|
|
873
|
+
total: string
|
|
874
|
+
},
|
|
875
|
+
{...}
|
|
876
|
+
],
|
|
877
|
+
tickets: [
|
|
878
|
+
{
|
|
879
|
+
hash: string
|
|
880
|
+
ticketType: string
|
|
881
|
+
holderName?: string
|
|
882
|
+
holderEmail?: string
|
|
883
|
+
holderPhone?: string
|
|
884
|
+
status: string
|
|
885
|
+
pdfLink?: string
|
|
886
|
+
qrData?: string
|
|
887
|
+
isSellable?: boolean
|
|
888
|
+
description?: string
|
|
889
|
+
descriptionPlain?: string
|
|
890
|
+
},
|
|
891
|
+
{...}
|
|
892
|
+
]
|
|
893
|
+
}
|
|
894
|
+
}) => void
|
|
649
895
|
|
|
650
|
-
|
|
896
|
+
onFetchMyOrdersSuccess?: () => void
|
|
897
|
+
onFetchMyOrdersError?: (error: IError) => void
|
|
651
898
|
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
isEventsDropdownHidden: true,
|
|
655
|
-
}}
|
|
656
|
-
```
|
|
899
|
+
onFetchOrderDetailsSuccess?: () => void
|
|
900
|
+
onFetchOrderDetailsError?: (error: IError) => void
|
|
657
901
|
|
|
658
|
-
|
|
902
|
+
onLoadingChange?: (isLoading: boolean) => void
|
|
659
903
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
{
|
|
670
|
-
name: string
|
|
671
|
-
currency: string
|
|
672
|
-
price: string
|
|
673
|
-
discount: string
|
|
674
|
-
quantity: string
|
|
675
|
-
total: string
|
|
676
|
-
},
|
|
677
|
-
{...}
|
|
678
|
-
],
|
|
679
|
-
tickets: [
|
|
680
|
-
{
|
|
681
|
-
hash: string
|
|
682
|
-
ticketType: string
|
|
683
|
-
holderName: string
|
|
684
|
-
status: string
|
|
685
|
-
pdfLink: string
|
|
686
|
-
},
|
|
687
|
-
{...}
|
|
688
|
-
]
|
|
904
|
+
styles?: IMyOrdersStyles
|
|
905
|
+
config?: {
|
|
906
|
+
isEventsDropdownHidden?: boolean
|
|
907
|
+
areActivityIndicatorsEnabled?: boolean
|
|
908
|
+
areAlertsEnabled?: boolean
|
|
909
|
+
}
|
|
910
|
+
texts?: {
|
|
911
|
+
selectEventPlaceholder?: string
|
|
912
|
+
}
|
|
689
913
|
}
|
|
690
914
|
```
|
|
691
915
|
|
|
692
|
-
|
|
693
|
-
|
|
916
|
+
### styles
|
|
694
917
|
```js
|
|
695
|
-
|
|
696
|
-
orderListItem?:
|
|
918
|
+
{
|
|
919
|
+
orderListItem?: {
|
|
920
|
+
rootContainer?: StyleProp<ViewStyle>
|
|
921
|
+
contentContainer?: StyleProp<ViewStyle>
|
|
922
|
+
infoContainer?: StyleProp<ViewStyle>
|
|
923
|
+
infoTopContainer?: StyleProp<ViewStyle>
|
|
924
|
+
infoBottomContainer?: StyleProp<ViewStyle>
|
|
925
|
+
imageContainer?: StyleProp<ViewStyle>
|
|
926
|
+
image?: StyleProp<ImageStyle>
|
|
927
|
+
infoRootContainer?: StyleProp<ViewStyle>
|
|
928
|
+
iconNextContainer?: StyleProp<ViewStyle>
|
|
929
|
+
iconNext?: StyleProp<ImageStyle>
|
|
930
|
+
orderId?: StyleProp<TextStyle>
|
|
931
|
+
orderDate?: StyleProp<TextStyle>
|
|
932
|
+
eventName?: StyleProp<TextStyle>
|
|
933
|
+
priceContainer?: StyleProp<ViewStyle>
|
|
934
|
+
price?: StyleProp<TextStyle>
|
|
935
|
+
currency?: StyleProp<TextStyle>
|
|
936
|
+
}
|
|
697
937
|
safeArea?: StyleProp<ViewStyle>
|
|
698
938
|
listContainer?: StyleProp<ViewStyle>
|
|
699
939
|
eventsContainer?: StyleProp<ViewStyle>
|
|
700
940
|
eventsTitle?: StyleProp<TextStyle>
|
|
701
941
|
refreshControlColor?: ColorValue
|
|
702
|
-
eventsDropdown?:
|
|
942
|
+
eventsDropdown?: {
|
|
943
|
+
container?: StyleProp<ViewStyle>
|
|
944
|
+
button?: StyleProp<ViewStyle>
|
|
945
|
+
icon?: StyleProp<ImageStyle>
|
|
946
|
+
label?: StyleProp<TextStyle>
|
|
947
|
+
dialog?: StyleProp<ViewStyle>
|
|
948
|
+
flatListContainer?: StyleProp<ViewStyle>
|
|
949
|
+
listItem?: {
|
|
950
|
+
container?: StyleProp<ViewStyle>
|
|
951
|
+
button?: StyleProp<ViewStyle>
|
|
952
|
+
buttonSelected?: StyleProp<ViewStyle>
|
|
953
|
+
text?: StyleProp<TextStyle>
|
|
954
|
+
textSelected?: StyleProp<TextStyle>
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
}
|
|
703
958
|
rootContainer?: StyleProp<ViewStyle>
|
|
704
959
|
eventsSelectionContainer?: StyleProp<ViewStyle>
|
|
705
960
|
clearEventSelectionIcon?: StyleProp<ImageStyle>
|
|
706
961
|
}
|
|
707
962
|
```
|
|
708
963
|
|
|
709
|
-
`onFetchOrderDetailsFail` if the fetching fails, you can use this to know what happened.
|
|
710
|
-
|
|
711
964
|
---
|
|
712
965
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-

|
|
966
|
+
## MyOrderDetails
|
|
716
967
|
|
|
717
|
-
When user selects an order from the `MyOrders`component, will show it details.
|
|
968
|
+
When user selects an order from the `MyOrders` component, will show it details.
|
|
718
969
|
|
|
719
970
|
Import the component from the library.
|
|
720
971
|
|
|
@@ -724,44 +975,25 @@ import { MyOrderDetails } from 'tf-checkout-react-native'
|
|
|
724
975
|
|
|
725
976
|
### Props
|
|
726
977
|
|
|
727
|
-
`data` receives same data as the one of the object received from the `onSelectOrder` handler in `MyOrders`component:
|
|
728
|
-
|
|
729
978
|
```js
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
tickets: [
|
|
749
|
-
{
|
|
750
|
-
hash: string
|
|
751
|
-
ticketType: string
|
|
752
|
-
holderName: string
|
|
753
|
-
status: string
|
|
754
|
-
pdfLink: string
|
|
755
|
-
},
|
|
756
|
-
{...}
|
|
757
|
-
]
|
|
758
|
-
}
|
|
759
|
-
```
|
|
760
|
-
|
|
761
|
-
`styles` optional, to customize the component look & feel.
|
|
762
|
-
|
|
763
|
-
```
|
|
764
|
-
styles?: {
|
|
979
|
+
{
|
|
980
|
+
data: IMyOrderDetailsResponse
|
|
981
|
+
config?: {
|
|
982
|
+
areActivityIndicatorsEnabled?: boolean
|
|
983
|
+
areAlertsEnabled?: boolean
|
|
984
|
+
}
|
|
985
|
+
onDownloadStatusChange?: (status?:
|
|
986
|
+
'downloading' |
|
|
987
|
+
'downloaded' |
|
|
988
|
+
'failed'
|
|
989
|
+
) => void
|
|
990
|
+
downloadStatusIcons?: {
|
|
991
|
+
success?: ImageSourcePropType
|
|
992
|
+
error?: ImageSourcePropType
|
|
993
|
+
}
|
|
994
|
+
onAndroidWritePermission?: (permission?: boolean) => void
|
|
995
|
+
onLinkCopied?: (copied?: boolean) => void
|
|
996
|
+
styles?: {
|
|
765
997
|
rootContainer?: StyleProp<ViewStyle>
|
|
766
998
|
header?: {
|
|
767
999
|
container?: StyleProp<ViewStyle>
|
|
@@ -805,29 +1037,34 @@ styles?: {
|
|
|
805
1037
|
}
|
|
806
1038
|
downloadButton?: IButtonStyles
|
|
807
1039
|
}
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
`texts` optional, to customize the texts that shows on the labels.
|
|
811
|
-
|
|
812
|
-
```js
|
|
813
|
-
texts?: {
|
|
814
|
-
title?: string
|
|
815
|
-
subTitle?: string
|
|
816
|
-
referralLink?: string
|
|
817
|
-
listItem?: {
|
|
818
|
-
title?: string
|
|
819
|
-
ticketType?: string
|
|
820
|
-
price?: string
|
|
821
|
-
quantity?: string
|
|
822
|
-
total?: string
|
|
823
|
-
}
|
|
824
|
-
ticketItem?: {
|
|
1040
|
+
texts?: {
|
|
825
1041
|
title?: string
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
1042
|
+
subTitle?: string
|
|
1043
|
+
referralLink?: string
|
|
1044
|
+
listItem?: {
|
|
1045
|
+
title?: string
|
|
1046
|
+
ticketType?: string
|
|
1047
|
+
price?: string
|
|
1048
|
+
quantity?: string
|
|
1049
|
+
total?: string
|
|
1050
|
+
}
|
|
1051
|
+
ticketItem?: {
|
|
1052
|
+
title?: string
|
|
1053
|
+
ticketId?: string
|
|
1054
|
+
ticketType?: string
|
|
1055
|
+
ticketHolder?: string
|
|
1056
|
+
status?: string
|
|
1057
|
+
download?: string
|
|
1058
|
+
}
|
|
1059
|
+
downloadNotification?: {
|
|
1060
|
+
successMessage?: string
|
|
1061
|
+
errorMessage?: string
|
|
1062
|
+
}
|
|
1063
|
+
copyText?: {
|
|
1064
|
+
copy?: string
|
|
1065
|
+
copied?: string
|
|
1066
|
+
}
|
|
831
1067
|
}
|
|
832
1068
|
}
|
|
833
1069
|
```
|
|
1070
|
+
|