ordering-ui-react-native 0.17.97 → 0.17.98-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 (224) hide show
  1. package/package.json +9 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessInformation/index.tsx +10 -9
  4. package/src/components/BusinessesListing/index.tsx +1 -1
  5. package/src/components/OrderCreating/index.tsx +0 -20
  6. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  7. package/src/components/PhoneInputNumber/index.tsx +6 -2
  8. package/src/components/StripeMethodForm/index.tsx +136 -102
  9. package/src/components/VerifyPhone/styles.tsx +1 -2
  10. package/src/components/shared/OToast.tsx +3 -2
  11. package/src/types/index.tsx +5 -0
  12. package/src/utils/index.tsx +7 -2
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +36 -26
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +163 -123
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  19. package/themes/business/src/components/FloatingButton/index.tsx +34 -31
  20. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  21. package/themes/business/src/components/LoginForm/index.tsx +5 -2
  22. package/themes/business/src/components/MapView/index.tsx +14 -10
  23. package/themes/business/src/components/MessagesOption/index.tsx +22 -94
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +123 -96
  25. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +209 -15
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +84 -37
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +87 -66
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +200 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  32. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  33. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  34. package/themes/business/src/components/OrdersListManager/index.tsx +7 -2
  35. package/themes/business/src/components/OrdersListManager/utils.tsx +1 -1
  36. package/themes/business/src/components/OrdersOption/index.tsx +60 -47
  37. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  38. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  39. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +21 -29
  40. package/themes/business/src/components/PreviousOrders/OrderList.tsx +93 -0
  41. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  42. package/themes/business/src/components/PreviousOrders/index.tsx +198 -221
  43. package/themes/business/src/components/PreviousOrders/styles.tsx +10 -0
  44. package/themes/business/src/components/ProductItemAccordion/index.tsx +7 -1
  45. package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
  46. package/themes/business/src/components/StoresList/index.tsx +3 -4
  47. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  48. package/themes/business/src/components/WebsocketStatus/index.tsx +171 -0
  49. package/themes/business/src/components/WebsocketStatus/styles.tsx +28 -0
  50. package/themes/business/src/components/shared/OModal.tsx +16 -9
  51. package/themes/business/src/types/index.tsx +24 -10
  52. package/themes/business/src/utils/index.tsx +29 -2
  53. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  55. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  57. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  58. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -5
  59. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  60. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  61. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  62. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  63. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  64. package/themes/original/index.tsx +7 -3
  65. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  66. package/themes/original/src/components/AddressForm/index.tsx +33 -15
  67. package/themes/original/src/components/AddressList/index.tsx +5 -8
  68. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  69. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  70. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  71. package/themes/original/src/components/BusinessBasicInformation/index.tsx +72 -36
  72. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  73. package/themes/original/src/components/BusinessController/index.tsx +35 -44
  74. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  75. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  76. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  77. package/themes/original/src/components/BusinessInformation/index.tsx +140 -85
  78. package/themes/original/src/components/BusinessItemAccordion/index.tsx +21 -23
  79. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +1 -1
  80. package/themes/original/src/components/BusinessListingSearch/index.tsx +346 -340
  81. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  82. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  83. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  84. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  85. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  86. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  87. package/themes/original/src/components/BusinessProductsListing/index.tsx +137 -32
  88. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -3
  89. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  90. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
  91. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
  92. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
  93. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +36 -403
  94. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  95. package/themes/original/src/components/Cart/index.tsx +44 -81
  96. package/themes/original/src/components/CartContent/index.tsx +70 -30
  97. package/themes/original/src/components/CartContent/styles.tsx +6 -6
  98. package/themes/original/src/components/Checkout/index.tsx +262 -35
  99. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  100. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  101. package/themes/original/src/components/DatePicker/index.tsx +17 -0
  102. package/themes/original/src/components/DatePicker/styles.tsx +20 -0
  103. package/themes/original/src/components/DriverTips/index.tsx +12 -4
  104. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  105. package/themes/original/src/components/Favorite/index.tsx +1 -5
  106. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  107. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
  108. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +42 -5
  109. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
  110. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +84 -8
  111. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  112. package/themes/original/src/components/GoogleMap/index.tsx +63 -7
  113. package/themes/original/src/components/Home/index.tsx +13 -4
  114. package/themes/original/src/components/LastOrder/index.tsx +2 -1
  115. package/themes/original/src/components/LastOrders/index.tsx +2 -1
  116. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
  117. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  118. package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
  119. package/themes/original/src/components/MessageListing/index.tsx +9 -2
  120. package/themes/original/src/components/Messages/index.tsx +15 -4
  121. package/themes/original/src/components/MomentOption/index.tsx +41 -36
  122. package/themes/original/src/components/MomentOption/styles.tsx +0 -15
  123. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  124. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +161 -49
  125. package/themes/original/src/components/MultiCheckout/index.tsx +347 -69
  126. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  127. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -1
  128. package/themes/original/src/components/MyOrders/index.tsx +12 -1
  129. package/themes/original/src/components/NavBar/index.tsx +20 -13
  130. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  131. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  132. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
  133. package/themes/original/src/components/OrderDetails/index.tsx +50 -38
  134. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  135. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  136. package/themes/original/src/components/OrderProgress/index.tsx +34 -25
  137. package/themes/original/src/components/OrderSummary/index.tsx +59 -56
  138. package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -6
  139. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +13 -13
  140. package/themes/original/src/components/OrdersOption/index.tsx +43 -20
  141. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  142. package/themes/original/src/components/PageBanner/index.tsx +65 -29
  143. package/themes/original/src/components/PageBanner/styles.tsx +0 -3
  144. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  145. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
  146. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  147. package/themes/original/src/components/PaymentOptions/index.tsx +100 -34
  148. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  149. package/themes/original/src/components/ProductForm/index.tsx +65 -34
  150. package/themes/original/src/components/ProductForm/styles.tsx +3 -3
  151. package/themes/original/src/components/ProductItemAccordion/index.tsx +8 -6
  152. package/themes/original/src/components/ProductOptionSubOption/index.tsx +49 -20
  153. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -9
  154. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  155. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  156. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  157. package/themes/original/src/components/Promotions/index.tsx +2 -2
  158. package/themes/original/src/components/Promotions/styles.tsx +3 -1
  159. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  160. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  161. package/themes/original/src/components/ServiceForm/index.tsx +40 -20
  162. package/themes/original/src/components/SignupForm/index.tsx +27 -16
  163. package/themes/original/src/components/SingleOrderCard/index.tsx +44 -20
  164. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  165. package/themes/original/src/components/SingleProductCard/index.tsx +13 -10
  166. package/themes/original/src/components/SingleProductCard/styles.tsx +8 -3
  167. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  168. package/themes/original/src/components/StripeCardsList/index.tsx +61 -5
  169. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  170. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  171. package/themes/original/src/components/UpsellingProducts/index.tsx +3 -8
  172. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  173. package/themes/original/src/components/UserFormDetails/index.tsx +84 -19
  174. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  175. package/themes/original/src/components/UserProfile/index.tsx +7 -25
  176. package/themes/original/src/components/UserProfileForm/index.tsx +30 -31
  177. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  178. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  179. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  180. package/themes/original/src/components/Wallets/index.tsx +51 -61
  181. package/themes/original/src/components/Wallets/styles.tsx +2 -4
  182. package/themes/original/src/components/shared/OButton.tsx +3 -3
  183. package/themes/original/src/components/shared/OInput.tsx +4 -5
  184. package/themes/original/src/components/shared/OModal.tsx +3 -3
  185. package/themes/original/src/config/constants.tsx +0 -10
  186. package/themes/original/src/types/index.tsx +31 -15
  187. package/themes/original/src/utils/index.tsx +180 -13
  188. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  189. package/src/navigators/BottomNavigator.tsx +0 -117
  190. package/src/navigators/CheckoutNavigator.tsx +0 -66
  191. package/src/navigators/HomeNavigator.tsx +0 -202
  192. package/src/navigators/NavigationRef.tsx +0 -7
  193. package/src/navigators/RootNavigator.tsx +0 -269
  194. package/src/pages/Account.tsx +0 -34
  195. package/src/pages/AddressForm.tsx +0 -62
  196. package/src/pages/AddressList.tsx +0 -24
  197. package/src/pages/BusinessProductsList.tsx +0 -81
  198. package/src/pages/BusinessesListing.tsx +0 -43
  199. package/src/pages/CartList.tsx +0 -49
  200. package/src/pages/Checkout.tsx +0 -101
  201. package/src/pages/ForgotPassword.tsx +0 -24
  202. package/src/pages/Help.tsx +0 -23
  203. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  204. package/src/pages/HelpGuide.tsx +0 -23
  205. package/src/pages/HelpOrder.tsx +0 -23
  206. package/src/pages/Home.tsx +0 -36
  207. package/src/pages/IntroductoryTutorial.tsx +0 -170
  208. package/src/pages/Login.tsx +0 -47
  209. package/src/pages/MomentOption.tsx +0 -30
  210. package/src/pages/MultiCheckout.tsx +0 -31
  211. package/src/pages/MultiOrdersDetails.tsx +0 -27
  212. package/src/pages/MyOrders.tsx +0 -40
  213. package/src/pages/NetworkError.tsx +0 -24
  214. package/src/pages/NotFound.tsx +0 -22
  215. package/src/pages/OrderDetails.tsx +0 -25
  216. package/src/pages/ProductDetails.tsx +0 -55
  217. package/src/pages/Profile.tsx +0 -36
  218. package/src/pages/ReviewDriver.tsx +0 -30
  219. package/src/pages/ReviewOrder.tsx +0 -32
  220. package/src/pages/ReviewProducts.tsx +0 -30
  221. package/src/pages/Sessions.tsx +0 -22
  222. package/src/pages/Signup.tsx +0 -53
  223. package/src/pages/SpinnerLoader.tsx +0 -10
  224. package/src/pages/Splash.tsx +0 -21
