ordering-ui-react-native 0.22.51 → 0.22.52-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 (164) hide show
  1. package/package.json +5 -7
  2. package/src/DeliveryApp.tsx +1 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/Checkout/index.tsx +40 -39
  5. package/src/components/VerifyPhone/styles.tsx +1 -2
  6. package/src/context/OfflineActions/index.tsx +236 -0
  7. package/src/providers/AlertProvider.tsx +3 -1
  8. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  9. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  10. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  11. package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
  12. package/themes/business/src/components/Chat/index.tsx +15 -3
  13. package/themes/business/src/components/DriverMap/index.tsx +44 -33
  14. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  15. package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
  16. package/themes/business/src/components/LoginForm/index.tsx +123 -98
  17. package/themes/business/src/components/LogoutButton/index.tsx +13 -4
  18. package/themes/business/src/components/MapView/index.tsx +42 -25
  19. package/themes/business/src/components/NewOrderNotification/index.tsx +37 -18
  20. package/themes/business/src/components/OrderDetails/Business.tsx +56 -20
  21. package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
  22. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +155 -45
  23. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
  24. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  25. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
  26. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  27. package/themes/business/src/components/OrderSummary/index.tsx +271 -176
  28. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  29. package/themes/business/src/components/OrdersOption/index.tsx +345 -231
  30. package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
  31. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  32. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +30 -18
  33. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  34. package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
  35. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  36. package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
  37. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  38. package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
  39. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  40. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  41. package/themes/business/src/components/StoresList/index.tsx +2 -2
  42. package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
  43. package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
  44. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  45. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  46. package/themes/business/src/config/currency.tsx +1010 -0
  47. package/themes/business/src/hooks/useLocation.tsx +16 -12
  48. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  49. package/themes/business/src/types/index.tsx +22 -7
  50. package/themes/business/src/utils/index.tsx +28 -3
  51. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  52. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  53. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/kiosk/src/components/Checkout/index.tsx +9 -5
  55. package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
  56. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  57. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  58. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  59. package/themes/kiosk/src/components/PaymentOptions/index.tsx +121 -57
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +9 -1
  62. package/themes/original/src/components/AddressForm/index.tsx +19 -19
  63. package/themes/original/src/components/AddressList/index.tsx +0 -13
  64. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  65. package/themes/original/src/components/BusinessBasicInformation/index.tsx +1 -1
  66. package/themes/original/src/components/BusinessItemAccordion/index.tsx +14 -6
  67. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  68. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
  69. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  70. package/themes/original/src/components/BusinessPreorder/index.tsx +46 -30
  71. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  72. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  73. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  74. package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
  75. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  76. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  77. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  78. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  79. package/themes/original/src/components/Cart/index.tsx +49 -15
  80. package/themes/original/src/components/CartContent/index.tsx +2 -4
  81. package/themes/original/src/components/Checkout/index.tsx +109 -88
  82. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  83. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  84. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  85. package/themes/original/src/components/Favorite/index.tsx +1 -10
  86. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  87. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -12
  88. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  89. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  90. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  91. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  92. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  93. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  94. package/themes/original/src/components/Help/index.tsx +0 -5
  95. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +0 -5
  96. package/themes/original/src/components/HelpGuide/index.tsx +0 -5
  97. package/themes/original/src/components/HelpOrder/index.tsx +0 -5
  98. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  99. package/themes/original/src/components/Home/index.tsx +35 -19
  100. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  101. package/themes/original/src/components/LoginForm/index.tsx +12 -14
  102. package/themes/original/src/components/MessageListing/index.tsx +1 -6
  103. package/themes/original/src/components/Messages/index.tsx +20 -13
  104. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  105. package/themes/original/src/components/MomentOption/index.tsx +73 -59
  106. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  107. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +1 -0
  108. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  109. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  110. package/themes/original/src/components/MyOrders/index.tsx +2 -7
  111. package/themes/original/src/components/NavBar/index.tsx +7 -6
  112. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  113. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  114. package/themes/original/src/components/Notifications/index.tsx +0 -5
  115. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  116. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
  117. package/themes/original/src/components/OrderDetails/index.tsx +44 -21
  118. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  119. package/themes/original/src/components/OrderProgress/index.tsx +4 -3
  120. package/themes/original/src/components/OrderSummary/index.tsx +32 -11
  121. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -11
  122. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  123. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  124. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  125. package/themes/original/src/components/PaymentOptions/index.tsx +462 -461
  126. package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
  127. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  128. package/themes/original/src/components/PreviousOrders/index.tsx +1 -4
  129. package/themes/original/src/components/ProductForm/ActionButton.tsx +7 -12
  130. package/themes/original/src/components/ProductItemAccordion/index.tsx +28 -37
  131. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  132. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  133. package/themes/original/src/components/Promotions/index.tsx +2 -7
  134. package/themes/original/src/components/ReviewDriver/index.tsx +1 -6
  135. package/themes/original/src/components/ReviewOrder/index.tsx +2 -7
  136. package/themes/original/src/components/ReviewProducts/index.tsx +1 -6
  137. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  138. package/themes/original/src/components/ServiceForm/index.tsx +53 -55
  139. package/themes/original/src/components/Sessions/index.tsx +3 -8
  140. package/themes/original/src/components/SignupForm/index.tsx +44 -37
  141. package/themes/original/src/components/SingleOrderCard/index.tsx +7 -5
  142. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  143. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  144. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  145. package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
  146. package/themes/original/src/components/StripeElementsForm/index.tsx +6 -4
  147. package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
  148. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  149. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  150. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +8 -5
  151. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  152. package/themes/original/src/components/UserFormDetails/index.tsx +113 -73
  153. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  154. package/themes/original/src/components/UserProfileForm/index.tsx +0 -5
  155. package/themes/original/src/components/UserVerification/index.tsx +18 -5
  156. package/themes/original/src/components/Wallets/index.tsx +1 -3
  157. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  158. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  159. package/themes/original/src/components/shared/OButton.tsx +5 -4
  160. package/themes/original/src/components/shared/OInput.tsx +4 -8
  161. package/themes/original/src/components/shared/OModal.tsx +7 -2
  162. package/themes/original/src/types/index.tsx +12 -4
  163. package/themes/original/src/utils/index.tsx +29 -0
  164. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -57,9 +57,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
