ordering-ui-react-native 0.22.33 → 0.22.34-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 (163) hide show
  1. package/package.json +6 -7
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/Checkout/index.tsx +40 -39
  5. package/src/components/StripeMethodForm/index.tsx +4 -2
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/context/OfflineActions/index.tsx +236 -0
  8. package/src/types/index.tsx +2 -1
  9. package/themes/business/index.tsx +2 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  11. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  12. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  13. package/themes/business/src/components/BusinessProductList/index.tsx +3 -2
  14. package/themes/business/src/components/Chat/index.tsx +15 -3
  15. package/themes/business/src/components/DriverMap/index.tsx +49 -26
  16. package/themes/business/src/components/FloatingButton/index.tsx +3 -2
  17. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  18. package/themes/business/src/components/LanguageSelector/index.tsx +1 -4
  19. package/themes/business/src/components/LoginForm/index.tsx +123 -98
  20. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  21. package/themes/business/src/components/MapView/index.tsx +46 -29
  22. package/themes/business/src/components/NewOrderNotification/index.tsx +38 -19
  23. package/themes/business/src/components/OrderDetails/Business.tsx +47 -27
  24. package/themes/business/src/components/OrderDetails/Delivery.tsx +134 -53
  25. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +156 -46
  26. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +55 -29
  27. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  28. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +17 -16
  29. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  30. package/themes/business/src/components/OrderSummary/index.tsx +6 -4
  31. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  32. package/themes/business/src/components/OrdersOption/index.tsx +222 -158
  33. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  34. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +30 -18
  35. package/themes/business/src/components/PreviousOrders/index.tsx +74 -66
  36. package/themes/business/src/components/PreviousOrders/styles.tsx +2 -1
  37. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  38. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  39. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  40. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  41. package/themes/business/src/components/PrinterSettings/index.tsx +162 -174
  42. package/themes/business/src/components/PrinterSettings/styles.tsx +14 -1
  43. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  44. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  45. package/themes/business/src/components/StoresList/index.tsx +2 -2
  46. package/themes/business/src/components/UserProfileForm/index.tsx +57 -24
  47. package/themes/business/src/components/UserProfileForm/styles.tsx +7 -0
  48. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  49. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  50. package/themes/business/src/config/currency.tsx +1010 -0
  51. package/themes/business/src/hooks/useLocation.tsx +16 -12
  52. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  53. package/themes/business/src/types/index.tsx +18 -5
  54. package/themes/business/src/utils/index.tsx +28 -3
  55. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  57. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  58. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  59. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  60. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  61. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  62. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  63. package/themes/original/index.tsx +11 -0
  64. package/themes/original/src/components/AddressForm/index.tsx +27 -16
  65. package/themes/original/src/components/AddressList/index.tsx +8 -7
  66. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  67. package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
  68. package/themes/original/src/components/BusinessItemAccordion/index.tsx +14 -6
  69. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +103 -92
  70. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +8 -6
  71. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  72. package/themes/original/src/components/BusinessPreorder/index.tsx +46 -28
  73. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
  74. package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
  75. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  76. package/themes/original/src/components/BusinessProductsListing/index.tsx +10 -6
  77. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  78. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  79. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  80. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  81. package/themes/original/src/components/Cart/index.tsx +46 -14
  82. package/themes/original/src/components/CartContent/index.tsx +2 -4
  83. package/themes/original/src/components/Checkout/index.tsx +127 -77
  84. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  85. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  86. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  87. package/themes/original/src/components/Favorite/index.tsx +1 -5
  88. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  89. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  90. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  91. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  92. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  93. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  94. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  95. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  96. package/themes/original/src/components/Help/index.tsx +2 -0
  97. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  98. package/themes/original/src/components/Home/index.tsx +2 -11
  99. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  100. package/themes/original/src/components/LoginForm/index.tsx +12 -9
  101. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  102. package/themes/original/src/components/Messages/index.tsx +27 -19
  103. package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
  104. package/themes/original/src/components/MomentOption/index.tsx +80 -52
  105. package/themes/original/src/components/MomentSelector/index.tsx +5 -2
  106. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  107. package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
  108. package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
  109. package/themes/original/src/components/MyOrders/index.tsx +2 -2
  110. package/themes/original/src/components/NavBar/index.tsx +7 -4
  111. package/themes/original/src/components/NetworkError/index.tsx +0 -5
  112. package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
  113. package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
  114. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +16 -11
  115. package/themes/original/src/components/OrderDetails/index.tsx +45 -22
  116. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  117. package/themes/original/src/components/OrderProgress/index.tsx +4 -3
  118. package/themes/original/src/components/OrderSummary/index.tsx +29 -10
  119. package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
  120. package/themes/original/src/components/OrdersOption/index.tsx +3 -6
  121. package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
  122. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  123. package/themes/original/src/components/PaymentOptions/index.tsx +462 -461
  124. package/themes/original/src/components/PhoneInputNumber/index.tsx +92 -7
  125. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  126. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  127. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  128. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  129. package/themes/original/src/components/ProductItemAccordion/index.tsx +30 -38
  130. package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
  131. package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
  132. package/themes/original/src/components/Promotions/index.tsx +6 -9
  133. package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
  134. package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
  135. package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
  136. package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
  137. package/themes/original/src/components/ServiceForm/index.tsx +52 -54
  138. package/themes/original/src/components/Sessions/index.tsx +3 -3
  139. package/themes/original/src/components/SignupForm/index.tsx +42 -30
  140. package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
  141. package/themes/original/src/components/SingleProductCard/index.tsx +5 -5
  142. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  143. package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
  144. package/themes/original/src/components/StripeCardsList/index.tsx +16 -3
  145. package/themes/original/src/components/StripeElementsForm/index.tsx +10 -4
  146. package/themes/original/src/components/StripeElementsForm/naked.tsx +1 -1
  147. package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
  148. package/themes/original/src/components/TaxInformation/index.tsx +3 -2
  149. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
  150. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
  151. package/themes/original/src/components/UserDetails/index.tsx +17 -16
  152. package/themes/original/src/components/UserFormDetails/index.tsx +102 -74
  153. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  154. package/themes/original/src/components/UserVerification/index.tsx +15 -4
  155. package/themes/original/src/components/Wallets/index.tsx +6 -3
  156. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  157. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  158. package/themes/original/src/components/shared/OButton.tsx +5 -4
  159. package/themes/original/src/components/shared/OInput.tsx +4 -8
  160. package/themes/original/src/components/shared/OModal.tsx +7 -2
  161. package/themes/original/src/types/index.tsx +12 -4
  162. package/themes/original/src/utils/index.tsx +29 -0
  163. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,24 +1,26 @@
