ordering-ui-react-native 0.21.87 → 0.21.88-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 (162) 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/StripeMethodForm/index.tsx +6 -4
  5. package/src/components/VerifyPhone/styles.tsx +1 -2
  6. package/src/types/index.tsx +3 -1
  7. package/themes/business/index.tsx +2 -0
  8. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
  9. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
  10. package/themes/business/src/components/BusinessController/index.tsx +8 -3
  11. package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
  12. package/themes/business/src/components/Chat/index.tsx +5 -2
  13. package/themes/business/src/components/DriverMap/index.tsx +49 -27
  14. package/themes/business/src/components/GoogleMap/index.tsx +15 -8
  15. package/themes/business/src/components/Home/index.tsx +5 -1
  16. package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
  17. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  18. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  19. package/themes/business/src/components/MapView/index.tsx +36 -17
  20. package/themes/business/src/components/NewOrderNotification/index.tsx +69 -33
  21. package/themes/business/src/components/OrderDetails/Business.tsx +74 -9
  22. package/themes/business/src/components/OrderDetails/Delivery.tsx +131 -51
  23. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +112 -41
  24. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +62 -24
  25. package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
  26. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +221 -0
  27. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
  28. package/themes/business/src/components/OrderSummary/index.tsx +223 -73
  29. package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
  30. package/themes/business/src/components/OrdersOption/index.tsx +251 -159
  31. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  32. package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
  33. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +42 -20
  34. package/themes/business/src/components/PreviousOrders/index.tsx +76 -66
  35. package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
  36. package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
  37. package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
  38. package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
  39. package/themes/business/src/components/PrinterSettings/index.tsx +267 -0
  40. package/themes/business/src/components/PrinterSettings/styles.tsx +30 -0
  41. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  42. package/themes/business/src/components/Sessions/index.tsx +1 -1
  43. package/themes/business/src/components/StoresList/index.tsx +2 -2
  44. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  45. package/themes/business/src/components/UserProfileForm/index.tsx +47 -29
  46. package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
  47. package/themes/business/src/components/shared/OInput.tsx +2 -0
  48. package/themes/business/src/components/shared/OTextarea.tsx +8 -9
  49. package/themes/business/src/hooks/useLocation.tsx +5 -4
  50. package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
  51. package/themes/business/src/types/index.tsx +14 -4
  52. package/themes/business/src/utils/index.tsx +25 -1
  53. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  54. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  55. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  56. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  57. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  58. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  59. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  60. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  61. package/themes/original/index.tsx +11 -0
  62. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  63. package/themes/original/src/components/AddressForm/index.tsx +32 -17
  64. package/themes/original/src/components/AddressList/index.tsx +8 -7
  65. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  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/BusinessController/index.tsx +12 -7
  69. package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
  70. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
  71. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
  72. package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
  73. package/themes/original/src/components/BusinessPreorder/index.tsx +20 -15
  74. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +5 -5
  75. package/themes/original/src/components/BusinessProductsList/index.tsx +2 -2
  76. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  77. package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
  78. package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
  79. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  80. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
  81. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  82. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  83. package/themes/original/src/components/Cart/index.tsx +43 -15
  84. package/themes/original/src/components/CartContent/index.tsx +21 -8
  85. package/themes/original/src/components/Checkout/index.tsx +105 -59
  86. package/themes/original/src/components/CitiesControl/index.tsx +0 -3
  87. package/themes/original/src/components/CouponControl/index.tsx +1 -3
  88. package/themes/original/src/components/DriverTips/index.tsx +1 -3
  89. package/themes/original/src/components/Favorite/index.tsx +1 -5
  90. package/themes/original/src/components/FavoriteList/index.tsx +0 -1
  91. package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
  92. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
  93. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
  94. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
  95. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
  96. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
  97. package/themes/original/src/components/GoogleMap/index.tsx +39 -18
  98. package/themes/original/src/components/Help/index.tsx +2 -0
  99. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
  100. package/themes/original/src/components/Home/index.tsx +2 -10
  101. package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
  102. package/themes/original/src/components/LoginForm/index.tsx +4 -7
  103. package/themes/original/src/components/MessageListing/index.tsx +2 -1
  104. package/themes/original/src/components/Messages/index.tsx +13 -9
  105. package/themes/original/src/components/MomentOption/index.tsx +13 -2
  106. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
  107. package/themes/original/src/components/MultiCheckout/index.tsx +130 -86
  108. package/themes/original/src/components/MultiOrdersDetails/index.tsx +2 -1
  109. package/themes/original/src/components/MyOrders/index.tsx +10 -23
  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 +13 -10
  115. package/themes/original/src/components/OrderDetails/index.tsx +42 -19
  116. package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
  117. package/themes/original/src/components/OrderProgress/index.tsx +26 -6
  118. package/themes/original/src/components/OrderSummary/index.tsx +28 -9
  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 +17 -9
  124. package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
  125. package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
  126. package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
  127. package/themes/original/src/components/ProductForm/index.tsx +107 -102
  128. package/themes/original/src/components/ProductItemAccordion/index.tsx +55 -49
  129. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  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 +86 -78
  140. package/themes/original/src/components/SingleOrderCard/index.tsx +7 -5
  141. package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
  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 +10 -3
  145. package/themes/original/src/components/StripeElementsForm/index.tsx +77 -60
  146. package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -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 +3 -2
  152. package/themes/original/src/components/UserFormDetails/index.tsx +154 -130
  153. package/themes/original/src/components/UserProfile/index.tsx +9 -1
  154. package/themes/original/src/components/Wallets/index.tsx +6 -3
  155. package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
  156. package/themes/original/src/components/shared/OAlert.tsx +2 -1
  157. package/themes/original/src/components/shared/OButton.tsx +5 -4
  158. package/themes/original/src/components/shared/OInput.tsx +4 -8
  159. package/themes/original/src/components/shared/OModal.tsx +7 -2
  160. package/themes/original/src/types/index.tsx +5 -1
  161. package/themes/original/src/utils/index.tsx +30 -1
  162. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ordering-ui-react-native",
