ordering-ui-react-native 0.16.0 → 0.16.1-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 (229) hide show
  1. package/package.json +8 -4
  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 +10 -8
  8. package/src/components/BusinessInformation/index.tsx +22 -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 +8 -5
  27. package/src/components/StripeElementsForm/index.tsx +25 -16
  28. package/src/components/StripeMethodForm/index.tsx +1 -2
  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/index.tsx +2 -0
  35. package/src/navigators/CheckoutNavigator.tsx +6 -0
  36. package/src/navigators/HomeNavigator.tsx +6 -0
  37. package/src/pages/BusinessesListing.tsx +7 -6
  38. package/src/pages/MultiCheckout.tsx +31 -0
  39. package/src/pages/MultiOrdersDetails.tsx +27 -0
  40. package/src/pages/OrderDetails.tsx +1 -1
  41. package/src/pages/ReviewDriver.tsx +2 -2
  42. package/src/pages/ReviewOrder.tsx +2 -2
  43. package/src/theme.json +0 -1
  44. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  45. package/src/types/index.tsx +15 -9
  46. package/src/utils/index.tsx +0 -1
  47. package/themes/business/index.tsx +4 -0
  48. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +1 -1
  49. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  50. package/themes/business/src/components/Chat/index.tsx +42 -34
  51. package/themes/business/src/components/DriverMap/index.tsx +12 -8
  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 +111 -74
  55. package/themes/business/src/components/MapView/index.tsx +1 -1
  56. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  57. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  58. package/themes/business/src/components/OrderDetails/Delivery.tsx +3 -3
  59. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +25 -18
  60. package/themes/business/src/components/OrdersListManager/index.tsx +10 -3
  61. package/themes/business/src/components/OrdersOption/index.tsx +65 -21
  62. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  63. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  64. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  65. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  66. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  67. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  68. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  69. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  70. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  71. package/themes/business/src/components/PreviousOrders/index.tsx +21 -23
  72. package/themes/business/src/components/ProductItemAccordion/index.tsx +5 -4
  73. package/themes/business/src/components/ReviewCustomer/index.tsx +1 -1
  74. package/themes/business/src/components/ScheduleBlocked/index.tsx +53 -0
  75. package/themes/business/src/components/UserFormDetails/index.tsx +5 -2
  76. package/themes/business/src/components/UserProfileForm/index.tsx +28 -4
  77. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  78. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  79. package/themes/business/src/components/shared/OModal.tsx +41 -38
  80. package/themes/business/src/types/index.tsx +14 -9
  81. package/themes/business/src/utils/index.tsx +10 -0
  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/CartItem/index.tsx +4 -3
  87. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +1 -0
  88. package/themes/kiosk/src/components/Checkout/index.tsx +18 -3
  89. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  90. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  91. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  92. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  93. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  94. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  95. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  96. package/themes/kiosk/src/components/OrderDetails/index.tsx +2 -2
  97. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  98. package/themes/kiosk/src/components/PaymentOptions/index.tsx +1 -1
  99. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  100. package/themes/kiosk/src/types/index.d.ts +2 -0
  101. package/themes/original/index.tsx +22 -0
  102. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  103. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  104. package/themes/original/src/components/AddressForm/index.tsx +137 -134
  105. package/themes/original/src/components/AddressList/index.tsx +2 -2
  106. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  107. package/themes/original/src/components/BusinessBasicInformation/index.tsx +302 -160
  108. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +6 -2
  109. package/themes/original/src/components/BusinessController/index.tsx +179 -96
  110. package/themes/original/src/components/BusinessController/styles.tsx +5 -0
  111. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -9
  112. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  113. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  114. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  115. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  116. package/themes/original/src/components/BusinessListingSearch/index.tsx +106 -126
  117. package/themes/original/src/components/BusinessListingSearch/styles.tsx +18 -13
  118. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  119. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  120. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  121. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  122. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  123. package/themes/original/src/components/BusinessProductsList/index.tsx +66 -73
  124. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  125. package/themes/original/src/components/BusinessProductsListing/index.tsx +289 -178
  126. package/themes/original/src/components/BusinessProductsListing/styles.tsx +18 -0
  127. package/themes/original/src/components/BusinessReviews/index.tsx +6 -1
  128. package/themes/original/src/components/BusinessTypeFilter/index.tsx +106 -38
  129. package/themes/original/src/components/BusinessTypeFilter/styles.tsx +2 -0
  130. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +561 -0
  131. package/themes/original/src/components/BusinessesListing/{styles.tsx → Layout/Appointment/styles.tsx} +24 -2
  132. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +673 -0
  133. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +137 -0
  134. package/themes/original/src/components/BusinessesListing/index.tsx +102 -464
  135. package/themes/original/src/components/Cart/index.tsx +82 -37
  136. package/themes/original/src/components/Cart/styles.tsx +4 -0
  137. package/themes/original/src/components/CartContent/index.tsx +22 -16
  138. package/themes/original/src/components/Checkout/index.tsx +107 -67
  139. package/themes/original/src/components/Checkout/styles.tsx +0 -1
  140. package/themes/original/src/components/DriverTips/index.tsx +11 -6
  141. package/themes/original/src/components/Favorite/index.tsx +92 -0
  142. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  143. package/themes/original/src/components/FavoriteList/index.tsx +317 -0
  144. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  145. package/themes/original/src/components/GPSButton/index.tsx +25 -17
  146. package/themes/original/src/components/GoogleMap/index.tsx +21 -12
  147. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +8 -3
  148. package/themes/original/src/components/HelpGuide/index.tsx +8 -3
  149. package/themes/original/src/components/HelpOrder/index.tsx +8 -3
  150. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  151. package/themes/original/src/components/LoginForm/Otp/index.tsx +3 -2
  152. package/themes/original/src/components/LoginForm/index.tsx +86 -43
  153. package/themes/original/src/components/Messages/index.tsx +17 -17
  154. package/themes/original/src/components/MomentSelector/index.tsx +197 -0
  155. package/themes/original/src/components/MomentSelector/styles.tsx +6 -0
  156. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  157. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  158. package/themes/original/src/components/MultiCheckout/index.tsx +304 -0
  159. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  160. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  161. package/themes/original/src/components/MultiOrdersDetails/index.tsx +262 -0
  162. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  163. package/themes/original/src/components/MyOrders/index.tsx +132 -27
  164. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  165. package/themes/original/src/components/NavBar/index.tsx +11 -5
  166. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  167. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +167 -0
  168. package/themes/original/src/components/OrderDetails/index.tsx +136 -57
  169. package/themes/original/src/components/OrderDetails/styles.tsx +5 -2
  170. package/themes/original/src/components/OrderItAgain/index.tsx +73 -0
  171. package/themes/original/src/components/OrderItAgain/styles.tsx +10 -0
  172. package/themes/original/src/components/OrderProgress/index.tsx +8 -2
  173. package/themes/original/src/components/OrderSummary/index.tsx +2 -35
  174. package/themes/original/src/components/OrderTypeSelector/index.tsx +84 -36
  175. package/themes/original/src/components/OrderTypeSelector/styles.tsx +19 -1
  176. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +140 -0
  177. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  178. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +56 -0
  179. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  180. package/themes/original/src/components/OrdersOption/index.tsx +143 -47
  181. package/themes/original/src/components/OrdersOption/styles.tsx +4 -1
  182. package/themes/original/src/components/PaymentOptionWallet/index.tsx +15 -23
  183. package/themes/original/src/components/PaymentOptions/index.tsx +57 -37
  184. package/themes/original/src/components/PhoneInputNumber/index.tsx +4 -10
  185. package/themes/original/src/components/PlaceSpot/index.tsx +243 -47
  186. package/themes/original/src/components/PlaceSpot/styles.tsx +0 -2
  187. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  188. package/themes/original/src/components/ProductForm/index.tsx +697 -649
  189. package/themes/original/src/components/ProductForm/styles.tsx +9 -7
  190. package/themes/original/src/components/ProductItemAccordion/index.tsx +38 -25
  191. package/themes/original/src/components/ProductOption/index.tsx +1 -1
  192. package/themes/original/src/components/ProfessionalFilter/index.tsx +128 -0
  193. package/themes/original/src/components/ProfessionalFilter/styles.tsx +0 -0
  194. package/themes/original/src/components/ProfessionalProfile/index.tsx +298 -0
  195. package/themes/original/src/components/ProfessionalProfile/styles.tsx +46 -0
  196. package/themes/original/src/components/ReviewDriver/index.tsx +6 -6
  197. package/themes/original/src/components/ReviewOrder/index.tsx +18 -3
  198. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  199. package/themes/original/src/components/ReviewTrigger/index.tsx +118 -0
  200. package/themes/original/src/components/ReviewTrigger/styles.tsx +34 -0
  201. package/themes/original/src/components/SearchBar/index.tsx +13 -5
  202. package/themes/original/src/components/ServiceForm/index.tsx +608 -0
  203. package/themes/original/src/components/ServiceForm/styles.tsx +50 -0
  204. package/themes/original/src/components/SignupForm/index.tsx +307 -159
  205. package/themes/original/src/components/SingleOrderCard/index.tsx +316 -0
  206. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  207. package/themes/original/src/components/SingleProductCard/index.tsx +215 -95
  208. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -2
  209. package/themes/original/src/components/SingleProductReview/index.tsx +30 -3
  210. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  211. package/themes/original/src/components/StripeElementsForm/index.tsx +25 -9
  212. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  213. package/themes/original/src/components/UpsellingProducts/index.tsx +7 -3
  214. package/themes/original/src/components/UserDetails/index.tsx +32 -18
  215. package/themes/original/src/components/UserFormDetails/index.tsx +107 -73
  216. package/themes/original/src/components/UserProfile/index.tsx +4 -0
  217. package/themes/original/src/components/UserProfileForm/index.tsx +15 -10
  218. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  219. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  220. package/themes/original/src/components/Wallets/index.tsx +176 -162
  221. package/themes/original/src/components/Wallets/styles.tsx +10 -8
  222. package/themes/original/src/components/shared/OBottomPopup.tsx +47 -14
  223. package/themes/original/src/components/shared/OButton.tsx +10 -3
  224. package/themes/original/src/components/shared/OInput.tsx +3 -2
  225. package/themes/original/src/components/shared/OModal.tsx +4 -2
  226. package/themes/original/src/layouts/FloatingBottomContainer.tsx +5 -1
  227. package/themes/original/src/types/index.tsx +200 -47
  228. package/themes/original/src/utils/index.tsx +77 -0
  229. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -20,7 +20,10 @@ const HighestRatedBusinessesUI = (props: HighestRatedBusinessesParams) => {
20
20
  onBusinessClick,
21
21
  navigation,
22
22
  isLoading,
23
- getBusinesses
23
+ getBusinesses,
24
+ favoriteIds,
25
+ setFavoriteIds,
26
+ handleUpdateBusinessList
24
27
  } = props;
