ordering-ui-react-native 0.17.67 → 0.17.68-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 (202) hide show
  1. package/package.json +8 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessInformation/index.tsx +10 -9
  4. package/src/components/BusinessesListing/index.tsx +1 -1
  5. package/src/components/OrderCreating/index.tsx +1 -21
  6. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  7. package/src/components/PhoneInputNumber/index.tsx +6 -2
  8. package/src/components/StripeMethodForm/index.tsx +136 -102
  9. package/src/components/VerifyPhone/styles.tsx +1 -2
  10. package/src/components/shared/OToast.tsx +2 -1
  11. package/src/types/index.tsx +5 -0
  12. package/src/utils/index.tsx +5 -0
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +270 -245
  15. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  16. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  17. package/themes/business/src/components/Chat/index.tsx +123 -111
  18. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  19. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  20. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  21. package/themes/business/src/components/LoginForm/Otp/index.tsx +31 -3
  22. package/themes/business/src/components/LoginForm/index.tsx +15 -22
  23. package/themes/business/src/components/MapView/index.tsx +10 -10
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +35 -21
  25. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +191 -6
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +111 -43
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +61 -60
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +195 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  32. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  33. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  34. package/themes/business/src/components/OrdersOption/index.tsx +32 -75
  35. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +249 -0
  36. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  37. package/themes/business/src/components/PreviousOrders/index.tsx +444 -242
  38. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  39. package/themes/business/src/components/ProductItemAccordion/index.tsx +27 -3
  40. package/themes/business/src/components/ReviewCustomer/index.tsx +30 -15
  41. package/themes/business/src/components/StoresList/index.tsx +3 -4
  42. package/themes/business/src/components/UserProfileForm/index.tsx +11 -13
  43. package/themes/business/src/components/shared/OLink.tsx +33 -13
  44. package/themes/business/src/components/shared/OModal.tsx +16 -9
  45. package/themes/business/src/components/shared/OText.tsx +8 -2
  46. package/themes/business/src/types/index.tsx +28 -12
  47. package/themes/business/src/utils/index.tsx +29 -2
  48. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  49. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  50. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  51. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  52. package/themes/kiosk/src/components/Intro/index.tsx +16 -1
  53. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -9
  54. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  55. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  56. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  57. package/themes/kiosk/src/components/PhoneInputNumber/index.tsx +2 -2
  58. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  59. package/themes/original/index.tsx +2 -0
  60. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  61. package/themes/original/src/components/AddressForm/index.tsx +61 -39
  62. package/themes/original/src/components/AddressList/index.tsx +27 -22
  63. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  64. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  65. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  66. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  67. package/themes/original/src/components/BusinessBasicInformation/index.tsx +153 -96
  68. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  69. package/themes/original/src/components/BusinessController/index.tsx +80 -66
  70. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  71. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  72. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  73. package/themes/original/src/components/BusinessInformation/index.tsx +139 -85
  74. package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
  75. package/themes/original/src/components/BusinessListingSearch/index.tsx +349 -339
  76. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  77. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  78. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  79. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  80. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  81. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  82. package/themes/original/src/components/BusinessProductsListing/index.tsx +684 -556
  83. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -2
  84. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  85. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  86. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +69 -38
  87. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +0 -1
  88. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  89. package/themes/original/src/components/Cart/index.tsx +77 -79
  90. package/themes/original/src/components/CartContent/index.tsx +117 -20
  91. package/themes/original/src/components/CartContent/styles.tsx +17 -7
  92. package/themes/original/src/components/Checkout/index.tsx +356 -124
  93. package/themes/original/src/components/CitiesControl/index.tsx +1 -1
  94. package/themes/original/src/components/CouponControl/index.tsx +10 -3
  95. package/themes/original/src/components/DriverTips/index.tsx +52 -34
  96. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  97. package/themes/original/src/components/Favorite/index.tsx +8 -9
  98. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  99. package/themes/original/src/components/FavoriteList/index.tsx +1 -35
  100. package/themes/original/src/components/FloatingButton/index.tsx +11 -14
  101. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  102. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  103. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +96 -0
  104. package/themes/original/src/components/GiftCard/GiftCardUI/styles.tsx +5 -0
  105. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +100 -0
  106. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +8 -0
  107. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +191 -0
  108. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +8 -0
  109. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +165 -0
  110. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +9 -0
  111. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  112. package/themes/original/src/components/GoogleMap/index.tsx +60 -5
  113. package/themes/original/src/components/Help/index.tsx +8 -8
  114. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +10 -31
  115. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +5 -3
  116. package/themes/original/src/components/HelpGuide/index.tsx +6 -6
  117. package/themes/original/src/components/HelpGuide/styles.tsx +6 -0
  118. package/themes/original/src/components/HelpOrder/index.tsx +6 -15
  119. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  120. package/themes/original/src/components/Home/index.tsx +13 -4
  121. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  122. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -31
  123. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  124. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  125. package/themes/original/src/components/LottieAnimation/index.tsx +89 -55
  126. package/themes/original/src/components/MessageListing/index.tsx +16 -42
  127. package/themes/original/src/components/Messages/index.tsx +14 -7
  128. package/themes/original/src/components/MomentOption/index.tsx +195 -90
  129. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  130. package/themes/original/src/components/MultiCart/index.tsx +41 -54
  131. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -50
  132. package/themes/original/src/components/MultiCheckout/index.tsx +329 -100
  133. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  134. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  135. package/themes/original/src/components/MultiOrdersDetails/index.tsx +54 -21
  136. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  137. package/themes/original/src/components/MyOrders/index.tsx +40 -29
  138. package/themes/original/src/components/NavBar/index.tsx +20 -17
  139. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  140. package/themes/original/src/components/Notifications/index.tsx +46 -50
  141. package/themes/original/src/components/Notifications/styles.tsx +6 -3
  142. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  143. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
  144. package/themes/original/src/components/OrderDetails/index.tsx +191 -363
  145. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  146. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  147. package/themes/original/src/components/OrderProgress/index.tsx +30 -56
  148. package/themes/original/src/components/OrderSummary/index.tsx +88 -59
  149. package/themes/original/src/components/OrderTypeSelector/index.tsx +2 -1
  150. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +14 -14
  151. package/themes/original/src/components/OrdersOption/index.tsx +68 -87
  152. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  153. package/themes/original/src/components/PageBanner/index.tsx +98 -38
  154. package/themes/original/src/components/PageBanner/styles.tsx +0 -10
  155. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  156. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  157. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  158. package/themes/original/src/components/PaymentOptions/index.tsx +78 -35
  159. package/themes/original/src/components/PhoneInputNumber/index.tsx +3 -3
  160. package/themes/original/src/components/ProductForm/index.tsx +105 -30
  161. package/themes/original/src/components/ProductForm/styles.tsx +5 -5
  162. package/themes/original/src/components/ProductItemAccordion/index.tsx +14 -11
  163. package/themes/original/src/components/ProductOptionSubOption/index.tsx +20 -18
  164. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +5 -9
  165. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  166. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  167. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  168. package/themes/original/src/components/Promotions/index.tsx +5 -4
  169. package/themes/original/src/components/Promotions/styles.tsx +3 -1
  170. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  171. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  172. package/themes/original/src/components/ServiceForm/index.tsx +66 -17
  173. package/themes/original/src/components/Sessions/index.tsx +11 -8
  174. package/themes/original/src/components/Sessions/styles.tsx +5 -0
  175. package/themes/original/src/components/SignupForm/index.tsx +43 -27
  176. package/themes/original/src/components/SingleOrderCard/index.tsx +101 -62
  177. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  178. package/themes/original/src/components/SingleProductCard/index.tsx +72 -31
  179. package/themes/original/src/components/SingleProductCard/styles.tsx +20 -4
  180. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  181. package/themes/original/src/components/StripeCardsList/index.tsx +49 -5
  182. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  183. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  184. package/themes/original/src/components/UpsellingProducts/index.tsx +238 -224
  185. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  186. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  187. package/themes/original/src/components/UserFormDetails/index.tsx +76 -7
  188. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  189. package/themes/original/src/components/UserProfile/index.tsx +88 -79
  190. package/themes/original/src/components/UserProfileForm/index.tsx +27 -29
  191. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  192. package/themes/original/src/components/UserVerification/index.tsx +52 -49
  193. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  194. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  195. package/themes/original/src/components/Wallets/index.tsx +66 -30
  196. package/themes/original/src/components/Wallets/styles.tsx +3 -4
  197. package/themes/original/src/components/shared/OButton.tsx +6 -2
  198. package/themes/original/src/components/shared/OInput.tsx +6 -1
  199. package/themes/original/src/components/shared/OModal.tsx +3 -3
  200. package/themes/original/src/types/index.tsx +41 -11
  201. package/themes/original/src/utils/index.tsx +273 -1
  202. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -33,8 +33,7 @@ export const NotificationIcon = styled.View`
33
33
  export const AcceptOrRejectOrder = styled.View`