3
- "version": "0.21.87",
3
+ "version": "0.21.88-release",
4
4
  "description": "Reusable components made in react native",
5
5
  "main": "src/index.tsx",
6
6
  "author": "ordering.inc",
@@ -52,13 +52,13 @@
52
52
  "@segment/analytics-react-native": "2.1.11",
53
53
  "@segment/sovran-react-native": "0.2.6",
54
54
  "@sentry/react-native": "^2.6.0",
55
- "@stripe/stripe-react-native": "^0.2.0",
55
+ "@stripe/stripe-react-native": "0.23.0",
56
56
  "@types/react-native-loading-spinner-overlay": "^0.5.2",
57
57
  "@types/react-native-snap-carousel": "^3.8.4",
58
58
  "@types/styled-components": "^5.1.3",
59
59
  "axios": "^0.21.0",
60
60
  "moment": "^2.29.1",
61
- "ordering-components": "github:Ordering-Inc/ordering-components#development",
61
+ "ordering-components": "github:Ordering-Inc/ordering-components#release",
62
62
  "patch-package": "^6.4.7",
63
63
  "postinstall-postinstall": "^2.1.0",
64
64
  "prop-types": "^15.7.2",
@@ -76,7 +76,7 @@
76
76
  "react-native-color-matrix-image-filters": "^5.2.10",
77
77
  "react-native-country-picker-modal": "^2.0.0",
78
78
  "react-native-credit-card-input": "^0.4.1",
79
- "react-native-date-picker": "^4.2.13",
79
+ "react-native-date-picker": "4.2.14",
80
80
  "react-native-device-info": "^8.7.1",
81
81
  "react-native-document-picker": "^5.2.0",
82
82
  "react-native-elements": "^3.0.0-alpha.1",
@@ -86,12 +86,12 @@
86
86
  "react-native-gesture-handler": "^1.8.0",
87
87
  "react-native-get-random-values": "1.8.0",
88
88
  "react-native-gifted-chat": "^0.16.3",
89
- "react-native-google-places-autocomplete": "^2.1.3",
89
+ "react-native-google-places-autocomplete": "2.1.3",
90
90
  "react-native-html-to-pdf": "^0.10.0",
91
91
  "react-native-image-picker": "^4.0.6",
92
92
  "react-native-intersection-observer": "^0.0.9",
93
93
  "react-native-lightbox": "^0.8.1",
94
- "react-native-linear-gradient": "^2.5.6",
94
+ "react-native-linear-gradient": "2.7.3",
95
95
  "react-native-loading-spinner-overlay": "^2.0.0",
96
96
  "react-native-map-link": "^2.8.2",
97
97
  "react-native-maps": "^0.28.0",
@@ -102,7 +102,6 @@
102
102
  "react-native-phone-number-input": "^2.0.0",
103
103
  "react-native-picker-select": "^8.0.4",
104
104
  "react-native-print": "^0.9.0",
105
- "react-native-reanimated": "^1.13.1",
106
105
  "react-native-recaptcha-that-works": "^1.2.0",