1
1
  import { useEffect, useState, useRef } from 'react';
2
2
  import GeoLocation from 'react-native-geolocation-service';
3
3
  import { Location } from '../types';
4
- import {useApi, useSession, useLanguage} from 'ordering-components/native'
4
+ import { useApi, useSession, useLanguage } from 'ordering-components/native'
5
5
 
6
6
  export const useLocation = () => {
7
- const [,t] = useLanguage()
7
+ const [, t] = useLanguage()
8
8
  const [ordering] = useApi()
9
- const [{token, user}] = useSession()
9
+ const [{ token, user }] = useSession()
10
10
  const [hasLocation, setHasLocation] = useState(false);
11
11
  const [initialPosition, setInitialPosition] = useState<Location>({
12
12
  longitude: 0,
13
13
  latitude: 0,
14
14
  speed: 0,
15
+ mocked: false
15
16
  });
16
17
  const [userLocation, setUserLocation] = useState<Location>({
17
18
  longitude: 0,
18
19
  latitude: 0,
19
20
  speed: 0,
21
+ mocked: false
20
22
  });
21
- const [newLocation,setNewLocation] = useState<any>({ loading: false, error: null, newLocation: null })
23
+ const [newLocation, setNewLocation] = useState<any>({ loading: false, error: null, newLocation: null })
22
24
  const [routeLines, setRoutesLines] = useState<Location[]>([]);
23
25
  const isMounted = useRef(true);
24
26
 
@@ -37,7 +39,7 @@ export const useLocation = () => {
37
39
  if (!isMounted.current) return;
38
40
  setInitialPosition(location);
39
41
  setUserLocation(location);
40
- setRoutesLines(routes => [...routes, location]);
42
+ setRoutesLines((routes: any) => [...routes, location]);
41
43
  setHasLocation(true);
42
44
  })
43
45
  .catch(err => console.log(err));
