ordering-ui-react-native 0.15.96 → 0.15.97-release

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.
Files changed (231) hide show
  1. package/package.json +8 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +8 -14
  5. package/src/components/AddressForm/index.tsx +18 -2
  6. package/src/components/BusinessBasicInformation/index.tsx +11 -19
  7. package/src/components/BusinessController/index.tsx +16 -8
  8. package/src/components/BusinessInformation/index.tsx +14 -0
  9. package/src/components/BusinessTypeFilter/index.tsx +1 -2
  10. package/src/components/BusinessesListing/index.tsx +1 -1
  11. package/src/components/Checkout/index.tsx +2 -1
  12. package/src/components/DriverTips/index.tsx +11 -6
  13. package/src/components/LanguageSelector/index.tsx +21 -16
  14. package/src/components/LoginForm/index.tsx +120 -30
  15. package/src/components/LoginForm/styles.tsx +6 -0
  16. package/src/components/Messages/index.tsx +2 -2
  17. package/src/components/NotificationSetting/index.tsx +85 -0
  18. package/src/components/OrderDetails/index.tsx +7 -21
  19. package/src/components/OrdersOption/index.tsx +54 -56
  20. package/src/components/PaymentOptions/index.tsx +335 -365
  21. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  22. package/src/components/ReviewDriver/index.tsx +1 -1
  23. package/src/components/ReviewOrder/index.tsx +2 -1
  24. package/src/components/ReviewProducts/index.tsx +11 -0
  25. package/src/components/SignupForm/index.tsx +145 -61
  26. package/src/components/SingleProductReview/index.tsx +1 -1
  27. package/src/components/StripeElementsForm/index.tsx +25 -16
  28. package/src/components/StripeMethodForm/index.tsx +22 -24
  29. package/src/components/UpsellingProducts/index.tsx +1 -1
  30. package/src/components/UserProfileForm/index.tsx +63 -6
  31. package/src/components/UserProfileForm/styles.tsx +8 -0
  32. package/src/components/VerifyPhone/styles.tsx +1 -2
  33. package/src/components/shared/OBottomPopup.tsx +6 -2
  34. package/src/components/shared/OModal.tsx +1 -1
  35. package/src/index.tsx +2 -0
  36. package/src/navigators/CheckoutNavigator.tsx +6 -0
  37. package/src/navigators/HomeNavigator.tsx +6 -0
  38. package/src/pages/BusinessesListing.tsx +7 -6
  39. package/src/pages/MultiCheckout.tsx +31 -0
  40. package/src/pages/MultiOrdersDetails.tsx +27 -0
  41. package/src/pages/OrderDetails.tsx +1 -1
  42. package/src/pages/ReviewDriver.tsx +2 -2
  43. package/src/pages/ReviewOrder.tsx +2 -2
  44. package/src/theme.json +0 -1
  45. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  46. package/src/types/index.tsx +18 -11
  47. package/src/utils/index.tsx +1 -2
  48. package/themes/business/index.tsx +4 -0
  49. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +1 -1
  50. package/themes/business/src/components/Chat/index.tsx +14 -6
  51. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  52. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  53. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  54. package/themes/business/src/components/LoginForm/index.tsx +110 -74
  55. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  56. package/themes/business/src/components/MapView/index.tsx +1 -1
  57. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  58. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  59. package/themes/business/src/components/OrderDetails/Delivery.tsx +3 -3
  60. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -18
  61. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  62. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  63. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  64. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  65. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  66. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  67. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  68. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  69. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  70. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  71. package/themes/business/src/components/PreviousMessages/index.tsx +1 -0
  72. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  73. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  74. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  75. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  76. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  77. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  78. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  79. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  80. package/themes/business/src/components/shared/OModal.tsx +41 -38
  81. package/themes/business/src/types/index.tsx +14 -9
  82. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  83. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  84. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  85. package/themes/kiosk/src/components/BusinessMenu/index.tsx +2 -1
  86. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  87. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  88. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  89. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +70 -31
  90. package/themes/kiosk/src/components/Checkout/index.tsx +18 -3
  91. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  92. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  93. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  94. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  95. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  96. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  97. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  98. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  99. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  100. package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
  101. package/themes/kiosk/src/components/ProductForm/index.tsx +6 -7
  102. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  103. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  104. package/themes/kiosk/src/types/index.d.ts +3 -0
  105. package/themes/original/index.tsx +22 -0
  106. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  107. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  108. package/themes/original/src/components/AddressForm/index.tsx +137 -134
  109. package/themes/original/src/components/AddressList/index.tsx +2 -2
  110. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  111. package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
  112. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  113. package/themes/original/src/components/BusinessController/index.tsx +179 -96
  114. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  115. package/themes/original/src/components/BusinessItemAccordion/index.tsx +11 -8
  116. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  117. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  118. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  119. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  120. package/themes/original/src/components/BusinessListingSearch/index.tsx +106 -126
  121. package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
  122. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  123. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  124. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  125. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  126. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  127. package/themes/original/src/components/BusinessProductsList/index.tsx +66 -73
  128. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  129. package/themes/original/src/components/BusinessProductsListing/index.tsx +296 -178
  130. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -0
  131. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  132. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  133. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  134. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  135. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  136. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +673 -0
  137. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  138. package/themes/original/src/components/BusinessesListing/index.tsx +102 -464
  139. package/themes/original/src/components/Cart/index.tsx +82 -37
  140. package/themes/original/src/components/Cart/styles.tsx +4 -0
  141. package/themes/original/src/components/CartContent/index.tsx +22 -16
  142. package/themes/original/src/components/Checkout/index.tsx +107 -67
  143. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  144. package/themes/original/src/components/DriverTips/index.tsx +11 -6
  145. package/themes/original/src/components/Favorite/index.tsx +92 -0
  146. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  147. package/themes/original/src/components/FavoriteList/index.tsx +317 -0
  148. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  149. package/themes/original/src/components/GPSButton/index.tsx +25 -17
  150. package/themes/original/src/components/GoogleMap/index.tsx +21 -12
  151. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  152. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  153. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  154. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  155. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -2
  156. package/themes/original/src/components/LoginForm/index.tsx +86 -43
  157. package/themes/original/src/components/Messages/index.tsx +17 -17
  158. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  159. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  160. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  161. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  162. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  163. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  164. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  165. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  166. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  167. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  168. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  169. package/themes/original/src/components/NavBar/index.tsx +11 -5
  170. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  171. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  172. package/themes/original/src/components/OrderDetails/index.tsx +138 -58
  173. package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
  174. package/themes/original/src/components/OrderItAgain/index.tsx +73 -0
  175. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  176. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  177. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  178. package/themes/original/src/components/OrderTypeSelector/index.tsx +84 -36
  179. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  180. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +140 -0
  181. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  182. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +56 -0
  183. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  184. package/themes/original/src/components/OrdersOption/index.tsx +140 -46
  185. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  186. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -23
  187. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  188. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  189. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  190. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  191. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  192. package/themes/original/src/components/ProductForm/index.tsx +694 -647
  193. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  194. package/themes/original/src/components/ProductItemAccordion/index.tsx +38 -25
  195. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  196. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  197. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  198. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  199. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  200. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  201. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  202. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  203. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  204. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  205. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  206. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  207. package/themes/original/src/components/SignupForm/index.tsx +307 -159
  208. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  209. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  210. package/themes/original/src/components/SingleProductCard/index.tsx +204 -95
  211. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  212. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  213. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  214. package/themes/original/src/components/UpsellingProducts/index.tsx +7 -3
  215. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  216. package/themes/original/src/components/UserFormDetails/index.tsx +108 -74
  217. package/themes/original/src/components/UserProfile/index.tsx +4 -0
  218. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  219. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  220. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  221. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  222. package/themes/original/src/components/Wallets/index.tsx +176 -162
  223. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  224. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  225. package/themes/original/src/components/shared/OButton.tsx +10 -3
  226. package/themes/original/src/components/shared/OInput.tsx +3 -2
  227. package/themes/original/src/components/shared/OModal.tsx +4 -2
  228. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  229. package/themes/original/src/types/index.tsx +200 -47
  230. package/themes/original/src/utils/index.tsx +77 -0
  231. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -7,7 +7,6 @@ import {
7
7
  useConfirmSetupIntent,
8
8
  createPaymentMethod
9
9
  } from '@stripe/stripe-react-native';