34
34
  flex-direction: row;
35
35
  justify-content: space-between;
36
- flex: 1;
37
- margin: 10px;
36
+ margin: ${(props: any) => props.m ?? 10}px;
38
37
  `
39
38
  export const Timestatus = styled.View`
40
39
  position: relative;;
@@ -42,4 +41,33 @@ export const Timestatus = styled.View`
42
41
  height: 55px;
43
42
  border-radius: 20px;
44
43
  top: 5px;
45
- `
44
+ `
45
+
46
+ export const AccordionSection = styled.View`
47
+ background: #FFF;
48
+ padding-vertical: 10px;
49
+ `
50
+
51
+ export const Accordion = styled.TouchableOpacity`
52
+ flex-direction: column;
53
+ justify-content: space-between;
54
+ align-items: center;
55
+ paddingVertical: 0;
56
+ marginLeft: 3px;
57
+ `
58
+
59
+ export const ContentInfo = styled.View`
60
+ flex-direction: row;
61
+ justify-content: space-between;
62
+ align-items: flex-start;
63
+ overflow: hidden;
64
+ `
65
+
66
+ export const AccordionContent = styled.View`
67
+ overflow: hidden;
68
+ `
69
+
70
+ export const ProductOptionsList = styled.View`
71
+ margin-top: 20px;
72
+ margin-left: 20px;
73
+ `
@@ -1,8 +1,12 @@
1
- import React, { useEffect, useState } from 'react';
2
- import { View, Animated } from 'react-native';
1
+ import React, { useEffect, useState, useCallback } from 'react';
2
+ import { View, Animated, TouchableOpacity } from 'react-native';
3
3
  import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons';
4
4
  import { useUtils, useLanguage } from 'ordering-components/native';
5
5
  import { useTheme } from 'styled-components/native';
6
+ import { DeviceOrientationMethods } from '../../../../../src/hooks/DeviceOrientation'
7
+
8
+ const { useDeviceOrientation } = DeviceOrientationMethods
9
+
6
10
  import {
7
11
  Accordion,
8
12
  AccordionSection,
@@ -34,8 +38,12 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
34
38
  const [, t] = useLanguage();
35
39
  const theme = useTheme();
36
40
  const [{ parsePrice }] = useUtils();
41
+ const [orientationState] = useDeviceOrientation();
42
+ const WIDTH_SCREEN = orientationState?.dimensions?.width
37
43
 
38
44
  const [isActive, setActiveState] = useState(false);
45
+ const [isReadMore, setIsReadMore] = useState(false);
46
+ const [lengthMore, setLengthMore] = useState(false);
39
47
 
40
48
  const productInfo = () => {
41
49
  if (isCartProduct) {
@@ -108,6 +116,10 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
108
116
  }
109
117
  }, []);
110
118
 
119
+ const onTextLayout = useCallback((e: any) => {
120
+ setLengthMore((e.nativeEvent.lines.length == 2 && e.nativeEvent.lines[1].width > WIDTH_SCREEN * .76) || e.nativeEvent.lines.length > 2); //to check the text is more than 2 lines or not
121
+ },[]);
122
+
111
123
  return (
112
124
  <AccordionSection>
113
125
  <Accordion
@@ -288,9 +300,21 @@ export const ProductItemAccordion = (props: ProductItemAccordionParams) => {
288
300
  color={theme.colors.unselectText}>
289
301
  {t('COMMENT', 'Comment')}
290
302
  </OText>
291
- <OText size={12} mLeft={10} color={theme.colors.unselectText}>
303
+ <OText
304
+ size={12}
305
+ style={{ width: '100%', paddingLeft: 10 }}
306
+ color={theme.colors.unselectText}
307
+ onTextLayout={onTextLayout}
308
+ numberOfLines={isReadMore ? 15 : 2}
309
+ ellipsizeMode="tail"
310
+ >
292
311
  {product.comment}
293
312
  </OText>
313
+ {lengthMore && (
314
+ <TouchableOpacity onPress={() => setIsReadMore(!isReadMore)} style={{ marginLeft: 10 }}>
315
+ <OText size={10} color={theme.colors.statusOrderBlue}>{isReadMore ? t('SHOW_LESS', 'Show less') : t('READ_MORE', 'Read more')}</OText>
316
+ </TouchableOpacity>
317
+ )}
294
318
  </ProductComment>
295
319
  )}
296
320
  </AccordionContent>
@@ -1,3 +1,5 @@
1
+
2
+
1
3
  import React, { useState, useEffect, useRef } from 'react'
2
4
  import {
3
5
  useLanguage,
@@ -39,7 +41,8 @@ const ReviewCustomerUI = (props: ReviewCustomerParams) => {
39
41
  reviewState,
40
42
  setReviewState,
41
43
  actionState,
42
- handleSendCustomerReview
44
+ handleSendCustomerReview,
45
+ handleCustomCustomerReview
43
46
  } = props
44
47
 
45
48
  const theme = useTheme()
@@ -85,6 +88,18 @@ const ReviewCustomerUI = (props: ReviewCustomerParams) => {
85
88
  marginBottom: 10,
86
89
  backgroundColor: theme.colors.lightGray
87
90
  },
91
+ btnBackArrow: {
92
+ borderWidth: 0,
93
+ width: 32,
94
+ height: 32,
95
+ tintColor: theme.colors.textGray,
96
+ backgroundColor: theme.colors.clear,
97
+ borderColor: theme.colors.clear,
98
+ shadowColor: theme.colors.clear,
99
+ paddingLeft: 0,
100
+ paddingRight: 0,
101
+ marginBottom: 20
102
+ },
88
103
  inputTextArea: {
89
104
  borderColor: theme.colors.lightGray,
90
105
  borderRadius: 8,
@@ -146,13 +161,22 @@ const ReviewCustomerUI = (props: ReviewCustomerParams) => {
146
161
  useEffect(() => {
147
162
  if (scrollref?.current) {
148
163
  Keyboard.addListener('keyboardDidShow', () => {
149
- scrollref.current.scrollToEnd()
164
+ scrollref?.current?.scrollToEnd && scrollref.current.scrollToEnd()
150
165
  })
151
166
  }
152
167
  }, [scrollref?.current])
153
168
 
154
169
  const customerName = `${order?.customer?.name ?? ''} ${order?.customer?.middle_name ?? ''} ${order?.customer?.lastname ?? ''} ${order?.customer?.second_lastname ?? ''}`?.replace(' ', ' ')?.trim() ?? ''
155
170
 
171
+ const handleReviewClick = () => {
172
+ handleCustomCustomerReview
173
+ ? handleCustomCustomerReview({
174
+ qualification: reviewState?.qualification,
175
+ comment: reviewState?.comment
176
+ })
177
+ : handleSendCustomerReview()
178
+ }
179
+
156
180
  return (
157
181
  <KeyboardAvoidingView
158
182
  enabled
@@ -167,18 +191,9 @@ const ReviewCustomerUI = (props: ReviewCustomerParams) => {
167
191
  }}
168
192
  >
169
193
  <View>
170
- <OIconButton
171
- icon={theme.images.general.arrow_left}
172
- borderColor={theme.colors.clear}
173
- iconStyle={{ width: 20, height: 16 }}
174
- style={{
175
- maxWidth: 40,
176
- height: 20,
177
- justifyContent: 'flex-end',
178
- marginBottom: 20,
179
- }}
180
- onClick={() => closeModal()}
181
- />
194
+ <TouchableOpacity onPress={() => closeModal()} style={styles.btnBackArrow}>
195
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textGray} />
196
+ </TouchableOpacity>
182
197
  <OText
183
198
  size={20}
184
199
  weight="600"
@@ -303,7 +318,7 @@ const ReviewCustomerUI = (props: ReviewCustomerParams) => {
303
318
 
304
319
  <ActionButtonWrapper>
305
320
  <FloatingButton
306
- firstButtonClick={() => handleSendCustomerReview()}
321
+ firstButtonClick={() => handleReviewClick()}
307
322
  btnText={actionState.loading ? t('LOADING', 'Loading') : t('SEND_REVIEW', 'Send Review')}
308
323
  color={theme.colors.primary}
309
324
  widthButton={'100%'}
@@ -1,6 +1,5 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- import { View, StyleSheet, Dimensions, Linking } from 'react-native';
3
- import { ScrollView, TouchableOpacity } from 'react-native-gesture-handler';
2
+ import { View, StyleSheet, Dimensions, Linking, ScrollView, TouchableOpacity } from 'react-native';
4
3
  import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
5
4
  import NetInfo from '@react-native-community/netinfo';
6
5
  import { useTheme } from 'styled-components/native';
@@ -149,10 +148,10 @@ const StoresListUI = (props: BusinessesListingParams) => {
149
148
  width={12}
150
149
  height={12}
151
150
  color={theme.colors.skyBlue}
152
- style={{ marginRight: 5, marginTop: 3 }}
151
+ style={{ marginRight: 5 }}
153
152
  />
154
153
  <OText size={12}>
155
- {t('MORE_SETTINGS_GO_TO', 'For more settings go to')}{' '}
154
+ {t('MORE_SETTINGS_GO_TO', 'For more settings go to ')}
156
155
  </OText>
157
156
  <TouchableOpacity onPress={() => { Linking.openURL(t('LINK_MORE_SETTINGS_GO_TO', 'https://app.ordering.co')) }}>
158
157
  <OText size={12} color={theme.colors.skyBlue}>
@@ -478,19 +478,17 @@ const ProfileUI = (props: ProfileParams) => {
478
478
  />
479
479
  </EditButton>
480
480
  )}
481
- {!!user?.schedule && (
482
- <Pressable style={{ marginBottom: 10 }} onPress={() => setOpenModal(true)}>
483
- <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
484
- <OText size={16}>{t('SCHEDULE', 'Schedule')}</OText>
485
- <AntDesignIcon size={18} name='right' />
486
- </View>
487
- <View style={{
488
- borderBottomColor: theme.colors.tabBar,
489
- borderBottomWidth: 1,
490
- marginTop: 10
491
- }} />
492
- </Pressable>
493
- )}
481
+ <Pressable style={{ marginBottom: 10 }} onPress={() => setOpenModal(true)}>
482
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
483
+ <OText size={16}>{t('SCHEDULE', 'Schedule')}</OText>
484
+ <AntDesignIcon size={18} name='right' />
485
+ </View>
486
+ <View style={{
487
+ borderBottomColor: theme.colors.tabBar,
488
+ borderBottomWidth: 1,
489
+ marginTop: 10
490
+ }} />
491
+ </Pressable>
494
492
  <Actions>
495
493
  <LanguageSelector />
496
494
 
@@ -12,10 +12,12 @@ interface Props {
12
12
  TextStyle?: TextStyle;
13
13
  type?: string;
14
14
  hasButton?: boolean;
15
+ numberOfLines?: number;
16
+ onTextLayout?: (e : any) => void;
15
17
  }
16
18
 
17
19
  const OLink = (props: Props): React.ReactElement => {
18
- const { url, shorcut, color, PressStyle, TextStyle, type, hasButton } = props;
20
+ const { url, shorcut, color, PressStyle, TextStyle, type, hasButton, numberOfLines, onTextLayout } = props;
19
21
  const [, t] = useLanguage();
20
22
 
21
23
  const handleAlert = () =>
@@ -29,8 +31,19 @@ const OLink = (props: Props): React.ReactElement => {
29
31
  ],
30
32
  );
31
33
 
34
+ const handleInvalidNumberAlert = () =>
35
+ Alert.alert(
36
+ t('ERROR_OPENING_THE_LINK', 'Error opening the link'),
37
+ t('INVALID_NUMBER', 'Invalid number'),
38
+ [
39
+ {
40
+ text: t('OK', 'Ok'),
41
+ },
42
+ ],
43
+ );
44
+
32
45
  const handleOpenUrl = async (breakFunction = false) => {
33
- if(breakFunction) {
46
+ if (breakFunction) {
34
47
  return
35
48
  }
36
49
  if (!url) {
@@ -40,8 +53,9 @@ const OLink = (props: Props): React.ReactElement => {
40
53
 
41
54
  try {
42
55
  const supported = await Linking.canOpenURL(url);
43
-
44
- if (supported) {
56
+ if (url && url?.includes('tel:')) {
57
+ url?.includes('invalid') ? handleInvalidNumberAlert() : await Linking.openURL(url)
58
+ } else if (supported) {
45
59
  await Linking.openURL(url);
46
60
  } else {
47
61
  handleAlert();
@@ -57,20 +71,26 @@ const OLink = (props: Props): React.ReactElement => {
57
71
  <OButton
58
72
  onClick={() => handleOpenUrl()}
59
73
  text={shorcut} imgRightSrc=''
60
- textStyle={{color: 'white'}}
61
- style={{width: '100%', alignSelf: 'center', borderRadius: 10}}
74
+ textStyle={{ color: 'white' }}
75
+ style={{ width: '100%', alignSelf: 'center', borderRadius: 10 }}
62
76
  />
63
77
  ) : (
64
- <OText
65
- style={TextStyle}
66
- numberOfLines={1}
67
- ellipsizeMode="tail"
68
- color={color}>
69
- {shorcut}
70
- </OText>
78
+ <OText
79
+ style={TextStyle}
80
+ numberOfLines={numberOfLines ?? 1}
81
+ ellipsizeMode="tail"
82
+ color={color}
83
+ onTextLayout={onTextLayout}
84
+ >
85
+ {shorcut}
86
+ </OText>
71
87
  )}
72
88
  </Pressable>
73
89
  );
74
90
  };
75
91
 
92
+ OLink.defaultProps = {
93
+ onTextLayout: (e: any) => {}
94
+ };
95
+
76
96
  export default OLink;
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { Modal, StyleSheet, SafeAreaView, View } from 'react-native';
2
+ import { Modal, StyleSheet, SafeAreaView, View, TouchableOpacity } from 'react-native';
3
3
  import Icon from 'react-native-vector-icons/Feather';
4
4
  import OIcon from './OIcon';
5
5
  import OText from './OText';
@@ -158,6 +158,18 @@ const OModal = (props: Props): React.ReactElement => {
158
158
  fontWeight: '600',
159
159
  textAlign: 'center',
160
160
  },
161
+ btnBackArrow: {
162
+ borderWidth: 0,
163
+ width: 32,
164
+ height: 32,
165
+ tintColor: theme.colors.textGray,
166
+ backgroundColor: theme.colors.clear,
167
+ borderColor: theme.colors.clear,
168
+ shadowColor: theme.colors.clear,
169
+ paddingLeft: 0,
170
+ paddingRight: 0,
171
+ marginTop: 10
172
+ },
161
173
  });
162
174
 
163
175
  return (
@@ -205,14 +217,9 @@ const OModal = (props: Props): React.ReactElement => {
205
217
  {!customClose && (
206
218
  <View style={styles.titleSection}>
207
219
  <View style={styles.titleGroups}>
208
- <OIconButton
209
- icon={theme.images.general.arrow_left}
210
- iconStyle={{ width: 20, height: 20 }}
211
- borderColor={theme.colors.clear}
212
- style={styleCloseButton || styles.cancelBtn}
213
- onClick={onClose}
214
- />
215
-
220
+ <TouchableOpacity onPress={() => onClose()} style={styles.btnBackArrow}>
221
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textGray} />
222
+ </TouchableOpacity>
216
223
  <OText
217
224
  size={16}
218
225
  style={styles.modalText}
@@ -40,16 +40,22 @@ interface Props {
40
40
  numberOfLines?: number;
41
41
  ellipsizeMode?: string;
42
42
  adjustsFontSizeToFit?: boolean;
43
- textDecorationLine?: string
43
+ textDecorationLine?: string;
44
+ lineHeight?: number;
45
+ onTextLayout?: (e : any) => void;
44
46
  }
45
47
 
46
48
  const OText = (props: Props): React.ReactElement => {
47
49
  return (
48
- <SText {...props} style={props.style}>
50
+ <SText {...props} style={[props.style, { lineHeight: props.lineHeight }]} onTextLayout={props.onTextLayout}>
49
51
  {props.children}
50
52
  {props.space && ' '}
51
53
  </SText>
52
54
  );
53
55
  };
54
56
 
57
+ OText.defaultProps = {
58
+ onTextLayout: (e: any) => {}
59
+ };
60
+
55
61
  export default OText;
@@ -25,18 +25,19 @@ export interface LoginParams {
25
25
  enableReCaptcha?: any;
26
26
 
27
27
  otpType?: string,
28
- setOtpType: (type : string) => void,
29
- generateOtpCode: (values ?: any) => void,
30
- useLoginOtpEmail?: boolean,
31
- useLoginOtpCellphone?: boolean,
32
- useLoginOtp?: boolean
28
+ setOtpType: (type: string) => void,
29
+ generateOtpCode: (values?: any) => void,
30
+ useLoginOtpEmail?: boolean,
31
+ useLoginOtpCellphone?: boolean,
32
+ useLoginOtp?: boolean
33
33
  }
34
34
  export interface otpParams {
35
- willVerifyOtpState: boolean,
36
- setWillVerifyOtpState: (val : boolean) => void,
37
- onSubmit: () => void,
38
- handleLoginOtp: (code : string) => void,
39
- setAlertState: any
35
+ willVerifyOtpState: boolean,
36
+ setWillVerifyOtpState: (val: boolean) => void,
37
+ onSubmit: () => void,
38
+ handleLoginOtp: (code: string) => void,
39
+ setAlertState: any,
40
+ formState?: any
40
41
  }
41
42
  export interface ProfileParams {
42
43
  navigation?: any;
@@ -311,6 +312,10 @@ export interface OrdersOptionParams {
311
312
  isLogisticActivated?: boolean;
312
313
  isAlsea?: boolean;
313
314
  checkNotification?: boolean;
315
+ ordersFormatted?: any;
316
+ handleChangeOrderStatus?: () => void;
317
+ handleSendCustomerReview?: () => void;
318
+ orderDetailsProps?: any;
314
319
  }
315
320
  export interface ActiveOrdersParams {
316
321
  orders?: any;
@@ -569,14 +574,17 @@ export interface AcceptOrRejectOrderParams {
569
574
  loading?: boolean;
570
575
  action: string;
571
576
  orderId?: number;
572
- handleUpdateOrder?: (status: number, isAccept: any) => {};
577
+ handleUpdateOrder?: (p1: any, p2: any) => {};
573
578
  notShowCustomerPhone?: boolean | undefined;
574
- actions?: actions;
579
+ actions?: any;
575
580
  titleAccept?: textTranslate;
576
581
  titleReject?: textTranslate;
577
582
  titleNotReady?: textTranslate;
578
583
  appTitle?: textTranslate;
579
584
  orderTitle?: any
585
+ isPage?: boolean
586
+ navigation?: any
587
+ route?: any
580
588
  }
581
589
 
582
590
  export interface MapViewParams {
@@ -598,8 +606,16 @@ export interface ReviewCustomerParams {
598
606
  actionState?: any,
599
607
  handleChangeQualification?: any,
600
608
  handleSendCustomerReview?: any,
609
+ handleCustomCustomerReview?: any,
601
610
  }
602
611
 
603
612
  export interface NoNetworkParams {
604
613
  image?: any;
605
614
  }
615
+
616
+ export interface OrderDetailsLogisticParams {
617
+ navigation: any,
618
+ handleClickLogisticOrder: any,
619
+ orderAssingId: number,
620
+ order: any
621
+ }
@@ -346,7 +346,7 @@ export const getOrderStatus = (s: string, t: any) => {
346
346
  return objectStatus && objectStatus;
347
347
  };
348
348
 
349
- export const transformDistance = (value : number, distanceUnit?: string) => {
349
+ export const transformDistance = (value: number, distanceUnit?: string) => {
350
350
  return distanceUnit === 'mi'
351
351
  ? (value / 1.609).toFixed(2)
352
352
  : distanceUnit === 'ft'
@@ -354,7 +354,7 @@ export const transformDistance = (value : number, distanceUnit?: string) => {
354
354
  : (value).toFixed(2)
355
355
  }
356
356
 
357
- export const formatSeconds = (seconds : number) => {
357
+ export const formatSeconds = (seconds: number) => {
358
358
  // Hours, minutes and seconds
359
359
  const hrs = Math.floor(seconds / 3600)
360
360
  const mins = Math.floor((seconds % 3600) / 60)
@@ -369,3 +369,30 @@ export const formatSeconds = (seconds : number) => {
369
369
  ret += '' + secs
370
370
  return ret
371
371
  }
372
+
373
+ export const calculateDistance = (
374
+ pointA: { lat: number; lng: number },
375
+ pointB: { latitude: number; longitude: number },
376
+ ) => {
377
+ const lat1 = pointA.lat;
378
+ const lon1 = pointA.lng;
379
+
380
+ const lat2 = pointB?.latitude;
381
+ const lon2 = pointB?.longitude;
382
+
383
+ const R = 6371e3;
384
+ const φ1 = lat1 * (Math.PI / 180);
385
+ const φ2 = lat2 * (Math.PI / 180);
386
+ const Δφ = (lat2 - lat1) * (Math.PI / 180);
387
+ const Δλ = (lon2 - lon1) * (Math.PI / 180);
388
+
389
+ const a =
390
+ Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
391
+ Math.cos(φ1) * Math.cos(φ2) * (Math.sin(Δλ / 2) * Math.sin(Δλ / 2));
392
+
393
+ const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
394
+
395
+ const distance = R * c;
396
+ const distanceInKm = distance / 1000;
397
+ return distanceInKm;
398
+ };
@@ -197,7 +197,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
197
197
  {isFarAway && (
198
198
  <FarAwayMessage style={styles.farAwayMsg}>
199
199
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
200
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
200
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
201
201
  </FarAwayMessage>
202
202
  )}
203
203
  {!auth && (
@@ -410,8 +410,7 @@ const LoginFormUI = (props: LoginParams) => {
410
410
  textInputProps={{
411
411
  returnKeyType: 'next',
412
412
  onSubmitEditing: () => inputRef?.current?.focus?.(),
413
- style: { borderWidth: 0, fontSize: 12 },
414
- maxLength: 10
413
+ style: { borderWidth: 0, fontSize: 12 }
415
414
  }}
416
415
  textWrapStyle={{ borderColor: theme.colors.clear, borderWidth: 0, height: 40, paddingStart: 0 }}
417
416
  />
@@ -155,7 +155,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
155
155
  {isFarAway && (
156
156
  <FarAwayMessage style={styles.farAwayMsg}>
157
157
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
158
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
158
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
159
159
  </FarAwayMessage>
160
160
  )}
161
161
  <View style={styles.wrapperOrderOptions}>
@@ -50,6 +50,12 @@ const CheckoutUI = (props: any) => {
50
50
  }
51
51
  }, [cart])
52
52
 
53
+ useEffect(() => {
54
+ if (!cartState.loading && cart && !cart?.valid && cart?.status === 2) {
55
+ navigation?.canGoBack() && navigation.goBack()
56
+ }
57
+ }, [cart])
58
+
53
59
  return (
54
60
  <>
55
61
  <PaymentOptions
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from 'react';
2
- import { StyleSheet, View, RefreshControl, ScrollView, Pressable } from 'react-native';
2
+ import { StyleSheet, View, Pressable, TouchableOpacity } from 'react-native';
3
3
  import { useLanguage } from 'ordering-components/native';
4
4
  import { useTheme } from 'styled-components/native';
5
5
 
@@ -9,6 +9,7 @@ import OButton from '../../components/shared/OButton';
9
9
  import { LanguageSelector } from '../../components/LanguageSelector';
10
10
  import { LogoutPopup } from '../../components/LogoutPopup';
11
11
  import { PORTRAIT, LANDSCAPE, useDeviceOrientation } from "../../../../../src/hooks/DeviceOrientation";
12
+ import { OIcon } from '../../components/shared';
12
13
 
13
14
  const Intro = (props: any): React.ReactElement => {
14
15
  const { navigation } = props;
@@ -41,6 +42,19 @@ const Intro = (props: any): React.ReactElement => {
41
42
  // />
42
43
  // }
43
44
  // >
45
+ <>
46
+ <View style={{ position: 'absolute', top: 25, right: 20, zIndex: 1000 }}>
47
+ <TouchableOpacity
48
+ onPress={() => setShowLogoutPopup(true)}
49
+ >
50
+ <OIcon
51
+ src={theme.images.general.menulogout}
52
+ width={24}
53
+ height={24}
54
+ color={theme.colors.disabledContrast}
55
+ />
56
+ </TouchableOpacity>
57
+ </View>
44
58
  <Pressable onPress={goBusiness}>
45
59
  <View style={{ height: orientationState?.dimensions?.height }}>
46
60
  {orientationState.orientation === PORTRAIT ? (
@@ -134,6 +148,7 @@ const Intro = (props: any): React.ReactElement => {
134
148
  />
135
149
  </View>
136
150
  </Pressable>
151
+ </>
137
152
  // </ScrollView>
138
153
  );
139
154
  };
@@ -116,10 +116,6 @@ const LoginFormUI = (props: LoginParams) => {
116
116
  }
117
117
 
118
118
  if (values?.project_name) {
119
- setOrdering({
120
- ...ordering,
121
- project: values?.project_name
122
- })
123
119
  _setStoreData('project_name', values?.project_name)
124
120
  setFormsStateValues({
125
121
  ...formsStateValues,
@@ -384,12 +380,14 @@ const LoginFormUI = (props: LoginParams) => {
384
380
  );
385
381
 
386
382
  const note = (
387
- <OText size={24} mBottom={18}>
388
- {t('IF_NOT_HAVE_ACCOUNT', 'If you don\'t have and account, please contact Ordering')}&nbsp;
389
- <OText size={24} mBottom={18} color={theme.colors.skyBlue}>
390
- {t('SUPPORT_DEPARTMENT', 'support department')}
383
+ useRootPoint && (
384
+ <OText size={24} mBottom={18}>
385
+ {t('IF_NOT_HAVE_ACCOUNT', 'If you don\'t have and account, please contact Ordering')}&nbsp;
386
+ <OText size={24} mBottom={18} color={theme.colors.skyBlue}>
387
+ {t('SUPPORT_DEPARTMENT', 'support department')}
388
+ </OText>
391
389
  </OText>
392
- </OText>
390
+ )
393
391
  )
394
392
 
395
393
  return (