ordering-ui-react-native 0.15.47 → 0.15.48-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 (192) hide show
  1. package/package.json +6 -3
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/AddressForm/index.tsx +18 -2
  4. package/src/components/BusinessController/index.tsx +16 -8
  5. package/src/components/BusinessTypeFilter/index.tsx +3 -1
  6. package/src/components/BusinessesListing/index.tsx +1 -1
  7. package/src/components/Checkout/index.tsx +23 -2
  8. package/src/components/DriverTips/index.tsx +11 -6
  9. package/src/components/LanguageSelector/index.tsx +7 -2
  10. package/src/components/LoginForm/index.tsx +120 -30
  11. package/src/components/LoginForm/styles.tsx +6 -0
  12. package/src/components/OrderDetails/index.tsx +9 -23
  13. package/src/components/PaymentOptions/index.tsx +1 -1
  14. package/src/components/PaymentOptionsWebView/index.tsx +123 -124
  15. package/src/components/SignupForm/index.tsx +145 -61
  16. package/src/components/SingleProductCard/index.tsx +16 -4
  17. package/src/components/StripeMethodForm/index.tsx +1 -2
  18. package/src/components/UpsellingProducts/index.tsx +1 -1
  19. package/src/components/UserProfileForm/index.tsx +63 -6
  20. package/src/components/UserProfileForm/styles.tsx +8 -0
  21. package/src/components/VerifyPhone/styles.tsx +1 -2
  22. package/src/components/shared/OModal.tsx +1 -1
  23. package/src/hooks/useCountdownTimer.tsx +26 -0
  24. package/src/navigators/CheckoutNavigator.tsx +6 -0
  25. package/src/navigators/HomeNavigator.tsx +12 -0
  26. package/src/pages/BusinessesListing.tsx +1 -1
  27. package/src/pages/MultiCheckout.tsx +31 -0
  28. package/src/pages/MultiOrdersDetails.tsx +27 -0
  29. package/src/pages/Sessions.tsx +22 -0
  30. package/src/theme.json +0 -1
  31. package/src/types/index.tsx +18 -11
  32. package/src/utils/index.tsx +68 -1
  33. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +103 -15
  34. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -0
  35. package/themes/business/src/components/Chat/index.tsx +42 -90
  36. package/themes/business/src/components/DriverMap/index.tsx +6 -5
  37. package/themes/business/src/components/Home/index.tsx +128 -55
  38. package/themes/business/src/components/Home/styles.tsx +8 -1
  39. package/themes/business/src/components/LoginForm/index.tsx +89 -2
  40. package/themes/business/src/components/LoginForm/styles.tsx +6 -0
  41. package/themes/business/src/components/LogoutButton/index.tsx +1 -1
  42. package/themes/business/src/components/NewOrderNotification/index.tsx +79 -105
  43. package/themes/business/src/components/OrderDetails/Business.tsx +1 -1
  44. package/themes/business/src/components/OrderDetails/Delivery.tsx +35 -18
  45. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +159 -91
  46. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +6 -0
  47. package/themes/business/src/components/OrderDetails/styles.tsx +7 -0
  48. package/themes/business/src/components/OrdersListManager/index.tsx +1 -1
  49. package/themes/business/src/components/OrdersOption/index.tsx +5 -2
  50. package/themes/business/src/components/PreviousOrders/index.tsx +7 -5
  51. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  52. package/themes/business/src/components/shared/OModal.tsx +1 -1
  53. package/themes/business/src/types/index.tsx +5 -1
  54. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  55. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  56. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  57. package/themes/kiosk/src/components/BusinessMenu/index.tsx +39 -28
  58. package/themes/kiosk/src/components/BusinessesListing/index.tsx +2 -3
  59. package/themes/kiosk/src/components/Cart/index.tsx +99 -26
  60. package/themes/kiosk/src/components/Cart/styles.tsx +6 -0
  61. package/themes/kiosk/src/components/CartBottomSheet/index.tsx +9 -2
  62. package/themes/kiosk/src/components/CartContent/index.tsx +0 -11
  63. package/themes/kiosk/src/components/CartItem/index.tsx +4 -3
  64. package/themes/kiosk/src/components/CategoriesMenu/index.tsx +107 -62
  65. package/themes/kiosk/src/components/Checkout/index.tsx +40 -22
  66. package/themes/kiosk/src/components/CustomerName/index.tsx +0 -6
  67. package/themes/kiosk/src/components/DrawerView/index.tsx +1 -0
  68. package/themes/kiosk/src/components/DrawerView/styles.tsx +2 -2
  69. package/themes/kiosk/src/components/NavBar/index.tsx +29 -20
  70. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  71. package/themes/kiosk/src/components/OrderDetails/index.tsx +165 -65
  72. package/themes/kiosk/src/components/OrderDetails/styles.tsx +5 -0
  73. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +9 -11
  74. package/themes/kiosk/src/components/PaymentOptions/index.tsx +56 -54
  75. package/themes/kiosk/src/components/ProductForm/index.tsx +7 -8
  76. package/themes/kiosk/src/components/ProductItemAccordion/index.tsx +2 -2
  77. package/themes/kiosk/src/components/ProductOption/index.tsx +1 -1
  78. package/themes/kiosk/src/components/ProductOptionSubOption/index.tsx +3 -1
  79. package/themes/kiosk/src/components/UpsellingProducts/index.tsx +16 -5
  80. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  81. package/themes/kiosk/src/types/index.d.ts +3 -0
  82. package/themes/original/index.tsx +169 -4
  83. package/themes/original/src/components/ActiveOrders/index.tsx +15 -132
  84. package/themes/original/src/components/ActiveOrders/styles.tsx +0 -54
  85. package/themes/original/src/components/AddressForm/index.tsx +1 -1
  86. package/themes/original/src/components/AddressList/index.tsx +30 -18
  87. package/themes/original/src/components/AppleLogin/index.tsx +117 -78
  88. package/themes/original/src/components/BusinessBasicInformation/index.tsx +136 -45
  89. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +4 -0
  90. package/themes/original/src/components/BusinessController/index.tsx +48 -11
  91. package/themes/original/src/components/BusinessController/styles.tsx +27 -0
  92. package/themes/original/src/components/BusinessFeaturedController/index.tsx +20 -1
  93. package/themes/original/src/components/BusinessFeaturedController/styles.tsx +23 -0
  94. package/themes/original/src/components/BusinessItemAccordion/index.tsx +8 -5
  95. package/themes/original/src/components/BusinessItemAccordion/styles.tsx +3 -1
  96. package/themes/original/src/components/BusinessListingSearch/index.tsx +196 -58
  97. package/themes/original/src/components/BusinessListingSearch/styles.tsx +22 -2
  98. package/themes/original/src/components/BusinessPreorder/index.tsx +1 -1
  99. package/themes/original/src/components/BusinessProductsCategories/index.tsx +2 -2
  100. package/themes/original/src/components/BusinessProductsList/CategoryDescription/index.tsx +44 -0
  101. package/themes/original/src/components/BusinessProductsList/index.tsx +119 -35
  102. package/themes/original/src/components/BusinessProductsList/styles.tsx +12 -4
  103. package/themes/original/src/components/BusinessProductsListing/index.tsx +109 -21
  104. package/themes/original/src/components/BusinessProductsListing/styles.tsx +22 -0
  105. package/themes/original/src/components/BusinessReviews/index.tsx +4 -25
  106. package/themes/original/src/components/BusinessTypeFilter/index.tsx +1 -2
  107. package/themes/original/src/components/BusinessesListing/index.tsx +127 -66
  108. package/themes/original/src/components/BusinessesListing/styles.tsx +11 -3
  109. package/themes/original/src/components/Cart/index.tsx +60 -41
  110. package/themes/original/src/components/Checkout/index.tsx +48 -32
  111. package/themes/original/src/components/DriverTips/index.tsx +17 -12
  112. package/themes/original/src/components/Favorite/index.tsx +91 -0
  113. package/themes/original/src/components/Favorite/styles.tsx +22 -0
  114. package/themes/original/src/components/FavoriteList/index.tsx +287 -0
  115. package/themes/original/src/components/FavoriteList/styles.tsx +5 -0
  116. package/themes/original/src/components/ForgotPasswordForm/index.tsx +84 -4
  117. package/themes/original/src/components/GPSButton/index.tsx +15 -8
  118. package/themes/original/src/components/GoogleMap/index.tsx +1 -0
  119. package/themes/original/src/components/Help/index.tsx +21 -4
  120. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +18 -1
  121. package/themes/original/src/components/Home/index.tsx +1 -1
  122. package/themes/original/src/components/LastOrders/index.tsx +12 -1
  123. package/themes/original/src/components/LoginForm/Otp/index.tsx +91 -0
  124. package/themes/original/src/components/LoginForm/Otp/styles.tsx +7 -0
  125. package/themes/original/src/components/LoginForm/index.tsx +394 -155
  126. package/themes/original/src/components/LoginForm/styles.tsx +7 -4
  127. package/themes/original/src/components/LogoutButton/index.tsx +7 -1
  128. package/themes/original/src/components/MessageListing/index.tsx +10 -1
  129. package/themes/original/src/components/Messages/index.tsx +1 -1
  130. package/themes/original/src/components/MomentOption/index.tsx +10 -1
  131. package/themes/original/src/components/MomentOption/styles.tsx +1 -1
  132. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +243 -0
  133. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/styles.tsx +46 -0
  134. package/themes/original/src/components/MultiCheckout/index.tsx +298 -0
  135. package/themes/original/src/components/MultiCheckout/styles.tsx +59 -0
  136. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +372 -0
  137. package/themes/original/src/components/MultiOrdersDetails/index.tsx +258 -0
  138. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +50 -0
  139. package/themes/original/src/components/MyOrders/index.tsx +120 -32
  140. package/themes/original/src/components/MyOrders/styles.tsx +8 -1
  141. package/themes/original/src/components/OrderDetails/index.tsx +64 -42
  142. package/themes/original/src/components/OrderDetails/styles.tsx +1 -2
  143. package/themes/original/src/components/OrderProgress/index.tsx +1 -1
  144. package/themes/original/src/components/OrderProgress/styles.tsx +1 -0
  145. package/themes/original/src/components/OrderSummary/index.tsx +3 -3
  146. package/themes/original/src/components/OrderTypeSelector/index.tsx +4 -2
  147. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +153 -0
  148. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +6 -0
  149. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +53 -0
  150. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +6 -0
  151. package/themes/original/src/components/OrdersOption/index.tsx +133 -41
  152. package/themes/original/src/components/OrdersOption/styles.tsx +4 -7
  153. package/themes/original/src/components/PaymentOptionCash/index.tsx +2 -2
  154. package/themes/original/src/components/PaymentOptionWallet/index.tsx +17 -23
  155. package/themes/original/src/components/PaymentOptionWallet/styles.tsx +1 -1
  156. package/themes/original/src/components/PaymentOptions/index.tsx +16 -14
  157. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  158. package/themes/original/src/components/PreviousOrders/index.tsx +18 -147
  159. package/themes/original/src/components/ProductForm/index.tsx +70 -62
  160. package/themes/original/src/components/ProductForm/styles.tsx +0 -1
  161. package/themes/original/src/components/ProductItemAccordion/index.tsx +2 -2
  162. package/themes/original/src/components/ProductOptionSubOption/index.tsx +18 -12
  163. package/themes/original/src/components/Promotions/index.tsx +250 -0
  164. package/themes/original/src/components/Promotions/styles.tsx +60 -0
  165. package/themes/original/src/components/SearchBar/index.tsx +10 -4
  166. package/themes/original/src/components/Sessions/index.tsx +160 -0
  167. package/themes/original/src/components/Sessions/styles.tsx +15 -0
  168. package/themes/original/src/components/SignupForm/index.tsx +333 -128
  169. package/themes/original/src/components/SingleOrderCard/index.tsx +282 -0
  170. package/themes/original/src/components/SingleOrderCard/styles.tsx +54 -0
  171. package/themes/original/src/components/SingleProductCard/index.tsx +59 -17
  172. package/themes/original/src/components/StripeElementsForm/index.tsx +16 -8
  173. package/themes/original/src/components/StripeElementsForm/naked.tsx +2 -2
  174. package/themes/original/src/components/UpsellingProducts/index.tsx +86 -74
  175. package/themes/original/src/components/UserDetails/index.tsx +5 -96
  176. package/themes/original/src/components/UserFormDetails/index.tsx +34 -24
  177. package/themes/original/src/components/UserProfile/index.tsx +59 -5
  178. package/themes/original/src/components/UserProfileForm/index.tsx +20 -18
  179. package/themes/original/src/components/UserVerification/index.tsx +178 -192
  180. package/themes/original/src/components/VerifyPhone/index.tsx +10 -7
  181. package/themes/original/src/components/VerifyPhone/styles.tsx +2 -1
  182. package/themes/original/src/components/Wallets/index.tsx +76 -9
  183. package/themes/original/src/components/Wallets/styles.tsx +21 -0
  184. package/themes/original/src/components/shared/HeaderTitle.tsx +2 -1
  185. package/themes/original/src/components/shared/OModal.tsx +4 -2
  186. package/themes/original/src/config/constants.tsx +6 -6
  187. package/themes/original/src/types/index.tsx +144 -9
  188. package/themes/original/src/utils/index.tsx +19 -2
  189. package/themes/single-business/src/components/AddressList/index.tsx +1 -1
  190. package/themes/single-business/src/components/OrderTypeSelector/index.tsx +1 -1
  191. package/themes/single-business/src/components/UserProfile/index.tsx +1 -1
  192. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -1,20 +1,25 @@
