ordering-ui-react-native 0.22.43 → 0.22.44-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 (160) 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/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  8. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  9. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  10. package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
  11. package/themes/business/src/components/Chat/index.tsx +15 -3
  12. package/themes/business/src/components/DriverMap/index.tsx +44 -33
  13. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  14. package/themes/business/src/components/LanguageSelector/index.tsx +1 -1
  15. package/themes/business/src/components/LoginForm/index.tsx +123 -98
  16. package/themes/business/src/components/LogoutButton/index.tsx +14 -5
  17. package/themes/business/src/components/MapView/index.tsx +42 -22
  18. package/themes/business/src/components/NewOrderNotification/index.tsx +38 -19
  19. package/themes/business/src/components/OrderDetails/Business.tsx +34 -16
  20. package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
  21. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +155 -45
  22. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +51 -28
  23. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  24. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
  25. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  26. package/themes/business/src/components/OrderSummary/index.tsx +6 -4
  27. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  28. package/themes/business/src/components/OrdersOption/index.tsx +332 -231
  29. package/themes/business/src/components/OrdersOption/styles.tsx +14 -0
  30. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  31. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +29 -18
  32. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  33. package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
  34. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  35. package/themes/business/src/components/PrinterEdition/index.tsx +143 -75
  36. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  37. package/themes/business/src/components/PrinterSettings/index.tsx +1 -1
  38. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  39. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  40. package/themes/business/src/components/StoresList/index.tsx +2 -2
  41. package/themes/business/src/components/UserProfileForm/index.tsx +48 -10
  42. package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
  43. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  44. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  45. package/themes/business/src/config/currency.tsx +1010 -0
  46. package/themes/business/src/hooks/useLocation.tsx +16 -12
  47. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  48. package/themes/business/src/types/index.tsx +22 -7
  49. package/themes/business/src/utils/index.tsx +28 -3
  50. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  52. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  53. package/themes/kiosk/src/components/Checkout/index.tsx +9 -5
  54. package/themes/kiosk/src/components/CustomerName/index.tsx +1 -1
  55. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  56. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  57. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  58. package/themes/kiosk/src/components/PaymentOptions/index.tsx +121 -57
  59. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  60. package/themes/original/index.tsx +9 -1
  61. package/themes/original/src/components/AddressForm/index.tsx +25 -17
  62. package/themes/original/src/components/AddressList/index.tsx +8 -7
  63. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  64. package/themes/original/src/components/BusinessBasicInformation/index.tsx +1 -1
  65. package/themes/original/src/components/BusinessItemAccordion/index.tsx +14 -6
  66. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  67. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
  68. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  69. package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
  70. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  71. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  72. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  73. package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
  74. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  75. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  76. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  77. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  78. package/themes/original/src/components/Cart/index.tsx +49 -15
  79. package/themes/original/src/components/CartContent/index.tsx +2 -4
  80. package/themes/original/src/components/Checkout/index.tsx +127 -79
  81. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  82. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  83. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  84. package/themes/original/src/components/Favorite/index.tsx +1 -5
  85. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  86. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  87. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  88. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  89. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  90. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  91. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  92. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  93. package/themes/original/src/components/Help/index.tsx +2 -0
  94. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  95. package/themes/original/src/components/Home/index.tsx +35 -19
  96. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  97. package/themes/original/src/components/LoginForm/index.tsx +13 -10
  98. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  99. package/themes/original/src/components/Messages/index.tsx +20 -13
  100. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  101. package/themes/original/src/components/MomentOption/index.tsx +80 -52
  102. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  103. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -4
  104. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  105. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  106. package/themes/original/src/components/MyOrders/index.tsx +2 -2
  107. package/themes/original/src/components/NavBar/index.tsx +7 -4
  108. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  109. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  110. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  111. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
  112. package/themes/original/src/components/OrderDetails/index.tsx +44 -21
  113. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  114. package/themes/original/src/components/OrderProgress/index.tsx +4 -3
  115. package/themes/original/src/components/OrderSummary/index.tsx +32 -11
  116. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  117. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  118. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  119. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  120. package/themes/original/src/components/PaymentOptions/index.tsx +462 -461
  121. package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
  122. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  123. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  124. package/themes/original/src/components/ProductForm/ActionButton.tsx +7 -12
  125. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  126. package/themes/original/src/components/ProductItemAccordion/index.tsx +30 -38
  127. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  128. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  129. package/themes/original/src/components/Promotions/index.tsx +2 -2
  130. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  131. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  132. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  133. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  134. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  135. package/themes/original/src/components/Sessions/index.tsx +3 -3
  136. package/themes/original/src/components/SignupForm/index.tsx +44 -32
  137. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  138. package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
  139. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  140. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  141. package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
  142. package/themes/original/src/components/StripeElementsForm/index.tsx +8 -4
  143. package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
  144. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  145. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  146. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +8 -5
  147. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  148. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  149. package/themes/original/src/components/UserFormDetails/index.tsx +115 -75
  150. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  151. package/themes/original/src/components/UserVerification/index.tsx +18 -5
  152. package/themes/original/src/components/Wallets/index.tsx +6 -3
  153. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  154. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  155. package/themes/original/src/components/shared/OButton.tsx +5 -4
  156. package/themes/original/src/components/shared/OInput.tsx +4 -8
  157. package/themes/original/src/components/shared/OModal.tsx +7 -2
  158. package/themes/original/src/types/index.tsx +12 -4
  159. package/themes/original/src/utils/index.tsx +29 -0
  160. 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
