ordering-ui-react-native 0.17.91 → 0.17.92-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 (214) 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 +0 -20
  6. package/src/components/PaymentOptionsWebView/index.tsx +29 -8
  7. package/src/components/PhoneInputNumber/index.tsx +6 -2
  8. package/src/components/StripeMethodForm/index.tsx +136 -102
  9. package/src/components/VerifyPhone/styles.tsx +1 -2
  10. package/src/components/shared/OToast.tsx +3 -2
  11. package/src/types/index.tsx +5 -0
  12. package/src/utils/index.tsx +5 -0
  13. package/themes/business/index.tsx +2 -0
  14. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +36 -26
  15. package/themes/business/src/components/BusinessController/index.tsx +0 -1
  16. package/themes/business/src/components/Chat/index.tsx +163 -123
  17. package/themes/business/src/components/DriverMap/index.tsx +17 -6
  18. package/themes/business/src/components/DriverSchedule/index.tsx +45 -8
  19. package/themes/business/src/components/FloatingButton/index.tsx +34 -31
  20. package/themes/business/src/components/GoogleMap/index.tsx +58 -57
  21. package/themes/business/src/components/LoginForm/index.tsx +5 -2
  22. package/themes/business/src/components/MapView/index.tsx +14 -10
  23. package/themes/business/src/components/MessagesOption/index.tsx +20 -93
  24. package/themes/business/src/components/NewOrderNotification/index.tsx +123 -96
  25. package/themes/business/src/components/NotFoundSource/index.tsx +2 -2
  26. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +202 -12
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +84 -37
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +81 -66
  30. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +200 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/styles.tsx +5 -0
  32. package/themes/business/src/components/OrderMessage/index.tsx +19 -18
  33. package/themes/business/src/components/OrderSummary/index.tsx +114 -123
  34. package/themes/business/src/components/OrdersOption/index.tsx +22 -22
  35. package/themes/business/src/components/PreviousMessages/FooterMessageComponent.tsx +103 -0
  36. package/themes/business/src/components/PreviousMessages/index.tsx +97 -55
  37. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +17 -12
  38. package/themes/business/src/components/PreviousOrders/OrderList.tsx +93 -0
  39. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +1 -1
  40. package/themes/business/src/components/PreviousOrders/index.tsx +198 -221
  41. package/themes/business/src/components/ProductItemAccordion/index.tsx +7 -1
  42. package/themes/business/src/components/ReviewCustomer/index.tsx +18 -13
  43. package/themes/business/src/components/StoresList/index.tsx +3 -4
  44. package/themes/business/src/components/UserProfileForm/index.tsx +14 -15
  45. package/themes/business/src/components/shared/OModal.tsx +16 -9
  46. package/themes/business/src/types/index.tsx +24 -10
  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 -5
  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 +1 -1
  60. package/themes/original/src/components/AddressDetails/index.tsx +19 -3
  61. package/themes/original/src/components/AddressForm/index.tsx +35 -17
  62. package/themes/original/src/components/AddressList/index.tsx +5 -8
  63. package/themes/original/src/components/AnalyticsSegment/index.tsx +193 -10
  64. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  65. package/themes/original/src/components/AppleLogin/styles.tsx +3 -1
  66. package/themes/original/src/components/BusinessBasicInformation/index.tsx +73 -37
  67. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +10 -12
  68. package/themes/original/src/components/BusinessController/index.tsx +35 -44
  69. package/themes/original/src/components/BusinessController/styles.tsx +12 -5
  70. package/themes/original/src/components/BusinessFeaturedController/index.tsx +21 -54
  71. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +8 -0
  72. package/themes/original/src/components/BusinessInformation/index.tsx +140 -85
  73. package/themes/original/src/components/BusinessItemAccordion/index.tsx +15 -20
  74. package/themes/original/src/components/BusinessListingSearch/index.tsx +347 -341
  75. package/themes/original/src/components/BusinessListingSearch/styles.tsx +0 -18
  76. package/themes/original/src/components/BusinessPreorder/index.tsx +103 -19
  77. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -2
  78. package/themes/original/src/components/BusinessProductsList/index.tsx +15 -7
  79. package/themes/original/src/components/BusinessProductsList/styles.tsx +8 -3
  80. package/themes/original/src/components/BusinessProductsListing/UpsellingRedirect.tsx +1 -1
  81. package/themes/original/src/components/BusinessProductsListing/index.tsx +664 -556
  82. package/themes/original/src/components/BusinessProductsListing/styles.tsx +2 -3
  83. package/themes/original/src/components/BusinessReviews/index.tsx +3 -1
  84. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
  85. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
  86. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
  87. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +38 -405
  88. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  89. package/themes/original/src/components/Cart/index.tsx +56 -56
  90. package/themes/original/src/components/CartContent/index.tsx +102 -58
  91. package/themes/original/src/components/CartContent/styles.tsx +6 -6
  92. package/themes/original/src/components/Checkout/index.tsx +277 -33
  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 +14 -6
  96. package/themes/original/src/components/FacebookLogin/styles.tsx +3 -1
  97. package/themes/original/src/components/Favorite/index.tsx +1 -5
  98. package/themes/original/src/components/GPSButton/index.tsx +6 -4
  99. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
  100. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +42 -5
  101. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +2 -0
  102. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +86 -10
  103. package/themes/original/src/components/GoogleLogin/styles.tsx +1 -1
  104. package/themes/original/src/components/GoogleMap/index.tsx +63 -7
  105. package/themes/original/src/components/Home/index.tsx +13 -4
  106. package/themes/original/src/components/LastOrder/index.tsx +2 -1
  107. package/themes/original/src/components/LastOrders/index.tsx +2 -1
  108. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -25
  109. package/themes/original/src/components/LoginForm/index.tsx +64 -34
  110. package/themes/original/src/components/LottieAnimation/index.tsx +88 -63
  111. package/themes/original/src/components/MessageListing/index.tsx +9 -2
  112. package/themes/original/src/components/Messages/index.tsx +15 -4
  113. package/themes/original/src/components/MomentOption/index.tsx +193 -92
  114. package/themes/original/src/components/MomentSelector/index.tsx +1 -1
  115. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +162 -50
  116. package/themes/original/src/components/MultiCheckout/index.tsx +385 -46
  117. package/themes/original/src/components/MultiCheckout/styles.tsx +3 -1
  118. package/themes/original/src/components/MultiOrdersDetails/index.tsx +23 -19
  119. package/themes/original/src/components/MyOrders/index.tsx +15 -4
  120. package/themes/original/src/components/NavBar/index.tsx +20 -13
  121. package/themes/original/src/components/NotFoundSource/index.tsx +14 -10
  122. package/themes/original/src/components/OrderDetails/OrderEta.tsx +76 -0
  123. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +21 -5
  124. package/themes/original/src/components/OrderDetails/index.tsx +50 -38
  125. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  126. package/themes/original/src/components/OrderItAgain/index.tsx +3 -1
  127. package/themes/original/src/components/OrderProgress/index.tsx +34 -25
  128. package/themes/original/src/components/OrderSummary/index.tsx +83 -57
  129. package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -6
  130. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +13 -13
  131. package/themes/original/src/components/OrdersOption/index.tsx +43 -20
  132. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  133. package/themes/original/src/components/PageBanner/index.tsx +65 -29
  134. package/themes/original/src/components/PageBanner/styles.tsx +0 -3
  135. package/themes/original/src/components/PaymentOptionCard/index.tsx +180 -0
  136. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
  137. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  138. package/themes/original/src/components/PaymentOptions/index.tsx +100 -34
  139. package/themes/original/src/components/PhoneInputNumber/index.tsx +18 -4
  140. package/themes/original/src/components/ProductForm/index.tsx +87 -31
  141. package/themes/original/src/components/ProductForm/styles.tsx +3 -3
  142. package/themes/original/src/components/ProductItemAccordion/index.tsx +8 -6
  143. package/themes/original/src/components/ProductOptionSubOption/index.tsx +49 -20
  144. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +10 -9
  145. package/themes/original/src/components/ProfessionalFilter/SingleProfessionalCard/index.tsx +108 -0
  146. package/themes/original/src/components/ProfessionalFilter/index.tsx +20 -50
  147. package/themes/original/src/components/ProfessionalProfile/index.tsx +36 -7
  148. package/themes/original/src/components/Promotions/index.tsx +2 -2
  149. package/themes/original/src/components/Promotions/styles.tsx +3 -1
  150. package/themes/original/src/components/ReviewProducts/index.tsx +16 -7
  151. package/themes/original/src/components/ScheduleAccordion/index.tsx +3 -3
  152. package/themes/original/src/components/ServiceForm/index.tsx +63 -20
  153. package/themes/original/src/components/SignupForm/index.tsx +43 -27
  154. package/themes/original/src/components/SingleOrderCard/index.tsx +44 -20
  155. package/themes/original/src/components/SingleOrderCard/styles.tsx +1 -1
  156. package/themes/original/src/components/SingleProductCard/index.tsx +14 -11
  157. package/themes/original/src/components/SingleProductCard/styles.tsx +8 -3
  158. package/themes/original/src/components/SingleProductReview/styles.tsx +1 -1
  159. package/themes/original/src/components/StripeCardsList/index.tsx +61 -5
  160. package/themes/original/src/components/StripeElementsForm/index.tsx +48 -34
  161. package/themes/original/src/components/StripeElementsForm/naked.tsx +12 -1
  162. package/themes/original/src/components/UpsellingProducts/index.tsx +5 -10
  163. package/themes/original/src/components/UserDetails/index.tsx +3 -1
  164. package/themes/original/src/components/UserFormDetails/index.tsx +78 -9
  165. package/themes/original/src/components/UserFormDetails/styles.tsx +1 -1
  166. package/themes/original/src/components/UserProfile/index.tsx +8 -26
  167. package/themes/original/src/components/UserProfileForm/index.tsx +30 -31
  168. package/themes/original/src/components/UserVerification/index.tsx +55 -50
  169. package/themes/original/src/components/WalletTransactionItem/index.tsx +2 -2
  170. package/themes/original/src/components/WalletTransactions/index.tsx +3 -3
  171. package/themes/original/src/components/Wallets/index.tsx +52 -62
  172. package/themes/original/src/components/Wallets/styles.tsx +2 -4
  173. package/themes/original/src/components/shared/OButton.tsx +3 -3
  174. package/themes/original/src/components/shared/OInput.tsx +4 -5
  175. package/themes/original/src/components/shared/OModal.tsx +3 -3
  176. package/themes/original/src/types/index.tsx +37 -10
  177. package/themes/original/src/utils/index.tsx +185 -13
  178. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  179. package/src/navigators/BottomNavigator.tsx +0 -117
  180. package/src/navigators/CheckoutNavigator.tsx +0 -66
  181. package/src/navigators/HomeNavigator.tsx +0 -202
  182. package/src/navigators/NavigationRef.tsx +0 -7
  183. package/src/navigators/RootNavigator.tsx +0 -269
  184. package/src/pages/Account.tsx +0 -34
  185. package/src/pages/AddressForm.tsx +0 -62
  186. package/src/pages/AddressList.tsx +0 -24
  187. package/src/pages/BusinessProductsList.tsx +0 -81
  188. package/src/pages/BusinessesListing.tsx +0 -43
  189. package/src/pages/CartList.tsx +0 -49
  190. package/src/pages/Checkout.tsx +0 -101
  191. package/src/pages/ForgotPassword.tsx +0 -24
  192. package/src/pages/Help.tsx +0 -23
  193. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  194. package/src/pages/HelpGuide.tsx +0 -23
  195. package/src/pages/HelpOrder.tsx +0 -23
  196. package/src/pages/Home.tsx +0 -36
  197. package/src/pages/IntroductoryTutorial.tsx +0 -170
  198. package/src/pages/Login.tsx +0 -47
  199. package/src/pages/MomentOption.tsx +0 -30
  200. package/src/pages/MultiCheckout.tsx +0 -31
  201. package/src/pages/MultiOrdersDetails.tsx +0 -27
  202. package/src/pages/MyOrders.tsx +0 -40
  203. package/src/pages/NetworkError.tsx +0 -24
  204. package/src/pages/NotFound.tsx +0 -22
  205. package/src/pages/OrderDetails.tsx +0 -25
  206. package/src/pages/ProductDetails.tsx +0 -55
  207. package/src/pages/Profile.tsx +0 -36
  208. package/src/pages/ReviewDriver.tsx +0 -30
  209. package/src/pages/ReviewOrder.tsx +0 -32
  210. package/src/pages/ReviewProducts.tsx +0 -30
  211. package/src/pages/Sessions.tsx +0 -22
  212. package/src/pages/Signup.tsx +0 -53
  213. package/src/pages/SpinnerLoader.tsx +0 -10
  214. package/src/pages/Splash.tsx +0 -21