1
1
  import React, { useState, useEffect, useRef } from 'react';
2
+ import FeatherIcon from 'react-native-vector-icons/Feather';
2
3
  import {
3
4
  Linking,
4
5
  Keyboard,
5
6
  Platform,
6
7
  View,
7
8
  KeyboardAvoidingView,
8
- TextInput
9
+ TextInput,
10
+ StyleSheet
9
11
  } from 'react-native';
10
12
  import { useTheme } from 'styled-components/native';
11
- import { useLanguage } from 'ordering-components/native';
12
- import { Content, Timer, TimeField, Header, Action, Comments } from './styles';
13
+ import SelectDropdown from 'react-native-select-dropdown'
14
+ import { useLanguage, useSession } from 'ordering-components/native';
15
+ import { Content, Timer, TimeField, Header, Action, Comments, CommentsButtonGroup } from './styles';
13
16
  import { FloatingButton } from '../FloatingButton';
14
17
  import { OText, OButton, OTextarea, OIconButton } from '../shared';
15
18
  import { AcceptOrRejectOrderParams } from '../../types';
16
19
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
17
20
 
21
+ import { orderCommentList } from '../../../../../src/utils'
22
+
18
23
  export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
19
24
  const {
20
25
  customerCellphone,
@@ -30,6 +35,7 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
30
35
  } = props;