@@ -46,14 +48,15 @@ export const useLocation = () => {
46
48
  const getCurrentLocation = (): Promise<Location> => {
47
49
  return new Promise((resolve, reject) => {
48
50
  GeoLocation.getCurrentPosition(
49
- ({ coords }) => {
51
+ ({ coords, mocked }: any) => {
50
52
  resolve({
51
53
  latitude: typeof coords.latitude === 'number' && !Number.isNaN(coords.latitude) ? coords.latitude : 0,
52
54
  longitude: typeof coords.longitude === 'number' && !Number.isNaN(coords.longitude) ? coords.longitude : 0,
53
55
  speed: coords.speed,
56
+ mocked
54
57
  });
55
58
  },
56
- err => reject({ err }),
59
+ (err: any) => reject({ err }),
57
60
  { enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 },
58
61
  );
59
62
  });
@@ -61,18 +64,19 @@ export const useLocation = () => {
61
64
 
62
65
  const followUserLocation = () => {
63
66
  watchId.current = GeoLocation.watchPosition(
64
- ({ coords }) => {
67
+ ({ coords, mocked }: any) => {
65
68
  if (!isMounted.current) return;
66
69
  if (typeof coords.latitude !== 'number' || typeof coords.longitude !== 'number') return
67
70
  const location: Location = {
68
71
  latitude: coords.latitude || 0,
69
72
  longitude: coords.longitude || 0,
70
73
  speed: coords.speed,
74
+ mocked
71
75
  };
72
76
  setUserLocation(location);
73
- setRoutesLines(routes => [...routes, location]);
77
+ setRoutesLines((routes: any) => [...routes, location]);
74
78
  },
75
- err => console.log(err),
79
+ (err: any) => console.log(err),
76
80
  { enableHighAccuracy: true, distanceFilter: 3 },
77
81
  );
78
82
  };
@@ -83,14 +87,14 @@ export const useLocation = () => {
83
87
 
84
88
  const updateDriverPosition = async (newLocation = {}) => {
85
89
  try {
86
- setNewLocation({...newLocation, loading: true})
90
+ setNewLocation({ ...newLocation, loading: true })
87
91
  const { content: { error, result } } = await ordering.setAccessToken(token).users(user?.id).driverLocations().save(newLocation)
88
92
  if (error) {
89
93
  setNewLocation({ ...newLocation, loading: false, error: [result[0] || result || t('ERROR_UPDATING_POSITION', 'Error updating position')] })
90
94
  } else {
91
95
  setNewLocation({ ...newLocation, loading: false, newLocation: { ...newLocation, ...result } })
92
96
  }
93
- } catch (error : any) {
97
+ } catch (error: any) {
94
98
  setNewLocation({ ...newLocation, loading: false, error: [error?.message || t('NETWORK_ERROR', 'Network Error')] })
95
99
  }
96
100
  }
@@ -1,12 +1,12 @@
1
- import React, { useState } from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import {
3
3
  Dimensions,
4
4
  Platform,
5
5
  StatusBar,
6
- StyleSheet,
7
6
  View,
8
7
  } from 'react-native';
9
- import styled from 'styled-components/native';
8
+ import styled, { useTheme } from 'styled-components/native';
9
+ import { useNetInfo } from '@react-native-community/netinfo';
10
10
 
11
11
  export const SafeAreaContainer = styled.SafeAreaView`
12
12
  flex: 1;
@@ -14,6 +14,10 @@ export const SafeAreaContainer = styled.SafeAreaView`
14
14
  `;
15
15
 
16
16
  export const SafeAreaContainerLayout = (props: any) => {
17
+ const theme = useTheme();
18
+ const netInfo = useNetInfo()
19
+
20
+ const [statusColor, setStatusColor] = useState<string | null>(null)
17
21
  const [orientation, setOrientation] = useState(
18
22
  Dimensions.get('window').width < Dimensions.get('window').height
19
23
  ? 'Portrait'
@@ -28,22 +32,34 @@ export const SafeAreaContainerLayout = (props: any) => {
28
32
  }
29
33
  });
30
34
 
35
+ useEffect(() => {
36
+ if (netInfo.isConnected === false) {
37
+ setStatusColor(theme.colors.danger500)
38
+ }
39
+
40
+ if (netInfo.isConnected && statusColor) {
41
+ setStatusColor(theme.colors.success500)
42
+ setTimeout(() => {
43
+ setStatusColor(null)
44
+ }, 2000);
45
+ }
46
+ }, [netInfo.isConnected])
47
+
31
48
  return (
32
- <>
33
- <SafeAreaContainer>
34
- <View
35
- style={{
36
- paddingHorizontal: 30,
37
- paddingTop: 30,
38
- paddingBottom: 0,
39
- flex: 1,
40
- }}>
41
- <StatusBar
42
- barStyle={Platform.OS === 'ios' ? 'dark-content' : 'default'}
43
- />
44
- {props.children}
45
- </View>
46
- </SafeAreaContainer>
47
- </>
49
+ <SafeAreaContainer>
50
+ <View
51
+ style={{
52
+ paddingHorizontal: 30,
53
+ paddingTop: 0,
54
+ paddingBottom: 0,
55
+ flex: 1,
56
+ }}>
57
+ <StatusBar
58
+ barStyle={Platform.OS === 'ios' ? 'dark-content' : 'default'}
59
+ {...statusColor && ({ backgroundColor: statusColor })}
60
+ />
61
+ {props.children}
62
+ </View>
63
+ </SafeAreaContainer>
48
64
  );
49
65
  };
@@ -29,7 +29,8 @@ export interface LoginParams {
29
29
  generateOtpCode: (values?: any) => void,
30
30
  useLoginOtpEmail?: boolean,
31
31
  useLoginOtpCellphone?: boolean,
32
- useLoginOtp?: boolean
32
+ useLoginOtp?: boolean,
33
+ validateDeveloperMode: boolean
33
34
  }
34
35
  export interface otpParams {
35
36
  willVerifyOtpState: boolean,
@@ -43,6 +44,7 @@ export interface ProfileParams {
43
44
  navigation?: any;
44
45
  isEdit?: boolean;
45
46
  formState?: any;
47
+ setRootState?: any;
46
48
  userState?: any;
47
49
  toggleIsEdit?: any;
48
50
  cleanFormState?: any;
@@ -51,6 +53,7 @@ export interface ProfileParams {
51
53
  handleChangeInput?: any;
52
54
  handleButtonUpdateClick?: any;
53
55
  handleToggleAvalaibleStatusDriver?: any;
56
+ handleRemoveAccount?: any;
54
57
  onNavigationRedirect?: any;
55
58
  handlechangeImage?: any;
56
59
  validationFields?: any;
@@ -311,9 +314,9 @@ export interface OrdersOptionParams {
311
314
  cancelled?: Array<number>;
312
315
  };
313
316
  isBusinessApp?: boolean;
314
- handleClickLogisticOrder: (status: number, orderId: number) => void,
315
- logisticOrders: { orders: Array<any>, loading: boolean, error: Array<string> | string },
316
- loadLogisticOrders: () => void;
317
+ handleClickLogisticOrder?: (status: number, orderId: number) => void,
318
+ logisticOrders?: { orders: Array<any>, loading: boolean, error: Array<string> | string },
319
+ loadLogisticOrders?: () => void;
317
320
  isLogisticActivated?: boolean;
318
321
  isAlsea?: boolean;
319
322
  checkNotification?: boolean;
@@ -321,6 +324,10 @@ export interface OrdersOptionParams {
321
324
  handleChangeOrderStatus?: () => void;
322
325
  handleSendCustomerReview?: () => void;
323
326
  orderDetailsProps?: any;
327
+ isNetConnected?: boolean;
328
+ isDriverApp?: boolean;
329
+ combineTabs?: boolean;
330
+ setCombineTabsState?: any;
324
331
  }
325
332
  export interface ActiveOrdersParams {
326
333
  orders?: any;
@@ -411,6 +418,8 @@ export interface OrderDetailsParams {
411
418
  orderTitle?: any;
412
419
  forceUpdate?: number;
413
420
  getPermissions?: any
421
+ loadMessages?: any;
422
+ notificationApp?: string
414
423
  }
415
424
  export interface ProductItemAccordionParams {
416
425
  isCartPending?: boolean;
@@ -446,6 +455,7 @@ export interface MessagesParams {
446
455
  sendMessage?: any;
447
456
  canRead?: any;
448
457
  setCanRead?: any;
458
+ notificationApp?: string
449
459
  handleSend?: () => {};
450
460
  setImage?: (image: string | null) => {};
451
461
  setMessage?: (comment: string) => {};
@@ -496,7 +506,8 @@ export interface FloatingButtonParams {
496
506
  firstColorCustom?: string;
497
507
  secondColorCustom?: string;
498
508
  paddingBottomIos?: any;
499
- isHideRejectButtons?: boolean
509
+ isHideRejectButtons?: boolean;
510
+ principalButtonColor?: string;
500
511
  }
501
512
  export interface MomentOptionParams {
502
513
  navigation: any;
@@ -533,6 +544,7 @@ export interface Location {
533
544
  latitude: number;
534
545
  longitude: number;
535
546
  speed: number;
547
+ mocked?: boolean;
536
548
  }
537
549
 
538
550
  export interface GoogleMapsParams {
@@ -597,6 +609,7 @@ export interface AcceptOrRejectOrderParams {
597
609
  isPage?: boolean
598
610
  navigation?: any
599
611
  route?: any
612
+ isLoadingOrder?: boolean
600
613
  }
601
614
 
602
615
  export interface MapViewParams {
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import FontAwesome from 'react-native-vector-icons/FontAwesome';
3
3
  import { CODES } from 'ordering-components/native';
4
+ import { CURRENCY } from '../config/currency'
4
5
 
5
6
  export const flatArray = (arr: any) => [].concat(...arr);
6
7
 
@@ -39,7 +40,8 @@ export const getTraduction = (key: string, t: any) => {
39
40
  ERROR_USER_UPDATE_YOU_HAVE_ASSIGNED_ORDERS:
40
41
  "You can't because you have assigned orders",
41
42
  ERROR_INVALID_OFFER: 'The offer doesn\'t exist',
42
- ERROR_AUTH_DRIVER_LOGIN_VALIDATION: 'Error auth driver login validation'
43
+ ERROR_AUTH_DRIVER_LOGIN_VALIDATION: 'Error auth driver login validation',
44
+ ERROR_DRIVER_UPDATE_SCHEDULE: 'Error driver update schedule',
43
45
  };
44
46
 
45
47
  return keyList[key] ? t(key, keyList[key]) : t(key);
@@ -157,11 +159,11 @@ export const findExitingCode = (countryCode: string) => {
157
159
  * @param {*} parser function fallback when is decimal
158
160
  * @returns string
159
161
  */
160
- export const verifyDecimals = (value: number, parser: any) => {
162
+ export const verifyDecimals = (value: number, parser: any, options?: any) => {
161
163
  if (value % 1 === 0) {
162
164
  return value;
163
165
  } else {
164
- return parser(value);
166
+ return options ? parser(value, options) : parser(value);
165
167
  }
166
168
  };
167
169
 
@@ -343,6 +345,24 @@ export const getOrderStatus = (s: string, t: any) => {
343
345
  value: t('ORDER_DRIVER_ON_WAY', 'Driver on way'),
344
346
  slug: 'ORDER_DRIVER_ON_WAY',
345
347
  percentage: 45
348
+ },
349
+ {
350
+ key: 24,
351
+ value: t('ORDER_DRIVER_WAITING_FOR_ORDER', 'Driver waiting for order'),
352
+ slug: 'ORDER_DRIVER_WAITING_FOR_ORDER',
353
+ percentage: 25
354
+ },
355
+ {
356
+ key: 25,
357
+ value: t('ORDER_ACCEPTED_BY_DRIVER_COMPANY', 'Accepted by driver company'),
358
+ slug: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY',
359
+ percentage: 25
360
+ },
361
+ {
362
+ key: 26,
363
+ value: t('ORDER_DRIVER_ARRIVED_CUSTOMER', 'Driver arrived to customer'),
364
+ slug: 'ORDER_DRIVER_ARRIVED_CUSTOMER',
365
+ percentage: 80
346
366
  }
347
367
  ];
348
368
 
@@ -401,3 +421,8 @@ export const calculateDistance = (
401
421
  const distanceInKm = distance / 1000;
402
422
  return distanceInKm;
403
423
  };
424
+
425
+ export const getCurrenySymbol = (code : string) => {
426
+ return CURRENCY?.[code]?.symbol ?? code
427
+ }
428
+
@@ -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
@@ -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')
@@ -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,6 +108,8 @@ 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
 
111
+ import { orderTypeList, getTraduction, verifyDecimals, getOrderStatus, getOrderStatuPickUp } from './src/utils'
112
+
109
113
  import Alert from './src/providers/AlertProvider'
110
114
 
111
115
  import {
@@ -182,6 +186,7 @@ export {
182
186
  Checkout,
183
187
  Favorite,
184
188
  FavoriteList,
189
+ GPSButton,
185
190
  ForgotPasswordForm,
186
191
  MomentOption,
187
192
  OrdersOption,
@@ -256,6 +261,7 @@ export {
256
261
  ProductIngredient,
257
262
  ProductOption,
258
263
  ProductOptionSubOption,
264
+ SendGiftCard,
259
265
  Sessions,
260
266
  SingleProductReview,
261
267
  LogoutButton,
@@ -343,6 +349,11 @@ export {
343
349
  _setStoreData,
344
350
  _removeStoreData,
345
351
  _clearStoreData,
352
+ orderTypeList,
353
+ getTraduction,
354
+ verifyDecimals,
355
+ getOrderStatus,
356
+ getOrderStatuPickUp,
346
357
 
347
358
  // Date Picker
348
359
  DatePickerUI