@@ -126,9 +126,13 @@ const MessagesUI = (props: MessagesParams) => {
126
126
  const messageConsole = (message: any) => {
127
127
  return message.change?.attribute !== 'driver_id'
128
128
  ?
129
- `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${filterSpecialStatus.includes(message.change.attribute) ?
130
- `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
131
- `${message.change?.attribute !== 'logistic_status' ? message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)]) : message.change.old !== null && getLogisticTag(message.change.old)} ${t('TO', 'to')} ${message.change?.attribute !== 'logistic_status' ? t(ORDER_STATUS[parseInt(message.change.new, 10)]) : getLogisticTag(message.change.new)}`
129
+ `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${filterSpecialStatus.includes(message.change.attribute)
130
+ ? `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}`
131
+ : `${message.change?.attribute !== 'logistic_status'
132
+ ? message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])
133
+ : message.change.old !== null && getLogisticTag(message.change.old)} ${t('TO', 'to')} ${message.change?.attribute !== 'logistic_status'
134
+ ? t(ORDER_STATUS[parseInt(message.change.new, 10)])
135
+ : getLogisticTag(message.change.new)}`
132
136
  }`
133
137
  : message.change.new
134
138
  ?
@@ -148,6 +152,7 @@ const MessagesUI = (props: MessagesParams) => {
148
152
  }