31
36
 
32
37
  const [, t] = useLanguage();
38
+ const [{ user }] = useSession();
33
39
  const theme = useTheme();
34
40
  const scrollViewRef = useRef<any>(null);
35
41
  const viewRef = useRef<any>(null);
@@ -39,27 +45,62 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
39
45
  const [min, setMin] = useState('00');
40
46
  const [time, setTime] = useState('');
41
47
  const [comments, setComments] = useState('');
48
+ const [rejectReason, setRejectReason] = useState(null);
42
49
  const [isKeyboardShow, setIsKeyboardShow] = useState(false);
43
50
  const { top, bottom } = useSafeAreaInsets()
44
51
 
52
+ const isDriverApp = appTitle?.key === 'DELIVERY_APP'
53
+
54
+ const orderCommentsList = orderCommentList(action)
55
+
45
56
  let codeNumberPhone, numberPhone, numberToShow;
46
57
  const phoneNumber = customerCellphone;
47
58
  const titleOrder = t(orderTitle[action]?.key, orderTitle[action]?.text)
48
59
  const buttonText = t(orderTitle[action]?.btnKey, orderTitle[action]?.btnText)
49
60
  const showTextArea = ['reject', 'deliveryFailed', 'pickupFailed', 'notReady', 'forcePickUp', 'forceDelivery'].includes(action)
