ordering-ui-react-native 0.22.49 → 0.22.50-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 +6 -8
  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 +88 -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 +332 -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 -28
  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 +7 -4
  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 +8 -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
@@ -24,6 +24,11 @@ import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons'
24
24
 
25
25
  const PaymentOptionsUI = (props: any) => {
26
26
  const {
27
+ cart,
28
+ onNavigationRedirect,
29
+ isDisabled,
30
+ paymethodData,
31
+ handlePaymethodDataChange,
27
32
  errorCash,
28
33
  isLoading,
29
34
  paymethodsList,
@@ -43,11 +48,11 @@ const PaymentOptionsUI = (props: any) => {
43
48
  const [orientationState] = useDeviceOrientation();
44
49
  const [userErrors, setUserErrors] = useState<any>([]);
45
50
  const [isOpenModal, setIsOpenModal] = useState(false)
46
- const paymethodSelected = paySelected || props.paymethodSelected || isOpenMethod.paymethod;
47
- const includePaymethods = ['cash', 'card_delivery'];
51
+ const paymethodSelected =
52
+ paySelected || props.paymethodSelected || isOpenMethod.paymethod;
48
53
 
49
54
  useEffect(() => {
50
- if (paymethodsList?.paymethods?.length === 1) {
55
+ if (paymethodsList.paymethods.length === 1) {
51
56
  handlePaymethodClick &&
52
57
  handlePaymethodClick(paymethodsList.paymethods[0]);
53
58
  }
@@ -80,11 +85,23 @@ const PaymentOptionsUI = (props: any) => {
80
85
  }
81
86
  }, [isOpenMethod.paymethod, placing, isLoading, paySelected]);
82
87
 
83
- const supportedMethods = paymethodsList?.paymethods?.filter((p: any) =>
88
+ // const includePaymethods = ['cash', 'card_delivery', 'stripe'];
89
+ const includePaymethods = ['cash', 'card_delivery'];
90
+
91
+ const supportedMethods = paymethodsList.paymethods.filter((p: any) =>
84
92
  includePaymethods.includes(p.gateway),
85
93
  );
86
94
 
87
- const onSelectPaymethod = (paymethod: any) => {
95
+ const cashIndex: number = supportedMethods?.findIndex(
96
+ (item: any) => item?.gateway === 'cash',
97
+ );
98
+ const cardOnDeliveryIndex = supportedMethods?.findIndex(
99
+ (item: any) => item?.gateway === 'card_delivery',
100
+ );
101
+ const stripeIndex = supportedMethods?.findIndex(
102
+ (item: any) => item?.gateway === 'stripe',
103
+ );
104
+ const onSelectPaymethod = (paymethod: any, isPopupMethod: boolean) => {
88
105
  handlePaymethodClick(paymethod);
89
106
  };
90
107
 
@@ -115,15 +132,57 @@ const PaymentOptionsUI = (props: any) => {
115
132
  : orientationState?.dimensions?.height * 0.55,
116
133
  };
117
134
 
118
- const description = {
119
- cash: t(
120
- 'GO_FOR_YOR_RECEIPT_AND_GO_TO_THE_FRONT_COUNTER',
121
- 'Pay with cash in the front counter',
122
- ),
123
- card_delivery: t(
124
- 'WE_ACCEPT_EVERY_DEBIT_OR_CREDIT_CARD',
125
- 'We accept every debit or credit card',
126
- ),
135
+ const propsOfItems = {
136
+ CASH_ID:
137
+ cashIndex !== -1
138
+ ? {
139
+ style: cardStyle,
140
+ title: t('CASH', 'Cash'),
141
+ description: t(
142
+ 'GO_FOR_YOR_RECEIPT_AND_GO_TO_THE_FRONT_COUNTER',
143
+ 'Pay with cash in the front counter',
144
+ ),
145
+ bgImage: theme.images.general.cash,
146
+ callToActionText: t('LETS_GO', 'LETS_GO'),
147
+ VectorIcon: () => <AntIconDesign name='shoppingcart' size={28} color='white' style={{ marginBottom: 10 }} />,
148
+ onClick: () =>
149
+ onSelectPaymethod(supportedMethods[cashIndex], false),
150
+ ...supportedMethods[cashIndex],
151
+ }
152
+ : null,
153
+
154
+ CARD_ON_DELIVERY_ID:
155
+ cardOnDeliveryIndex !== -1
156
+ ? {
157
+ style: cardStyle,
158
+ title: t('CARD', supportedMethods[cardOnDeliveryIndex]?.name),
159
+ description: t(
160
+ 'WE_ACCEPT_EVERY_DEBIT_OR_CREDIT_CARD',
161
+ 'We accept every debit or credit card',
162
+ ),
163
+ bgImage: theme.images.general.carddelivery,
164
+ callToActionText: t("LETS_GO", "Let's go"),
165
+ VectorIcon: () => <MaterialIcon name='pin-outline' size={28} color='white' style={{ marginBottom: 10 }} />,
166
+ onClick: () => onSelectPaymethod(supportedMethods[cardOnDeliveryIndex], false),
167
+ ...supportedMethods[cardOnDeliveryIndex],
168
+ }
169
+ : null,
170
+ STRIPE:
171
+ stripeIndex !== -1
172
+ ? {
173
+ style: cardStyle,
174
+ title: t('STRIPE', supportedMethods[stripeIndex]?.name),
175
+ description: t('STRIPE', 'Stripe'),
176
+ bgImage: theme.images.general.carddelivery,
177
+ callToActionText: t('INSERT_INFO', 'Test info'),
178
+ VectorIcon: () => <MaterialIcon name='pin-outline' size={28} color='white' style={{ marginBottom: 10 }} />,
179
+ onClick: () => {
180
+ onSelectPaymethod(supportedMethods[stripeIndex], false);
181
+ setIsOpenModal(true)
182
+ },
183
+ ...supportedMethods[stripeIndex],
184
+ }
185
+ : null,
127
186
  };
128
187
 
129
188
  const goToBack = () => navigation?.goBack();
@@ -133,40 +192,47 @@ const PaymentOptionsUI = (props: any) => {
133
192
  <Spinner visible={isLoading || placing || paymethodsList?.loading} />
134
193
 
135
194
  <Container nestedScrollEnabled>
136
- <NavBar
137
- title={t('PAYMENT_METHODS', 'Payment methods')}
138
- onActionLeft={goToBack}
139
- btnStyle={{ paddingLeft: 0 }}
140
- />
141
-
142
- <View
143
- style={{ marginVertical: orientationState?.dimensions?.height * 0.03 }}>
144
- <OText size={orientationState?.dimensions?.width * 0.048}>
145
- {t('HOW_WOULD_YOU', 'How would you')} {'\n'}
146
- <OText
147
- size={orientationState?.dimensions?.width * 0.048}
148
- weight={'700'}>
149
- {`${t('LIKE_TO_PAY', 'like to pay')}?`}
150
- </OText>
151
- </OText>
152
- </View>
153
-
154
- <GridContainer style={{ justifyContent: 'space-between' }}>
155
- {supportedMethods?.length > 0 ? (supportedMethods?.map((paymethod: any, i: number) => (
156
- <>
157
- <View style={{ marginBottom: orientationState?.orientation === LANDSCAPE ? 20 : 0 }}>
158
- <OptionCard
159
- {...{
160
- style: cardStyle,
161
- title: t(`${paymethod.gateway.toUpperCase().replace(/\s/g, '_')}`, paymethod.name),
162
- description: description[paymethod.gateway] ?? t(`${paymethod.gateway.toUpperCase().replace(/\s/g, '_')}`, paymethod.name),
163
- bgImage: paymethod.name === 'Cash' ? theme.images.general.cash : theme.images.general.carddelivery,
164
- callToActionText: paymethod.name === 'Cash' ? t('LETS_GO', 'LETS_GO') : t('INSERT_INFO', 'Test info'),
165
- VectorIcon: () => paymethod.name === 'Cash' ? <AntIconDesign name='shoppingcart' size={28} color='white' style={{ marginBottom: 10 }} /> : <MaterialIcon name='pin-outline' size={28} color='white' style={{ marginBottom: 10 }} />,
166
- onClick: () => onSelectPaymethod(paymethod, false),
167
- }}
168
- />
169
- </View>
195
+ {supportedMethods?.length > 0 && (
196
+ <>
197
+ <NavBar
198
+ title={t('PAYMENT_METHODS', 'Payment methods')}
199
+ onActionLeft={goToBack}
200
+ btnStyle={{ paddingLeft: 0 }}
201
+ />
202
+
203
+ <View
204
+ style={{ marginVertical: orientationState?.dimensions?.height * 0.03 }}>
205
+ <OText size={orientationState?.dimensions?.width * 0.048}>
206
+ {t('HOW_WOULD_YOU', 'How would you')} {'\n'}
207
+ <OText
208
+ size={orientationState?.dimensions?.width * 0.048}
209
+ weight={'700'}>
210
+ {`${t('LIKE_TO_PAY', 'like to pay')}?`}
211
+ </OText>
212
+ </OText>
213
+ </View>
214
+
215
+ <GridContainer style={{ justifyContent: 'space-between' }}>
216
+ {propsOfItems.CARD_ON_DELIVERY_ID && (
217
+ <View style={{ marginBottom: orientationState?.orientation === LANDSCAPE ? 20 : 0 }}>
218
+ <OptionCard {...propsOfItems?.CARD_ON_DELIVERY_ID} styke />
219
+ </View>
220
+ )}
221
+
222
+ <View
223
+ style={{
224
+ width:
225
+ orientationState?.orientation === LANDSCAPE
226
+ ? orientationState?.dimensions?.width * 0.0016
227
+ : 1,
228
+ height:
229
+ orientationState?.orientation === PORTRAIT
230
+ ? orientationState?.dimensions?.height * 0.018
231
+ : 1,
232
+ }}
233
+ />
234
+
235
+ {propsOfItems?.CASH_ID && <OptionCard {...propsOfItems?.CASH_ID} />}
170
236
 
171
237
  <View
172
238
  style={{
@@ -180,15 +246,13 @@ const PaymentOptionsUI = (props: any) => {
180
246
  : 1,
181
247
  }}
182
248
  />
183
- </>
184
- ))) : (
185
- <OText
186
- size={orientationState?.dimensions?.width * 0.048}
187
- weight={'700'}>
188
- {`${t('NO_PAYMETHODS_AVAILABLES', 'No paymethods availables')}`}
189
- </OText>
190
- )}
191
- </GridContainer>
249
+
250
+ {propsOfItems.STRIPE && (
251
+ <OptionCard {...propsOfItems?.STRIPE} />
252
+ )}
253
+ </GridContainer>
254
+ </>
255
+ )}
192
256
  <View style={{ height: orientationState?.dimensions?.height * 0.05 }} />
193
257
  <OModal
194
258
  open={isOpenModal}
@@ -10,8 +10,6 @@ import {
10
10
 
11
11
  import * as React from 'react';
12
12
  import styled from 'styled-components/native';
13
- import AntDesignIcon from 'react-native-vector-icons/AntDesign'
14
- import { Icon, IconProps } from 'react-native-vector-icons/Icon';
15
13
 
16
14
  const StyledButton = styled.View<Props>`
17
15
  background-color: ${(props: any) => props.theme.colors.primary};
@@ -79,19 +77,17 @@ interface Props {
79
77
  isCircle?: boolean;
80
78
  bgColor?: string;
81
79
  borderColor?: string;
82
- iconProps?: IconProps;
83
- IconCustom?: React.FunctionComponent
84
80
  }
85
81
 
86
82
  const OButton = (props: Props): React.ReactElement => {
87
83
  if (props.isDisabled) {
88
84
  return (
89
85
  <View style={props.parentStyle}>
90
- <StyledButtonDisabled style={props.style}>
91
- <StyledTextDisabled style={props.disabledTextStyle ? props.disabledTextStyle : props.textStyle}>
92
- {props.text}
93
- </StyledTextDisabled>
94
- </StyledButtonDisabled>
86
+ <StyledButtonDisabled style={props.style}>
87
+ <StyledTextDisabled style={props.disabledTextStyle ? props.disabledTextStyle : props.textStyle}>
88
+ {props.text}
89
+ </StyledTextDisabled>
90
+ </StyledButtonDisabled>
95
91
  </View>
96
92
  );
97
93
  }
@@ -115,15 +111,6 @@ const OButton = (props: Props): React.ReactElement => {
115
111
  {props.imgLeftSrc ? (
116
112
  <StyledImage style={props.imgLeftStyle} source={props.imgLeftSrc} />
117
113
  ) : null}
118
- {props.iconProps ? (
119
- <>
120
- {props?.IconCustom ? (
121
- <props.IconCustom {...props.iconProps} />
122
- ) : (
123
- <AntDesignIcon {...props.iconProps} />
124
- )}
125
- </>
126
- ) : null}
127
114
  {props.text ? (
128
115
  <StyledText style={props.textStyle}>{props.text}</StyledText>
129
116
  ) : null}
@@ -19,6 +19,7 @@ import { Favorite } from './src/components/Favorite';
19
19
  import { FavoriteList } from './src/components/FavoriteList';
20
20
  import { FloatingButton } from './src/components/FloatingButton';
21
21
  import { ForgotPasswordForm } from './src/components/ForgotPasswordForm';
22
+ import { GPSButton } from './src/components/GPSButton';
22
23
  import { MomentOption } from './src/components/MomentOption';
23
24
  import { OrdersOption } from './src/components/OrdersOption';
24
25
  import { OrderDetails } from './src/components/OrderDetails';
@@ -85,6 +86,7 @@ import { VerifyPhone } from './src/components/VerifyPhone';
85
86
  import { GoogleLogin } from './src/components/GoogleLogin';
86
87
  import { PreviousOrders } from './src/components/PreviousOrders';
87
88
  import { PaymentOptionCash } from './src/components/PaymentOptionCash';
89
+ import { SendGiftCard } from './src/components/GiftCard/SendGiftCard';
88
90
  import { StripeElementsForm } from './src/components/StripeElementsForm';
89
91
  import { StripeCardsList } from './src/components/StripeCardsList';
90
92
  import { ProductIngredient } from './src/components/ProductIngredient';
@@ -106,7 +108,7 @@ import { OSBill, OSTable, OSCoupon, OSTotal, OSRow } from './src/components/Orde
106
108
  import { FormInput, FormSide, ButtonsWrapper, LoginWith, OTab, OTabs } from './src/components/LoginForm/styles';
107
109
  import { OSItem, OSItemContent, OSItemActions } from './src/components/PaymentOptionStripe/styles';
108
110
 
109
- import { orderTypeList } from './src/utils'
111
+ import { orderTypeList, getTraduction, verifyDecimals, getOrderStatus, getOrderStatuPickUp } from './src/utils'
110
112
 
111
113
  import Alert from './src/providers/AlertProvider'
112
114
 
@@ -184,6 +186,7 @@ export {
184
186
  Checkout,
185
187
  Favorite,
186
188
  FavoriteList,
189
+ GPSButton,
187
190
  ForgotPasswordForm,
188
191
  MomentOption,
189
192
  OrdersOption,
@@ -258,6 +261,7 @@ export {
258
261
  ProductIngredient,
259
262
  ProductOption,
260
263
  ProductOptionSubOption,
264
+ SendGiftCard,
261
265
  Sessions,
262
266
  SingleProductReview,
263
267
  LogoutButton,
@@ -346,6 +350,10 @@ export {
346
350
  _removeStoreData,
347
351
  _clearStoreData,
348
352
  orderTypeList,
353
+ getTraduction,
354
+ verifyDecimals,
355
+ getOrderStatus,
356
+ getOrderStatuPickUp,
349
357
 
350
358
  // Date Picker
351
359
  DatePickerUI
@@ -67,7 +67,8 @@ const AddressFormUI = (props: AddressFormParams) => {
67
67
  hasAddressDefault,
68
68
  afterSignup,
69
69
  businessSlug,
70
- isFromCheckout
70
+ isFromCheckout,
71
+ onNavigationRedirect
71
72
  } = props;
72
73
 
73
74
  const theme = useTheme();
@@ -133,6 +134,7 @@ const AddressFormUI = (props: AddressFormParams) => {
133
134
  const [configState] = useConfig();
134
135
  const [orderState] = useOrder();
135
136
  const { handleSubmit, errors, control, setValue } = useForm();
137
+ const [autoCompleteAddress, setAutoCompleteAddress] = useState(false)
136
138
 
137
139
  const [toggleMap, setToggleMap] = useState(false);
138
140
  const [alertState, setAlertState] = useState<{
@@ -173,6 +175,8 @@ const AddressFormUI = (props: AddressFormParams) => {
173
175
  const isHideMap = theme?.address?.components?.map?.hidden
174
176
  const isHideIcons = theme?.address?.components?.icons?.hidden
175
177
  const continueAsGuest = () => navigation.navigate(!!businessSlug ? 'Business' : 'BusinessList', { isGuestUser: true });
178
+ const unaddressedTypes = configState?.configs?.unaddressed_order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
179
+ const isAllowUnaddressOrderType = unaddressedTypes.includes(orderState?.options?.type)
176
180
  const goToBack = () => navigation?.canGoBack() && navigation.goBack();
177
181
 
178
182
  const getAddressFormatted = (address: any) => {
@@ -352,9 +356,6 @@ const AddressFormUI = (props: AddressFormParams) => {
352
356
  map_data: { library: 'google', place_id: data.place_id },
353
357
  zip_code: data?.zip_code || null,
354
358
  };
355
- if (googleInput?.current) {
356
- googleInput?.current?.setAddressText(addressSelected.address);
357
- }
358
359
  updateChanges(addressSelected);
359
360
  };
360
361
 
@@ -527,6 +528,12 @@ const AddressFormUI = (props: AddressFormParams) => {
527
528
  setIsSignUpEffect(true);
528
529
  }, [orderState.loading]);
529
530
 
531
+ useEffect(() => {
532
+ if (isAllowUnaddressOrderType) {
533
+ onNavigationRedirect && onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList')
534
+ }
535
+ }, [isAllowUnaddressOrderType])
536
+
530
537
  return (
531
538
  <ScrollView
532
539
  keyboardShouldPersistTaps='always'
@@ -542,11 +549,6 @@ const AddressFormUI = (props: AddressFormParams) => {
542
549
  style={{ marginTop: Platform.OS === 'ios' ? 0 : 10 }}
543
550
  titleWrapStyle={{ paddingHorizontal: 0, width: '100%' }}
544
551
  titleStyle={{ marginRight: 0, marginLeft: 0, paddingRight: 5 }}
545
- buttonProps={{
546
- bgColor: theme.colors.white,
547
- borderColor: theme.colors.white,
548
- textStyle: { color: theme.colors.btnFont }
549
- }}
550
552
  />
551
553
  </View>
552
554
  <TouchableWithoutFeedback onPress={Keyboard.dismiss}>
@@ -577,6 +579,7 @@ const AddressFormUI = (props: AddressFormParams) => {
577
579
  placeholder={t('ADD_ADDRESS', 'Add a address')}
578
580
  onPress={(data, details: any) => {
579
581
  handleChangeAddress(data, details);
582
+ setAutoCompleteAddress(true);
580
583
  }}
581
584
  query={{
582
585
  key: googleMapsApiKey,
@@ -591,6 +594,7 @@ const AddressFormUI = (props: AddressFormParams) => {
591
594
  target: { name: 'address', value: text },
592
595
  });
593
596
  setValue('address', text);
597
+ setAutoCompleteAddress(true)
594
598
  }
595
599
  setIsFirstTime(false);
596
600
  setAddressEditing(text.length == 0);
@@ -678,13 +682,15 @@ const AddressFormUI = (props: AddressFormParams) => {
678
682
  setSaveLocation={setSaveMapLocation}
679
683
  handleToggleMap={handleToggleMap}
680
684
  isIntGeoCoder
685
+ setAutoCompleteAddress={setAutoCompleteAddress}
686
+ autoCompleteAddress={autoCompleteAddress}
681
687
  />
682
688
  </GoogleMapContainer>
683
689
  </View>
684
690
  )}
685
691
 
686
692
  <View style={{ flexDirection: 'row', flexBasis: '50%' }}>
687
- {((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
693
+ {showField?.('internal_number') && ((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
688
694
  <Controller
689
695
  control={control}
690
696
  name="internal_number"
@@ -731,7 +737,7 @@ const AddressFormUI = (props: AddressFormParams) => {
731
737
  />
732
738
  )}
733
739
 
734
- {((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
740
+ {showField?.('zipcode') && ((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
735
741
  <Controller
736
742
  control={control}
737
743
  name="zipcode"
@@ -776,7 +782,7 @@ const AddressFormUI = (props: AddressFormParams) => {
776
782
  )}
777
783
  </View>
778
784
 
779
- {((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
785
+ {showField?.('address_notes') && ((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
780
786
  <Controller
781
787
  control={control}
782
788
  name="address_notes"
@@ -857,9 +863,6 @@ const AddressFormUI = (props: AddressFormParams) => {
857
863
  : t('LOADING', 'Loading')
858
864
  }
859
865
  onClick={handleSubmit(onSubmit)}
860
- bgColor={theme.colors.primary}
861
- borderColor={theme.colors.primary}
862
- textStyle={{ color: theme.colors.white }}
863
866
  isDisabled={formState.loading}
864
867
  style={{ borderRadius: 7.6, shadowOpacity: 0 }}
865
868
  showNextIcon
@@ -869,7 +872,7 @@ const AddressFormUI = (props: AddressFormParams) => {
869
872
  text={t('CANCEL', 'Cancel')}
870
873
  bgColor={theme.colors.secundary}
871
874
  borderColor={theme.colors.secundary}
872
- textStyle={{ color: theme.colors.black }}
875
+ textStyle={{ color: theme.colors.textNormal }}
873
876
  style={{ borderRadius: 7.6, borderWidth: 1, shadowOpacity: 0 }}
874
877
  onClick={() => navigation?.canGoBack() && navigation.goBack()}
875
878
  />
@@ -895,9 +898,6 @@ const AddressFormUI = (props: AddressFormParams) => {
895
898
  )}
896
899
  <OButton
897
900
  text={t('SAVE', 'Save')}
898
- textStyle={{ color: theme.colors.white }}
899
- bgColor={theme.colors.primary}
900
- borderColor={theme.colors.primary}
901
901
  imgRightSrc={null}
902
902
  style={{ marginHorizontal: 30, marginBottom: 10 }}
903
903
  onClick={() => setSaveMapLocation(true)}
@@ -152,11 +152,6 @@ const AddressListUI = (props: AddressListParams) => {
152
152
  showCall={false}
153
153
  paddingTop={10}
154
154
  btnStyle={{ paddingLeft: 0 }}
155
- buttonProps={{
156
- bgColor: theme.colors.white,
157
- borderColor: theme.colors.white,
158
- textStyle: { color: theme.colors.btnFont }
159
- }}
160
155
  />
161
156
  )}
162
157
  {
@@ -178,11 +173,6 @@ const AddressListUI = (props: AddressListParams) => {
178
173
  style={{ marginTop: 0 }}
179
174
  titleWrapStyle={{ paddingHorizontal: 0 }}
180
175
  titleStyle={{ marginLeft: 0, marginRight: 0 }}
181
- buttonProps={{
182
- bgColor: theme.colors.white,
183
- borderColor: theme.colors.white,
184
- textStyle: { color: theme.colors.btnFont }
185
- }}
186
176
  />
187
177
  )}
188
178
  {addressList.loading && addressList?.addresses?.length === 0 && (
@@ -305,10 +295,7 @@ const AddressListUI = (props: AddressListParams) => {
305
295
  <OButton
306
296
  text={t('ADD_NEW_ADDRESS', 'Add new Address')}
307
297
  imgRightSrc=''
308
- bgColor={theme.colors.primary}
309
- textStyle={{ color: theme.colors.white }}
310
298
  style={styles.button}
311
- borderColor={theme.colors.primary}
312
299
  onClick={() => !afterSignup ? onNavigationRedirect(
313
300
  'AddressForm',
314
301
  {
@@ -21,7 +21,7 @@ export const AppleLogin = (props: any) => {
21
21
  const [{ configs }] = useConfig();
22
22
  const [credentialStateForUser, updateCredentialStateForUser] = useState<any>(-1);
23
23
 
24
- let user : any= null
24
+ let user: any = null
25
25
 
26
26
  const buttonText = auth
27
27
  ? t('CONTINUE_WITH_APPLE', 'Logout with Apple')
@@ -53,7 +53,7 @@ export const AppleLogin = (props: any) => {
53
53
  }
54
54
  }
55
55
 
56
- const fetchAndUpdateCredentialState = async (updateCredentialStateForUser : any) => {
56
+ const fetchAndUpdateCredentialState = async (updateCredentialStateForUser: any) => {
57
57
  if (user === null) {
58
58
  updateCredentialStateForUser('N/A');
59
59
  } else {
@@ -66,7 +66,7 @@ export const AppleLogin = (props: any) => {
66
66
  }
67
67
  }
68
68
 
69
- const onIOSButtonPress = async (updateCredentialStateForUser : any) => {
69
+ const onIOSButtonPress = async (updateCredentialStateForUser: any) => {
70
70
  try {
71
71
  const appleAuthRequestResponse = await appleAuth.performRequest({
72
72
  requestedOperation: appleAuth.Operation.LOGIN,
@@ -79,7 +79,7 @@ export const AppleLogin = (props: any) => {
79
79
  identityToken,
80
80
  authorizationCode
81
81
  } = appleAuthRequestResponse;
82
-
82
+
83
83
  user = newUser;
84
84
 
85
85
  fetchAndUpdateCredentialState(updateCredentialStateForUser).catch(error =>
@@ -452,7 +452,7 @@ export const BusinessBasicInformation = (
452
452
  </BusinessInfoItem>
453
453
  </View>
454
454
  <WrapReviews>
455
- {!isBusinessInfoShow && (
455
+ {!isBusinessInfoShow && !loading && (
456
456
  <>
457
457
  {isPreOrder && (!business?.professionals || business?.professionals?.length === 0) && (
458
458
  <>
@@ -1,5 +1,5 @@
1
1
  import React, { useState, useRef, useEffect } from 'react';
2
- import { TouchableOpacity, View } from 'react-native';
2
+ import { TouchableOpacity, View, Vibration } from 'react-native';
3
3
  import { useOrder, useLanguage, useUtils, useConfig, useEvent } from 'ordering-components/native';
4
4
  import { useTheme } from 'styled-components/native';
5
5
  import {
@@ -49,7 +49,7 @@ export const BusinessItemAccordion = (props: any) => {
49
49
  if (cartsLength === 1) {
50
50
  changeActiveState && changeActiveState(!isClosed, cart?.uuid)
51
51
  }
52
- }, [orderState?.carts, isClosed])
52
+ }, [orderState?.carts?.length, isClosed])
53
53
 
54
54
  const subtotalWithTaxes = cart?.taxes?.reduce((acc: any, item: any) => {
55
55
  if (item?.type === 1)
@@ -57,6 +57,9 @@ export const BusinessItemAccordion = (props: any) => {
57
57
  return acc = acc
58
58
  }, cart?.subtotal)
59
59
 
60
+ const bgStyle = (subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.secundary : theme.colors.primary
61
+ const textStyles = (subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.black : theme.colors.white
62
+
60
63
  useEffect(() => {
61
64
  if (isActive && !isFromUpselling) {
62
65
  if (cart?.uuid !== viewedCart?.uuid) {
@@ -66,6 +69,11 @@ export const BusinessItemAccordion = (props: any) => {
66
69
  }
67
70
  }, [isActive, viewedCart])
68
71
 
72
+ const handleGoToStore = () => {
73
+ Vibration.vibrate(100)
74
+ props.onNavigationRedirect('Business', { store: cart?.business?.slug })
75
+ }
76
+
69
77
  return (
70
78
  <BIContainer isClosed={isClosed} isMultiCheckout={isMultiCheckout} checkoutVisible={!isActive && !isClosed && !!isProducts && !checkoutButtonDisabled}>
71
79
  <BIHeader
@@ -79,7 +87,7 @@ export const BusinessItemAccordion = (props: any) => {
79
87
  <View style={{ flexDirection: 'row' }}>
80
88
  {props.onNavigationRedirect && !isClosed && !isGiftCart && (
81
89
  <>
82
- <TouchableOpacity onPress={() => props.onNavigationRedirect('Business', { store: cart?.business?.slug })}>
90
+ <TouchableOpacity onPress={() => handleGoToStore()}>
83
91
  <OText color={theme.colors.primary} size={12} lineHeight={18} style={{ textDecorationLine: 'underline' }}>{t('GO_TO_STORE', 'Go to store')}</OText>
84
92
  </TouchableOpacity>
85
93
  </>
@@ -153,11 +161,11 @@ export const BusinessItemAccordion = (props: any) => {
153
161
  {cart?.valid_products && (
154
162
  <OButton
155
163
  onClick={handleClickCheckout}
156
- textStyle={{ color: 'white', textAlign: 'center', flex: 1 }}
164
+ textStyle={{ color: textStyles, textAlign: 'center', flex: 1 }}
157
165
  style={{ width: 180, flexDirection: 'row', justifyContent: 'center', borderRadius: 7.6, shadowOpacity: 0 }}
158
166
  text={t('CHECKOUT', 'Checkout')}
159
- bgColor={(subtotalWithTaxes < cart?.minimum || !cart?.valid_address) ? theme.colors.secundary : theme.colors.primary}
160
- borderColor={theme.colors.primary}
167
+ bgColor={bgStyle}
168
+ borderColor={bgStyle}
161
169
  isDisabled={checkoutButtonDisabled}
162
170
  />
163
171
  )}