149
153
  const newMessage: any = [];
150
154
  messages.messages.map((message: any) => {
155
+ if (message.change?.attribute === 'driver_group_id') return
151
156
  if (business && message.type !== 0 && (messagesToShow?.messages?.length || message?.can_see?.includes('2'))) {
152
157
  newMessage.push({
153
158
  _id: message?.id,
@@ -171,7 +176,7 @@ const MessagesUI = (props: MessagesParams) => {
171
176
  image: message.source,
172
177
  system: message.type === 1,
173
178
  user: {
174
- _id: message.author && message.author.id ,
179
+ _id: message.author && message.author.id,
175
180
  name: message.author && message.author.name,
176
181
  avatar: message.author && (message.author.id !== user.id && type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo)
177
182
  }
@@ -242,6 +247,7 @@ const MessagesUI = (props: MessagesParams) => {
242
247
 
243
248
  const renderAccessory = () => {
244
249
  return (
250
+ !chatDisabled &&
245
251
  <QuickMessageContainer
246
252
  style={{
247
253
  marginLeft: 10,
@@ -412,6 +418,11 @@ const MessagesUI = (props: MessagesParams) => {
412
418
  );
413
419
  }
414
420
 
421
+ useEffect(() => {
422
+ if (!order?.id || messages?.loading) return
423
+ readMessages && readMessages()
424
+ }, [order?.id, messages?.loading])
425
+
415
426
  return (
416
427
  <View style={{ height: getViewHeight(), width: '100%', paddingTop: 12, backgroundColor: 'white' }}>
417
428
  <Wrapper>
@@ -155,7 +155,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
155
155
  });
156
156
  const { bottom } = useSafeAreaInsets();
157
157
 
158
- const is12hours = configs?.dates_moment_format?.value?.includes('hh:mm')
158
+ const is12hours = configs?.general_hour_format?.value?.includes('hh:mm')
159
159
 
160
160
  const [selectedTime, setSelectedTime] = useState(null);
161
161
  const [datesWhitelist, setDateWhitelist] = useState<any>([{ start: null, end: null }])
@@ -256,7 +256,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
256
256
  setDateWhitelist([{ start: _minDate, end: _maxDate }])
257
257
  }
258
258
  }
259
- }, [JSON.stringify(datesList), preorderMinimumDays, preorderMaximumDays])
259
+ }, [JSON.stringify(datesList), preorderMinimumDays, preorderMaximumDays, cateringPreorder])
260
260
 
261
261
  useEffect(() => {
262
262
  if (dateSelected) {
@@ -321,7 +321,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
321
321
  }
322
322
  }))
323
323
  }
324
- }, [dateSelected, JSON.stringify(hoursList), JSON.stringify(datesWhitelist), cateringPreorder])
324
+ }, [dateSelected, JSON.stringify(hoursList), JSON.stringify(datesWhitelist), cateringPreorder, JSON.stringify(business)])
325
325
 