57
57
  const [{ optimizeImage, parsePrice, parseDate }] = useUtils()
58
58
  const { top } = useSafeAreaInsets()
59
59
  const [{ configs }] = useConfig()
60
- const [orderState] = useOrder()
61
- const [{ auth }] = useSession()
62
- const { product, loading, error } = productObject;
60
+ const [orderState] = useOrder()
61
+ const [{ auth }] = useSession()
62
+ const { product, loading, error } = productObject;
63
63
 
64
64
  const [selectDate, setSelectedDate] = useState<any>(new Date())
65
65
  const [timeList, setTimeList] = useState<any>([])
@@ -77,8 +77,8 @@ const ServiceFormUI = (props: ServiceFormParams) => {
77
77
  const styles = StyleSheet.create({
78
78
  photoStyle: {
79
79
  width: 45,
80
- height: 45,
81
- borderRadius: 7.6
80
+ height: 45,
81
+ borderRadius: 7.6
82
82
  },
83
83
  buttonStyle: {
84
84
  borderRadius: 7.6,
@@ -144,7 +144,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
144
144
  return (moment.utc(item?.start).local().valueOf() <= moment(selectedMoment).valueOf() &&
145
145
  moment(selectedMoment).valueOf() < moment.utc(item?.end).local().valueOf()) ||
146
146
  (moment.utc(item?.start).local().valueOf() < moment(selectedMoment).add(duration, 'minutes').valueOf() &&
147
- moment(selectedMoment).add(duration, 'minutes').valueOf() < moment.utc(item?.end).local().valueOf())
147
+ moment(selectedMoment).add(duration, 'minutes').valueOf() < moment.utc(item?.end).local().valueOf())
148
148
  })
149
149
  return valid
150
150
  }
@@ -166,9 +166,9 @@ const ServiceFormUI = (props: ServiceFormParams) => {
166
166
  }
167
167
 
168
168
  const handleUpdateGuest = () => {
169
- const guestToken = uuid.v4()
170
- if (guestToken) handleCreateGuestUser({ guest_token: guestToken })
171
- }
169
+ const guestToken = uuid.v4()
170
+ if (guestToken) handleCreateGuestUser({ guest_token: guestToken })
171
+ }
172
172
 
173
173
  const customDayHeaderStylesCallback = () => {
174
174
  return {
@@ -193,11 +193,11 @@ const ServiceFormUI = (props: ServiceFormParams) => {
193
193
  }
194
194
 
195
195
  const handleRedirectLogin = () => {
196
- navigation && navigation.navigate('Login', {
197
- store_slug: props.businessSlug
198
- });
196
+ navigation && navigation.navigate('Login', {
197
+ store_slug: props.businessSlug
198
+ });
199
199
  onClose && onClose()
200
- };
200
+ };
201
201
 
202
202
  const getTimes = (curdate: any, menu: any) => {
203
203
  validateSelectedDate(curdate, menu)
@@ -259,7 +259,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
259
259
  }
260
260
 
261
261
  useEffect(() => {
262
- if (selectDate === null || currentProfessional === null) return
262
+ if (selectDate === null || !currentProfessional?.schedule) return
263
263
  const _times = getTimes(selectDate, currentProfessional)
264
264
  setTimeList(_times)
265
265
  }, [selectDate, currentProfessional])
@@ -290,7 +290,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
290
290
  setSelectedDate(moment.utc(productCart?.calendar_event?.start).local())
291
291
  setTimeSelected(moment.utc(productCart?.calendar_event?.start).local().format('HH:mm'))
292
292
  }, [productCart])
