ordering-ui-react-native 0.15.71 → 0.15.72-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 (220) hide show
  1. package/package.json +7 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/index.tsx +61 -63
  4. package/src/components/ActiveOrders/styles.tsx +1 -1
  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 +25 -3
  12. package/src/components/DriverTips/index.tsx +11 -6
  13. package/src/components/LanguageSelector/index.tsx +6 -2
  14. package/src/components/LoginForm/index.tsx +120 -30
  15. package/src/components/LoginForm/styles.tsx +6 -0
  16. package/src/components/NotificationSetting/index.tsx +85 -0
  17. package/src/components/OrderDetails/index.tsx +7 -21
  18. package/src/components/PaymentOptions/index.tsx +335 -365
  19. package/src/components/PaymentOptionsWebView/index.tsx +120 -121
  20. package/src/components/ReviewDriver/index.tsx +1 -1
  21. package/src/components/ReviewOrder/index.tsx +2 -1
  22. package/src/components/ReviewProducts/index.tsx +11 -0
  23. package/src/components/SignupForm/index.tsx +145 -61
  24. package/src/components/SingleProductCard/index.tsx +16 -4
  25. package/src/components/SingleProductReview/index.tsx +1 -1
  26. package/src/components/StripeElementsForm/index.tsx +25 -16
  27. package/src/components/StripeMethodForm/index.tsx +22 -24
  28. package/src/components/UpsellingProducts/index.tsx +1 -1
  29. package/src/components/UserProfileForm/index.tsx +63 -6
  30. package/src/components/UserProfileForm/styles.tsx +8 -0
  31. package/src/components/VerifyPhone/styles.tsx +1 -2
  32. package/src/components/shared/OBottomPopup.tsx +6 -2
  33. package/src/components/shared/OModal.tsx +1 -1
  34. package/src/hooks/useCountdownTimer.tsx +26 -0
  35. package/src/index.tsx +2 -0
  36. package/src/navigators/CheckoutNavigator.tsx +6 -0
  37. package/src/navigators/HomeNavigator.tsx +12 -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/pages/Sessions.tsx +22 -0
  45. package/src/theme.json +0 -1
  46. package/src/types/index.tsx +18 -11
  47. package/src/utils/index.tsx +68 -2
  48. package/themes/business/index.tsx +4 -0
  49. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  50. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  51. package/themes/business/src/components/Chat/index.tsx +51 -91
  52. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  53. package/themes/business/src/components/DriverSchedule/index.tsx +71 -0
  54. package/themes/business/src/components/DriverSchedule/styles.tsx +6 -0
  55. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  56. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  57. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  58. package/themes/business/src/components/NewOrderNotification/index.tsx +26 -13
  59. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  60. package/themes/business/src/components/OrderDetails/Delivery.tsx +28 -11
  61. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +14 -7
  62. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  63. package/themes/business/src/components/OrdersListManager/index.tsx +11 -4
  64. package/themes/business/src/components/OrdersOption/index.tsx +16 -4
  65. package/themes/business/src/components/PreviousOrders/index.tsx +7 -7
  66. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  67. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  68. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  69. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  70. package/themes/business/src/components/shared/OModal.tsx +41 -38
  71. package/themes/business/src/types/index.tsx +14 -7
  72. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  73. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  74. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  75. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  76. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  77. package/themes/kiosk/src/components/Cart/index.tsx +11 -12
  78. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  79. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  80. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  81. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  82. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  83. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  84. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  85. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  86. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  87. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  88. package/themes/kiosk/src/components/OrderDetails/index.tsx +32 -27
  89. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  90. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  91. package/themes/kiosk/src/components/ProductForm/index.tsx +7 -8
  92. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  93. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  94. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  95. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  96. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  97. package/themes/kiosk/src/types/index.d.ts +1 -0
  98. package/themes/original/index.tsx +24 -0
  99. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  100. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  101. package/themes/original/src/components/AddressForm/index.tsx +7 -6
  102. package/themes/original/src/components/AddressList/index.tsx +30 -18
  103. package/themes/original/src/components/AppleLogin/index.tsx +6 -8
  104. package/themes/original/src/components/BusinessBasicInformation/index.tsx +287 -150
  105. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  106. package/themes/original/src/components/BusinessController/index.tsx +201 -96
  107. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  108. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  109. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  110. package/themes/original/src/components/BusinessListingSearch/index.tsx +231 -63
  111. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  112. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  113. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  114. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  115. package/themes/original/src/components/BusinessProductsList/index.tsx +70 -52
  116. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  117. package/themes/original/src/components/BusinessProductsListing/index.tsx +339 -153
  118. package/themes/original/src/components/BusinessProductsListing/styles.tsx +33 -0
  119. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  120. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -39
  121. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  122. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +560 -0
  123. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  124. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +671 -0
  125. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  126. package/themes/original/src/components/BusinessesListing/index.tsx +103 -458
  127. package/themes/original/src/components/Cart/index.tsx +93 -43
  128. package/themes/original/src/components/Cart/styles.tsx +4 -0
  129. package/themes/original/src/components/Checkout/index.tsx +90 -39
  130. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  131. package/themes/original/src/components/Favorite/index.tsx +92 -0
  132. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  133. package/themes/original/src/components/FavoriteList/index.tsx +298 -0
  134. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  135. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  136. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  137. package/themes/original/src/components/GoogleMap/index.tsx +11 -11
  138. package/themes/original/src/components/Help/index.tsx +21 -4
  139. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  140. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  141. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  142. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  143. package/themes/original/src/components/LoginForm/index.tsx +332 -164
  144. package/themes/original/src/components/LoginForm/styles.tsx +1 -3
  145. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  146. package/themes/original/src/components/Messages/index.tsx +1 -1
  147. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  148. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  149. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  150. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  151. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  152. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  153. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  154. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  155. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  156. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  157. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  158. package/themes/original/src/components/NavBar/index.tsx +4 -4
  159. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  160. package/themes/original/src/components/OrderDetails/index.tsx +148 -63
  161. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  162. package/themes/original/src/components/OrderItAgain/index.tsx +72 -0
  163. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  164. package/themes/original/src/components/OrderSummary/index.tsx +5 -5
  165. package/themes/original/src/components/OrderTypeSelector/index.tsx +79 -35
  166. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  167. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  168. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  169. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  170. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  171. package/themes/original/src/components/OrdersOption/index.tsx +137 -38
  172. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  173. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  174. package/themes/original/src/components/PaymentOptionWallet/index.tsx +17 -23
  175. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  176. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  177. package/themes/original/src/components/PhoneInputNumber/index.tsx +5 -11
  178. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  179. package/themes/original/src/components/ProductForm/index.tsx +719 -680
  180. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  181. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  182. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  183. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  184. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  185. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  186. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  187. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  188. package/themes/original/src/components/Promotions/index.tsx +151 -133
  189. package/themes/original/src/components/Promotions/styles.tsx +2 -1
  190. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  191. package/themes/original/src/components/ReviewOrder/index.tsx +1 -1
  192. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  193. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  194. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  195. package/themes/original/src/components/ServiceForm/index.tsx +579 -0
  196. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  197. package/themes/original/src/components/Sessions/index.tsx +160 -0
  198. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  199. package/themes/original/src/components/SignupForm/index.tsx +237 -126
  200. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  201. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  202. package/themes/original/src/components/SingleProductCard/index.tsx +214 -90
  203. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  204. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  205. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  206. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  207. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  208. package/themes/original/src/components/UserFormDetails/index.tsx +102 -66
  209. package/themes/original/src/components/UserProfile/index.tsx +10 -1
  210. package/themes/original/src/components/UserProfileForm/index.tsx +32 -25
  211. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  212. package/themes/original/src/components/Wallets/index.tsx +25 -12
  213. package/themes/original/src/components/shared/OBottomPopup.tsx +44 -13
  214. package/themes/original/src/components/shared/OButton.tsx +2 -0
  215. package/themes/original/src/components/shared/OInput.tsx +3 -2
  216. package/themes/original/src/components/shared/OModal.tsx +4 -2
  217. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  218. package/themes/original/src/types/index.tsx +203 -35
  219. package/themes/original/src/utils/index.tsx +94 -1
  220. 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 ? (
@@ -0,0 +1,26 @@
1
+ import { useEffect, useState } from 'react'
2
+
3
+ /**
4
+ * Hook for countdown seconds
5
+ * @param {int} initialCount
6
+ * @param {boolean} start
7
+ */
8
+ export function useCountdownTimer (initialCount : number, start : boolean) {
9
+ const [count, setCount] = useState(initialCount)
10
+
11
+ useEffect(() => {
12
+ if (start) {
13
+ const secondsLeft = setInterval(() => {
14
+ setCount(c => c - (c === 0 ? 0 : 1))
15
+ }, 1000)
16
+ return () => clearInterval(secondsLeft)
17
+ }
18
+ }, [start])
19
+
20
+ return [
21
+ count,
22
+ setCount,
23
+ /** reset */
24
+ () => { setCount(initialCount) }
25
+ ]
26
+ }
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
  }