50
61
 
62
+ const styles = StyleSheet.create({
63
+ selectOption: {
64
+ alignItems: 'center',
65
+ justifyContent: 'space-between',
66
+ minHeight: 40,
67
+ width: '100%',
68
+ paddingHorizontal: 15,
69
+ backgroundColor: theme.colors.inputChat,
70
+ borderRadius: 7.6,
71
+ },
72
+ buttonTextStyle: {
73
+ textAlign: 'left',
74
+ marginHorizontal: 0,
75
+ fontSize: 16,
76
+ lineHeight: 24,
77
+ color: '#748194',
78
+ textTransform: 'capitalize'
79
+ },
80
+ dropdownStyle: {
81
+ borderWidth: 1,
82
+ borderRadius: 8,
83
+ paddingTop: 5,
84
+ backgroundColor: '#fff',
85
+ borderColor: theme.colors.lightGray,
86
+ overflow: 'hidden',
87
+ minHeight: 120
88
+ },
89
+ rowStyle: {
90
+ display: 'flex',
91
+ borderBottomWidth: 0,
92
+ height: 36,
93
+ alignItems: 'center',
94
+ paddingHorizontal: 10
95
+ },
96
+ })
97
+
51
98
  const handleFocus = () => {
52
99
  viewRef?.current?.measure((x: any, y: any) => {
53
100
  scrollViewRef?.current?.scrollTo({ x: 0, y });
54
101
  });
55
102
  };
56
103
 