293
-
293
+
294
294
  return (
295
295
  <>
296
296
  {loading && !error && (
@@ -450,7 +450,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
450
450
  <CalendarWrapper>
451
451
  {(timeList?.length > 0 && isEnabled) ? (
452
452
  <SelectDropdown
453
- ref={dropdownRef}
453
+ ref={dropdownRef}
454
454
  defaultValueByIndex={timeList.findIndex((item: any) => item.value === timeSelected)}
455
455
  data={timeList}
456
456
  onSelect={(selectedItem, index) => {
@@ -462,7 +462,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
462
462
  rowTextForSelection={(item, index) => {
463
463
  return item.text
464
464
  }}
465
- buttonStyle={{borderRadius: 7.6, ...styles.selectOption}}
465
+ buttonStyle={{ borderRadius: 7.6, ...styles.selectOption }}
466
466
  buttonTextStyle={{
467
467
  color: theme.colors.disabled,
468
468
  fontSize: 14,
@@ -485,7 +485,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
485
485
  }}
486
486
  renderCustomizedRowChild={(item, index) => {
487
487
  return (
488
- <Text style={[styles.dropDownRow, { color: isBusyTime(currentProfessional, getMomentTime(item.value)) ? theme.colors.lightGray : theme.colors.primary } ]}>
488
+ <Text style={[styles.dropDownRow, { color: isBusyTime(currentProfessional, getMomentTime(item.value)) ? theme.colors.lightGray : theme.colors.primary }]}>
489
489
  {item.text}
490
490
  </Text>
491
491
  )
@@ -553,7 +553,6 @@ const ServiceFormUI = (props: ServiceFormParams) => {
553
553
  auth &&
554
554
  orderState.options?.address_id)) && (
555
555
  <OButton
556
- bgColor={theme.colors.primary}
557
556
  onClick={() => handleSaveService()}
558
557
  text={orderState.loading
559
558
  ? t('LOADING', 'Loading')
@@ -562,7 +561,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
562
561
  : t('BOOK', 'Book'))}
563
562
  style={styles.buttonStyle}
564
563
  isDisabled={isSoldOut || maxProductQuantity <= 0 || !currentProfessional?.id || !dateSelected || isBusyTime(currentProfessional, dateSelected)}
565
- textStyle={{ fontSize: 14, color: theme.colors.white }}
564
+ textStyle={{ fontSize: 14 }}
566
565
  />
567
566
  )}
568
567
  {auth &&
@@ -577,45 +576,44 @@ const ServiceFormUI = (props: ServiceFormParams) => {
577
576
  ) : (
578
577
  <OButton onClick={() => addressRedirect()} />
579
578
  ))}
580
- {!auth && (
581
- <OButton
582
- isDisabled={isSoldOut || maxProductQuantity <= 0}
583
- onClick={() => handleRedirectLogin()}
584
- text={
585
- isSoldOut || maxProductQuantity <= 0
586
- ? t('SOLD_OUT', 'Sold out')
587
- : t('LOGIN_SIGNUP', 'Login / Sign Up')
588
- }
589
- imgRightSrc=""
590
- textStyle={{ color: theme.colors.primary, fontSize: 14 }}
591
- style={{
592
- height: 44,
593
- borderColor: theme.colors.primary,
594
- backgroundColor: theme.colors.white,
595
- }}
596
- />
597
- )}
598
- {!auth && guestCheckoutEnabled && orderTypeEnabled && (
599
- <TouchableOpacity style={{ marginTop: 10 }} onPress={handleUpdateGuest}>
600
- {actionStatus?.loading ? (
601
- <Placeholder Animation={Fade}>
602
- <PlaceholderLine width={60} height={20} />
603
- </Placeholder>
604
- ) : (
605
- <OText color={theme.colors.primary} size={13}>{t('AS_GUEST_USER', 'As guest user')}</OText>
606
- )}
607
- </TouchableOpacity>
608
- )}
579
+ {!auth && (
580
+ <OButton
581
+ isDisabled={isSoldOut || maxProductQuantity <= 0}
582
+ onClick={() => handleRedirectLogin()}
583
+ text={
584
+ isSoldOut || maxProductQuantity <= 0
585
+ ? t('SOLD_OUT', 'Sold out')
586
+ : t('LOGIN_SIGNUP', 'Login / Sign Up')
587
+ }
588
+ imgRightSrc=""
589
+ textStyle={{ color: theme.colors.primary, fontSize: 14 }}
590
+ style={{
591
+ height: 44,
592
+ backgroundColor: theme.colors.white,
593
+ }}
594
+ />
595
+ )}
596
+ {!auth && guestCheckoutEnabled && orderTypeEnabled && (
597
+ <TouchableOpacity style={{ marginTop: 10 }} onPress={handleUpdateGuest}>
598
+ {actionStatus?.loading ? (
599
+ <Placeholder Animation={Fade}>
600
+ <PlaceholderLine width={60} height={20} />
601
+ </Placeholder>
602
+ ) : (
603
+ <OText color={theme.colors.primary} size={13}>{t('AS_GUEST_USER', 'As guest user')}</OText>
604
+ )}
605
+ </TouchableOpacity>
606
+ )}
609
607
  </ButtonWrapper>
610
608
  </Container>
611
609
  )}
612
610
 
613
611
  <OModal
614
- open={isOpen}
615
- onClose={() => setIsOpen(false)}
616
- entireModal
617
- >
618
- <ScrollView contentContainerStyle={styles.professionalList}>
612
+ open={isOpen}
613
+ onClose={() => setIsOpen(false)}
614
+ entireModal
615
+ >
616
+ <ScrollView contentContainerStyle={styles.professionalList}>
619
617
  <View style={{ paddingVertical: 11 }}>
620
618
  <OText
621
619
  size={14}
@@ -671,7 +669,7 @@ const ServiceFormUI = (props: ServiceFormParams) => {
671
669
  </TouchableOpacity>
672
670
  ))}
673
671
  </ScrollView>
674
- </OModal>
672
+ </OModal>
675
673
  </>
676
674
  )