25
28
 
26
29
  const [, t] = useLanguage()
@@ -33,6 +36,17 @@ const HighestRatedBusinessesUI = (props: HighestRatedBusinessesParams) => {
33
36
  getBusinesses(true)
34
37
  }, [isLoading])
35
38
 
39
+ useEffect(() => {
40
+ if (!businessesList?.businesses?.length) return
41
+ const ids = [...favoriteIds]
42
+ businessesList.businesses.forEach(business => {
43
+ if (business?.favorite) {
44
+ ids.push(business.id)
45
+ }
46
+ })
47
+ setFavoriteIds([...new Set(ids)])
48
+ }, [businessesList?.businesses?.length])
49
+
36
50
  return (
37
51
  <>
38
52
 
@@ -123,6 +137,9 @@ const HighestRatedBusinessesUI = (props: HighestRatedBusinessesParams) => {
123
137
  handleCustomClick={onBusinessClick}
124
138
  orderType={orderState?.options?.type}
125
139
  navigation={navigation}
140
+ favoriteIds={favoriteIds}
141
+ setFavoriteIds={setFavoriteIds}
142
+ handleUpdateBusinessList={handleUpdateBusinessList}
126
143
  />
127
144
  </View>
128
145
  )
@@ -15,7 +15,8 @@ export const Otp = (props: otpParams) => {
15
15
  setWillVerifyOtpState,
16
16
  onSubmit,
17
17
  handleLoginOtp,
18
- setAlertState
18
+ setAlertState,
19
+ pinCount
19
20
  } = props
20
21
 
21
22
  const theme = useTheme();
@@ -65,7 +66,7 @@ export const Otp = (props: otpParams) => {
65
66
  </OText>
66
67
  <OTPInputView
67
68
  style={{ width: '100%', height: 150 }}
68
- pinCount={6}
69
+ pinCount={pinCount || 6}
69
70
  codeInputFieldStyle={loginStyle.underlineStyleBase}
70
71
  codeInputHighlightStyle={loginStyle.underlineStyleHighLighted}
71
72
  onCodeFilled={(code: string) => handleLoginOtp(code)}
@@ -5,6 +5,7 @@ import { useForm, Controller } from 'react-hook-form';
5
5
  import { PhoneInputNumber } from '../PhoneInputNumber';
6
6
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
7
7
  import Recaptcha from 'react-native-recaptcha-that-works'
8
+ import ReCaptcha from '@fatnlazycat/react-native-recaptcha-v3'
8
9
 
9
10
  import {
10
11
  LoginForm as LoginFormController,
@@ -99,6 +100,11 @@ const LoginFormUI = (props: LoginParams) => {
99
100
  const theme = useTheme();
100
101
  const isOtpEmail = loginTab === 'otp' && otpType === 'email'
101
102
  const isOtpCellphone = loginTab === 'otp' && otpType === 'cellphone'
103
+
104
+ const googleLoginEnabled = configs?.google_login_enabled?.value === '1' || !configs?.google_login_enabled?.enabled
105
+ const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1' || !configs?.facebook_login_enabled?.enabled
106
+ const appleLoginEnabled = configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled
107
+
102
108
  const loginStyle = StyleSheet.create({
103
109
  btnOutline: {
104
110
  backgroundColor: '#FFF',
@@ -230,7 +236,7 @@ const LoginFormUI = (props: LoginParams) => {
230
236
 
231
237
  const onRecaptchaVerify = (token: any) => {
232
238
  setRecaptchaVerified(true)
233
- handleReCaptcha(token)
239
+ handleReCaptcha({ code: token, version: recaptchaConfig?.version })
234
240
  }
235
241
 
236
242
  const handleChangeOtpType = (type: string) => {
@@ -251,7 +257,7 @@ const LoginFormUI = (props: LoginParams) => {
251
257
  })
252
258
  }
253
259
 
254
- const handleCategoryScroll = (opc : string) => {
260
+ const handleCategoryScroll = (opc: string) => {
255
261
  tabsRef.current.scrollTo({
256
262
  x: tabLayouts?.[opc]?.x - 40,
257
263
  animated: true
@@ -267,15 +273,39 @@ const LoginFormUI = (props: LoginParams) => {
267
273
 
268
274
  useEffect(() => {
269
275
  if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
270
- setRecaptchaConfig({
271
- siteKey: configs?.security_recaptcha_site_key?.value || null,
272
- baseUrl: configs?.security_recaptcha_base_url?.value || null
273
- })
276
+ if (configs?.security_recaptcha_type?.value === 'v3' &&
277
+ configs?.security_recaptcha_score_v3?.value > 0 &&
278
+ configs?.security_recaptcha_site_key_v3?.value
279
+ ) {
280
+ setRecaptchaConfig({
281
+ version: 'v3',
282
+ siteKey: configs?.security_recaptcha_site_key_v3?.value || null,
283
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
284
+ })
285
+ return
286
+ }
287
+ if (configs?.security_recaptcha_site_key?.value) {
288
+ setRecaptchaConfig({
289
+ version: 'v2',
290
+ siteKey: configs?.security_recaptcha_site_key?.value || null,
291
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
292
+ })
293
+ }
274
294
  }
275
295
  }, [configs, enableReCaptcha])
276
296
 
277
297
  useEffect(() => {
278
298
  if (!formState.loading && formState.result?.error) {
299
+ if (formState.result?.result?.[0] === 'ERROR_AUTH_VERIFICATION_CODE') {
300
+ setRecaptchaVerified(false)
301
+ setRecaptchaConfig({
302
+ version: 'v2',
303
+ siteKey: configs?.security_recaptcha_site_key?.value || null,
304
+ baseUrl: configs?.security_recaptcha_base_url?.value || null
305
+ })
306
+ showToast(ToastType.Info, t('TRY_AGAIN', 'Please try again'))
307
+ return
308
+ }
279
309
  formState.result?.result &&
280
310
  showToast(
281
311
  ToastType.Error,
@@ -346,15 +376,15 @@ const LoginFormUI = (props: LoginParams) => {
346
376
  titleStyle={{ marginRight: 0, marginLeft: 0 }}
347
377
  />
348
378
  <FormSide>
349
- {((useLoginByEmail && useLoginByCellphone) || useLoginOtp) && (
379
+ {(Number(useLoginByEmail) + Number(useLoginByCellphone) + Number(useLoginOtpEmail) + Number(useLoginOtpCellphone) > 1) && (
350
380
  <LoginWith>
351
381
  <OTabs
352
- horizontal
382
+ horizontal
353
383
  showsHorizontalScrollIndicator={false}
354
384
  ref={tabsRef}
355
385
  >
356
386
  {useLoginByEmail && (
357
- <TabBtn
387
+ <TabBtn
358
388
  onPress={() => handleChangeTab('email')}
359
389
  onLayout={(event: any) => handleOnLayout(event, 'email')}
360
390
  >
@@ -379,7 +409,7 @@ const LoginFormUI = (props: LoginParams) => {
379
409
  </TabBtn>
380
410
  )}
381
411
  {useLoginByCellphone && (
382
- <TabBtn
412
+ <TabBtn
383
413
  onPress={() => handleChangeTab('cellphone')}
384
414
  onLayout={(event: any) => handleOnLayout(event, 'cellphone')}
385
415
  >
@@ -404,7 +434,7 @@ const LoginFormUI = (props: LoginParams) => {
404
434
  </TabBtn>
405
435
  )}
406
436
  {useLoginOtpEmail && (
407
- <TabBtn
437
+ <TabBtn
408
438
  onPress={() => handleChangeOtpType('email')}
409
439
  onLayout={(event: any) => handleOnLayout(event, 'otp_email')}
410
440
  >
@@ -429,7 +459,7 @@ const LoginFormUI = (props: LoginParams) => {
429
459
  </TabBtn>
430
460
  )}
431
461
  {useLoginOtpCellphone && (
432
- <TabBtn
462
+ <TabBtn
433
463
  onPress={() => handleChangeOtpType('cellphone')}
434
464
  onLayout={(event: any) => handleOnLayout(event, 'otp_cellphone')}
435
465
  >
@@ -591,35 +621,47 @@ const LoginFormUI = (props: LoginParams) => {
591
621
  </TouchableOpacity>
592
622
  )}
593
623
 
594
- {enableReCaptcha && (
624
+ {(enableReCaptcha && recaptchaConfig?.version) && (
595
625
  <>
596
- <TouchableOpacity
597
- onPress={handleOpenRecaptcha}
598
- >
599
- <RecaptchaButton>
600
- {recaptchaVerified ? (
601
- <MaterialCommunityIcons
602
- name="checkbox-marked"
603
- size={26}
604
- color={theme.colors.primary}
605
- />
606
- ) : (
607
- <MaterialCommunityIcons
608
- name="checkbox-blank-outline"
609
- size={26}
610
- color={theme.colors.mediumGray}
611
- />
612
- )}
613
- <OText size={14} mLeft={8}>{t('VERIFY_ReCAPTCHA', 'Verify reCAPTCHA')}</OText>
614
- </RecaptchaButton>
615
- </TouchableOpacity>
616
- <Recaptcha
617
- ref={recaptchaRef}
618
- siteKey={recaptchaConfig?.siteKey}
619
- baseUrl={recaptchaConfig?.baseUrl}
620
- onVerify={onRecaptchaVerify}
621
- onExpire={() => setRecaptchaVerified(false)}
622
- />
626
+ {recaptchaConfig?.version === 'v3' ? (
627
+ <ReCaptcha
628
+ url={recaptchaConfig?.baseUrl}
629
+ siteKey={recaptchaConfig?.siteKey}
630
+ containerStyle={{ height: 40 }}
631
+ onExecute={onRecaptchaVerify}
632
+ reCaptchaType={1}
633
+ />
634
+ ) : (
635
+ <>
636
+ <TouchableOpacity
637
+ onPress={handleOpenRecaptcha}
638
+ >
639
+ <RecaptchaButton>
640
+ {recaptchaVerified ? (
641
+ <MaterialCommunityIcons
642
+ name="checkbox-marked"
643
+ size={26}
644
+ color={theme.colors.primary}
645
+ />
646
+ ) : (
647
+ <MaterialCommunityIcons
648
+ name="checkbox-blank-outline"
649
+ size={26}
650
+ color={theme.colors.mediumGray}
651
+ />
652
+ )}
653
+ <OText size={14} mLeft={8}>{t('VERIFY_ReCAPTCHA', 'Verify reCAPTCHA')}</OText>
654
+ </RecaptchaButton>
655
+ </TouchableOpacity>
656
+ <Recaptcha
657
+ ref={recaptchaRef}
658
+ siteKey={recaptchaConfig?.siteKey}
659
+ baseUrl={recaptchaConfig?.baseUrl}
660
+ onVerify={onRecaptchaVerify}
661
+ onExpire={() => setRecaptchaVerified(false)}
662
+ />
663
+ </>)
664
+ }
623
665
  </>
624
666
  )}
625
667
  <OButton
@@ -702,7 +744,8 @@ const LoginFormUI = (props: LoginParams) => {
702
744
  <ButtonsWrapper>
703
745
  <SocialButtons>
704
746
  {(configs?.facebook_login?.value === 'true' || configs?.facebook_login?.value === '1') &&
705
- configs?.facebook_id?.value && (
747
+ configs?.facebook_id?.value &&
748
+ facebookLoginEnabled && (
706
749
  <FacebookLogin
707
750
  notificationState={notificationState}
708
751
  handleErrors={(err: any) => showToast(ToastType.Error, err)}
@@ -710,7 +753,7 @@ const LoginFormUI = (props: LoginParams) => {
710
753
  handleSuccessFacebookLogin={handleSuccessFacebook}
711
754
  />
712
755
  )}
713
- {(configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && (
756
+ {(configs?.google_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && googleLoginEnabled && (
714
757
  <GoogleLogin
715
758
  notificationState={notificationState}
716
759
  webClientId={configs?.google_login_client_id?.value}
@@ -719,7 +762,7 @@ const LoginFormUI = (props: LoginParams) => {
719
762
  handleSuccessGoogleLogin={handleSuccessFacebook}
720
763
  />
721
764
  )}
722
- {(configs?.apple_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && (
765
+ {(configs?.apple_login_client_id?.value !== '' && configs?.google_login_client_id?.value !== null) && appleLoginEnabled && (
723
766
  <AppleLogin
724
767
  notificationState={notificationState}
725
768
  handleErrors={(err: any) => showToast(ToastType.Error, err)}
@@ -5,6 +5,7 @@ import { launchImageLibrary } from 'react-native-image-picker'
5
5
  import { GiftedChat, Actions, ActionsProps, InputToolbar, Composer, Send, Bubble, MessageImage, InputToolbarProps, ComposerProps } from 'react-native-gifted-chat'
6
6
  import { USER_TYPE } from '../../config/constants'
7
7
  import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
8
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
8
9
  import { OIcon, OIconButton, OText, OButton } from '../shared'
9
10
  import { TouchableOpacity, ActivityIndicator, StyleSheet, View, Platform, Keyboard } from 'react-native'
10
11
  import { Header, TitleHeader, Wrapper, QuickMessageContainer, ProfileMessageHeader, MessageTypeItem } from './styles'
@@ -36,7 +37,7 @@ const ORDER_STATUS: any = {
36
37
  20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
37
38
  21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
38
39
  22: 'ORDER_LOOKING_FOR_DRIVER',
39
- 23: 'ORDER_DRIVER_ON_WAY'
40
+ 23: 'ORDER_DRIVER_ON_WAY'
40
41
  }
41
42
 
42
43
  const filterSpecialStatus = ['prepared_in', 'delivered_in', 'delivery_datetime']
@@ -122,18 +123,17 @@ const MessagesUI = (props: MessagesParams) => {
122
123
 
123
124
  const messageConsole = (message: any) => {
124
125
  return message.change?.attribute !== 'driver_id'
125
- ?
126
- `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${
127
- filterSpecialStatus.includes(message.change.attribute) ?
128
- `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
129
- `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
130
- }`
131
- : message.change.new
132
126
  ?
133
- `${message.driver?.name} ${message.driver?.lastname !== null ? message.driver.lastname : ''} ${t('WAS_ASSIGNED_AS_DRIVER', 'Was assigned as driver')} ${message.comment ? message.comment.length : ''}`
134
- :
135
- `${t('DRIVER_UNASSIGNED', 'Driver unassigned')}`
136
- }
127
+ `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${filterSpecialStatus.includes(message.change.attribute) ?
128
+ `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
129
+ `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
130
+ }`
131
+ : message.change.new
132
+ ?
133
+ `${message.driver?.name} ${message.driver?.lastname !== null ? message.driver.lastname : ''} ${t('WAS_ASSIGNED_AS_DRIVER', 'Was assigned as driver')} ${message.comment ? message.comment.length : ''}`
134
+ :
135
+ `${t('DRIVER_UNASSIGNED', 'Driver unassigned')}`
136
+ }
137
137
 
138
138
  useEffect(() => {
139
139
  let newMessages: Array<any> = []
@@ -402,7 +402,9 @@ const MessagesUI = (props: MessagesParams) => {
402
402
  <Wrapper>
403
403
  {!isMeesageListing ? (
404
404
  <Header>
405
- <OIconButton icon={theme.images.general.arrow_left} style={{ paddingStart: 10, borderColor: theme.colors.clear }} onClick={onClose} />
405
+ <TouchableOpacity onPress={onClose} style={{ paddingStart: 10, borderColor: theme.colors.clear }}>
406
+ <AntDesignIcon name='arrowleft' size={26} />
407
+ </TouchableOpacity>
406
408
  <View style={{ marginRight: 10, shadowColor: theme.colors.black, shadowOpacity: 0.1, shadowOffset: { width: 0, height: 1 }, shadowRadius: 2 }}>
407
409
  <OIcon
408
410
  url={type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo}
@@ -419,10 +421,8 @@ const MessagesUI = (props: MessagesParams) => {
419
421
  ) : (
420
422
  <ProfileMessageHeader>
421
423
  <View style={{ ...styles.headerTitle }}>
422
- <TouchableOpacity
423
- style={styles.headerItem}
424
- onPress={onClose}>
425
- <OIcon src={theme.images.general.arrow_left} width={16} />
424
+ <TouchableOpacity onPress={onClose} style={styles.headerItem}>
425
+ <AntDesignIcon name='arrowleft' size={26} />
426
426
  </TouchableOpacity>
427
427
  <OText size={18}>{t('ORDER', theme?.defaultLanguages?.ORDER || 'Order')} #{order?.id}</OText>
428
428
  </View>
@@ -0,0 +1,197 @@
1
+ import React, { useEffect, useState } from 'react'
2
+ import { StyleSheet, View, Platform } from 'react-native'
3
+ import SelectDropdown from 'react-native-select-dropdown'
4
+ import { useTheme } from 'styled-components/native'
5
+ import {
6
+ MomentOption as MomentOptionController,
7
+ useConfig,
8
+ useUtils
9
+ } from 'ordering-components/native'
10
+ import { useSafeAreaInsets } from 'react-native-safe-area-context'
11
+ import IconAntDesign from 'react-native-vector-icons/AntDesign'
12
+ import { Container } from './styles'
13
+ import moment from 'moment'
14
+
15
+ const MomentSelectorUI = (props: any) => {
16
+ const {
17
+ datesList,
18
+ hoursList,
19
+ dateSelected,
20
+ timeSelected,
21
+ handleChangeDate,
22
+ handleChangeTime,
23
+ } = props
24
+
25
+ const theme = useTheme()
26
+ const { top } = useSafeAreaInsets()
27
+ const [{ configs }] = useConfig()
28
+ const [{ parseTime }] = useUtils()
29
+
30
+ const [customizedDateList, setCustomizedDateList] = useState([])
31
+ const [customizedTimeList, setCustomizedTimeList] = useState([])
32
+
33
+ const is12hours = configs?.dates_moment_format?.value?.includes('hh:mm')
34
+
35
+ const styles = StyleSheet.create({
36
+ selectOption: {
37
+ width: '100%',
38
+ backgroundColor: theme.colors.backgroundGray100,
39
+ paddingVertical: 5,
40
+ paddingHorizontal: 14,
41
+ flexDirection: 'row-reverse',
42
+ alignItems: 'center',
43
+ justifyContent: 'space-between',
44
+ height: 30
45
+ },
46
+ selectWrapper: {
47
+ flex: 1
48
+ }
49
+ })
50
+
51
+ useEffect(() => {
52
+ const updatedDatesList = datesList?.map((date: any) => {
53
+ return { value: moment(date).format('MMM DD, YYYY'), key: date }
54
+ })
55
+ setCustomizedDateList(updatedDatesList)
56
+ }, [datesList])
57
+
58
+ useEffect(() => {
59
+ if (hoursList?.length > 0) {
60
+
61
+ const updatedHoursList = hoursList?.map((hour: any) => {
62
+ const timeValue = is12hours ? (
63
+ hour?.startTime?.includes('12')
64
+ ? `${hour.startTime}PM`
65
+ : parseTime(moment(hour.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
66
+ ) : (
67
+ parseTime(moment(hour.startTime, 'HH:mm'), { outputFormat: 'HH:mm' })
68
+ )
69
+ return { value: timeValue, key: hour.startTime }
70
+ })
71
+ setCustomizedTimeList(updatedHoursList)
72
+ }
73
+ }, [hoursList])
74
+
75
+ const dropDownIcon = () => {
76
+ return (
77
+ <IconAntDesign
78
+ name='down'
79
+ color={theme.colors.textThird}
80
+ size={12}
81
+ />
82
+ )
83
+ }
84
+
85
+ return (
86
+ <Container>
87
+ <View style={styles.selectWrapper}>
88
+ <SelectDropdown
89
+ defaultValue={customizedDateList?.find((item: any) => item.key === dateSelected)}
90
+ data={customizedDateList}
91
+ onSelect={(selectedItem, index) => {
92
+ handleChangeDate(selectedItem?.key)
93
+ }}
94
+ buttonTextAfterSelection={(selectedItem, index) => {
95
+ return selectedItem?.value
96
+ }}
97
+ rowTextForSelection={(item, index) => {
98
+ return item.value
99
+ }}
100
+ buttonStyle={{borderTopLeftRadius: 7.6, borderBottomLeftRadius: 7.6, ...styles.selectOption}}
101
+ buttonTextStyle={{
102
+ color: theme.colors.disabled,
103
+ fontSize: 12,
104
+ textAlign: 'left',
105
+ marginHorizontal: 0
106
+ }}
107
+ dropdownStyle={{
108
+ borderRadius: 8,
109
+ borderColor: theme.colors.lightGray,
110
+ marginTop: Platform.OS === 'ios' ? 12 : -top
111
+ }}
112
+ rowStyle={{
113
+ borderBottomColor: theme.colors.backgroundGray100,
114
+ backgroundColor: theme.colors.backgroundGray100,
115
+ height: 30,
116
+ flexDirection: 'column',
117
+ alignItems: 'flex-start',
118
+ paddingTop: 8,
119
+ paddingHorizontal: 12
120
+ }}
121
+ rowTextStyle={{
122
+ color: theme.colors.disabled,
123
+ fontSize: 12,
124
+ marginHorizontal: 0
125
+ }}
126
+ renderDropdownIcon={() => dropDownIcon()}
127
+ dropdownOverlayColor='transparent'
128
+ />
129
+ </View>
130
+ <View style={styles.selectWrapper}>
131
+ <SelectDropdown
132
+ defaultValue={customizedTimeList?.find((item: any) => item.key === timeSelected)}
133
+ data={customizedTimeList}
134
+ onSelect={(selectedItem, index) => {
135
+ handleChangeTime(selectedItem.key)
136
+ }}
137
+ buttonTextAfterSelection={(selectedItem, index) => {
138
+ return selectedItem.value
139
+ }}
140
+ rowTextForSelection={(item, index) => {
141
+ return item.value
142
+ }}
143
+ buttonStyle={{borderTopRightRadius: 7.6, borderBottomRightRadius: 7.6, ...styles.selectOption}}
144
+ buttonTextStyle={{
145
+ color: theme.colors.disabled,
146
+ fontSize: 12,
147
+ textAlign: 'left',
148
+ marginHorizontal: 0
149
+ }}
150
+ dropdownStyle={{
151
+ borderRadius: 8,
152
+ borderColor: theme.colors.lightGray,
153
+ marginTop: Platform.OS === 'ios' ? 12 : -top
154
+ }}
155
+ rowStyle={{
156
+ borderBottomColor: theme.colors.backgroundGray100,
157
+ backgroundColor: theme.colors.backgroundGray100,
158
+ height: 30,
159
+ flexDirection: 'column',
160
+ alignItems: 'flex-start',
161
+ paddingTop: 8,
162
+ paddingHorizontal: 14
163
+ }}
164
+ rowTextStyle={{
165
+ color: theme.colors.disabled,
166
+ fontSize: 12,
167
+ marginHorizontal: 0
168
+ }}
169
+ renderDropdownIcon={() => dropDownIcon()}
170
+ dropdownOverlayColor='transparent'
171
+ />
172
+ </View>
173
+ </Container>
174
+ )
175
+ }
176
+
177
+ export const MomentSelector = (props: any) => {
178
+ const [{ configs }] = useConfig()
179
+
180
+ const limitDays = parseInt(configs?.max_days_preorder?.value, 10)
181
+
182
+ const currentDate = new Date()
183
+ const time = limitDays > 1
184
+ ? currentDate.getTime() + ((limitDays - 1) * 24 * 60 * 60 * 1000)
185
+ : limitDays === 1 ? currentDate.getTime() : currentDate.getTime() + (6 * 24 * 60 * 60 * 1000)
186
+
187
+ currentDate.setTime(time)
188
+ currentDate.setHours(23)
189
+ currentDate.setMinutes(59)
190
+
191
+ const businessPreorderProps = {
192
+ ...props,
193
+ UIComponent: MomentSelectorUI,
194
+ maxDate: currentDate
195
+ }
196
+ return <MomentOptionController {...businessPreorderProps} />
197
+ }
@@ -0,0 +1,6 @@
1
+ import styled from 'styled-components/native'
2
+
3
+ export const Container = styled.View`
4
+ flex-direction: row;
5
+ width: 100%;
6
+ `