@@ -66,7 +66,9 @@ const AddressFormUI = (props: AddressFormParams) => {
66
66
  isFromProductsList,
67
67
  hasAddressDefault,
68
68
  afterSignup,
69
- businessSlug
69
+ businessSlug,
70
+ isFromCheckout,
71
+ onNavigationRedirect
70
72
  } = props;
71
73
 
72
74
  const theme = useTheme();
@@ -132,6 +134,7 @@ const AddressFormUI = (props: AddressFormParams) => {
132
134
  const [configState] = useConfig();
133
135
  const [orderState] = useOrder();
134
136
  const { handleSubmit, errors, control, setValue } = useForm();
137
+ const [autoCompleteAddress, setAutoCompleteAddress] = useState(false)
135
138
 
136
139
  const [toggleMap, setToggleMap] = useState(false);
137
140
  const [alertState, setAlertState] = useState<{
@@ -172,6 +175,8 @@ const AddressFormUI = (props: AddressFormParams) => {
172
175
  const isHideMap = theme?.address?.components?.map?.hidden
173
176
  const isHideIcons = theme?.address?.components?.icons?.hidden
174
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)
175
180
  const goToBack = () => navigation?.canGoBack() && navigation.goBack();
176
181
 
177
182
  const getAddressFormatted = (address: any) => {
@@ -351,9 +356,6 @@ const AddressFormUI = (props: AddressFormParams) => {
351
356
  map_data: { library: 'google', place_id: data.place_id },
352
357
  zip_code: data?.zip_code || null,
353
358
  };
354
- if (googleInput?.current) {
355
- googleInput?.current?.setAddressText(addressSelected.address);
356
- }
357
359
  updateChanges(addressSelected);
358
360
  };
359
361
 
@@ -383,9 +385,11 @@ const AddressFormUI = (props: AddressFormParams) => {
383
385
  auth &&
384
386
  !afterSignup
385
387
  ) {
386
- !isFromProductsList
387
- ? navigation.navigate('BottomTab')
388
- : navigation.navigate('Business');
388
+ isFromCheckout
389
+ ? navigation.goBack()
390
+ : !isFromProductsList
391
+ ? navigation.navigate('BottomTab')
392
+ : navigation.navigate('Business');
389
393
  }
390
394
  }, [orderState?.options?.address]);
391
395
 
@@ -524,6 +528,12 @@ const AddressFormUI = (props: AddressFormParams) => {
524
528
  setIsSignUpEffect(true);
525
529
  }, [orderState.loading]);
526
530
 