@@ -20,8 +20,10 @@ import Help from '../pages/Help'
20
20
  import HelpOrder from '../pages/HelpOrder'
21
21
  import HelpGuide from '../pages/HelpGuide'
22
22
  import HelpAccountAndPayment from '../pages/HelpAccountAndPayment'
23
+ import Sessions from '../pages/Sessions';
23
24
  import Splash from '../pages/Splash';
24
25
  import ProductDetails from '../pages/ProductDetails';
26
+ import MultiOrdersDetails from '../pages/MultiOrdersDetails';
25
27
  const Stack = createStackNavigator();
26
28
 
27
29
  const HomeNavigator = (e : any) => {
@@ -164,6 +166,16 @@ const HomeNavigator = (e : any) => {
164
166
  component={HelpAccountAndPayment}
165
167
  options={{ headerShown: false }}
166
168
  />
169
+ <Stack.Screen
170
+ name="Sessions"
171
+ component={Sessions}
172
+ options={{ headerShown: false }}
173
+ />
174
+ <Stack.Screen
175
+ name="MultiOrdersDetails"
176
+ component={MultiOrdersDetails}
177
+ options={{ headerShown: false }}
178
+ />
167
179
  </>
168
180
  )}
169
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,
@@ -0,0 +1,22 @@
1
+ import React from 'react'
2
+ import { Container } from '../../themes/original/src/layouts/Container'
3
+ import { Sessions as SessionsController } from '../../themes/original/src/components/Sessions'
4
+
5
+ interface Props {
6
+ navigation: any;
7
+ route: any;
8
+ }
9
+
10
+ const Sessions = (props: Props) => {
11
+ const sessionsProps = {
12
+ ...props
13
+ }
14
+
15
+ return (
16
+ <Container>
17
+ <SessionsController {...sessionsProps} />
18
+ </Container>
19
+ )
20
+ }
21
+
22
+ export default Sessions
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)",