107
106
  "react-native-restart": "^0.0.22",
108
107
  "react-native-safe-area-context": "^3.1.8",
@@ -7,7 +7,8 @@
7
7
  */
8
8
 
9
9
  import * as React from 'react';
10
- import { LogBox } from 'react-native';
10
+ import { LogBox, Platform } from 'react-native';
11
+ import * as Sentry from "@sentry/react-native";
11
12
  import { OrderingProvider } from 'ordering-components/native';
12
13
  import RNBootSplash from "react-native-bootsplash";
13
14
 
@@ -22,6 +23,47 @@ import theme from './theme.json';
22
23
  import AppContainer from './AppContainer';
23
24
  import { FacebookPixel } from './components/FacebookPixel';
24
25
 
26
+ Sentry.init({
27
+ environment: Platform.OS === 'ios' ? 'ios' : 'android',
28
+ dsn: 'https://e5e1115dc93b49109f4ab65f2098bef9@o460529.ingest.sentry.io/5722123',
29
+ release: 'ordering-ui-native@' + process.env.npm_package_version,
30
+ ignoreErrors: [
31
+ 'is not defined',
32
+ 'is not a function',
33
+ 'can\'t find variable',
34
+ 'objects are not valid',
35
+ 'element type is invalid',
36
+ 'requiring module',
37
+ 'has not been registered',
38
+ 'failed to connect to debugger!',
39
+ 'rendered more hooks than',
40
+ 'rendered fewer hooks than',
41
+ 'should have a queue',
42
+ 'the OS most likely terminated',
43
+ 'Connection timed out',
44
+ 'java.io.EOFException',
45
+ 'Abort',
46
+ 'Segfault',
47
+ 'Failed to allocate a',
48
+ 'Application Not Responding',
49
+ 'connection no longer valid',
50
+ 'IllegalInstruction',
51
+ 'React.Children.only expected to receive a single React element child.',
52
+ 'unrecognized selector sent to instance'
53
+ ],
54
+ tracesSampleRate: 0.2,
55
+ // Release health
56
+ enableAutoSessionTracking: true,
57
+ // Sessions close after app is 10 seconds in the background.
58
+ sessionTrackingIntervalMillis: 10000,
59
+
60
+ integrations: [
61
+ new Sentry.ReactNativeTracing({
62
+ routingInstrumentation: reactNavigationV5Instrumentation,
63
+ })
64
+ ]
65
+ });
66
+
25
67
  LogBox.ignoreLogs([
26
68
  'Sending \`onAnimatedValueUpdate` with no listeners registered.',
27
69
  'Non-serializable values were found in the navigation state.',
@@ -191,7 +191,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
191
191
  {isFarAway && (
192
192
  <FarAwayMessage style={styles.farAwayMsg}>
193
193
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
194
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
194
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
195
195
  </FarAwayMessage>
196
196
  )}
197
197
  </OrderControlContainer>
@@ -3,7 +3,6 @@ import { useLanguage, useConfig, useOrder } from 'ordering-components/native'
3
3
  import { useGooglePay, useApplePay } from '@stripe/stripe-react-native'
4
4
  import { Platform } from 'react-native';
5
5
  import { StripeMethodFormParams } from '../../types';
6
- import { android_app_id } from '../../config.json'
7
6
 
8
7
  export const StripeMethodForm = (props: StripeMethodFormParams) => {
9
8
  const {
@@ -17,7 +16,9 @@ export const StripeMethodForm = (props: StripeMethodFormParams) => {
17
16
  placeByMethodPay,
18
17
  methodPaySupported,
19
18
  setPlaceByMethodPay,
20
- cartTotal
19
+ cartTotal,
20
+ androidAppId,
21
+ businessNames
21
22
  } = props
22
23
  const { initGooglePay, createGooglePayPaymentMethod, loading } = useGooglePay();
23
24
  const { presentApplePay, isApplePaySupported } = useApplePay();
@@ -61,7 +62,7 @@ export const StripeMethodForm = (props: StripeMethodFormParams) => {
61
62
  })
62
63
  const { error } = await initGooglePay({
63
64
  testEnv: devMode,
64
- merchantName: android_app_id,
65
+ merchantName: androidAppId,
65
66
  countryCode: 'US',
66
67
  billingAddressConfig: {
67
68
  format: 'FULL',
@@ -152,7 +153,8 @@ export const StripeMethodForm = (props: StripeMethodFormParams) => {
152
153
 
153
154
  const { error, paymentMethod } = await presentApplePay({
154
155
  cartItems: [{
155
- label: t('CART', 'Cart'),
156
+ label: businessNames ? `${businessNames.join(', ')} ${t('VIA_CHEW_APP', 'via Chew App')}`
157
+ : `${cart?.business?.name} ${t('VIA_CHEW_APP', 'via Chew App')}`,
156
158
  amount: cartTotal?.toString?.() ?? cart?.balance?.toString() ?? cart?.total?.toString?.(),
157
159
  paymentType: 'Immediate'
158
160
  }],
@@ -2,7 +2,7 @@ import styled from 'styled-components/native';
2
2
 
3
3
  export const Container = styled.View`
4
4
  width: 100%;
5
- padding: 0 43px;
5
+ padding: 0 30px;
6
6
  `
7
7
 
8
8
  export const CountDownContainer = styled.View`
@@ -20,7 +20,6 @@ export const ResendSection = styled.View`
20
20
  display: flex;
21
21
  flex-direction: row;
22
22
  justify-content: center;
23
- flex-wrap: wrap;
24
23
  `
25
24
 
26
25
  export const WrappCountdown = styled.View`
@@ -494,5 +494,7 @@ export interface StripeMethodFormParams {
494
494
  placeByMethodPay?: any
495
495
  methodPaySupported?: any,
496
496
  setPlaceByMethodPay?: any,
497
- cartTotal?: number
497
+ cartTotal?: number,
498
+ androidAppId?: string,
499
+ businessNames?: Array<string>
498
500
  }
@@ -29,6 +29,7 @@ import { OrderSummary } from './src/components/OrderSummary';
29
29
  import { PhoneInputNumber } from './src/components/PhoneInputNumber';
30
30
  import { PreviousMessages } from './src/components/PreviousMessages';
31
31
  import { PreviousOrders } from './src/components/PreviousOrders';
32
+ import { PrinterSettings } from './src/components/PrinterSettings';
32
33
  import { ProductItemAccordion } from './src/components/ProductItemAccordion';
33
34
  import { ReviewCustomer } from './src/components/ReviewCustomer'
34
35
  import { SearchBar } from './src/components/SearchBar';
@@ -103,6 +104,7 @@ export {
103
104
  PhoneInputNumber,
104
105
  PreviousMessages,
105
106
  PreviousOrders,
107
+ PrinterSettings,
106
108
  ProductItemAccordion,
107
109
  ReviewCustomer,
108
110
  SafeAreaContainerLayout,
@@ -31,6 +31,7 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
31
31
  notShowCustomerPhone,
32
32
  orderTitle,
33
33
  appTitle,
34
+ isLoadingOrder
34
35
  } = props;
35
36
 
36
37
  const [, t] = useLanguage();
@@ -277,7 +278,7 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
277
278
  }
278
279
 
279
280
  bodyToSend.id = orderId;
280
- handleUpdateOrder && handleUpdateOrder(bodyToSend.status, bodyToSend);
281
+ handleUpdateOrder?.(bodyToSend.status, bodyToSend);
281
282
  };
282
283
 
283
284
  useEffect(() => {
@@ -427,13 +428,15 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
427
428
  {action === 'accept' && (
428
429
  <View style={{ height: 300, justifyContent: 'center' }}>
429
430
  <Timer onPress={() => openTimerIOnput()}>
430
- <OText weight="600" style={{ textAlign: 'center' }} size={55}>
431
+ <OText weight="600" size={55}>
431
432
  {hour}
432
433
  </OText>
433
- {hour.length > 0 && <OText size={55}>:</OText>}
434
- <OText weight="600" style={{ textAlign: 'center' }} size={55}>
434
+ {hour.length > 0 && <OText size={55} style={{ marginBottom: 10 }}>:</OText>}
435
+ <OText weight="600" size={55}>
435
436
  {min}
436
437
  </OText>
438
+ {time?.length > 2 && <OText style={{ position: 'absolute', bottom: 60, left: 55 }}>{t('HOURS', 'Hours')}</OText>}
439
+ <OText style={{ position: 'absolute', bottom: 60, right: time?.length > 2 ? 55 : 95 }}>{t('MINUTES', 'Minutes')}</OText>
437
440
  </Timer>
438
441
  </View>
439
442
  )}
@@ -517,7 +520,7 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
517
520
  ...styles.bottomParent,
518
521
  marginBottom: Platform.OS === 'ios'
519
522
  ? 30 : (keyboardState.height === 0)
520
- ? isPage ? 0 : 30
523
+ ? isPage ? 0 : 40
521
524
  : keyboardState.height - (isPage ? 20 : -10)
522
525
  }}
523
526
  >
@@ -529,7 +532,7 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
529
532
  style={{ borderRadius: 7, height: 45 }}
530
533
  parentStyle={{ width: '100%' }}
531
534
  textStyle={{ color: '#FFF', fontSize: 18 }}
532
- isDisabled={showTextArea && !comments}
535
+ isDisabled={(showTextArea && !comments) || isLoadingOrder}
533
536
  onClick={() => handleAcceptOrReject()}
534
537
  />
535
538
  </View>
@@ -10,6 +10,7 @@ export const TopActions = styled.View`
10
10
  `
11
11
 
12
12
  export const Timer = styled.TouchableOpacity`
13
+ position: relative;
13
14
  padding: 40px;
14
15
  justify-content: center;
15
16
  flex-direction: row;
@@ -1,5 +1,6 @@
1
1
  import React, { useState, useEffect } from 'react';
2
2
  import { StyleSheet, View, ActivityIndicator, TouchableOpacity } from 'react-native';
3
+ import FastImage from 'react-native-fast-image'
3
4
  import ToggleSwitch from 'toggle-switch-react-native';
4
5
  import { useTheme } from 'styled-components/native';
5
6
  import {
@@ -99,10 +100,14 @@ export const BusinessControllerUI = (props: BusinessControllerParams) => {
99
100
  onPress={() => navigation && business?.slug && navigation.navigate('BusinessProductListing', { slug: business?.slug })}
100
101
  >
101
102
  <Logo style={styles.logo}>
102
- <OIcon
103
- url={optimizeImage(business?.logo, 'h_300,c_limit')}
104
- src={!business?.logo && theme?.images?.dummies?.businessLogo}
103
+ <FastImage
105
104
  style={styles.icon}
105
+ source={business?.logo?.includes('https') ? {
106
+ uri: business?.logo,
107
+ priority: FastImage.priority.high,
108
+ cache: FastImage.cacheControl.immutable
109
+ } : business?.logo ?? theme?.images?.dummies?.businessLogo}
110
+ resizeMode={FastImage.resizeMode.cover}
106
111
  />
107
112
  </Logo>
108
113
  <Information>
@@ -1,5 +1,5 @@
1
1
  import React, { useEffect, useState } from 'react';
2
- import { View, StyleSheet, ScrollView, Dimensions, TouchableOpacity } from 'react-native';
2
+ import { View, StyleSheet, ScrollView, Dimensions, TouchableOpacity, Platform } from 'react-native';
3
3
  import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder';
4
4
  import { useTheme } from 'styled-components/native';
5
5
  import { SearchBar } from '../SearchBar';
@@ -190,6 +190,7 @@ export const BusinessProductList = (props: any) => {
190
190
  const businessProductListProps = {
191
191
  ...props,
192
192
  UIComponent: BusinessProductListUI,
193
+ isIos: Platform.OS === 'ios'
193
194
  };
194
195
 
195
196
  return <StoreProductList {...businessProductListProps} />;
@@ -69,7 +69,7 @@ const ChatUI = (props: MessagesParams) => {
69
69
  const [, { showToast }] = useToast();
70
70
  const theme = useTheme();
71
71
  const [messageList, setMessageList] = useState<any>([])
72
- const previousStatus = [1, 2, 5, 6, 10, 11, 12, 16, 17]
72
+ const previousStatus = [1, 2, 5, 6, 10, 11, 12, 15, 16, 17]
73
73
  const chatDisabled = previousStatus.includes(order?.status)
74
74
 
75
75
  const ORDER_STATUS: any = {
@@ -96,7 +96,10 @@ const ChatUI = (props: MessagesParams) => {
96
96
  20: t('ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', 'Order customer almost arrived to business'),
97
97
  21: t('ORDER_CUSTOMER_ARRIVED_BUSINESS', 'Order customer arrived to business'),
98
98
  22: t('ORDER_LOOKING_FOR_DRIVER', 'Order looking for driver'),
99
- 23: t('ORDER_DRIVER_ON_WAY', 'Driver on way')
99
+ 23: t('ORDER_DRIVER_ON_WAY', 'Driver on way'),
100
+ 24: t('ORDER_DRIVER_WAITING_FOR_ORDER', 'Driver waiting for order'),
101
+ 25: t('ORDER_ACCEPTED_BY_DRIVER_COMPANY', 'Accepted by driver company'),
102
+ 26: t('ORDER_DRIVER_ARRIVED_CUSTOMER', 'Driver arrived to customer')
100
103
  }
101
104
 
102
105
  const getLogisticTag = (status: any) => {
@@ -1,4 +1,4 @@
1
- import React, { useState, useEffect, useRef } from 'react';
1
+ import React, { useState, useEffect, useRef, useCallback } from 'react';
2
2
  import { Dimensions, Platform, SafeAreaView, StyleSheet, View } from 'react-native';
3
3
  import MapView, {
4
4
  PROVIDER_GOOGLE,
@@ -30,7 +30,6 @@ export const DriverMap = (props: GoogleMapsParams) => {
30
30
  isBusinessMarker,
31
31
  isToFollow,
32
32
  handleViewActionOrder,
33
- updateDriverPosition,
34
33
  driverUpdateLocation,
35
34
  setDriverUpdateLocation,
36
35
  } = props;
@@ -70,11 +69,26 @@ export const DriverMap = (props: GoogleMapsParams) => {
70
69
  stopFollowUserLocation,
71
70
  } = useLocation();
72
71
 
73
- const origin = {
74
- latitude: initialPosition.latitude,
75
- longitude: initialPosition.longitude,
76
- };
77
- const destination = { latitude: location.lat, longitude: location.lng };
72
+ const parsedInitialPosition = useCallback(() => {
73
+ return {
74
+ latitude: typeof initialPosition.latitude === 'string' ? parseFloat(initialPosition.latitude) || 0 : initialPosition.latitude || 0,
75
+ longitude: typeof initialPosition.longitude === 'string' ? parseFloat(initialPosition.longitude) || 0 : initialPosition.longitude || 0,
76
+ }
77
+ }, [JSON.stringify(initialPosition)])
78
+
79
+ const parsedUserLocation = useCallback(() => {
80
+ return {
81
+ latitude: typeof userLocation?.latitude === 'string' ? parseFloat(userLocation?.latitude) || 0 : userLocation?.latitude || 0,
82
+ longitude: typeof userLocation?.longitude === 'string' ? parseFloat(userLocation?.longitude) || 0 : userLocation?.longitude || 0
83
+ }
84
+ }, [JSON.stringify(userLocation)])
85
+
86
+ const parsedDestination = useCallback(() => {
87
+ return {
88
+ latitude: typeof location?.lat === 'string' ? parseFloat(location?.lat) || 0 : location?.lat || 0,
89
+ longitude: typeof location?.lng === 'string' ? parseFloat(location?.lng) || 0 : location?.lng || 0
90
+ }
91
+ }, [JSON.stringify(location)])
78
92
 
79
93
  useEffect(() => {
80
94
  if (isToFollow) {
@@ -162,21 +176,21 @@ export const DriverMap = (props: GoogleMapsParams) => {
162
176
  if (driverUpdateLocation.error) return;
163
177
 
164
178
  calculateDistance(
165
- { lat: userLocation.latitude, lng: userLocation.longitude },
166
- destination,
179
+ { lat: parsedUserLocation()?.latitude, lng: parsedUserLocation()?.longitude },
180
+ parsedDestination(),
167
181
  );
168
182
  // geocodePosition(userLocation);
169
183
 
170
184
  if (!following.current) return;
171
185
  fitCoordinates();
172
186
 
173
- const { latitude, longitude } = userLocation;
187
+ const { latitude, longitude } = parsedUserLocation();
174
188
 
175
189
  mapRef.current?.animateCamera({
176
190
  center: { latitude, longitude },
177
191
  });
178
192
 
179
- }, [userLocation]);
193
+ }, [JSON.stringify(userLocation)]);
180
194
 
181
195
  const handleArrowBack: any = () => {
182
196
  setDriverUpdateLocation?.({
@@ -222,6 +236,11 @@ export const DriverMap = (props: GoogleMapsParams) => {
222
236
  19: theme.colors.statusOrderBlue,
223
237
  20: theme.colors.statusOrderBlue,
224
238
  21: theme.colors.statusOrderBlue,
239
+ 22: theme.colors.statusOrderBlue,
240
+ 23: theme.colors.statusOrderBlue,
241
+ 24: theme.colors.statusOrderBlue,
242
+ 25: theme.colors.statusOrderBlue,
243
+ 26: theme.colors.statusOrderBlue,
225
244
  //GREEN
226
245
  1: theme.colors.statusOrderGreen,
227
246
  11: theme.colors.statusOrderGreen,
@@ -242,8 +261,8 @@ export const DriverMap = (props: GoogleMapsParams) => {
242
261
  [
243
262
  { latitude: location.lat, longitude: location.lng },
244
263
  {
245
- latitude: initialPosition.latitude,
246
- longitude: initialPosition.longitude,
264
+ latitude: parsedInitialPosition()?.latitude,
265
+ longitude: parsedInitialPosition()?.longitude,
247
266
  },
248
267
  ],
249
268
  {
@@ -256,7 +275,7 @@ export const DriverMap = (props: GoogleMapsParams) => {
256
275
 
257
276
  useEffect(() => {
258
277
  const interval = setInterval(() => {
259
- if (initialPosition.latitude !== 0 && autoFit.current) {
278
+ if (parsedInitialPosition()?.latitude !== 0 && autoFit.current) {
260
279
  if (mapRef.current) {
261
280
  fitCoordinates();
262
281
  autoFit.current = false;
@@ -264,7 +283,7 @@ export const DriverMap = (props: GoogleMapsParams) => {
264
283
  }
265
284
  }, 1000);
266
285
  return () => clearInterval(interval);
267
- }, [initialPosition]);
286
+ }, [parsedInitialPosition()]);
268
287
 
269
288
  const fitCoordinatesZoom = () => {
270
289
  following.current = false;
@@ -347,8 +366,8 @@ export const DriverMap = (props: GoogleMapsParams) => {
347
366
  ref={mapRef}
348
367
  provider={PROVIDER_GOOGLE}
349
368
  initialRegion={{
350
- latitude: initialPosition.latitude,
351
- longitude: initialPosition.longitude,
369
+ latitude: parsedInitialPosition()?.latitude,
370
+ longitude: parsedInitialPosition()?.longitude,
352
371
  latitudeDelta: 0.001,
353
372
  longitudeDelta: 0.001 * ASPECT_RATIO,
354
373
  }}
@@ -370,8 +389,8 @@ export const DriverMap = (props: GoogleMapsParams) => {
370
389
  <>
371
390
  <Marker
372
391
  coordinate={{
373
- latitude: location.lat,
374
- longitude: location.lng,
392
+ latitude: parsedDestination()?.latitude,
393
+ longitude: parsedDestination()?.longitude
375
394
  }}
376
395
  title={location.title}>
377
396
  <Icon
@@ -388,7 +407,10 @@ export const DriverMap = (props: GoogleMapsParams) => {
388
407
  />
389
408
  </View>
390
409
  </Marker>
391
- <Marker coordinate={userLocation}>
410
+ <Marker coordinate={{
411
+ latitude: userLocation?.latitude,
412
+ longitude: userLocation?.longitude
413
+ }}>
392
414
  <View style={styles.driverIcon}>
393
415
  <OIcon
394
416
  style={styles.image}
@@ -402,8 +424,8 @@ export const DriverMap = (props: GoogleMapsParams) => {
402
424
  ) : (
403
425
  <Marker
404
426
  coordinate={{
405
- latitude: userLocation.latitude,
406
- longitude: userLocation.longitude,
427
+ latitude: parsedUserLocation()?.latitude,
428
+ longitude: parsedUserLocation()?.longitude
407
429
  }}
408
430
  title={markerTitle || t('YOUR_LOCATION', 'Your Location')}
409
431
  />
@@ -515,10 +537,10 @@ export const DriverMap = (props: GoogleMapsParams) => {
515
537
  animationIn: 'slideInUp'
516
538
  }}
517
539
  options={{
518
- latitude: destination.latitude,
519
- longitude: destination.longitude,
520
- sourceLatitude: userLocation.latitude,
521
- sourceLongitude: userLocation.longitude,
540
+ latitude: parsedDestination()?.latitude,
541
+ longitude: parsedDestination()?.longitude,
542
+ sourceLatitude: parsedUserLocation()?.latitude,
543
+ sourceLongitude: parsedUserLocation()?.longitude,
522
544
  naverCallerName: 'com.deliveryapp',
523
545
  dialogTitle: t('SHOW_IN_OTHER_MAPS', 'Show in other maps'),
524
546
  dialogMessage: t('WHAT_APP_WOULD_YOU_USE', 'What app would you like to use?'),
@@ -540,7 +562,7 @@ export const DriverMap = (props: GoogleMapsParams) => {
540
562
  secondButton={true}
541
563
  firstColorCustom={theme.colors.red}
542
564
  secondColorCustom={theme.colors.green}
543
- widthButton={isHideRejectButtons ? '100%': '45%'}
565
+ widthButton={isHideRejectButtons ? '100%' : '45%'}
544
566
  isPadding
545
567
  isHideRejectButtons={isHideRejectButtons}
546
568
  />
@@ -50,12 +50,16 @@ export const GoogleMap = (props: GoogleMapsParams) => {
50
50
  const ASPECT_RATIO = width / height;
51
51
  const [isMapReady, setIsMapReady] = useState(false);
52
52
  const [markerPosition, setMarkerPosition] = useState({
53
- latitude: locations ? locations[locations.length - 1].lat : location.lat,
54
- longitude: locations ? locations[locations.length - 1].lng : location.lng,
53
+ latitude: locations
54
+ ? typeof locations[locations.length - 1].lat === 'string' ? parseFloat(locations[locations.length - 1].lat) || 0 : locations[locations.length - 1].lat || 0
55
+ : typeof location?.lat === 'string' ? parseFloat(location?.lat) || 0 : location?.lat || 0,
56
+ longitude: locations
57
+ ? typeof locations[locations.length - 1].lng === 'string' ? parseFloat(locations[locations.length - 1].lng) || 0 : locations[locations.length - 1].lng || 0
58
+ : typeof location?.lng === 'string' ? parseFloat(location?.lng) || 0 : location?.lng || 0,
55
59
  });
56
60
  const [region, setRegion] = useState({
57
- latitude: location.lat,
58
- longitude: location.lng,
61
+ latitude: typeof location?.lat === 'string' ? parseFloat(location?.lat) || 0 : location?.lat || 0,
62
+ longitude: typeof location?.lng === 'string' ? parseFloat(location?.lng) || 0 : location?.lng || 0,
59
63
  latitudeDelta: 0.001,
60
64
  longitudeDelta: 0.001 * ASPECT_RATIO,
61
65
  });
@@ -78,12 +82,15 @@ export const GoogleMap = (props: GoogleMapsParams) => {
78
82
  let MARKERS =
79
83
  locations &&
80
84
  locations.map((location: { lat: number; lng: number; level: number }) => {
81
- return location.level === 4 && driverLocation?.lat
85
+ return location.level === 4 && driverLocation?.lat && driverLocation?.lng
82
86
  ? {
83
- latitude: driverLocation?.lat,
84
- longitude: driverLocation?.lng,
87
+ latitude: typeof driverLocation?.lat === 'string' ? parseFloat(driverLocation?.lat) || 0 : driverLocation?.lat,
88
+ longitude: typeof driverLocation?.lng === 'string' ? parseFloat(driverLocation?.lng) || 0 : driverLocation?.lng,
85
89
  }
86
- : { latitude: location.lat, longitude: location.lng };
90
+ : {
91
+ latitude: typeof location?.lat === 'string' ? parseFloat(location?.lat) || 0 : location?.lat,
92
+ longitude: typeof location?.lng === 'string' ? parseFloat(location?.lng) || 0 : location?.lng
93
+ };
87
94
  });
88
95
 
89
96
  const handleArrowBack: any = () => {
@@ -138,7 +138,10 @@ export const Home = (props: any) => {
138
138
  placeholder={t('PROJECT_NAME', 'Project Name')}
139
139
  icon={theme.images.general.project}
140
140
  iconColor={theme.colors.arrowColor}
141
- onChange={(e: any) => onChange(e?.target?.value)}
141
+ onChange={(e: any) => {
142
+ const project = e?.target?.value?.replace(/\s/g, '')
143
+ onChange(project)
144
+ }}
142
145
  selectionColor={theme.colors.primary}
143
146
  color={theme.colors.white}
144
147
  value={value}
@@ -148,6 +151,7 @@ export const Home = (props: any) => {
148
151
  autoCapitalize='none'
149
152
  blurOnSubmit={false}
150
153
  onSubmitEditing={() => handleSubmit(onSubmit)()}
154
+ isValueSync
151
155
  />
152
156
  )}
153
157
  />
@@ -25,8 +25,7 @@ const LanguageSelectorUI = (props: LanguageSelectorParams) => {
25
25
  value: language?.code,
26
26
  label: language?.name,
27
27
  inputLabel: language?.code.toUpperCase(),
28
- countryCode: langCountries.find(item => item.value == language?.code)
29
- ?.countryCode,
28
+ countryCode: langCountries.find(item => item.value == language?.code)?.countryCode,
30
29
  };
31
30
  });
32
31
 
@@ -50,7 +49,7 @@ const LanguageSelectorUI = (props: LanguageSelectorParams) => {
50
49
  },
51
50
  });
52
51
 
53
- return (
52
+ return !languagesState?.loading && languagesState?.languages?.length > 1 && (
54
53
  <Container style={{ backgroundColor: theme.colors.inputChat }}>
55
54
  {languagesState?.languages && (
56
55
  <CountryPicker