326
326
  return (
327
327
  <>
@@ -383,39 +383,44 @@ const MomentOptionUI = (props: MomentOptionParams) => {
383
383
  )}
384
384
  <OText color={optionSelected.isSchedule ? theme.colors.textNormal : theme.colors.disabled}>{t('SCHEDULE_FOR_LATER', 'Schedule for later')}</OText>
385
385
  </WrapSelectOption>
386
-
387
386
  {optionSelected.isSchedule && (
388
387
  <OrderTimeWrapper>
389
- <View style={{ flex: 1 }}>
390
- {selectDate && datesWhitelist[0]?.start !== null && (
391
- <CalendarStrip
392
- scrollable
393
- locale={locale}
394
- style={styles.calendar}
395
- calendarHeaderContainerStyle={styles.calendarHeaderContainer}
396
- calendarHeaderStyle={styles.calendarHeader}
397
- dateNumberStyle={styles.dateNumber}
398
- dateNameStyle={styles.dateName}
399
- iconContainer={{ flex: 0.1 }}
400
- highlightDateNameStyle={styles.highlightDateName}
401
- highlightDateNumberStyle={styles.highlightDateNumber}
402
- dayContainerStyle={{ height: '100%' }}
403
- highlightDateContainerStyle={{ height: '100%' }}
404
- calendarHeaderFormat='MMMM, YYYY'
405
- iconStyle={{ borderWidth: 1 }}
406
- selectedDate={dateSelected}
407
- datesWhitelist={datesWhitelist}
408
- minDate={moment()}
409
- maxDate={cateringPreorder ? moment().add(preorderMaximumDays, 'days') : undefined}
410
- disabledDateNameStyle={styles.disabledDateName}
411
- disabledDateNumberStyle={styles.disabledDateNumber}
412
- disabledDateOpacity={0.6}
413
- onDateSelected={(date) => onSelectDate(date)}
414
- leftSelector={<LeftSelector />}
415
- rightSelector={<RightSelector />}
416
- />
417
- )}
418
- </View>
388
+ {datesWhitelist[0]?.start === datesWhitelist[0]?.end && (
389
+ <OText>
390
+ {moment(selectDate).format('Do MMMM, YYYY')}
391
+ </OText>
392
+ )}
393
+ {datesWhitelist[0]?.start !== datesWhitelist[0]?.end && (
394
+ <View style={{ flex: 1 }}>
395
+ {selectDate && datesWhitelist[0]?.start !== null && (
396
+ <CalendarStrip
397
+ scrollable
398
+ style={styles.calendar}
399
+ calendarHeaderContainerStyle={styles.calendarHeaderContainer}
400
+ calendarHeaderStyle={styles.calendarHeader}
401
+ dateNumberStyle={styles.dateNumber}
402
+ dateNameStyle={styles.dateName}
403
+ iconContainer={{ flex: 0.1 }}
404
+ highlightDateNameStyle={styles.highlightDateName}
405
+ highlightDateNumberStyle={styles.highlightDateNumber}
406
+ dayContainerStyle={{ height: '100%' }}
407
+ highlightDateContainerStyle={{ height: '100%' }}
408
+ calendarHeaderFormat='MMMM, YYYY'
409
+ iconStyle={{ borderWidth: 1 }}
410
+ selectedDate={dateSelected}
411
+ datesWhitelist={datesWhitelist}
412
+ minDate={moment()}
413
+ maxDate={cateringPreorder ? moment().add(preorderMaximumDays, 'days') : undefined}
414
+ disabledDateNameStyle={styles.disabledDateName}
415
+ disabledDateNumberStyle={styles.disabledDateNumber}
416
+ disabledDateOpacity={0.6}
417
+ onDateSelected={(date) => onSelectDate(date)}
418
+ leftSelector={<LeftSelector />}
419
+ rightSelector={<RightSelector />}
420
+ />
421
+ )}
422
+ </View>
423
+ )}
419
424
  <TimeListWrapper nestedScrollEnabled={true} cateringPreorder={cateringPreorder}>
420
425
  <TimeContentWrapper>
421
426
  {timeList.map((time: any, i: number) => (
@@ -461,9 +466,9 @@ const MomentOptionUI = (props: MomentOptionParams) => {
461
466
  </View>
462
467
  <Spinner visible={momentState.isLoading === 1} />
463
468
  </Container>
464
- {!isCart && (
469
+ {!isCart && !cateringPreorder && (
465
470
  <View style={{ position: 'absolute', bottom: bottom, paddingBottom: 20, paddingHorizontal: 40, backgroundColor: 'white', width: '100%' }}>
466
- <OButton onClick={handleChangeMoment} isDisabled={!selectedTime} text={t('CONTINUE', 'Continue')} style={{ borderRadius: 7.6, height: 44, shadowOpacity: 0 }} textStyle={{ color: 'white', fontSize: 14 }} showNextIcon />
471
+ <OButton onClick={() => handleChangeMoment()} isDisabled={!selectedTime} text={t('CONTINUE', 'Continue')} style={{ borderRadius: 7.6, height: 44, shadowOpacity: 0 }} textStyle={{ color: 'white', fontSize: 14 }} showNextIcon />
467
472
  </View>
468
473
  )}
469
474
  </>
@@ -19,10 +19,6 @@ export const OrderTimeWrapper = styled.View`
19
19
  export const TimeListWrapper = styled.ScrollView`
20
20
  margin-top: 30px;
21
21
  max-height: 210px;
22
- ${({ cateringPreorder }: any) => cateringPreorder && css`
23
- max-height: 250px;
24
- height: 250px;
25
- `}
26
22
  `
27
23
 
28
24
  export const TimeContentWrapper = styled.View`
@@ -30,7 +26,6 @@ export const TimeContentWrapper = styled.View`
30
26
  flex-wrap: wrap;
31
27
  flex-direction: row;
32
28
  justify-content: space-between;
33
-
34
29
  `
35
30
 
36
31
  export const TimeItem = styled.View`
@@ -41,16 +36,6 @@ export const TimeItem = styled.View`
41
36
  justify-content: center;
42
37
  align-items: center;
43
38
  margin: 10px 0px;
44
- ${({ cateringPreorder }: any) => cateringPreorder && css`
45
- background: #fff;
46
- width: 100%;
47
- min-width: 100%;
48
- height: 50px;
49
- flex-direction: row;
50
- justify-content: flex-start;
51
- padding-left: 10px;
52
- margin: 0;
53
- `}
54
39
  ${({ active }: any) => active && css`
55
40
  background: #F5F9FF;
56
41
  `}
@@ -30,7 +30,7 @@ const MomentSelectorUI = (props: any) => {
30
30
  const [customizedDateList, setCustomizedDateList] = useState([])
31
31
  const [customizedTimeList, setCustomizedTimeList] = useState([])
32
32
 
33
- const is12hours = configs?.dates_moment_format?.value?.includes('hh:mm')
33
+ const is12hours = configs?.general_hour_format?.value?.includes('hh:mm')
34
34
 
35
35
  const styles = StyleSheet.create({
36
36
  selectOption: {
@@ -1,8 +1,10 @@
1
- import React, { useState } from 'react'
1
+ import React, { useEffect, useState } from 'react'
2
2
  import {
3
3
  useLanguage,
4
4
  useConfig,
5
5
  useUtils,
6
+ useToast,
7
+ ToastType,
6
8
  MultiCartsPaymethodsAndWallets as MultiCartsPaymethodsAndWalletsController
7
9
  } from 'ordering-components/native'
8
10
  import { useTheme } from 'styled-components/native'
@@ -13,6 +15,7 @@ import { getIconCard, flatArray } from '../../utils'
13
15
  import { StripeElementsForm } from '../StripeElementsForm'
14
16
  import { StripeCardsList } from '../StripeCardsList'
15
17
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
18
+ import { useApplePay } from '@stripe/stripe-react-native';
16
19
 
17
20
  import {
18
21
  PMContainer,
@@ -25,16 +28,27 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
25
28
  businessIds,
26
29
  paymethodsAndWallets,
27
30
  walletsState,
31
+ walletsPaymethod,
28
32
  paymethodSelected,
29
33
  handleSelectPaymethod,
30
34
  handleSelectWallet,
31
- handlePaymethodDataChange
35
+ handlePaymethodDataChange,
36
+ setMethodPaySupported,
37
+ placeByMethodPay,
38
+ methodPaySupported,
39
+ setPlaceByMethodPay,
40
+ openCarts,
41
+ cartTotal,
42
+ handlePlaceOrder,
43
+ merchantId
32
44
  } = props
33
45
 
34
46
  const theme = useTheme()
35
47
  const [, t] = useLanguage()
36
48
  const [{ configs }] = useConfig()
37
49
  const [{ parsePrice }] = useUtils()
50
+ const [, { showToast }] = useToast();
51
+ const { confirmApplePayPayment } = useApplePay()
38
52
 
39
53
  const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
40
54
 
@@ -52,6 +66,10 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
52
66
  }
53
67
  }
54
68
 
69
+ const creditBalance: any = (wallet: any) => ` = ${parsePrice(wallet.balance / wallet.redemption_rate, { isTruncable: true })}`
70
+ const filterMethodsPay = (gateway: string) => Platform.OS === 'ios' ? gateway !== 'global_google_pay' : gateway !== 'global_apple_pay'
71
+ const methodsPay = ['global_google_pay', 'global_apple_pay']
72
+
55
73
  const getPayIcon = (method: string) => {
56
74
  switch (method) {
57
75
  case 'cash':
@@ -68,35 +86,81 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
68
86
  return theme.images.general.stripes
69
87
  case 'stripe_redirect':
70
88
  return theme.images.general.stripesb
89
+ case 'global_apple_pay':
90
+ return theme.images.general.applePayMark
91
+ case 'global_google_pay':
92
+ return theme.images.general.googlePayMark
71
93
  default:
72
94
  return theme.images.general.creditCard
73
95
  }
74
96
  }
75
97
 
98
+ useEffect(() => {
99
+ if (methodsPay.includes(paymethodSelected?.gateway)) {
100
+ if (typeof paymethodSelected?.paymethod_data === 'string') {
101
+ const sourceId = JSON.parse(paymethodSelected?.paymethod_data)?.source_id
102
+ sourceId && handlePlaceOrder(confirmApplePayPayment)
103
+ }
104
+ }
105
+ }, [JSON.stringify(paymethodSelected)])
106
+
107
+ useEffect(() => {
108
+ if (cartTotal === 0) {
109
+ handlePaymethodDataChange(null)
110
+ handleSelectPaymethod(null)
111
+ }
112
+ }, [cartTotal])
113
+
114
+ const handleChangePaymethod = (paymethod: any) => {
115
+ if (cartTotal > 0) {
116
+ handleSelectPaymethod(paymethod)
117
+ return
118
+ }
119
+ showToast(
120
+ ToastType.Error,
121
+ t('CART_BALANCE_ZERO', 'Sorry, the amount to pay is equal to zero and it is not necessary to select a payment method'))
122
+ ;
123
+ }
124
+
76
125
  const renderPaymethods = ({ item }: any) => {
77
126
  return (
78
- <TouchableOpacity
79
- onPress={() => handleSelectPaymethod({ ...item, paymethod: { gateway: item.gateway }, paymethod_id: item?.id })}
80
- >
81
- <PMItem
82
- key={item.id}
83
- isActive={paymethodSelected?.id === item.id}
84
- >
85
- <OIcon
86
- src={getPayIcon(item?.gateway ?? item.paymethod?.gateway)}
87
- width={20}
88
- height={20}
89
- color={paymethodSelected?.id === item.id ? theme.colors.white : theme.colors.backgroundDark}
90
- />
91
- <OText
92
- size={10}
93
- style={{ margin: 0, marginTop: 4 }}
94
- color={paymethodSelected?.id === item.id ? theme.colors.white : '#000'}
127
+ <>
128
+ {methodsPay.includes(item?.gateway) ? (
129
+ <TouchableOpacity
130
+ onPress={() => handleChangePaymethod({ ...item, paymethod: { gateway: item.gateway }, paymethod_id: item?.id })}
95
131
  >
96
- {t(item?.gateway.toUpperCase(), item?.name)}
97
- </OText>
98
- </PMItem>
99
- </TouchableOpacity>
132
+ <OIcon
133
+ src={getPayIcon(item.gateway)}
134
+ width={70}
135
+ height={70}
136
+ style={{ marginRight: 10 }}
137
+ />
138
+ </TouchableOpacity>
139
+ ) : (
140
+ <TouchableOpacity
141
+ onPress={() => handleChangePaymethod({ ...item, paymethod: { gateway: item.gateway }, paymethod_id: item?.id })}
142
+ >
143
+ <PMItem
144
+ key={item.id}
145
+ isActive={paymethodSelected?.id === item.id}
146
+ >
147
+ <OIcon
148
+ src={getPayIcon(item?.gateway ?? item.paymethod?.gateway)}
149
+ width={20}
150
+ height={20}
151
+ color={item?.gateway === 'global_apple_pay' ? '' : paymethodSelected?.id === item.id ? theme.colors.white : theme.colors.backgroundDark}
152
+ />
153
+ <OText
154
+ size={10}
155
+ style={{ margin: 0, marginTop: 4 }}
156
+ color={paymethodSelected?.id === item.id ? theme.colors.white : '#000'}
157
+ >
158
+ {t(item?.gateway.toUpperCase(), item?.name)}
159
+ </OText>
160
+ </PMItem>
161
+ </TouchableOpacity>
162
+ )}
163
+ </>
100
164
  )
101
165
  }
102
166
 
@@ -123,7 +187,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
123
187
  <FlatList
124
188
  horizontal
125
189
  showsHorizontalScrollIndicator={false}
126
- data={paymethodsAndWallets.paymethods}
190
+ data={paymethodsAndWallets.paymethods.filter((p: any) => filterMethodsPay(p.gateway))}
127
191
  renderItem={renderPaymethods}
128
192
  keyExtractor={(paymethod: any) => paymethod?.id?.toString?.()}
129
193
  />
@@ -152,10 +216,38 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
152
216
  publicKey={paymethodSelected?.data?.publishable}
153
217
  payType={paymethodSelected?.paymethod?.name}
154
218
  onSelectCard={handlePaymethodDataChange}
219
+ addCardOpen={addCardOpen}
220
+ setAddCardOpen={setAddCardOpen}
221
+ openCarts={openCarts}
222
+ toSave
223
+ handlePaymethodDataChange={handlePaymethodDataChange}
224
+ clientSecret={props.clientSecret}
225
+ onPaymentChange={handlePaymethodDataChange}
155
226
  />
156
227
  </View>
157
228
  )}
158
229
 
230
+ {/* Google pay, Apple pay */}
231
+ {methodsPay.includes(paymethodSelected?.paymethod?.gateway) && (
232
+ <StripeElementsForm
233
+ toSave
234
+ businessId={businessIds[0]}
235
+ businessIds={businessIds}
236
+ publicKey={paymethodSelected?.data?.publishable}
237
+ requirements={props.clientSecret}
238
+ handleSource={handlePaymethodDataChange}
239
+ onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
240
+ setMethodPaySupported={setMethodPaySupported}
241
+ methodPaySupported={methodPaySupported}
242
+ placeByMethodPay={placeByMethodPay}
243
+ setPlaceByMethodPay={setPlaceByMethodPay}
244
+ methodsPay={methodsPay}
245
+ paymethod={paymethodSelected?.paymethod?.gateway}
246
+ cartTotal={cartTotal}
247
+ merchantId={merchantId}
248
+ />
249
+ )}
250
+
159
251
  {(paymethodsAndWallets.loading || walletsState.loading) ? (
160
252
  <>
161
253
  {[...Array(2).keys()].map(i => (
@@ -169,33 +261,52 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
169
261
  </>
170
262
  ) : (
171
263
  <>
172
- {walletsState?.result?.filter((wallet: any) => paymethodsAndWallets.wallets.find((item: any) => item.type === wallet.type)).map((wallet: any, idx: any) => walletName[wallet.type]?.isActive && (
173
- <WalletItem
174
- key={wallet.type}
175
- isBottomBorder={idx === paymethodsAndWallets.wallets?.length - 1}
176
- onPress={() => handleSelectWallet(paymethodSelected.wallet_id === wallet.id ? false : true, wallet)}
177
- >
178
- {paymethodSelected.wallet_id === wallet.id ? (
179
- <MaterialCommunityIcons
180
- name="checkbox-marked"
181
- size={25}
182
- color={theme.colors.primary}
183
- />
184
- ) : (
185
- <MaterialCommunityIcons
186
- name="checkbox-blank-outline"
187
- size={25}
188
- color={theme.colors.disabled}
189
- />
190
- )}
191
- <OText size={12} style={{ flex: 1, marginLeft: 15 }}>{walletName[wallet.type]?.name}</OText>
192
- <OText size={12}>{parsePrice(wallet.balance)}</OText>
193
- </WalletItem>
194
- ))}
264
+ {walletsState?.result?.filter((wallet: any) =>
265
+ paymethodsAndWallets.wallets.find((item: any) => item.type === wallet.type))
266
+ .map((wallet: any, idx: any) => walletName[wallet.type]?.isActive &&
267
+ (
268
+ <WalletItem
269
+ key={wallet.type}
270
+ isBottomBorder={idx === paymethodsAndWallets.wallets?.length - 1}
271
+ onPress={() => handleSelectWallet(!!!walletsPaymethod?.find((walletPay: any) => walletPay.wallet_id === wallet.id)?.id, wallet)}
272
+ >
273
+ {!!walletsPaymethod?.find((walletPay: any) => walletPay.wallet_id === wallet.id)?.id ? (
274
+ <MaterialCommunityIcons
275
+ name="checkbox-marked"
276
+ size={25}
277
+ color={theme.colors.primary}
278
+ />
279
+ ) : (
280
+ <MaterialCommunityIcons
281
+ name="checkbox-blank-outline"
282
+ size={25}
283
+ color={theme.colors.disabled}
284
+ />
285
+ )}
286
+ <OText size={12} style={{ flex: 1, marginLeft: 15 }}>{walletName[wallet.type]?.name}</OText>
287
+ {wallet.type === 'cash' && (
288
+ <OText>
289
+ {parsePrice(wallet?.balance, { isTruncable: true })}
290
+ </OText>
291
+ )}
292
+ {wallet.type === 'credit_point' && (
293
+ <OText>
294
+ <OText color={theme.colors.primary} weight='bold'>
295
+ {`${wallet?.balance} ${t('POINTS', 'Points')}`}
296
+ </OText>
297
+ <OText>
298
+ {wallet?.balance > 0
299
+ ? creditBalance(wallet)
300
+ : null}
301
+ </OText>
302
+ </OText>
303
+ )}
304
+ </WalletItem>
305
+ ))}
195
306
  </>
196
307
  )}
197
308
 
198
- <OModal
309
+ {/* <OModal
199
310
  entireModal
200
311
  title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
201
312
  open={addCardOpen.stripe}
@@ -208,6 +319,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
208
319
  enabled={Platform.OS === 'ios' ? true : false}
209
320
  >
210
321
  <StripeElementsForm
322
+ openCarts={openCarts}
211
323
  toSave
212
324
  businessId={businessIds[0]}
213
325
  businessIds={businessIds}
@@ -217,7 +329,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
217
329
  onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
218
330
  />
219
331
  </KeyboardAvoidingView>
220
- </OModal>
332
+ </OModal> */}
221
333
  </PMContainer>
222
334
  )
223
335
  }