@@ -49,7 +49,8 @@ const ProfileUI = (props: ProfileParams) => {
49
49
  handleToggleAvalaibleStatusDriver,
50
50
  userState,
51
51
  isAvailableLoading,
52
- isAlsea
52
+ isAlsea,
53
+ isHideDriverStatus
53
54
  } = props;
54
55
 
55
56
  const [{ user }] = useSession();
@@ -345,7 +346,7 @@ const ProfileUI = (props: ProfileParams) => {
345
346
  />
346
347
  </CenterView>
347
348
 
348
- {user?.level === 4 && (
349
+ {user?.level === 4 && !isHideDriverStatus && (
349
350
  <EnabledStatusDriver>
350
351
  <View style={{ flex: 1 }}>
351
352
  <OText
@@ -478,19 +479,17 @@ const ProfileUI = (props: ProfileParams) => {
478
479
  />
479
480
  </EditButton>
480
481
  )}
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
- )}
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>
494
493
  <Actions>
495
494
  <LanguageSelector />
496
495
 
@@ -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}
@@ -25,18 +25,18 @@ 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
40
  formState?: any
41
41
  }
42
42
  export interface ProfileParams {
@@ -57,6 +57,7 @@ export interface ProfileParams {
57
57
  showField?: any;
58
58
  isRequiredField?: any;
59
59
  isAlsea?: boolean;
60
+ isHideDriverStatus?: boolean;
60
61
  }
61
62
 
62
63
  export interface AddressListParams {
@@ -365,6 +366,12 @@ export interface PreviousMessagesParams {
365
366
  loadMessages?: (id: any) => {};
366
367
  handleReorder?: (order: any) => {};
367
368
  onNavigationRedirect?: (route: string, params?: any) => {};
369
+ getOrders?: any;
370
+ loading?: boolean;
371
+ reload?: boolean;
372
+ tabs?: any;
373
+ loadMore: any
374
+ error?: boolean
368
375
  }
369
376
  export interface OrderDetailsParams {
370
377
  handleUpdateLocationDriver?: () => {};
@@ -612,3 +619,10 @@ export interface ReviewCustomerParams {
612
619
  export interface NoNetworkParams {
613
620
  image?: any;
614
621
  }
622
+
623
+ export interface OrderDetailsLogisticParams {
624
+ navigation: any,
625
+ handleClickLogisticOrder: any,
626
+ orderAssingId: number,
627
+ order: any
628
+ }
@@ -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
  };
@@ -380,12 +380,14 @@ const LoginFormUI = (props: LoginParams) => {
380
380
  );
381
381
 
382
382
  const note = (
383
- <OText size={24} mBottom={18}>
384
- {t('IF_NOT_HAVE_ACCOUNT', 'If you don\'t have and account, please contact Ordering')}&nbsp;
385
- <OText size={24} mBottom={18} color={theme.colors.skyBlue}>
386
- {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>
387
389
  </OText>
388
- </OText>
390
+ )
389
391
  )
390
392
 
391
393
  return (
@@ -4,6 +4,7 @@ import { OIcon, OButton, OText } from '../shared'
4
4
  import { ImageStyle, TextStyle, View, Platform, TouchableOpacity } from 'react-native'
5
5
  import { useConfig, useLanguage, useOrder } from 'ordering-components/native'
6
6
  import { useTheme } from 'styled-components/native'
7
+
7
8
  const Wrapper = styled.View`
8
9
  background-color: ${(props: any) => props.theme.colors.white};
9
10
  padding: 10px 0px 20px 0px;
@@ -65,28 +66,27 @@ const NavBar = (props: Props) => {
65
66
 
66
67
  return (
67
68
  <Wrapper style={{ paddingTop: props.paddingTop, ...props.style }}>
68
- {(props?.onActionLeft) && (
69
+ {(props?.onActionLeft || props?.leftImg) && (
69
70
  <OButton
70
- imgLeftSrc={props.leftImg}
71
+ imgLeftSrc={props.leftImg || theme.images.general.arrow_left}
71
72
  imgRightSrc={null}
72
73
  style={{ ...btnBackArrow, ...props.btnStyle }}
73
74
  onClick={props.onActionLeft}
74
- imgLeftStyle={props.imgLeftStyle}
75
- {...(!props.leftImg && { iconProps: { name: 'arrowleft', size: 28, color: props.btnStyle?.color } })}
75
+ imgLeftStyle= {props.imgLeftStyle}
76
76
  />)
77
77
  }
78
78
  <TitleTopWrapper>
79
79
  {props.withIcon
80
80
  ? (
81
- <OIcon
82
- url={props.icon}
83
- style={{
84
- borderColor: theme.colors.lightGray,
85
- borderRadius: 20,
86
- }}
87
- width={60}
88
- height={60}
89
- />
81
+ <OIcon
82
+ url={props.icon}
83
+ style={{
84
+ borderColor: theme.colors.lightGray,
85
+ borderRadius: 20,
86
+ }}
87
+ width={60}
88
+ height={60}
89
+ />
90
90
  )
91
91
  : null
92
92
  }
@@ -134,7 +134,7 @@ const NavBar = (props: Props) => {
134
134
  </View>
135
135
  )}
136
136
 
137
- {props.rightComponent}
137
+ { props.rightComponent }
138
138
  </Wrapper>
139
139
  )
140
140
  }
@@ -95,7 +95,7 @@ interface Props {
95
95
  style?: ViewStyle;
96
96
  bgImage: ImageSourcePropType;
97
97
  innerStyle?: ViewStyle;
98
- icon?: ImageSourcePropType;
98
+ icon: ImageSourcePropType;
99
99
  iconStyle?: ImageStyle;
100
100
  callToActionText: string;
101
101
  callToActionTextStyle?: TextStyle;
@@ -15,8 +15,6 @@ import { Container } from '../../layouts/Container'
15
15
  import NavBar from '../NavBar'
16
16
  import { LANDSCAPE, PORTRAIT, useDeviceOrientation } from '../../../../../src/hooks/DeviceOrientation'
17
17
  import GridContainer from '../../layouts/GridContainer'
18
- import AntDesignIcon from 'react-native-vector-icons/AntDesign'
19
- import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons'
20
18
 
21
19
  const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
22
20
  const {
@@ -29,7 +27,7 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
29
27
  callback
30
28
  } = props
31
29
 
32
- const theme = useTheme();
30
+ const theme = useTheme();
33
31
  const [, t] = useLanguage();
34
32
  const [orientationState] = useDeviceOrientation();
35
33
  const [orderState] = useOrder()
@@ -47,7 +45,7 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
47
45
  }
48
46
 
49
47
  useEffect(() => {
50
- if (isCardCliked) {
48
+ if(isCardCliked){
51
49
  callback?.()
52
50
  setIsCardClicked(false)
53
51
  setIsLoadingCard(null)
@@ -85,13 +83,13 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
85
83
  style={cardStyle}
86
84
  isDisabled={isCardCliked}
87
85
  isLoading={isLoadingCard === 'Eat In'}
88
- title={t('EAT_IN', 'Eat In')}
86
+ title={t('EAT_IN','Eat In')}
89
87
  description={t('EAT_IN_DESCRIPTION', 'We are very glad to have you here. Bon appetit!')}
90
88
  bgImage={theme.images.general.eatIn}
91
- VectorIcon={() => <MaterialIcon name='pin-outline' size={28} color='white' style={{ marginBottom: 10 }} />}
89
+ icon={theme.images.general.pushPin}
92
90
  callToActionText={t('START_MY_ORDER', 'Start my order')}
93
91
  onClick={() => {
94
- if (_eatIn?.value !== orderState?.options?.type) {
92
+ if(_eatIn?.value !== orderState?.options?.type){
95
93
  handleChangeOrderType(_eatIn?.value);
96
94
  setIsCardClicked(true)
97
95
  setIsLoadingCard('Eat In')
@@ -108,15 +106,15 @@ const OrderTypeSelectorCardUI = (props: OrderTypeSelectParams) => {
108
106
 
109
107
  <OptionCard
110
108
  style={cardStyle}
111
- title={t('TAKE_OUT', 'Take out')}
109
+ title={t('TAKE_OUT','Take out')}
112
110
  isDisabled={isCardCliked}
113
111
  isLoading={isLoadingCard === 'Take out'}
114
112
  description={t('TAKE_OUT_DESCRIPTION', 'You are very welcome anytime you visit us!')}
115
113
  bgImage={theme.images.general.takeOut}
116
- VectorIcon={() => <AntDesignIcon name='shoppingcart' size={28} color='white' style={{ marginBottom: 10 }} />}
114
+ icon={theme.images.general.shoppingCart}
117
115
  callToActionText={t('START_MY_ORDER', 'Start my order')}
118
116
  onClick={() => {
119
- if (_takeOut?.value !== orderState?.options?.type) {
117
+ if(_takeOut?.value !== orderState?.options?.type){
120
118
  handleChangeOrderType(_takeOut?.value);
121
119
  setIsCardClicked(true)
122
120
  setIsLoadingCard('Take out')
@@ -7,7 +7,7 @@ import { Wrapper } from './styles'
7
7
 
8
8
  import { PhoneInputParams } from '../../../../../src/types';
9
9
  import { OText } from '../shared';
10
- import {transformCountryCode} from '../../../../../src/utils'
10
+ import { transformCountryCode, verifyCountryCode } from '../../../../../src/utils'
11
11
  import {I18nManager} from 'react-native'
12
12
  import { useTheme } from 'styled-components/native';
13
13
 
@@ -89,7 +89,7 @@ export const PhoneInputNumber = (props: PhoneInputParams) => {
89
89
  containerStyle={{ width: '100%' }}
90
90
  ref={phoneInput}
91
91
  defaultValue={userphoneNumber || defaultValue}
92
- defaultCode={defaultCode ? transformCountryCode(defaultCode) : configs?.default_country_code?.value}
92
+ defaultCode={defaultCode ? transformCountryCode(defaultCode) : verifyCountryCode(configs?.default_country_code?.value)}
93
93
  onChangeFormattedText={(text : string) => handleChangeNumber(text)}
94
94
  withDarkTheme
95
95
  textInputStyle={{textAlign: I18nManager.isRTL ? 'right' : 'left'}}
@@ -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}
@@ -96,8 +96,8 @@ import { LogoutButton } from './src/components/LogoutButton';
96
96
  import { UserFormDetailsUI } from './src/components/UserFormDetails';
97
97
  import { WalletTransactionItem } from './src/components/WalletTransactionItem';
98
98
  import { Promotions } from './src/components/Promotions'
99
- import { PageBanner } from './src/components/PageBanner'
100
99
  import { MultiCart } from './src/components/MultiCart'
100
+ import { PageBanner } from './src/components/PageBanner'
101
101
  import { USER_TYPE, ORDER_TYPES } from './src/config/constants'
102
102
 
103
103
  import { OSBill, OSTable, OSCoupon, OSTotal, OSRow } from './src/components/OrderSummary/styles';
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- import { TouchableOpacity, View } from 'react-native';
2
+ import FastImage from 'react-native-fast-image'
3
+ import { StyleSheet, TouchableOpacity, View } from 'react-native';
3
4
  import {
4
5
  AddressDetails as AddressDetailsController,
5
6
  useOrder,
@@ -21,6 +22,14 @@ const AddressDetailsUI = (props: any) => {
21
22
  const [, t] = useLanguage();
22
23
  const { width } = useWindowDimensions();
23
24
 
25
+ const styles = StyleSheet.create({
26
+ productStyle: {
27
+ width: width,
28
+ height: 151,
29
+ marginVertical: 10
30
+ }
31
+ })
32
+
24
33
  return (
25
34
  <ADContainer>
26
35
  <ADHeader>
@@ -34,10 +43,17 @@ const AddressDetailsUI = (props: any) => {
34
43
  </OText>
35
44
  )}
36
45
  </ADHeader>
37
- {!!apiKey && (
46
+ {!!apiKey && googleMapsUrl && (
38
47
  <ADMap
39
48
  style={{ marginStart: -40, marginEnd: -40, width: width, flex: 1 }}>
40
- <OIcon url={googleMapsUrl} height={151} width={width} />
49
+ <FastImage
50
+ style={styles.productStyle}
51
+ source={{
52
+ uri: googleMapsUrl,
53
+ priority: FastImage.priority.normal,
54
+ }}
55
+ resizeMode={FastImage.resizeMode.cover}
56
+ />
41
57
  </ADMap>
42
58
  )}
43
59
  <ADAddress>