677
675
  }
@@ -72,11 +72,6 @@ export const SessionsUI = (props: SessionsParams) => {
72
72
  showCall={false}
73
73
  paddingTop={10}
74
74
  btnStyle={{ paddingLeft: 0 }}
75
- buttonProps={{
76
- bgColor: theme.colors.white,
77
- borderColor: theme.colors.white,
78
- textStyle: { color: theme.colors.btnFont }
79
- }}
80
75
  />
81
76
  {user?.session_strategy === 'jwt_session' ? (
82
77
  <>
@@ -116,14 +111,14 @@ export const SessionsUI = (props: SessionsParams) => {
116
111
  <OButton
117
112
  text={t('DELETE_ALL_SESSIONS', 'Delete all sessions')}
118
113
  isDisabled={actionState.loading}
119
- textStyle={{ color: theme.colors.white, fontSize: 14 }}
114
+ textStyle={{ fontSize: 14 }}
120
115
  onClick={() => onDeleteAllSessions(false, true)}
121
116
  style={{ borderRadius: 7.6, marginTop: 30 }}
122
117
  />
123
118
  <OButton
124
119
  text={t('DELETE_ALL_SESSIONS_EXCEPT_CURRENT', 'Delete all sessions except current')}
125
120
  isDisabled={actionState.loading}
126
- textStyle={{ color: theme.colors.white, fontSize: 14 }}
121
+ textStyle={{ fontSize: 14 }}
127
122
  onClick={() => onDeleteAllSessions(false, false)}
128
123
  style={{ borderRadius: 7.6, marginTop: 20 }}
129
124
  />
@@ -141,7 +136,7 @@ export const SessionsUI = (props: SessionsParams) => {
141
136
  <OButton
142
137
  text={t('ACTIVE_SESSIONS', 'Active sessions')}
143
138
  isDisabled={actionState.loading}
144
- textStyle={{ color: theme.colors.white, fontSize: 14 }}
139
+ textStyle={{ fontSize: 14 }}
145
140
  onClick={() => onDeleteAllSessions(true, false)}
146
141
  style={{ borderRadius: 7.6, marginTop: 20 }}
147
142
  />
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useRef, useState } from 'react';
2
- import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity } from 'react-native';
2
+ import { View, Pressable, StyleSheet, Linking, Platform, TouchableOpacity, Modal } from 'react-native';
3
3
  import { useForm, Controller } from 'react-hook-form';
4
4
  import Spinner from 'react-native-loading-spinner-overlay';
5
5
  import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';
@@ -32,11 +32,9 @@ import {
32
32
  } from '../LoginForm/styles';
33
33
 
34
34
  import NavBar from '../NavBar';
35
- import { VerifyPhone } from '../VerifyPhone';
36
35
 
37
36
  import Alert from '../../../../../src/providers/AlertProvider'
38
37
  import { OText, OButton, OInput } from '../shared';
39
- import { OModal } from '../../../../../src/components/shared';
40
38
  import { SignupParams } from '../../types';
41
39
  import { sortInputFields } from '../../utils';
42
40
  import { GoogleLogin } from '../GoogleLogin';
@@ -85,7 +83,8 @@ const SignupFormUI = (props: SignupParams) => {
85
83
  useSignUpFullDetails,
86
84
  useSignUpOtpEmail,
87
85
  useSignUpOtpCellphone,
88
- isGuest
86
+ isGuest,
87
+ setCellphoneStartZero
89
88
  } = props;
90
89
 
91
90
  const theme = useTheme();
@@ -141,6 +140,8 @@ const SignupFormUI = (props: SignupParams) => {
141
140
  const [recaptchaConfig, setRecaptchaConfig] = useState<any>({})
142
141
  const [recaptchaVerified, setRecaptchaVerified] = useState(false)
143
142
  const [tabLayouts, setTabLayouts] = useState<any>({})
143
+ const [isCheckingCode, setCheckingCode] = useState(false)
144
+ const [otpError, setOtpError] = useState(null)
144
145
 
145
146
  const tabsRef = useRef<any>(null)
146
147
  const nameRef = useRef<any>(null);
@@ -153,9 +154,9 @@ const SignupFormUI = (props: SignupParams) => {
153
154
  const recaptchaRef = useRef<any>({});
154
155
 
155
156
  const showInputPhoneNumber = (validationFields?.fields?.checkout?.cellphone?.enabled ?? false) || configs?.verification_phone_required?.value === '1'
156
- const googleLoginEnabled = configs?.google_login_enabled?.value === '1' || !configs?.google_login_enabled?.enabled
157
- const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1' || !configs?.facebook_login_enabled?.enabled
158
- const appleLoginEnabled = Platform.OS === 'ios' && (configs?.apple_login_enabled?.value === '1' || !configs?.apple_login_enabled?.enabled)
157
+ const googleLoginEnabled = configs?.google_login_enabled?.value === '1'
158
+ const facebookLoginEnabled = configs?.facebook_login_enabled?.value === '1'
159
+ const appleLoginEnabled = Platform.OS === 'ios' && configs?.apple_login_enabled?.value === '1'
159
160
 
160
161
  const closeAlert = () => {
161
162
  setAlertState({
@@ -366,6 +367,19 @@ const SignupFormUI = (props: SignupParams) => {
366
367
  handleReCaptcha && handleReCaptcha({ code: token, version: recaptchaConfig?.version })
367
368
  }
368
369
 
370
+ const handleChangePhoneNumber = (number: any, rawNumber: any) => {
371
+ setPhoneInputData({
372
+ ...phoneInputData,
373
+ ...number,
374
+ phone: {
375
+ ...phoneInputData.phone,
376
+ ...number.phone,
377
+ country_code: phoneInputData.phone.country_code
378
+ }
379
+ })
380
+ setCellphoneStartZero && setCellphoneStartZero(rawNumber?.number && rawNumber?.countryCallingCode ? rawNumber?.number : null)
381
+ }
382
+
369
383
  useEffect(() => {
370
384
  if (configs && Object.keys(configs).length > 0 && enableReCaptcha) {
371
385
  if (configs?.security_recaptcha_type?.value === 'v3' &&
@@ -467,9 +481,16 @@ const SignupFormUI = (props: SignupParams) => {
467
481
 
468
482
  useEffect(() => {
469
483
  if (checkPhoneCodeState?.result?.error) {
470
- setAlertState({
484
+ const titleText = (
485
+ typeof checkPhoneCodeState?.result?.result === 'string'
486
+ ? checkPhoneCodeState?.result?.result
487
+ : checkPhoneCodeState?.result?.result[0].toString()
488
+ ) || t('ERROR', 'Error')
489
+ setCheckingCode(false)
490
+ setOtpError(titleText)
491
+ checkPhoneCodeState?.generate && setAlertState({
471
492
  open: true,
472
- title: (typeof checkPhoneCodeState?.result?.result === 'string' ? checkPhoneCodeState?.result?.result : checkPhoneCodeState?.result?.result[0].toString()) || t('ERROR', 'Error'),
493
+ title: titleText,
473
494
  content: []
474
495
  })
475
496
  }
@@ -488,11 +509,6 @@ const SignupFormUI = (props: SignupParams) => {
488
509
  btnStyle={{ paddingLeft: 0 }}
489
510
  titleWrapStyle={{ paddingHorizontal: 0 }}
490
511
  titleStyle={{ marginLeft: 0, marginRight: 0 }}
491
- buttonProps={{
492
- bgColor: theme.colors.white,
493
- borderColor: theme.colors.white,
494
- textStyle: { color: theme.colors.btnFont }
495
- }}
496
512
  />
497
513
  )}
498
514
  <FormSide>
@@ -655,15 +671,7 @@ const SignupFormUI = (props: SignupParams) => {
655
671
  <View style={{ marginBottom: 25 }}>
656
672
  <PhoneInputNumber
657
673
  data={phoneInputData}
658
- handleData={(val: any) => setPhoneInputData({
659
- ...phoneInputData,
660
- ...val,
661
- phone: {
662
- ...phoneInputData.phone,
663
- ...val.phone,
664
- country_code: phoneInputData.phone.country_code
665
- }
666
- })}
674
+ handleData={handleChangePhoneNumber}
667
675
  forwardRef={phoneRef}
668
676
  changeCountry={(val: any) => setPhoneInputData({
669
677
  ...phoneInputData,
@@ -794,9 +802,9 @@ const SignupFormUI = (props: SignupParams) => {
794
802
  <OButton
795
803
  imgRightSrc={null}
796
804
  text={t('TERMS_AND_CONDITIONS', 'Terms & Conditions')}
797
- bgColor='#FFF'
798
- borderColor='#FFF'
799
- style={{ paddingLeft: 0, paddingRight: 0, height: 30, shadowColor: '#FFF' }}
805
+ bgColor={theme.colors.white}
806
+ borderColor={theme.colors.white}
807
+ style={{ paddingLeft: 0, paddingRight: 0, height: 30, shadowColor: theme.colors.white }}
800
808
  textStyle={{ color: theme.colors.primary, marginLeft: 0, marginRight: 0 }}
801
809
  onClick={() => handleOpenTermsUrl(configs?.terms_and_conditions_url?.value)}
802
810
  />
@@ -840,6 +848,7 @@ const SignupFormUI = (props: SignupParams) => {
840
848
  />
841
849
  )
842
850
  }
851
+ autoCapitalize='none'
843
852
  value={value}
844
853
  onChange={(val: any) => onChange(val)}
845
854
  returnKeyType="done"
@@ -881,9 +890,7 @@ const SignupFormUI = (props: SignupParams) => {
881
890
  <OButton
882
891
  onClick={handleSubmit(onSubmit)}
883
892
  text={t('GET_VERIFY_CODE', 'Get Verify Code')}
884
- borderColor={theme.colors.primary}
885
893
  imgRightSrc={null}
886
- textStyle={{ color: 'white' }}
887
894
  isLoading={isLoadingVerifyModal}
888
895
  indicatorColor={theme.colors.white}
889
896
  style={{ borderRadius: 7.6, marginTop: 6 }}
@@ -892,9 +899,6 @@ const SignupFormUI = (props: SignupParams) => {
892
899
  <OButton
893
900
  onClick={handleSubmit(onSubmit)}
894
901
  text={signupButtonText}
895
- bgColor={theme.colors.primary}
896
- borderColor={theme.colors.primary}
897
- textStyle={{ color: 'white' }}
898
902
  imgRightSrc={null}
899
903
  isDisabled={formState.loading || validationFields.loading}
900
904
  style={{ borderRadius: 7.6, marginTop: 6, shadowOpacity: 0 }}
@@ -976,13 +980,16 @@ const SignupFormUI = (props: SignupParams) => {
976
980
  )
977
981
  )}
978
982
  </FormSide>
979
- <OModal
980
- open={willVerifyOtpState}
981
- onClose={() => setWillVerifyOtpState && setWillVerifyOtpState(false)}
982
- entireModal
983
- title={t('ENTER_VERIFICATION_CODE', 'Enter verification code')}
983
+ <Modal
984
+ visible={willVerifyOtpState}
985
+ onDismiss={() => setWillVerifyOtpState && setWillVerifyOtpState(false)}
986
+ animationType='slide'
984
987
  >
985
988
  <Otp
989
+ isCheckingCode={isCheckingCode}
990
+ setCheckingCode={setCheckingCode}
991
+ otpError={otpError}
992
+ setOtpError={setOtpError}
986
993
  pinCount={numOtpInputs || 6}
987
994
  willVerifyOtpState={willVerifyOtpState || false}
988
995
  setWillVerifyOtpState={() => setWillVerifyOtpState && setWillVerifyOtpState(false)}
@@ -990,7 +997,7 @@ const SignupFormUI = (props: SignupParams) => {
990
997
  onSubmit={onSubmit}
991
998
  setAlertState={setAlertState}
992
999
  />
993
- </OModal>
1000
+ </Modal>
994
1001
  <Spinner
995
1002
  visible={formState.loading || validationFields.loading || isFBLoading}
996
1003
  />
@@ -3,7 +3,8 @@ import {
3
3
  SingleOrderCard as SingleOrderCardController,
4
4
  useUtils,
5
5
  useOrder,
6
- useLanguage
6
+ useLanguage,
7
+ useConfig
7
8
  } from 'ordering-components/native';
8
9
  import FastImage from 'react-native-fast-image'
9
10
  import { StyleSheet, TouchableOpacity, View } from 'react-native';
@@ -45,6 +46,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
45
46
  const [{ parsePrice, optimizeImage, parseDate }] = useUtils();
46
47
  const [, t] = useLanguage();
47
48
  const [{ carts }] = useOrder()
49
+ const [{ configs }] = useConfig()
48
50
  const theme = useTheme();
49
51
  const isFocused = useIsFocused();
50
52
 
@@ -54,6 +56,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
54
56
 
55
57
  const allowedOrderStatus = [1, 2, 5, 6, 10, 11, 12, 15];
56
58
  const isGiftCardOrder = !order?.business_id
59
+ const changeIdToExternalId = configs?.change_order_id?.value === '1'
57
60
 
58
61
  const styles = StyleSheet.create({
59
62
  container: {
@@ -82,7 +85,6 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
82
85
  elevation: 3
83
86
  },
84
87
  buttonText: {
85
- color: theme.colors.primary,
86
88
  fontSize: 10,
87
89
  marginLeft: 2,
88
90
  marginRight: 2,
@@ -285,7 +287,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
285
287
  ) : (
286
288
  <Price>
287
289
  <OText size={12} lineHeight={18}>
288
- {parsePrice(order?.total)}
290
+ {parsePrice(order?.summary?.total ?? order?.total)}
289
291
  </OText>
290
292
  </Price>
291
293
  )}
@@ -334,7 +336,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
334
336
  lineHeight={15}
335
337
  numberOfLines={1}
336
338
  >
337
- {order?.business?.length > 1 ? order?.business?.length : (t('ORDER_NO', 'Order No') + '.')}
339
+ {order?.business?.length > 1 ? order?.business?.length : !(changeIdToExternalId && order?.external_id) && (t('ORDER_NO', 'Order No') + '.')}
338
340
  </OText>
339
341
  <OText
340
342
  size={10}
@@ -343,7 +345,7 @@ const SingleOrderCardUI = (props: SingleOrderCardParams) => {
343
345
  lineHeight={15}
344
346
  numberOfLines={1}
345
347
  >
346
- {order?.business?.length > 1 ? t('ORDERS', 'orders') + ' \u2022 ' : order.id + ` \u2022 `}
348
+ {order?.business?.length > 1 ? t('ORDERS', 'orders') + ' \u2022 ' : ((changeIdToExternalId && order?.external_id) || order.id) + ` \u2022 `}
347
349
  </OText>
348
350
  </>
349
351
  )}
@@ -54,6 +54,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
54
54
  : theme?.business_view?.components?.products?.components?.product?.components?.image?.hidden
55
55
  const textSize = isChewLayout ? 12 : 10
56
56
  const logoPosition = theme?.business_view?.components?.products?.components?.product?.components?.image?.position
57
+ const hideFavoriteIcon = theme?.business_view?.components?.products?.components?.product?.components?.favorite?.hidden
57
58
 
58
59
  const styles = StyleSheet.create({
59
60
  container: {
@@ -198,7 +199,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
198
199
  style={{ ...styles.line18, flex: 1 }}>
199
200
  {product?.name}
200
201
  </OText>
201
- {!isPreviously && (
202
+ {!isPreviously && !hideFavoriteIcon && (
202
203
  <LottieAnimation
203
204
  type='favorite'
204
205
  onClick={handleChangeFavorite}
@@ -314,9 +315,7 @@ const SingleProductCardUI = React.memo((props: SingleProductCardParams) => {
314
315
  height: 40
315
316
 
316
317
  }}
317
- bgColor={isSoldOut ? '#B8B8B8' : theme?.colors?.white}
318
- borderColor={theme?.colors.primary}
319
- textStyle={{ color: theme.colors.primary }}
318
+ isDisabled={isSoldOut}
320
319
  text={t('ADD', 'Add')}
321
320
  />
322
321
  )}
@@ -49,15 +49,12 @@ export const RibbonBox = styled.View`
49
49
  background-color: ${(props: any) => props.theme.colors.primary};
50
50
  padding: 1px 8px;
51
51
  max-width: 60px;
52
-
53
52
  ${(props: any) => props.bgColor && css`
54
53
  background-color: ${props.bgColor};
55
54
  `}
56
-
57
55
  ${(props: any) => props.isRoundRect && css`
58
56
  border-radius: 7.6px;
59
57
  `}
60
-
61
58
  ${(props: any) => props.isCapsule && css`
62
59
  border-radius: 50px;
63
60
  `}
@@ -65,9 +65,6 @@ const StripeCardFormUI = (props: any) => {
65
65
  <OButton
66
66
  text={loading ? t('LOADING', 'Loading...') : t('ADD', 'Add')}
67
67
  isDisabled={!cardState?.valid || loading}
68
- bgColor={theme.colors.primary}
69
- borderColor={theme.colors.primary}
70
- textStyle={{ color: 'white' }}
71
68
  imgRightSrc={null}
72
69
  onClick={handleSubmit}
73
70
  />
@@ -26,12 +26,14 @@ export const StripeCardsListUI = (props: any) => {
26
26
  const {
27
27
  onSelectCard,
28
28
  deleteCard,
29
- cardSelected,
30
29
  cardsList,
31
30
  handleCardClick,
32
31
  onOpen,
33
32
  gateway,
34
- paySelected
33
+ paySelected,
34
+ newCardAdded,
35
+ addNewCardAsDefault,
36
+ setUserHasCards
35
37
  } = props;
36
38
 
37
39
  const theme = useTheme();
@@ -55,6 +57,17 @@ export const StripeCardsListUI = (props: any) => {
55
57
  }
56
58
  }, [cardsList?.loading])
57
59
 
60
+ useEffect(() => {
61
+ if (newCardAdded && addNewCardAsDefault) {
62
+ handleCardSelected(newCardAdded)
63
+ }
64
+ }, [JSON.stringify(newCardAdded)])
65
+
66
+ useEffect(() => {
67
+ const hasCardSelected = cardsList?.cards?.some?.((card : any) => card?.id === paySelected?.data?.id)
68
+ setUserHasCards && setUserHasCards(cardsList?.cards?.length > 0 && hasCardSelected)
69
+ }, [cardsList?.cards?.length, paySelected])
70
+
58
71
  return (
59
72
  <>
60
73
  {token && !cardsList.loading && cardsList.cards && cardsList.cards.length === 0 && (
@@ -96,7 +109,7 @@ export const StripeCardsListUI = (props: any) => {
96
109
  <OSItem key={card.id} isUnique={cardsList.cards.length} isInvalid={!card?.zipcode && validateZipcodeCard}>
97
110
  <OSItemContent onPress={() => handleCardSelected(card)}>
98
111
  <View style={styles.viewStyle}>
99
- {(card.id === cardSelected?.id || card.id === paySelected?.data?.id) ? (
112
+ {(card.id === paySelected?.data?.id) ? (
100
113
  <OIcon
101
114
  src={theme.images.general.radio_act}
102
115
  width={16}
@@ -35,7 +35,7 @@ const StripeElementsFormUI = (props: any) => {
35
35
  setPlaceByMethodPay,
36
36
  cartTotal,
37
37
  publicKeyAddCard,
38
- urlScheme,
38
+ urlscheme,
39
39
  androidAppId,
40
40
  businessNames,
41
41
  setNewCardAdded
@@ -151,7 +151,10 @@ const StripeElementsFormUI = (props: any) => {
151
151
  const _isNewCard = index === 0
152
152
  stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId, _isNewCard);
153
153
  })
154
- setNewCardAdded(card)
154
+ setNewCardAdded?.({
155
+ ...card,
156
+ id: setupIntent?.paymentMethodId
157
+ })
155
158
  } else {
156
159
  stripeTokenHandler(setupIntent?.paymentMethodId, user, businessId);
157
160
  }
@@ -215,7 +218,7 @@ const StripeElementsFormUI = (props: any) => {
215
218
  <StripeProvider
216
219
  publishableKey={isToSave}
217
220
  merchantIdentifier={merchantId}
218
- urlScheme={`${urlScheme}://checkout/${cart?.uuid}`}
221
+ urlscheme={`${urlscheme}://checkout/${cart?.uuid}`}
219
222
  >
220
223
  {methodsPay?.includes(paymethod) ? (
221
224
  <StripeMethodForm
@@ -284,7 +287,6 @@ const StripeElementsFormUI = (props: any) => {
284
287
  bgColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
285
288
  borderColor={isCompleted ? theme.colors.primary : theme.colors.backgroundGray}
286
289
  style={styles.btnAddStyle}
287
- textStyle={{ color: 'white' }}
288
290
  imgRightSrc={null}
289
291
  onClick={() => handleSaveCard()}
290
292
  isDisabled={!isCompleted}
@@ -53,7 +53,7 @@ export const StripeElementsForm = (props: any) => {
53
53
  const result = await fetch(`${ordering.root}/payments/stripe/cards`, {
54
54
  method: 'POST',
55
55
  headers: {
56
- Authorization: `Bearer ${user?.session?.access_token}`,
56
+ Authorization: `Bearer ${token}`,
57
57
  'Content-Type': 'application/json'
58
58
  },
59
59
  body: JSON.stringify({
@@ -138,9 +138,6 @@ const StripeRedirectFormUI = (props: any) => {
138
138
  <OButton
139
139
  // text={formState.isSubmitting ? t('LOADING', 'Loading...') : t('OK', 'OK')}
140
140
  text={t('OK', 'OK')}
141
- bgColor={theme.colors.primary}
142
- borderColor={theme.colors.primary}
143
- textStyle={{ color: 'white' }}
144
141
  imgRightSrc={null}
145
142
  // isDisabled={formState.isSubmitting}
146
143
  // onClick={() => handleSubmit(onSubmit)}