10
- import configs from '../../config.json'
11
10
  import { ErrorMessage } from './styles';
12
11
 
13
12
  import { StripeElementsForm as StripeFormController } from './naked';
@@ -26,7 +25,8 @@ const StripeElementsFormUI = (props: any) => {
26
25
  methodsPay,
27
26
  paymethod,
28
27
  onCancel,
29
- cart
28
+ cart,
29
+ merchantId
30
30
  } = props;
31
31
 
32
32
  const theme = useTheme();
@@ -54,17 +54,25 @@ const StripeElementsFormUI = (props: any) => {
54
54
  }
55
55
 
56
56
  if (user?.address) {
57
- billingDetails.addressLine1 = user?.address
58
- }
57
+ billingDetails.address = {
58
+ line1: user?.address
59
+ }
60
+ }
59
61
 
60
62
  const createPayMethod = async () => {
61
- const params: any = { type: 'Card' }
62
- if (Object.keys(billingDetails).length > 0) {
63
- params.billingDetails = billingDetails
64
- }
63
+ const params: any = { paymentMethodType: 'Card', paymentMethodData: {} }
64
+ if (Object.keys(billingDetails).length > 0) {
65
+ params.paymentMethodData.billingDetails = {...billingDetails, token: card?.last4}
66
+ }
65
67
  try {
66
68
  setCreatePmLoading(true)
67
- const { paymentMethod } = await createPaymentMethod(params);
69
+ const { paymentMethod, error } = await createPaymentMethod(params);
70
+
71
+ if (error) {
72
+ setErrors(error?.message);
73
+ setCreatePmLoading(false)
74
+ return
75
+ }
68
76
 
69
77
  setCreatePmLoading(false)
70
78
  handleSource && handleSource({
@@ -87,10 +95,10 @@ const StripeElementsFormUI = (props: any) => {
87
95
  createPayMethod();
88
96
  return
89
97
  }
90
- const params: any = { type: 'Card' }
91
- if (Object.keys(billingDetails).length > 0) {
92
- params.billingDetails = billingDetails
93
- }
98
+ const params: any = { paymentMethodType: 'Card', paymentMethodData: {} }
99
+ if (Object.keys(billingDetails).length > 0) {
100
+ params.paymentMethodData.billingDetails = {...billingDetails, token: card?.last4}
101
+ }
94
102
  try {
95
103
  const { setupIntent, error } = await confirmSetupIntent(requirements, params);
96
104
 
@@ -126,12 +134,13 @@ const StripeElementsFormUI = (props: any) => {
126
134
  <View style={styles.container}>
127
135
  {publicKey ? (
128
136
  <View style={{ flex: 1 }}>
129
- <StripeProvider
137
+ <StripeProvider
130
138
  publishableKey={publicKey}
131
- merchantIdentifier={`merchant.${configs.apple_app_id}`}
139
+ merchantIdentifier={`merchant.${merchantId}`}
140
+ urlScheme={merchantId}
132
141
  >
133
142
  {methodsPay?.includes(paymethod) ? (
134
- <StripeMethodForm
143
+ <StripeMethodForm
135
144
  handleSource={handleSource}
136
145
  onCancel={onCancel}
137
146
  cart={cart}
@@ -102,7 +102,7 @@ export const StripeMethodForm = (props: StripeMethodFormParams) => {
102
102
  shippingMethods: [
103
103
  {
104
104
  amount: cart?.balance?.toString() ?? cart?.total?.toString?.(),
105
- identifier: 'DPS',
105
+ identifier: 'standard',
106
106
  label: 'Courier',
107
107
  detail: 'Delivery',
108
108
  type: 'final',
@@ -125,13 +125,12 @@ export const StripeMethodForm = (props: StripeMethodFormParams) => {
125
125
  last4: paymentMethod.Card.last4
126
126
  }
127
127
  })
128
- onCancel()
129
128
  }
130
129
  }
131
130
 
132
131
  return (
133
132
  <>
134
- {paymethod === 'google_pay' && (
133
+ {paymethod === 'google_pay' ? (
135
134
  <View>
136
135
  <OButton
137
136
  textStyle={{
@@ -145,27 +144,26 @@ export const StripeMethodForm = (props: StripeMethodFormParams) => {
145
144
  style={{ marginTop: 20 }}
146
145
  />
147
146
  </View>
148
- // ) : (
149
- // <View>
150
- // {isApplePaySupported ? (
151
- // <>
152
- // <OText>{t('APPLE_PAY_PAYMENT', 'Apple pay payment')}</OText>
153
- // <ApplePayButton
154
- // onPress={pay}
155
- // type="plain"
156
- // buttonStyle="black"
157
- // borderRadius={4}
158
- // style={{
159
- // width: '100%',
160
- // height: 50,
161
- // }}
162
- // />
163
- // </>
164
- // ) : (
165
- // <OText>{t('APPLE_PAY_NOT_SUPPORTED', 'Apple pay not supported')}</OText>
166
- // )}
167
- // </View>
168
- // )}
147
+ ) : (
148
+ <View>
149
+ {isApplePaySupported ? (
150
+ <>
151
+ <OText>{t('APPLE_PAY_PAYMENT', 'Apple pay payment')}</OText>
152
+ <ApplePayButton
153
+ onPress={pay}
154
+ type="plain"
155
+ buttonStyle="black"
156
+ borderRadius={4}
157
+ style={{
158
+ width: '100%',
159
+ height: 50,
160
+ }}
161
+ />
162
+ </>
163
+ ) : (
164
+ <OText>{t('APPLE_PAY_NOT_SUPPORTED', 'Apple pay not supported')}</OText>
165
+ )}
166
+ </View>
169
167
  )}
170
168
  <Spinner
171
169
  visible={loadingGooglePayment}
@@ -37,7 +37,7 @@ const UpsellingProductsUI = (props: UpsellingProductsParams) => {
37
37
  imageStyle: {
38
38
  width: 120,
39
39
  height: 90,
40
- resizeMode: 'cover',
40
+ resizeMode: 'contain',
41
41
  borderRadius: 10
42
42
  },
43
43
  closeUpsellingButton: {
@@ -1,5 +1,6 @@
1
- import React from 'react';
1
+ import React, { useEffect, useState } from 'react';
2
2
  import {
3
+ UserFormDetails as UserProfileController,
3
4
  useSession,
4
5
  useLanguage,
5
6
  } from 'ordering-components/native';
@@ -13,6 +14,7 @@ import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityI
13
14
  import Ionicons from 'react-native-vector-icons/Ionicons'
14
15
 
15
16
  import {
17
+ OAlert,
16
18
  OIcon,
17
19
  OText
18
20
  } from '../shared';
@@ -20,18 +22,24 @@ import {
20
22
  Container,
21
23
  Names,
22
24
  UserInfoContainer,
23
- LanguageContainer
25
+ LanguageContainer,
26
+ RemoveAccountContainer
24
27
  } from './styles';
25
28
 
26
- export const UserProfileForm = (props: ProfileParams) => {
29
+ export const UserProfileFormUI = (props: ProfileParams) => {
27
30
  const {
28
- navigation
31
+ navigation,
32
+ handleRemoveAccount,
33
+ removeAccountState
29
34
  } = props;
30
35
 
31
36
  const theme = useTheme();
32
- const [{ user }] = useSession();
37
+ const [{ user }, { logout }] = useSession();
33
38
  const [, t] = useLanguage();
34
39
 
40
+ const isAdmin = user?.level === 0
41
+ const [confirm, setConfirm] = useState<any>({ open: false, content: null, handleOnAccept: null, id: null, title: null })
42
+
35
43
  const styles = StyleSheet.create({
36
44
  linkStyle: {
37
45
  color: theme.colors.primary,
@@ -44,6 +52,9 @@ export const UserProfileForm = (props: ProfileParams) => {
44
52
  },
45
53
  iconStyle: {
46
54
  fontSize: 24
55
+ },
56
+ removeAccount: {
57
+ flexDirection: 'row'
47
58
  }
48
59
  });
49
60
 
@@ -78,13 +89,31 @@ export const UserProfileForm = (props: ProfileParams) => {
78
89
  },
79
90
  chevronUp: {
80
91
  display: 'none'
81
- }
92
+ },
82
93
  })
83
94
 
84
95
  const onRedirect = (route: string, params?: any) => {
85
96
  navigation.navigate(route, params)
86
97
  }
87
98
 
99
+ const onRemoveAccount = () => {
100
+ setConfirm({
101
+ open: true,
102
+ content: [t('QUESTION_REMOVE_ACCOUNT', 'Are you sure that you want to remove your account?')],
103
+ title: t('ACCOUNT_ALERT', 'Account alert'),
104
+ handleOnAccept: () => {
105
+ setConfirm({ ...confirm, open: false })
106
+ handleRemoveAccount && handleRemoveAccount(user?.id)
107
+ }
108
+ })
109
+ }
110
+
111
+ useEffect(() => {
112
+ if (removeAccountState?.result === 'OK') {
113
+ logout()
114
+ }
115
+ }, [removeAccountState])
116
+
88
117
  return (
89
118
  <Container>
90
119
  <View>
@@ -134,7 +163,35 @@ export const UserProfileForm = (props: ProfileParams) => {
134
163
  <LanguageSelector pickerStyle={_pickerStyle} />
135
164
  </LanguageContainer>
136
165
  <LogoutButton />
166
+ <RemoveAccountContainer>
167
+ <TouchableOpacity
168
+ disabled={isAdmin}
169
+ style={styles.removeAccount}
170
+ onPress={() => onRemoveAccount()}
171
+ activeOpacity={0.7}
172
+ >
173
+ <OIcon src={theme.images.general.user} width={20} color={theme.colors.black} style={{ marginEnd: 14 }} />
174
+ <OText size={14} weight={'400'} style={{ opacity: isAdmin ? 0.5 : 1, top: 1 }} color={theme.colors.red}>{t('REMOVE_ACCOUNT', 'Remove account')}</OText>
175
+ </TouchableOpacity>
176
+ </RemoveAccountContainer>
137
177
  </View>
178
+ <OAlert
179
+ open={confirm.open}
180
+ title={confirm.title}
181
+ content={confirm.content}
182
+ onAccept={confirm.handleOnAccept}
183
+ onCancel={() => setConfirm({ ...confirm, open: false, title: null })}
184
+ onClose={() => setConfirm({ ...confirm, open: false, title: null })}
185
+ />
138
186
  </Container>
139
187
  );
140
188
  };
189
+
190
+ export const UserProfileForm = (props: any) => {
191
+ const profileProps = {
192
+ ...props,
193
+ UIComponent: UserProfileFormUI,
194
+ useSessionUser: true
195
+ };
196
+ return <UserProfileController {...profileProps} />;
197
+ };
@@ -35,3 +35,11 @@ export const LanguageContainer = styled.View`
35
35
  align-items: center;
36
36
  margin-bottom: 10px;
37
37
  `
38
+
39
+ export const RemoveAccountContainer = styled.View`
40
+ flex-direction: row;
41
+ justify-content: flex-start;
42
+ align-items: center;
43
+ margin-bottom: 10px;
44
+ margin-top: 15px;
45
+ `
@@ -2,7 +2,7 @@ import styled from 'styled-components/native';
2
2
 
3
3
  export const Container = styled.View`
4
4
  width: 100%;
5
- padding: 0 43px;
5
+ padding: 0 30px;
6
6
  `
7
7
 
8
8
  export const CountDownContainer = styled.View`
@@ -20,7 +20,6 @@ export const ResendSection = styled.View`
20
20
  display: flex;
21
21
  flex-direction: row;
22
22
  justify-content: center;
23
- flex-wrap: wrap;
24
23
  `
25
24
 
26
25
  export const WrappCountdown = styled.View`
@@ -4,14 +4,18 @@ const deviceHeight = Dimensions.get('window').height
4
4
 
5
5
  interface Props {
6
6
  open: boolean;
7
+ containerStyle: any;
7
8
  title?: string;
9
+ titleStyle?: any;
8
10
  children?: any;
9
11
  onClose?: any;
10
12
  }
11
13
  const OBottomPopup = (props: Props) => {
12
14
  const {
13
15
  open,
16
+ containerStyle,
14
17
  title,
18
+ titleStyle,
15
19
  onClose,
16
20
  children
17
21
  } = props
@@ -29,9 +33,9 @@ const OBottomPopup = (props: Props) => {
29
33
  >
30
34
  <View style={styles.touchableOutsideStyle} />
31
35
  </TouchableWithoutFeedback>
32
- <View style={styles.bottomContainer}>
36
+ <View style={{ ...styles.bottomContainer, ...containerStyle }}>
33
37
  <View>
34
- <Text style={styles.titleStyle}>
38
+ <Text style={{ ...styles.titleStyle, ...titleStyle }}>
35
39
  {title}
36
40
  </Text>
37
41
  {children}
@@ -78,7 +78,7 @@ const OModal = (props: Props): React.ReactElement => {
78
78
  animationType="slide"
79
79
  transparent={isTransparent}
80
80
  visible={open}
81
- onRequestClose={() => { onClose() }}
81
+ onRequestClose={() => { onClose && onClose() }}
82
82
  style={{ height: '100%', flex: 1, position: 'absolute', ...style, zIndex: 9999 }}
83
83
  >
84
84
  {isAvoidKeyBoardView ? (
package/src/index.tsx CHANGED
@@ -36,6 +36,7 @@ import { LogoutButton } from './components/LogoutButton';
36
36
  import { Messages } from './components/Messages';
37
37
  import { MomentOption } from './components/MomentOption';
38
38
  import NavBar from './components/NavBar';
39
+ import { NotificationSetting } from './components/NotificationSetting'
39
40
  import { NotFoundSource } from './components/NotFoundSource';
40
41
  import { OrderCreating } from './components/OrderCreating';
41
42
  import { OrderDetails } from './components/OrderDetails';
@@ -136,6 +137,7 @@ export {
136
137
  Messages,
137
138
  MomentOption,
138
139
  NavBar,
140
+ NotificationSetting,
139
141
  NotFoundSource,
140
142
  OrderCreating,
141
143
  OrderDetails,
@@ -6,6 +6,7 @@ import AddressForm from '../pages/AddressForm'
6
6
  import CartList from '../pages/CartList'
7
7
  import CheckoutPage from '../pages/Checkout';
8
8
  import BusinessProductsList from '../pages/BusinessProductsList';
9
+ import MultiCheckout from '../pages/MultiCheckout';
9
10
 
10
11
  const Stack = createStackNavigator();
11
12
 
@@ -53,6 +54,11 @@ const CheckoutNavigator = (props: any) => {
53
54
  component={AddressForm}
54
55
  options={{ headerShown: false }}
55
56
  />
57
+ <Stack.Screen
58
+ name="MultiCheckout"
59
+ children={() => <MultiCheckout {...checkoutProps} />}
60
+ options={{ headerShown: false }}
61
+ />
56
62
  </Stack.Navigator>
57
63
  );
58
64
  }
@@ -23,6 +23,7 @@ import HelpAccountAndPayment from '../pages/HelpAccountAndPayment'
23
23
  import Sessions from '../pages/Sessions';
24
24
  import Splash from '../pages/Splash';
25
25
  import ProductDetails from '../pages/ProductDetails';
26
+ import MultiOrdersDetails from '../pages/MultiOrdersDetails';
26
27
  const Stack = createStackNavigator();
27
28
 
28
29
  const HomeNavigator = (e : any) => {
@@ -170,6 +171,11 @@ const HomeNavigator = (e : any) => {
170
171
  component={Sessions}
171
172
  options={{ headerShown: false }}
172
173
  />
174
+ <Stack.Screen
175
+ name="MultiOrdersDetails"
176
+ component={MultiOrdersDetails}
177
+ options={{ headerShown: false }}
178
+ />
173
179
  </>
174
180
  )}
175
181
  </>
@@ -1,24 +1,25 @@
1
- import React, {useEffect} from 'react'
1
+ import React, { useEffect } from 'react'
2
2
  import { BusinessesListing as BusinessListingController } from '../components/BusinessesListing'
3
3
  import styled from 'styled-components/native'
4
4
  import { useTheme } from 'styled-components/native'
5
5
 
6
6
  const BusinessesListing = (props: any) => {
7
7
  const theme = useTheme()
8
- const businessId = props.route.params?.businessId
8
+ const businessId = props.route.params?.businessId
9
9
  const categoryId = props.route.params?.categoryId
10
- const productId = props.route.params?.productId
11
- const store = props.route.params?.store
10
+ const productId = props.route.params?.productId
11
+ const store = props.route.params?.store
12
12
 
13
13
  useEffect(() => {
14
- if(store){
15
- props.navigation.navigate('Business', {store,businessId,categoryId,productId})
14
+ if (store) {
15
+ props.navigation.navigate('Business', { store, businessId, categoryId, productId })
16
16
  return
17
17
  }
18
18
  }, [businessId, categoryId, productId, store])
19
19
 
20
20
  const BusinessesListingProps = {
21
21
  ...props,
22
+ navigation: props?.navigation,
22
23
  isSearchByName: true,
23
24
  isSearchByDescription: true,
24
25
  propsToFetch: ['id', 'name', 'header', 'logo', 'ribbon', 'location', 'schedule', 'open', 'delivery_price', 'distance', 'delivery_time', 'pickup_time', 'reviews', 'featured', 'offers', 'food', 'laundry', 'alcohol', 'groceries', 'slug'],
@@ -0,0 +1,31 @@
1
+ import React from 'react'
2
+ import { Platform, KeyboardAvoidingView, StyleSheet } from 'react-native'
3
+ import { MultiCheckout as MultiCheckoutController } from '../../themes/original/src/components/MultiCheckout'
4
+
5
+ const MultiCheckout = (props: any) => {
6
+ const multiCheckoutProps = {
7
+ ...props,
8
+ onPlaceOrderClick: (orderUuids: any) => {
9
+ props.navigation.navigate('MultiOrdersDetails', { orderUuids: orderUuids, isFromMultiCheckout: true })
10
+ }
11
+ }
12
+
13
+ return (
14
+ <KeyboardAvoidingView
15
+ enabled
16
+ behavior={Platform.OS === 'ios' ? 'padding' : 'height'}
17
+ style={styles.container}
18
+ >
19
+ <MultiCheckoutController {...multiCheckoutProps} />
20
+ </KeyboardAvoidingView>
21
+ )
22
+ }
23
+
24
+ const styles = StyleSheet.create({
25
+ container: {
26
+ flexGrow: 1,
27
+ paddingBottom: 70,
28
+ },
29
+ });
30
+
31
+ export default MultiCheckout
@@ -0,0 +1,27 @@
1
+ import React from 'react'
2
+ import { Platform } from 'react-native'
3
+ import { MultiOrdersDetails as MultiOrdersDetailsController } from '../../themes/original/src/components/MultiOrdersDetails'
4
+ import styled from 'styled-components/native';
5
+
6
+ const SafeAreaContainer = styled.SafeAreaView`
7
+ flex: 1;
8
+ background-color: ${(props: any) => props.theme.colors.backgroundPage};
9
+ padding-top: ${Platform.OS === 'ios' ? '0px' : '24px'};
10
+ `;
11
+
12
+ const MultiOrdersDetails = ({ navigation, route }: any) => {
13
+ const multiOrdersDetailsProps = {
14
+ navigation,
15
+ orderUuids: route.params?.orderUuids || [],
16
+ isFromMultiCheckout: route.params?.isFromMultiCheckout,
17
+ onRedirectPage: () => navigation.navigate('BusinessList')
18
+ }
19
+
20
+ return (
21
+ <SafeAreaContainer>
22
+ <MultiOrdersDetailsController {...multiOrdersDetailsProps} />
23
+ </SafeAreaContainer>
24
+ )
25
+ }
26
+
27
+ export default MultiOrdersDetails
@@ -2,7 +2,7 @@ import React from 'react'
2
2
  import { OrderDetails as OrderDetailsController } from '../components/OrderDetails'
3
3
  import { SafeAreaContainer } from '../layouts/SafeAreaContainer'
4
4
 
5
- const OrderDetails = ({ navigation, route } : any) => {
5
+ const OrderDetails = ({ navigation, route }: any) => {
6
6
  const orderDetailsProps = {
7
7
  navigation,
8
8
  orderId: route.params?.orderId,
@@ -1,14 +1,14 @@
1
1
  import React from 'react'
2
2
  import { Platform } from 'react-native';
3
3
  import styled from 'styled-components/native';
4
- import {ReviewDriver as ReviewDriverController} from '../components/ReviewDriver'
4
+ import { ReviewDriver as ReviewDriverController } from '../components/ReviewDriver'
5
5
  import { SafeAreaContainer } from '../layouts/SafeAreaContainer';
6
6
 
7
7
  const KeyboardView = styled.KeyboardAvoidingView`
8
8
  flex: 1;
9
9
  `;
10
10
 
11
- const ReviewDriver = ({navigation, route} : any) => {
11
+ const ReviewDriver = ({ navigation, route }: any) => {
12
12
  const reviewDriverProps = {
13
13
  navigation,
14
14
  order: route?.params?.order,
@@ -1,14 +1,14 @@
1
1
  import React from 'react'
2
2
  import { Platform } from 'react-native';
3
3
  import styled from 'styled-components/native';
4
- import {ReviewOrder as ReviewOrderController} from '../components/ReviewOrder'
4
+ import { ReviewOrder as ReviewOrderController } from '../components/ReviewOrder'
5
5
  import { SafeAreaContainer } from '../layouts/SafeAreaContainer';
6
6
 
7
7
  const KeyboardView = styled.KeyboardAvoidingView`
8
8
  flex: 1;
9
9
  `;
10
10
 
11
- const ReviewOrder = ({navigation, route} : any) => {
11
+ const ReviewOrder = ({ navigation, route }: any) => {
12
12
  const reviewOrderProps = {
13
13
  navigation,
14
14
  order: route?.params?.order,
package/src/theme.json CHANGED
@@ -19,7 +19,6 @@
19
19
  "backgroundPage": "#FFFFFF",
20
20
  "colorPage": "#333",
21
21
  "red": "#D83520",
22
- "skyBlue": "#1977F2",
23
22
  "white": "#fff",
24
23
  "whiteGray": "#f7f6f3",
25
24
  "dusk": "rgb(65,77,107)",
@@ -0,0 +1 @@
1
+ declare module '@fatnlazycat/react-native-recaptcha-v3'
@@ -17,6 +17,8 @@ export interface LoginParams {
17
17
  handleSendVerifyCode?: any;
18
18
  handleCheckPhoneCode?: any;
19
19
  notificationState?: any;
20
+ handleReCaptcha?: (token: string) => void;
21
+ enableReCaptcha?: any;
20
22
  }
21
23
  export interface ProfileParams {
22
24
  navigation?: any;
@@ -31,6 +33,8 @@ export interface ProfileParams {
31
33
  validationFields?: any;
32
34
  showField?: any;
33
35
  isRequiredField?: any;
36
+ handleRemoveAccount?: any,
37
+ removeAccountState?: any
34
38
  }
35
39
 
36
40
  export interface AddressListParams {
@@ -97,6 +101,8 @@ export interface SignupParams {
97
101
  handleSendVerifyCode?: any;
98
102
  handleCheckPhoneCode?: any;
99
103
  notificationState?: any;
104
+ enableReCaptcha?: boolean;
105
+ handleReCaptcha?: (token: string) => void;
100
106
  }
101
107
 
102
108
  export interface PhoneInputParams {
@@ -143,8 +149,9 @@ export interface BusinessControllerParams {
143
149
  orderType?: any;
144
150
  handleClick?: any;
145
151
  isBusinessOpen?: boolean;
146
- businessWillCloseSoonMinutes?: number
147
- isBusinessClose?: number
152
+ businessWillCloseSoonMinutes?: number;
153
+ isBusinessClose?: number;
154
+ getBusinessOffer: any;
148
155
  }
149
156
  export interface BusinessProductsListingParams {
150
157
  navigation?: any;
@@ -245,8 +252,8 @@ export interface OrdersOptionParams {
245
252
  navigation?: any,
246
253
  loadOrders?: any,
247
254
  setOrderList?: any,
248
- setOrdersLength?: ({activeOrdersLength, previousOrdersLength} : {activeOrdersLength: number, previousOrdersLength: number}) => void,
249
- ordersLength: {activeOrdersLength: number, previousOrdersLength: number}
255
+ setOrdersLength?: ({ activeOrdersLength, previousOrdersLength }: { activeOrdersLength: number, previousOrdersLength: number }) => void,
256
+ ordersLength: { activeOrdersLength: number, previousOrdersLength: number }
250
257
  }
251
258
  export interface ActiveOrdersParams {
252
259
  orders?: any,
@@ -344,7 +351,7 @@ export interface MessagesParams {
344
351
  messages?: any,
345
352
  message?: string,
346
353
  image?: string,
347
- messagesToShow?: any ,
354
+ messagesToShow?: any,
348
355
  sendMessage?: any,
349
356
  handleSend?: () => {},
350
357
  setImage?: (image: string | null) => {},
@@ -413,7 +420,7 @@ export interface UpsellingProductsParams {
413
420
  setOpenUpselling?: any;
414
421
  onRedirect?: any;
415
422
  businessId?: number;
416
- cartProducts?: Array<any>;
423
+ cartProducts?: Array<any>;
417
424
  handleUpsellingPage: () => void;
418
425
  openUpselling: boolean;
419
426
  canOpenUpselling?: boolean;
@@ -421,16 +428,16 @@ export interface UpsellingProductsParams {
421
428
  }
422
429
 
423
430
  export interface GoogleMapsParams {
424
- location: {lat: number, lng: number}
425
- handleChangeAddressMap?: (address : any, details : any) => void
426
- setErrors?: (error : string) => void
431
+ location: { lat: number, lng: number }
432
+ handleChangeAddressMap?: (address: any, details: any) => void
433
+ setErrors?: (error: string) => void
427
434
  maxLimitLocation?: number
428
435
  readOnly?: boolean
429
436
  markerTitle?: string,
430
437
  saveLocation?: boolean,
431
438
  isSetInputs?: boolean,
432
439
  locations?: Array<any>,
433
- setSaveLocation?: (val : boolean) => void,
440
+ setSaveLocation?: (val: boolean) => void,
434
441
  handleToggleMap?: () => void
435
442
  }
436
443
 
@@ -478,7 +485,7 @@ export interface HelpAccountAndPaymentParams {
478
485
 
479
486
  export interface StripeMethodFormParams {
480
487
  cart: any;
481
- handleSource: ({id, card} : {id : string, card : any}) => void;
488
+ handleSource: ({ id, card }: { id: string, card: any }) => void;
482
489
  onCancel: () => void;
483
490
  setErrors: (error: string) => void;
484
491
  paymethod: string;