57
- const handleFocusTimer = () => {
58
- timerRef?.current?.measure((x: any, y: any) => {
59
- scrollViewRef?.current?.scrollTo({ x: 0, y });
60
- });
61
- };
62
-
63
104
  useEffect(() => {
64
105
  const keyboardDidShowListener = Keyboard.addListener(
65
106
  'keyboardDidShow',
@@ -151,7 +192,6 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
151
192
 
152
193
  const handleAcceptOrReject = () => {
153
194
  handleFixTime();
154
-
155
195
  let minsToSend = min;
156
196
 
157
197
  if (min > '60') minsToSend = '59';
@@ -175,26 +215,32 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
175
215
  rejectByDriver: {
176
216
  comment: comments,
177
217
  status: 6,
218
+ reject_reason: rejectReason
178
219
  },
179
220
  pickupFailedByDriver: {
180
221
  comment: comments,
181
- status: 10
222
+ status: 10,
223
+ reject_reason: rejectReason
182
224
  },
183
225
  deliveryFailedByDriver: {
184
226
  comment: comments,
185
- status: 12
227
+ status: 12,
228
+ reject_reason: rejectReason
186
229
  },
187
230
  orderNotReady: {
188
231
  comment: comments,
189
- status: 14
232
+ status: 14,
233
+ reject_reason: rejectReason
190
234
  },
191
235
  forcePickUp: {
192
236
  reasons: comments,
193
- status: 9
237
+ status: 9,
238
+ reject_reason: rejectReason
194
239
  },
195
240
  forceDelivery: {
196
241
  reasons: comments,
197
- status: 11
242
+ status: 11,
243
+ reject_reason: rejectReason
198
244
  }
199
245
  };
200
246
 
@@ -387,6 +433,48 @@ export const AcceptOrRejectOrder = (props: AcceptOrRejectOrderParams) => {
387
433
  onBlur={() => actions && action === 'accept' && timerRef?.current?.focus?.()}
388
434
  />
389
435
 
436
+ {orderCommentsList && isDriverApp && (
437
+ <CommentsButtonGroup>
438
+ <SelectDropdown
439
+ defaultButtonText={t('REJECT_REASONS_OPTIONS', 'Reject reasons')}
440
+ data={orderCommentsList?.list}
441
+ onSelect={(selectedItem) => {
442
+ setRejectReason(selectedItem?.value)
443
+ }}
444
+ buttonTextAfterSelection={(selectedItem) => selectedItem.content}
445
+ rowTextForSelection={(item) => item.key}
446
+ buttonStyle={styles.selectOption}
447
+ buttonTextStyle={styles.buttonTextStyle}
448
+ renderDropdownIcon={isOpened => {
449
+ return <FeatherIcon name={isOpened ? 'chevron-up' : 'chevron-down'} color={'#444'} size={18} />;
450
+ }}
451
+ dropdownStyle={styles.dropdownStyle}
452
+ dropdownOverlayColor='transparent'
453
+ rowStyle={styles.rowStyle}
454
+ renderCustomizedRowChild={(item) => {
455
+ return (
456
+ <View
457
+ style={{
458
+ flexDirection: 'row',
459
+ alignItems: 'center'
460
+ }}
461
+ >
462
+ <View>
463
+ <OText
464
+ size={14}
465
+ color={'#748194'}
466
+ style={{ textTransform: 'capitalize' }}
467
+ >
468
+ {item?.content}
469
+ </OText>
470
+ </View>
471
+ </View>
472
+ );
473
+ }}
474
+ />
475
+ </CommentsButtonGroup>
476
+ )}
477
+
390
478
  {showTextArea && (
391
479
  <Comments ref={viewRef}>
392
480
  <OTextarea
@@ -35,3 +35,9 @@ export const Comments = styled.View`
35
35
  margin-top: 20px;
36
36
  padding-bottom: 40px;
37
37
  `;
38
+
39
+ export const CommentsButtonGroup = styled.View`
40
+ flex-direction: row;
41
+ flex-wrap: wrap;
42
+ margin-top: 15px;
43
+ `
@@ -44,6 +44,35 @@ import { USER_TYPE } from '../../config/constants';
44
44
 
45
45
  import SignatureScreen from 'react-native-signature-canvas';
46
46
 
47
+ const ORDER_STATUS: any = {
48
+ 0: 'ORDER_STATUS_PENDING',
49
+ 1: 'ORDERS_COMPLETED',
50
+ 2: 'ORDER_REJECTED',
51
+ 3: 'ORDER_STATUS_IN_BUSINESS',
52
+ 4: 'ORDER_READY',
53
+ 5: 'ORDER_REJECTED_RESTAURANT',
54
+ 6: 'ORDER_STATUS_CANCELLEDBYDRIVER',
55
+ 7: 'ORDER_STATUS_ACCEPTEDBYRESTAURANT',
56
+ 8: 'ORDER_CONFIRMED_ACCEPTED_BY_DRIVER',
57
+ 9: 'ORDER_PICKUP_COMPLETED_BY_DRIVER',
58
+ 10: 'ORDER_PICKUP_FAILED_BY_DRIVER',
59
+ 11: 'ORDER_DELIVERY_COMPLETED_BY_DRIVER',
60
+ 12: 'ORDER_DELIVERY_FAILED_BY_DRIVER',
61
+ 13: 'PREORDER',
62
+ 14: 'ORDER_NOT_READY',
63
+ 15: 'ORDER_PICKEDUP_COMPLETED_BY_CUSTOMER',
64
+ 16: 'ORDER_STATUS_CANCELLED_BY_CUSTOMER',
65
+ 17: 'ORDER_NOT_PICKEDUP_BY_CUSTOMER',
66
+ 18: 'ORDER_DRIVER_ALMOST_ARRIVED_BUSINESS',
67
+ 19: 'ORDER_DRIVER_ALMOST_ARRIVED_CUSTOMER',
68
+ 20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
69
+ 21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
70
+ 22: 'ORDER_LOOKING_FOR_DRIVER',
71
+ 23: 'ORDER_DRIVER_ON_WAY'
72
+ }
73
+
74
+ const filterSpecialStatus = ['prepared_in', 'delivered_in', 'delivery_datetime']
75
+
47
76
  const ChatUI = (props: MessagesParams) => {
48
77
  const {
49
78
  type,
@@ -317,71 +346,6 @@ const ChatUI = (props: MessagesParams) => {
317
346
  }
318
347
  };
319
348
 
320
- const getStatus = (status: number, attribute: any) => {
321
- const hour = Math.trunc(status / 60);
322
- const min = Math.round((status / 60 - hour) * 60);
323
-
324
- if (attribute === 'status') {
325
- switch (status) {
326
- case 0:
327
- return 'ORDER_STATUS_PENDING';
328
- case 1:
329
- return 'ORDERS_COMPLETED';
330
- case 2:
331
- return 'ORDER_REJECTED';
332
- case 3:
333
- return 'ORDER_STATUS_IN_BUSINESS';
334
- case 4:
335
- return 'ORDER_READY';
336
- case 5:
337
- return 'ORDER_REJECTED_RESTAURANT';
338
- case 6:
339
- return 'ORDER_STATUS_CANCELLEDBYDRIVER';
340
- case 7:
341
- return 'ORDER_STATUS_ACCEPTEDBYRESTAURANT';
342
- case 8:
343
- return 'ORDER_CONFIRMED_ACCEPTED_BY_DRIVER';
344
- case 9:
345
- return 'ORDER_PICKUP_COMPLETED_BY_DRIVER';
346
- case 10:
347
- return 'ORDER_PICKUP_FAILED_BY_DRIVER';
348
- case 11:
349
- return 'ORDER_DELIVERY_COMPLETED_BY_DRIVER';
350
- case 12:
351
- return 'ORDER_DELIVERY_FAILED_BY_DRIVER';
352
- case 13:
353
- return 'PREORDER';
354
- case 14:
355
- return 'ORDER_NOT_READY';
356
- case 15:
357
- return 'ORDER_PICKEDUP_COMPLETED_BY_CUSTOMER';
358
- case 16:
359
- return 'ORDER_STATUS_CANCELLED_BY_CUSTOMER';
360
- case 17:
361
- return 'ORDER_NOT_PICKEDUP_BY_CUSTOMER';
362
- case 18:
363
- return 'ORDER_DRIVER_ALMOST_ARRIVED_BUSINESS';
364
- case 19:
365
- return 'ORDER_DRIVER_ALMOST_ARRIVED_CUSTOMER';
366
- case 20:
367
- return 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS';
368
- case 21:
369
- return 'ORDER_CUSTOMER_ARRIVED_BUSINESS';
370
- case 22:
371
- return 'ORDER_LOOKING_FOR_DRIVER'
372
- case 23:
373
- return 'ORDER_DRIVER_ON_WAY'
374
- default:
375
- return ``;
376
- }
377
- }
378
-
379
- if (attribute === 'prepared_in' || attribute === 'delivered_in') {
380
- return `${hour < 10 ? '0' + hour : hour}:${min < 10 ? '0' + min : min} ${status > 60 ? 'hours' : 'minutes'
381
- }`;
382
- }
383
- };
384
-
385
349
  const onSubmit = (values: any) => {
386
350
  handleSend && handleSend();
387
351
  setImage && setImage(null);
@@ -403,28 +367,16 @@ const ChatUI = (props: MessagesParams) => {
403
367
  numberOfLines={3}
404
368
  style={{ ...styles.firstMessageText, textAlign: 'center' }}>
405
369
  {message.change?.attribute !== 'driver_id'
406
- ? `${t('ORDER', 'Order')} ${t(
407
- message.change.attribute.toUpperCase(),
408
- message.change.attribute,
409
- )} ${t('CHANGED_FROM', 'Changed from')} ${message.change.old !== null
410
- ? t(
411
- getStatus(
412
- parseInt(message.change.old, 10),
413
- message.change?.attribute,
414
- ),
415
- )
416
- : '0'
417
- } ${t('TO', 'to')} ${t(
418
- getStatus(
419
- parseInt(message.change.new, 10),
420
- message.change?.attribute,
421
- ),
422
- )}`
370
+ ?
371
+ `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${filterSpecialStatus.includes(message.change.attribute) ?
372
+ `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
373
+ `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
374
+ }`
423
375
  : message.change.new
424
- ? `${message.driver?.name} ${message.driver?.lastname !== null ? message.driver.lastname : ''
425
- } ${t('WAS_ASSIGNED_AS_DRIVER', 'Was assigned as driver')} ${message.comment ? message.comment.length : ''
426
- }`
427
- : `${t('DRIVER_UNASSIGNED', 'Driver unassigned')}`}
376
+ ?
377
+ `${message.driver?.name} ${message.driver?.lastname !== null ? message.driver.lastname : ''} ${t('WAS_ASSIGNED_AS_DRIVER', 'Was assigned as driver')} ${message.comment ? message.comment.length : ''}`
378
+ :
379
+ `${t('DRIVER_UNASSIGNED', 'Driver unassigned')}`}
428
380
  </OText>
429
381
  <OText size={10} color={'#aaa'} style={{ alignSelf: 'flex-start' }}>
430
382
  {parseTime(message?.created_at, { outputFormat: 'hh:mma' })}
@@ -532,12 +484,12 @@ const ChatUI = (props: MessagesParams) => {
532
484
  image: message.source,
533
485
  system: message.type === 1,
534
486
  user: {
535
- _id: message.author.id,
536
- name: message.author.name,
487
+ _id: message.author?.id,
488
+ name: message.author?.name,
537
489
  can_see: message?.can_see,
538
- level: message.author.level,
490
+ level: message.author?.level,
539
491
  avatar:
540
- message.author.id !== user?.id && type === USER_TYPE.DRIVER
492
+ message.author?.id !== user?.id && type === USER_TYPE.DRIVER
541
493
  ? order?.driver?.photo
542
494
  : order?.business?.logo,
543
495
  },
@@ -327,6 +327,7 @@ export const DriverMap = (props: GoogleMapsParams) => {
327
327
  justifyContent: 'center',
328
328
  paddingVertical: 10,
329
329
  paddingHorizontal: 80,
330
+ position: 'absolute'
330
331
  },
331
332
  showButton: {
332
333
  alignSelf: 'center',
@@ -490,14 +491,14 @@ export const DriverMap = (props: GoogleMapsParams) => {
490
491
  </View>
491
492
  </View>
492
493
  </View>
493
- <View style={styles.buttonContainer}>
494
+ <View style={{
495
+ ...styles.buttonContainer,
496
+ bottom: showAcceptOrReject ? 80 : 0
497
+ }}>
494
498
  <OButton
495
499
  imgRightSrc=''
496
500
  textStyle={{ color: theme.colors.white }}
497
- style={{
498
- ...styles.showButton,
499
- bottom: showAcceptOrReject ? 80 : 0
500
- }}
501
+ style={styles.showButton}
501
502
  onClick={() => showLocation({
502
503
  latitude: destination.latitude,
503
504
  longitude: destination.longitude,
@@ -1,18 +1,66 @@
1
- import React, { useState } from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import { StyleSheet, View, Dimensions, Platform } from 'react-native';
3
- import { useLanguage } from 'ordering-components/native';
3
+ import { useForm, Controller } from 'react-hook-form';
4
+ import { useLanguage, useApi } from 'ordering-components/native';
4
5
  import { useTheme } from 'styled-components/native';
5
- import { LogoWrapper, Container, BackgroundImage } from './styles';
6
- import { OButton, OIcon, OText } from '../shared';
6
+ import { LogoWrapper, Container, BackgroundImage, FormInput } from './styles';
7
+ import { OButton, OIcon, OText, OInput } from '../shared';
7
8
  import { _setStoreData } from '../../providers/StoreUtil';
8
9
 
9
10
  export const Home = (props: any) => {
10
- const { onNavigationRedirect } = props;
11
+ const { onNavigationRedirect, useRootPoint } = props;
11
12
  const safeHeight = Platform.OS === 'ios' ? 80 : 40;
12
13
 
13
14
  const theme = useTheme();
15
+ const [ordering, { setOrdering }] = useApi();
14
16
  const [, t] = useLanguage();
17
+ const { control, handleSubmit, errors } = useForm();
15
18
 
19
+
20
+ const styles = StyleSheet.create({
21
+ logo: {
22
+ height: 65,
23
+ width: 300,
24
+ },
25
+ wrapperContent: {
26
+ width: '100%',
27
+ },
28
+ wrapperText: {
29
+ marginBottom: 20,
30
+ },
31
+ textTitle: {
32
+ fontWeight: '600',
33
+ fontStyle: 'normal',
34
+ fontSize: 50,
35
+ },
36
+ textSubtitle: {
37
+ fontWeight: 'normal',
38
+ fontStyle: 'normal',
39
+ fontSize: 14,
40
+ },
41
+ wrapperBtn: {
42
+ marginBottom: 20
43
+ },
44
+ btn: {
45
+ borderRadius: 7.6,
46
+ marginTop: 20,
47
+ },
48
+ btnText: {
49
+ fontFamily: 'Poppins',
50
+ fontStyle: 'normal',
51
+ fontWeight: 'normal',
52
+ fontSize: 18,
53
+ },
54
+ input: {
55
+ borderWidth: 1,
56
+ borderRadius: 7.6,
57
+ borderColor: Object.keys(errors).length > 0 ? theme.colors.error : theme.colors.inputSignup,
58
+ backgroundColor: theme.colors.transparent,
59
+ },
60
+ });
61
+
62
+ const [projectName, setProjectName] = useState<any>(null)
63
+ const [isLoadingProject, setLoadingProject] = useState(false)
16
64
  const [orientation, setOrientation] = useState(
17
65
  Dimensions.get('window').width < Dimensions.get('window').height
18
66
  ? 'Portrait'
@@ -34,6 +82,27 @@ export const Home = (props: any) => {
34
82
  }
35
83
  });
36
84
 
85
+ const onSubmit = (values: any) => {
86
+ setLoadingProject(true)
87
+ setProjectName(values)
88
+ setOrdering({ ...ordering, project: values?.project_name })
89
+ _setStoreData('project_name', values?.project_name)
90
+ };
91
+
92
+ useEffect(() => {
93
+ if (Object.keys(errors).length > 0) {
94
+ setProjectName(null)
95
+ setLoadingProject(false)
96
+ }
97
+ }, [errors])
98
+
99
+ useEffect(() => {
100
+ if (ordering?.project === projectName?.project_name) {
101
+ setLoadingProject(false)
102
+ onNavigationRedirect('Login')
103
+ }
104
+ }, [ordering])
105
+
37
106
  return (
38
107
  <Container height={windowHeight - safeHeight} orientation={orientation}>
39
108
  <BackgroundImage
@@ -54,58 +123,62 @@ export const Home = (props: any) => {
54
123
  </OText>
55
124
  </View>
56
125
 
57
- <View style={styles.wrapperBtn}>
58
- <OButton
59
- text={t('LOGIN', 'Login')}
60
- textStyle={{
61
- ...styles.btnText,
62
- color: theme.colors.inputTextColor,
63
- }}
64
- bgColor={theme.colors.primary}
65
- borderColor={theme.colors.primary}
66
- style={styles.btn}
67
- imgRightSrc={false}
68
- onClick={() => onNavigationRedirect('Login')}
69
- />
70
- </View>
126
+ <>
127
+ {useRootPoint && (
128
+ <FormInput>
129
+ <Controller
130
+ control={control}
131
+ name='project_name'
132
+ rules={{ required: t(`VALIDATION_ERROR_PROJECT_NAME_REQUIRED`, 'The field project name is required') }}
133
+ defaultValue=""
134
+ render={({ onChange, value }: any) => (
135
+ <OInput
136
+ name='project_name'
137
+ placeholderTextColor={theme.colors.arrowColor}
138
+ placeholder={t('PROJECT_NAME', 'Project Name')}
139
+ icon={theme.images.general.project}
140
+ iconColor={theme.colors.arrowColor}
141
+ onChange={(e: any) => onChange(e?.target?.value)}
142
+ selectionColor={theme.colors.primary}
143
+ color={theme.colors.white}
144
+ value={value}
145
+ style={styles.input}
146
+ returnKeyType='done'
147
+ autoCorrect={false}
148
+ autoCapitalize='none'
149
+ blurOnSubmit={false}
150
+ onSubmitEditing={() => handleSubmit(onSubmit)()}
151
+ />
152
+ )}
153
+ />
154
+ </FormInput>
155
+ )}
156
+ {Object.keys(errors).length > 0 && (
157
+ <OText
158
+ color={theme.colors.white}
159
+ style={{ alignSelf: 'center', marginTop: 5 }}
160
+ >
161
+ {errors['project_name'].message}
162
+ </OText>
163
+ )}
164
+ <View style={styles.wrapperBtn}>
165
+ <OButton
166
+ text={useRootPoint ? t('SET_PROJECT', 'Set project') : t('LOGIN', 'Login')}
167
+ textStyle={{
168
+ ...styles.btnText,
169
+ color: theme.colors.inputTextColor,
170
+ }}
171
+ bgColor={theme.colors.primary}
172
+ borderColor={theme.colors.primary}
173
+ isLoading={isLoadingProject}
174
+ style={styles.btn}
175
+ imgRightSrc={false}
176
+ onClick={() => useRootPoint ? handleSubmit(onSubmit)() : onNavigationRedirect('Login')}
177
+ />
178
+ </View>
179
+ </>
71
180
  </View>
72
181
  </BackgroundImage>
73
182
  </Container>
74
183
  );
75
184
  };
76
-
77
- const styles = StyleSheet.create({
78
- logo: {
79
- height: 65,
80
- width: 300,
81
- },
82
- wrapperContent: {
83
- width: '100%',
84
- },
85
- wrapperText: {
86
- marginBottom: 20,
87
- },
88
- textTitle: {
89
- fontWeight: '600',
90
- fontStyle: 'normal',
91
- fontSize: 50,
92
- },
93
- textSubtitle: {
94
- fontWeight: 'normal',
95
- fontStyle: 'normal',
96
- fontSize: 14,
97
- },
98
- wrapperBtn: {
99
- marginBottom: 20,
100
- },
101
- btn: {
102
- borderRadius: 7.6,
103
- marginTop: 20,
104
- },
105
- btnText: {
106
- fontFamily: 'Poppins',
107
- fontStyle: 'normal',
108
- fontWeight: 'normal',
109
- fontSize: 18,
110
- },
111
- });
@@ -1,4 +1,4 @@
1
- import styled from 'styled-components/native';
1
+ import styled, { css } from 'styled-components/native';
2
2
 
3
3
  export const Container = styled.View`
4
4
  width: 100%;
@@ -25,3 +25,10 @@ export const BackgroundImage = styled.ImageBackground`
25
25
  align-items: center;
26
26
  padding: 20px 40px;
27
27
  `;
28
+
29
+ export const FormInput = styled.View`
30
+ display: flex;
31
+ flex-direction: column;
32
+ width: 100%;
33
+ min-height: 50px;
34
+ `;