531
+ useEffect(() => {
532
+ if (isAllowUnaddressOrderType) {
533
+ onNavigationRedirect && onNavigationRedirect(!!businessSlug ? 'Business' : 'BusinessList')
534
+ }
535
+ }, [isAllowUnaddressOrderType])
536
+
527
537
  return (
528
538
  <ScrollView
529
539
  keyboardShouldPersistTaps='always'
@@ -569,6 +579,7 @@ const AddressFormUI = (props: AddressFormParams) => {
569
579
  placeholder={t('ADD_ADDRESS', 'Add a address')}
570
580
  onPress={(data, details: any) => {
571
581
  handleChangeAddress(data, details);
582
+ setAutoCompleteAddress(true);
572
583
  }}
573
584
  query={{
574
585
  key: googleMapsApiKey,
@@ -583,6 +594,7 @@ const AddressFormUI = (props: AddressFormParams) => {
583
594
  target: { name: 'address', value: text },
584
595
  });
585
596
  setValue('address', text);
597
+ setAutoCompleteAddress(true)
586
598
  }
587
599
  setIsFirstTime(false);
588
600
  setAddressEditing(text.length == 0);
@@ -670,13 +682,15 @@ const AddressFormUI = (props: AddressFormParams) => {
670
682
  setSaveLocation={setSaveMapLocation}
671
683
  handleToggleMap={handleToggleMap}
672
684
  isIntGeoCoder
685
+ setAutoCompleteAddress={setAutoCompleteAddress}
686
+ autoCompleteAddress={autoCompleteAddress}
673
687
  />
674
688
  </GoogleMapContainer>
675
689
  </View>
676
690
  )}
677
691
 
678
692
  <View style={{ flexDirection: 'row', flexBasis: '50%' }}>
679
- {((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
693
+ {showField?.('internal_number') && ((isRequiredField && isRequiredField('internal_number')) || showFieldWithTheme('internal_number')) && (
680
694
  <Controller
681
695
  control={control}
682
696
  name="internal_number"
@@ -723,7 +737,7 @@ const AddressFormUI = (props: AddressFormParams) => {
723
737
  />
724
738
  )}
725
739
 
726
- {((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
740
+ {showField?.('zipcode') && ((isRequiredField && isRequiredField('zipcode')) || showFieldWithTheme('zipcode')) && (
727
741
  <Controller
728
742
  control={control}
729
743
  name="zipcode"
@@ -768,7 +782,7 @@ const AddressFormUI = (props: AddressFormParams) => {
768
782
  )}
769
783
  </View>
770
784
 
771
- {((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
785
+ {showField?.('address_notes') && ((isRequiredField && isRequiredField('address_notes')) || showFieldWithTheme('address_notes')) && (
772
786
  <Controller
773
787
  control={control}
774
788
  name="address_notes"
@@ -849,9 +863,6 @@ const AddressFormUI = (props: AddressFormParams) => {
849
863
  : t('LOADING', 'Loading')
850
864
  }
851
865
  onClick={handleSubmit(onSubmit)}
852
- bgColor={theme.colors.primary}
853
- borderColor={theme.colors.primary}
854
- textStyle={{ color: theme.colors.white }}
855
866
  isDisabled={formState.loading}
856
867
  style={{ borderRadius: 7.6, shadowOpacity: 0 }}
857
868
  showNextIcon
@@ -861,7 +872,7 @@ const AddressFormUI = (props: AddressFormParams) => {
861
872
  text={t('CANCEL', 'Cancel')}
862
873
  bgColor={theme.colors.secundary}
863
874
  borderColor={theme.colors.secundary}
864
- textStyle={{ color: theme.colors.black }}
875
+ textStyle={{ color: theme.colors.textNormal }}
865
876
  style={{ borderRadius: 7.6, borderWidth: 1, shadowOpacity: 0 }}
866
877
  onClick={() => navigation?.canGoBack() && navigation.goBack()}
867
878
  />
@@ -887,9 +898,6 @@ const AddressFormUI = (props: AddressFormParams) => {
887
898
  )}
888
899
  <OButton
889
900
  text={t('SAVE', 'Save')}
890
- textStyle={{ color: theme.colors.white }}
891
- bgColor={theme.colors.primary}
892
- borderColor={theme.colors.primary}
893
901
  imgRightSrc={null}
894
902
  style={{ marginHorizontal: 30, marginBottom: 10 }}
895
903
  onClick={() => setSaveMapLocation(true)}
@@ -217,7 +217,8 @@ const AddressListUI = (props: AddressListParams) => {
217
217
  onSaveAddress: handleSaveAddress,
218
218
  isSelectedAfterAdd: true,
219
219
  isFromProductsList: isFromProductsList,
220
- hasAddressDefault: !!orderState.options?.address?.location
220
+ hasAddressDefault: !!orderState.options?.address?.location,
221
+ isFromCheckout: route?.params?.isFromCheckout
221
222
  }
222
223
  ) : onNavigationRedirect(
223
224
  'AddressFormInitial',
@@ -228,7 +229,8 @@ const AddressListUI = (props: AddressListParams) => {
228
229
  onSaveAddress: handleSaveAddress,
229
230
  isSelectedAfterAdd: true,
230
231
  isFromProductsList: isFromProductsList,
231
- hasAddressDefault: !!orderState.options?.address?.location
232
+ hasAddressDefault: !!orderState.options?.address?.location,
233
+ isFromCheckout: route?.params?.isFromCheckout
232
234
  })}
233
235
  >
234
236
  <OIcon src={theme.images.general.pencil} width={16} style={{ marginHorizontal: 4 }} />
@@ -293,10 +295,7 @@ const AddressListUI = (props: AddressListParams) => {
293
295
  <OButton
294
296
  text={t('ADD_NEW_ADDRESS', 'Add new Address')}
295
297
  imgRightSrc=''
296
- bgColor={theme.colors.primary}
297
- textStyle={{ color: theme.colors.white }}
298
298
  style={styles.button}
299
- borderColor={theme.colors.primary}
300
299
  onClick={() => !afterSignup ? onNavigationRedirect(
301
300
  'AddressForm',
302
301
  {
@@ -305,7 +304,8 @@ const AddressListUI = (props: AddressListParams) => {
305
304
  addressesList: addressList?.addresses,
306
305
  nopadding: true,
307
306
  isSelectedAfterAdd: true,
308
- hasAddressDefault: !!orderState.options?.address?.location
307
+ hasAddressDefault: !!orderState.options?.address?.location,
308
+ isFromCheckout: route?.params?.isFromCheckout
309
309
  }) : onNavigationRedirect(
310
310
  'AddressFormInitial',
311
311
  {
@@ -314,7 +314,8 @@ const AddressListUI = (props: AddressListParams) => {
314
314
  addressesList: addressList?.addresses,
315
315
  nopadding: true,
316
316
  isSelectedAfterAdd: true,
317
- hasAddressDefault: !!orderState.options?.address?.location
317
+ hasAddressDefault: !!orderState.options?.address?.location,
318
+ isFormCheckout: route?.params?.isFromCheckout
318
319
  })}
319
320
  />
320
321
  </>
@@ -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
  )}