ordering-ui-react-native 0.16.70 → 0.16.71-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/package.json +6 -5
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/ActiveOrders/styles.tsx +8 -14
  4. package/src/components/BusinessInformation/index.tsx +19 -4
  5. package/src/components/BusinessInformation/styles.tsx +2 -2
  6. package/src/components/BusinessProductsList/index.tsx +10 -10
  7. package/src/components/BusinessesListing/index.tsx +1 -1
  8. package/src/components/Checkout/index.tsx +2 -1
  9. package/src/components/LanguageSelector/index.tsx +21 -16
  10. package/src/components/Messages/index.tsx +2 -2
  11. package/src/components/OrdersOption/index.tsx +54 -56
  12. package/src/components/PaymentOptions/index.tsx +298 -345
  13. package/src/components/PaymentOptionsWebView/index.tsx +119 -120
  14. package/src/components/SingleProductReview/index.tsx +7 -4
  15. package/src/components/StripeElementsForm/index.tsx +25 -16
  16. package/src/components/VerifyPhone/styles.tsx +1 -2
  17. package/src/components/shared/OToast.tsx +4 -4
  18. package/src/types/@fatnlazycat/react-native-recaptcha-v3/index.d.ts +1 -0
  19. package/src/utils/index.tsx +2 -1
  20. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +260 -238
  21. package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +6 -4
  22. package/themes/business/src/components/BusinessController/index.tsx +2 -2
  23. package/themes/business/src/components/Chat/index.tsx +31 -31
  24. package/themes/business/src/components/DriverMap/index.tsx +7 -5
  25. package/themes/business/src/components/LoginForm/index.tsx +111 -74
  26. package/themes/business/src/components/MapView/index.tsx +14 -3
  27. package/themes/business/src/components/MessagesOption/index.tsx +11 -1
  28. package/themes/business/src/components/NewOrderNotification/index.tsx +31 -41
  29. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +70 -43
  30. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +3 -3
  31. package/themes/business/src/components/OrdersOption/index.tsx +63 -73
  32. package/themes/business/src/components/OrdersOption/styles.tsx +5 -1
  33. package/themes/business/src/components/OrdersOptionBusiness/index.tsx +15 -1
  34. package/themes/business/src/components/OrdersOptionCity/index.tsx +15 -1
  35. package/themes/business/src/components/OrdersOptionDate/index.tsx +19 -6
  36. package/themes/business/src/components/OrdersOptionDelivery/index.tsx +15 -1
  37. package/themes/business/src/components/OrdersOptionDriver/index.tsx +15 -1
  38. package/themes/business/src/components/OrdersOptionPaymethod/index.tsx +15 -1
  39. package/themes/business/src/components/OrdersOptionStatus/index.tsx +10 -1
  40. package/themes/business/src/components/PreviousMessages/index.tsx +17 -18
  41. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +250 -0
  42. package/themes/business/src/components/PreviousOrders/OrdersGroupedItem.tsx +115 -0
  43. package/themes/business/src/components/PreviousOrders/index.tsx +440 -245
  44. package/themes/business/src/components/PreviousOrders/styles.tsx +31 -3
  45. package/themes/business/src/components/ProductItemAccordion/index.tsx +3 -2
  46. package/themes/business/src/components/ReviewCustomer/index.tsx +39 -15
  47. package/themes/business/src/components/shared/ODropDown.tsx +42 -8
  48. package/themes/business/src/components/shared/ODropDownCalendar.tsx +36 -7
  49. package/themes/business/src/components/shared/OLink.tsx +33 -13
  50. package/themes/business/src/components/shared/OText.tsx +8 -2
  51. package/themes/business/src/types/index.tsx +14 -3
  52. package/themes/business/src/utils/index.tsx +10 -0
  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/BusinessesListing/index.tsx +2 -1
  57. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  58. package/themes/kiosk/src/components/LoginForm/index.tsx +121 -10
  59. package/themes/kiosk/src/components/LoginForm/styles.tsx +5 -0
  60. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  61. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  62. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  63. package/themes/kiosk/src/components/ProductForm/index.tsx +1 -14
  64. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  65. package/themes/kiosk/src/types/index.d.ts +2 -0
  66. package/themes/original/index.tsx +6 -0
  67. package/themes/original/src/components/AddressDetails/index.tsx +10 -8
  68. package/themes/original/src/components/AddressForm/index.tsx +153 -137
  69. package/themes/original/src/components/AddressList/index.tsx +18 -18
  70. package/themes/original/src/components/AddressList/styles.tsx +4 -2
  71. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  72. package/themes/original/src/components/BusinessBasicInformation/index.tsx +49 -25
  73. package/themes/original/src/components/BusinessController/index.tsx +101 -70
  74. package/themes/original/src/components/BusinessController/styles.tsx +14 -9
  75. package/themes/original/src/components/BusinessInformation/index.tsx +10 -31
  76. package/themes/original/src/components/BusinessItemAccordion/index.tsx +12 -6
  77. package/themes/original/src/components/BusinessListingSearch/BusinessControllerSkeletons/index.tsx +57 -0
  78. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +59 -0
  79. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/styles.tsx +13 -0
  80. package/themes/original/src/components/BusinessListingSearch/index.tsx +87 -142
  81. package/themes/original/src/components/BusinessListingSearch/styles.tsx +10 -12
  82. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +87 -0
  83. package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/styles.tsx +12 -0
  84. package/themes/original/src/components/BusinessProductsList/index.tsx +41 -62
  85. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  86. package/themes/original/src/components/BusinessProductsListing/index.tsx +561 -479
  87. package/themes/original/src/components/BusinessProductsListing/styles.tsx +13 -12
  88. package/themes/original/src/components/BusinessTypeFilter/index.tsx +3 -2
  89. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
  90. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +93 -99
  91. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -9
  92. package/themes/original/src/components/BusinessesListing/index.tsx +8 -8
  93. package/themes/original/src/components/Cart/index.tsx +75 -42
  94. package/themes/original/src/components/CartContent/index.tsx +80 -18
  95. package/themes/original/src/components/CartContent/styles.tsx +11 -1
  96. package/themes/original/src/components/Checkout/index.tsx +92 -105
  97. package/themes/original/src/components/Checkout/styles.tsx +4 -3
  98. package/themes/original/src/components/CitiesControl/index.tsx +89 -0
  99. package/themes/original/src/components/CitiesControl/styles.tsx +17 -0
  100. package/themes/original/src/components/DriverTips/index.tsx +47 -37
  101. package/themes/original/src/components/DriverTips/styles.tsx +2 -1
  102. package/themes/original/src/components/Favorite/index.tsx +7 -4
  103. package/themes/original/src/components/Favorite/styles.tsx +1 -1
  104. package/themes/original/src/components/FavoriteList/index.tsx +70 -80
  105. package/themes/original/src/components/FloatingButton/index.tsx +1 -2
  106. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  107. package/themes/original/src/components/GPSButton/index.tsx +20 -19
  108. package/themes/original/src/components/GPSButton/styles.ts +3 -3
  109. package/themes/original/src/components/GoogleMap/index.tsx +10 -1
  110. package/themes/original/src/components/Help/index.tsx +7 -7
  111. package/themes/original/src/components/HelpAccountAndPayment/index.tsx +14 -20
  112. package/themes/original/src/components/HelpAccountAndPayment/styles.tsx +6 -0
  113. package/themes/original/src/components/HelpGuide/index.tsx +12 -11
  114. package/themes/original/src/components/HelpGuide/styles.tsx +5 -0
  115. package/themes/original/src/components/HelpOrder/index.tsx +12 -20
  116. package/themes/original/src/components/HelpOrder/styles.tsx +8 -1
  117. package/themes/original/src/components/LanguageSelector/index.tsx +19 -14
  118. package/themes/original/src/components/LastOrder/index.tsx +1 -34
  119. package/themes/original/src/components/LoginForm/Otp/index.tsx +89 -73
  120. package/themes/original/src/components/LoginForm/Otp/styles.tsx +0 -1
  121. package/themes/original/src/components/LoginForm/index.tsx +98 -41
  122. package/themes/original/src/components/LottieAnimation/index.tsx +78 -0
  123. package/themes/original/src/components/MessageListing/index.tsx +7 -40
  124. package/themes/original/src/components/Messages/index.tsx +35 -20
  125. package/themes/original/src/components/MomentOption/index.tsx +17 -11
  126. package/themes/original/src/components/MultiCart/index.tsx +50 -0
  127. package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +92 -93
  128. package/themes/original/src/components/MultiCheckout/index.tsx +158 -77
  129. package/themes/original/src/components/MultiOrdersDetails/SingleOrderCard.tsx +37 -224
  130. package/themes/original/src/components/MultiOrdersDetails/index.tsx +85 -34
  131. package/themes/original/src/components/MultiOrdersDetails/styles.tsx +1 -1
  132. package/themes/original/src/components/MyOrders/index.tsx +86 -20
  133. package/themes/original/src/components/NavBar/index.tsx +7 -6
  134. package/themes/original/src/components/NetworkError/index.tsx +5 -3
  135. package/themes/original/src/components/NotFoundSource/index.tsx +2 -1
  136. package/themes/original/src/components/Notifications/index.tsx +144 -0
  137. package/themes/original/src/components/Notifications/styles.tsx +20 -0
  138. package/themes/original/src/components/OrderDetails/index.tsx +100 -215
  139. package/themes/original/src/components/OrderDetails/styles.tsx +10 -1
  140. package/themes/original/src/components/OrderItAgain/index.tsx +46 -43
  141. package/themes/original/src/components/OrderProgress/index.tsx +79 -100
  142. package/themes/original/src/components/OrderProgress/styles.tsx +5 -0
  143. package/themes/original/src/components/OrderSummary/index.tsx +2 -2
  144. package/themes/original/src/components/OrderTypeSelector/index.tsx +13 -6
  145. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/index.tsx +94 -98
  146. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/index.tsx +3 -0
  147. package/themes/original/src/components/OrdersOption/index.tsx +97 -88
  148. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +1 -1
  149. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  150. package/themes/original/src/components/PaymentOptions/index.tsx +1 -2
  151. package/themes/original/src/components/PhoneInputNumber/index.tsx +1 -1
  152. package/themes/original/src/components/PlaceSpot/index.tsx +22 -8
  153. package/themes/original/src/components/PreviousOrders/index.tsx +3 -2
  154. package/themes/original/src/components/ProductForm/index.tsx +212 -253
  155. package/themes/original/src/components/ProductForm/styles.tsx +5 -8
  156. package/themes/original/src/components/ProductItemAccordion/index.tsx +199 -128
  157. package/themes/original/src/components/ProductOptionSubOption/index.tsx +17 -9
  158. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +1 -2
  159. package/themes/original/src/components/ProfessionalFilter/index.tsx +2 -1
  160. package/themes/original/src/components/ProfessionalProfile/index.tsx +19 -8
  161. package/themes/original/src/components/Promotions/index.tsx +234 -220
  162. package/themes/original/src/components/Promotions/styles.tsx +7 -2
  163. package/themes/original/src/components/ReviewDriver/index.tsx +3 -3
  164. package/themes/original/src/components/ReviewOrder/index.tsx +43 -11
  165. package/themes/original/src/components/ReviewOrder/styles.tsx +7 -0
  166. package/themes/original/src/components/ReviewProducts/index.tsx +8 -5
  167. package/themes/original/src/components/ReviewTrigger/index.tsx +27 -9
  168. package/themes/original/src/components/ReviewTrigger/styles.tsx +8 -1
  169. package/themes/original/src/components/ScheduleAccordion/index.tsx +68 -0
  170. package/themes/original/src/components/ScheduleAccordion/styles.tsx +14 -0
  171. package/themes/original/src/components/ServiceForm/index.tsx +328 -264
  172. package/themes/original/src/components/SignupForm/index.tsx +134 -89
  173. package/themes/original/src/components/SingleOrderCard/index.tsx +129 -54
  174. package/themes/original/src/components/SingleOrderCard/styles.tsx +10 -8
  175. package/themes/original/src/components/SingleProductCard/index.tsx +85 -82
  176. package/themes/original/src/components/SingleProductCard/styles.tsx +2 -9
  177. package/themes/original/src/components/SingleProductReview/index.tsx +38 -5
  178. package/themes/original/src/components/SingleProductReview/styles.tsx +12 -0
  179. package/themes/original/src/components/StripeCardsList/index.tsx +1 -1
  180. package/themes/original/src/components/StripeElementsForm/index.tsx +13 -2
  181. package/themes/original/src/components/UpsellingProducts/index.tsx +244 -215
  182. package/themes/original/src/components/UpsellingProducts/styles.tsx +12 -1
  183. package/themes/original/src/components/UserDetails/index.tsx +5 -3
  184. package/themes/original/src/components/UserFormDetails/index.tsx +6 -48
  185. package/themes/original/src/components/UserProfile/index.tsx +58 -35
  186. package/themes/original/src/components/UserProfile/styles.ts +17 -0
  187. package/themes/original/src/components/UserProfileForm/index.tsx +19 -28
  188. package/themes/original/src/components/UserProfileForm/styles.tsx +7 -0
  189. package/themes/original/src/components/WalletTransactions/index.tsx +76 -0
  190. package/themes/original/src/components/WalletTransactions/styles.tsx +13 -0
  191. package/themes/original/src/components/Wallets/index.tsx +176 -164
  192. package/themes/original/src/components/Wallets/styles.tsx +12 -8
  193. package/themes/original/src/components/shared/CardAnimation.tsx +47 -0
  194. package/themes/original/src/components/shared/HeaderTitle.tsx +8 -3
  195. package/themes/original/src/components/shared/OBottomPopup.tsx +6 -4
  196. package/themes/original/src/components/shared/OButton.tsx +9 -4
  197. package/themes/original/src/components/shared/OIcon.tsx +8 -1
  198. package/themes/original/src/components/shared/OInput.tsx +10 -1
  199. package/themes/original/src/layouts/Container.tsx +13 -9
  200. package/themes/original/src/types/index.tsx +35 -5
  201. package/themes/original/src/utils/index.tsx +305 -58
  202. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
@@ -16,11 +16,12 @@ import {
16
16
  PlaceholderLine,
17
17
  Fade
18
18
  } from "rn-placeholder";
19
- import { View, BackHandler } from 'react-native'
19
+ import { View, BackHandler, Platform } from 'react-native'
20
20
  import {
21
21
  MessageListingWrapper,
22
22
  MessageContainer
23
23
  } from './styles';
24
+ import { getOrderStatus } from '../../utils'
24
25
 
25
26
  const OrdersOptionUI = (props: OrdersOptionParams) => {
26
27
  const {
@@ -51,40 +52,6 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
51
52
  : theme.images.general.emptyPastOrders
52
53
  const orders = customArray || values || []
53
54
 
54
- const getOrderStatus = (s: string) => {
55
- const status = parseInt(s)
56
- const orderStatus = [
57
- { key: 0, value: t('PENDING', 'Pending') },
58
- { key: 1, value: t('COMPLETED', 'Completed') },
59
- { key: 2, value: t('REJECTED', 'Rejected') },
60
- { key: 3, value: t('DRIVER_IN_BUSINESS', 'Driver in business') },
61
- { key: 4, value: t('PREPARATION_COMPLETED', 'Preparation Completed') },
62
- { key: 5, value: t('REJECTED_BY_BUSINESS', 'Rejected by business') },
63
- { key: 6, value: t('REJECTED_BY_DRIVER', 'Rejected by Driver') },
64
- { key: 7, value: t('ACCEPTED_BY_BUSINESS', 'Accepted by business') },
65
- { key: 8, value: t('ACCEPTED_BY_DRIVER', 'Accepted by driver') },
66
- { key: 9, value: t('PICK_UP_COMPLETED_BY_DRIVER', 'Pick up completed by driver') },
67
- { key: 10, value: t('PICK_UP_FAILED_BY_DRIVER', 'Pick up Failed by driver') },
68
- { key: 11, value: t('DELIVERY_COMPLETED_BY_DRIVER', 'Delivery completed by driver') },
69
- { key: 12, value: t('DELIVERY_FAILED_BY_DRIVER', 'Delivery Failed by driver') },
70
- { key: 13, value: t('PREORDER', 'PreOrder') },
71
- { key: 14, value: t('ORDER_NOT_READY', 'Order not ready') },
72
- { key: 15, value: t('ORDER_PICKEDUP_COMPLETED_BY_CUSTOMER', 'Order picked up completed by customer') },
73
- { key: 16, value: t('CANCELLED_BY_CUSTOMER', 'Cancelled by customer') },
74
- { key: 17, value: t('ORDER_NOT_PICKEDUP_BY_CUSTOMER', 'Order not picked up by customer') },
75
- { key: 18, value: t('DRIVER_ALMOST_ARRIVED_TO_BUSINESS', 'Driver almost arrived to business') },
76
- { key: 19, value: t('DRIVER_ALMOST_ARRIVED_TO_CUSTOMER', 'Driver almost arrived to customer') },
77
- { key: 20, value: t('ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS', 'Customer almost arrived to business') },
78
- { key: 21, value: t('ORDER_CUSTOMER_ARRIVED_BUSINESS', 'Customer arrived to business') },
79
- { key: 22, value: t('ORDER_LOOKING_FOR_DRIVER', 'Looking for driver') },
80
- { key: 23, value: t('ORDER_DRIVER_ON_WAY', 'Driver on way') }
81
- ]
82
-
83
- const objectStatus = orderStatus.find((o) => o.key === status)
84
-
85
- return objectStatus && objectStatus
86
- }
87
-
88
55
  const handleClickOrder = (uuid: string) => {
89
56
  setSelectedOrderId(uuid)
90
57
  setOpenMessges(true)
@@ -102,7 +69,7 @@ const OrdersOptionUI = (props: OrdersOptionParams) => {
102
69
  }, [orderList, loading])
103
70
 
104
71
  useEffect(() => {
105
- if(refreshOrders){
72
+ if (refreshOrders) {
106
73
  loadOrders(false, false, false, true)
107
74
  setRefreshOrders && setRefreshOrders(false)
108
75
  }
@@ -225,7 +192,7 @@ const OrderMessageUI = (props: any) => {
225
192
  }
226
193
 
227
194
  export const OrderListing = (props: OrdersOptionParams) => {
228
- const [businessState] = useBusiness();
195
+ const [businessState] = useBusiness();
229
196
  const OrderListingProps = {
230
197
  ...props,
231
198
  UIComponent: OrdersOptionUI,
@@ -236,7 +203,7 @@ export const OrderListing = (props: OrdersOptionParams) => {
236
203
  pageSize: 10,
237
204
  controlType: 'infinity'
238
205
  },
239
- businessId: businessState?.business?.id,
206
+ businessId: businessState?.business?.id,
240
207
  profileMessages: true,
241
208
  orderBy: 'last_direct_message_at',
242
209
  orderDirection: 'asc'
@@ -292,7 +259,7 @@ export const MessageListing = (props: MessageListingParams) => {
292
259
  titleAlign={'center'}
293
260
  onActionLeft={goToBack}
294
261
  showCall={false}
295
- paddingTop={10}
262
+ paddingTop={Platform.OS === 'ios' ? 20 : 10}
296
263
  btnStyle={{ paddingLeft: 0 }}
297
264
  />
298
265
  <OrderListing
@@ -300,7 +267,7 @@ export const MessageListing = (props: MessageListingParams) => {
300
267
  setSelectedOrderId={setSelectedOrderId}
301
268
  setOrderList={setOrderListStatus}
302
269
  setOpenMessges={setOpenMessges}
303
- franchiseId={props.franchiseId}
270
+ franchiseId={props.franchiseId}
304
271
  />
305
272
  {openMessages && seletedOrder && (
306
273
  <OModal
@@ -1,10 +1,12 @@
1
1
  import React, { useEffect, useState } from 'react'
2
+ import Clipboard from '@react-native-clipboard/clipboard';
2
3
  import { Messages as MessagesController, useSession, useUtils, useLanguage, ToastType, useToast } from 'ordering-components/native'
3
4
  import { useTheme } from 'styled-components/native';
4
5
  import { launchImageLibrary } from 'react-native-image-picker'
5
6
  import { GiftedChat, Actions, ActionsProps, InputToolbar, Composer, Send, Bubble, MessageImage, InputToolbarProps, ComposerProps } from 'react-native-gifted-chat'
6
7
  import { USER_TYPE } from '../../config/constants'
7
8
  import MaterialCommunityIcon from 'react-native-vector-icons/MaterialCommunityIcons'
9
+ import AntDesignIcon from 'react-native-vector-icons/AntDesign'
8
10
  import { OIcon, OIconButton, OText, OButton } from '../shared'
9
11
  import { TouchableOpacity, ActivityIndicator, StyleSheet, View, Platform, Keyboard } from 'react-native'
10
12
  import { Header, TitleHeader, Wrapper, QuickMessageContainer, ProfileMessageHeader, MessageTypeItem } from './styles'
@@ -36,7 +38,7 @@ const ORDER_STATUS: any = {
36
38
  20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
37
39
  21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
38
40
  22: 'ORDER_LOOKING_FOR_DRIVER',
39
- 23: 'ORDER_DRIVER_ON_WAY'
41
+ 23: 'ORDER_DRIVER_ON_WAY'
40
42
  }
41
43
 
42
44
  const filterSpecialStatus = ['prepared_in', 'delivered_in', 'delivery_datetime']
@@ -122,18 +124,17 @@ const MessagesUI = (props: MessagesParams) => {
122
124
 
123
125
  const messageConsole = (message: any) => {
124
126
  return message.change?.attribute !== 'driver_id'
125
- ?
126
- `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${
127
- filterSpecialStatus.includes(message.change.attribute) ?
128
- `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
129
- `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
130
- }`
131
- : message.change.new
132
127
  ?
133
- `${message.driver?.name} ${message.driver?.lastname !== null ? message.driver.lastname : ''} ${t('WAS_ASSIGNED_AS_DRIVER', 'Was assigned as driver')} ${message.comment ? message.comment.length : ''}`
134
- :
135
- `${t('DRIVER_UNASSIGNED', 'Driver unassigned')}`
136
- }
128
+ `${t('ORDER', 'Order')} ${t(message.change.attribute.toUpperCase(), message.change.attribute.replace('_', ' '))} ${t('CHANGED_FROM', 'Changed from')} ${filterSpecialStatus.includes(message.change.attribute) ?
129
+ `${message.change.old === null ? '0' : message.change.old} ${t('TO', 'to')} ${message.change.new} ${t('MINUTES', 'Minutes')}` :
130
+ `${message.change.old !== null && t(ORDER_STATUS[parseInt(message.change.old, 10)])} ${t('TO', 'to')} ${t(ORDER_STATUS[parseInt(message.change.new, 10)])}`
131
+ }`
132
+ : message.change.new
133
+ ?
134
+ `${message.driver?.name} ${message.driver?.lastname !== null ? message.driver.lastname : ''} ${t('WAS_ASSIGNED_AS_DRIVER', 'Was assigned as driver')} ${message.comment ? message.comment.length : ''}`
135
+ :
136
+ `${t('DRIVER_UNASSIGNED', 'Driver unassigned')}`
137
+ }
137
138
 
138
139
  useEffect(() => {
139
140
  let newMessages: Array<any> = []
@@ -141,7 +142,7 @@ const MessagesUI = (props: MessagesParams) => {
141
142
  const firstMessage = {
142
143
  _id: 0,
143
144
  text: _console,
144
- createdAt: order?.created_at,
145
+ createdAt: parseDate(order?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
145
146
  system: true
146
147
  }
147
148
  const newMessage: any = [];
@@ -150,7 +151,7 @@ const MessagesUI = (props: MessagesParams) => {
150
151
  newMessage.push({
151
152
  _id: message?.id,
152
153
  text: message.type === 1 ? messageConsole(message) : message.comment,
153
- createdAt: message.type !== 0 && message.created_at,
154
+ createdAt: message.type !== 0 && parseDate(message?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
154
155
  image: message.source,
155
156
  system: message.type === 1,
156
157
  user: {
@@ -165,7 +166,7 @@ const MessagesUI = (props: MessagesParams) => {
165
166
  newMessage.push({
166
167
  _id: message?.id,
167
168
  text: message.type === 1 ? messageConsole(message) : message.comment,
168
- createdAt: message.type !== 0 && message.created_at,
169
+ createdAt: message.type !== 0 && parseDate(message?.created_at, { outputFormat: 'YYYY-MM-DD HH:mm:ss' }),
169
170
  image: message.source,
170
171
  system: message.type === 1,
171
172
  user: {
@@ -397,12 +398,27 @@ const MessagesUI = (props: MessagesParams) => {
397
398
  }
398
399
  }
399
400
 
401
+ const onLongPress = (context: any, message: any) => {
402
+ const options = [
403
+ t('COPY_TEXT', 'Copy text'),
404
+ t('CANCEL', 'Cancel'),
405
+ ];
406
+ const cancelButtonIndex = options.length - 1;
407
+ context.actionSheet().showActionSheetWithOptions({
408
+ options,
409
+ cancelButtonIndex
410
+ }, (buttonIndex: any) => buttonIndex === 0 && Clipboard.setString(message.text)
411
+ );
412
+ }
413
+
400
414
  return (
401
415
  <View style={{ height: getViewHeight(), width: '100%', paddingTop: 12, backgroundColor: 'white' }}>
402
416
  <Wrapper>
403
417
  {!isMeesageListing ? (
404
418
  <Header>
405
- <OIconButton icon={theme.images.general.arrow_left} style={{ paddingStart: 10, borderColor: theme.colors.clear }} onClick={onClose} />
419
+ <TouchableOpacity onPress={onClose} style={{ paddingStart: 10, borderColor: theme.colors.clear }}>
420
+ <AntDesignIcon name='arrowleft' size={26} />
421
+ </TouchableOpacity>
406
422
  <View style={{ marginRight: 10, shadowColor: theme.colors.black, shadowOpacity: 0.1, shadowOffset: { width: 0, height: 1 }, shadowRadius: 2 }}>
407
423
  <OIcon
408
424
  url={type === USER_TYPE.DRIVER ? order?.driver?.photo : order?.business?.logo}
@@ -419,10 +435,8 @@ const MessagesUI = (props: MessagesParams) => {
419
435
  ) : (
420
436
  <ProfileMessageHeader>
421
437
  <View style={{ ...styles.headerTitle }}>
422
- <TouchableOpacity
423
- style={styles.headerItem}
424
- onPress={onClose}>
425
- <OIcon src={theme.images.general.arrow_left} width={16} />
438
+ <TouchableOpacity onPress={onClose} style={styles.headerItem}>
439
+ <AntDesignIcon name='arrowleft' size={26} />
426
440
  </TouchableOpacity>
427
441
  <OText size={18}>{t('ORDER', theme?.defaultLanguages?.ORDER || 'Order')} #{order?.id}</OText>
428
442
  </View>
@@ -473,6 +487,7 @@ const MessagesUI = (props: MessagesParams) => {
473
487
  onSend={onSubmit}
474
488
  onInputTextChanged={onChangeMessage}
475
489
  alignTop
490
+ onLongPress={(context: any, message: any) => onLongPress(context, message)}
476
491
  scrollToBottom
477
492
  renderAvatarOnTop
478
493
  renderUsernameOnMessage
@@ -13,7 +13,8 @@ import IconAntDesign from 'react-native-vector-icons/AntDesign'
13
13
  import {
14
14
  StyleSheet,
15
15
  View,
16
- TouchableOpacity
16
+ TouchableOpacity,
17
+ Platform
17
18
  } from 'react-native';
18
19
  import Spinner from 'react-native-loading-spinner-overlay';
19
20
  import { MomentOptionParams } from '../../types';
@@ -28,6 +29,7 @@ import {
28
29
  TimeItem
29
30
  } from './styles';
30
31
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
32
+ import { locale, monthsEnum } from '../../utils';
31
33
 
32
34
  const MomentOptionUI = (props: MomentOptionParams) => {
33
35
  const {
@@ -252,19 +254,22 @@ const MomentOptionUI = (props: MomentOptionParams) => {
252
254
 
253
255
  return (
254
256
  <>
255
- <Container style={{ paddingLeft: 40, paddingRight: 40 }}>
256
- <View style={{ paddingBottom: 90 }}>
257
+ <Container
258
+ style={{
259
+ paddingLeft: 40,
260
+ paddingRight: 40
261
+ }}>
262
+ <View style={{ paddingBottom: 90, paddingRight: 20 }}>
257
263
  <NavBar
258
264
  onActionLeft={() => goToBack()}
259
265
  btnStyle={{ paddingLeft: 0 }}
260
- paddingTop={0}
261
- style={{ paddingBottom: 0, flexDirection: 'column', alignItems: 'flex-start' }}
266
+ style={{ paddingBottom: 0 }}
267
+ paddingTop={Platform.OS === 'ios' ? 10 : 0}
262
268
  title={t('QUESTION_WHEN_ORDER', 'When do you want your order?')}
263
269
  titleAlign={'center'}
264
270
  titleStyle={{ fontSize: 14, marginRight: 0, marginLeft: 0 }}
265
271
  titleWrapStyle={{ paddingHorizontal: 0 }}
266
272
  />
267
-
268
273
  <WrapSelectOption
269
274
  onPress={() => _handleAsap()}
270
275
  disabled={orderState.loading} style={{ alignItems: 'flex-start' }}>
@@ -281,7 +286,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
281
286
  style={{ marginEnd: 24 }}
282
287
  />
283
288
  )}
284
- <OText color={optionSelected.isAsap ? theme.colors.textNormal : theme.colors.disabled}>{t('ASAP_ABBREVIATION', 'ASAP') + ` (${moment().format('dddd, MMM D, yyyy h:mm A')} + delivery time)`}</OText>
289
+ <OText color={optionSelected.isAsap ? theme.colors.textNormal : theme.colors.disabled}>{t('ASAP_ABBREVIATION', 'ASAP') + ` (${t(moment().format('dddd')?.toLocaleUpperCase(), moment().format('dddd'))}, ${t(monthsEnum[moment().format('MMM')], moment().format('MMM'))}${moment().format(' D, yyyy h:mm A')} + ${t('DELIVERY_TIME', 'delivery time')})`}</OText>
285
290
  </WrapSelectOption>
286
291
  <WrapSelectOption
287
292
  onPress={() => setOptionSelected({ isAsap: false, isSchedule: true })}
@@ -308,6 +313,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
308
313
  {selectDate && datesWhitelist[0]?.start !== null && (
309
314
  <CalendarStrip
310
315
  scrollable
316
+ locale={locale}
311
317
  style={styles.calendar}
312
318
  calendarHeaderContainerStyle={styles.calendarHeaderContainer}
313
319
  calendarHeaderStyle={styles.calendarHeader}
@@ -342,12 +348,12 @@ const MomentOptionUI = (props: MomentOptionParams) => {
342
348
  style={{
343
349
  lineHeight: 24
344
350
  }}
345
- >{is12hours ? (
346
- time.startTime.includes('12')
351
+ >{is12hours ? (
352
+ time.startTime.includes('12')
347
353
  ? `${time.startTime}PM`
348
354
  : parseTime(moment(time.startTime, 'HH:mm'), { outputFormat: 'hh:mma' })
349
- ) : time.startTime
350
- }</OText>
355
+ ) : time.startTime
356
+ }</OText>
351
357
  </TimeItem>
352
358
  </TouchableOpacity>
353
359
  ))}
@@ -0,0 +1,50 @@
1
+ import React from 'react'
2
+ import { View } from 'react-native'
3
+ import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder'
4
+ import { useTheme } from 'styled-components/native';
5
+ import { MultiCartCreate } from 'ordering-components/native'
6
+
7
+ import { Container } from '../../layouts/Container';
8
+ import { ChContainer, ChSection, ChUserDetails } from '../Checkout/styles'
9
+
10
+ export const MultiCartUI = () => {
11
+ const theme = useTheme();
12
+ return (
13
+ <Container noPadding>
14
+ <ChContainer style={{ paddingHorizontal: 40 }}>
15
+ <ChSection>
16
+ <ChUserDetails>
17
+ <Placeholder Animation={Fade}>
18
+ <PlaceholderLine height={20} />
19
+ <PlaceholderLine height={20} />
20
+ <PlaceholderLine height={20} />
21
+ <PlaceholderLine height={20} style={{ marginBottom: 20 }} />
22
+ </Placeholder>
23
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40, marginBottom: 20 }} />
24
+ <Placeholder Animation={Fade}>
25
+ <PlaceholderLine height={20} />
26
+ <PlaceholderLine height={20} />
27
+ <PlaceholderLine height={20} />
28
+ <PlaceholderLine height={20} style={{ marginBottom: 20 }} />
29
+ </Placeholder>
30
+ <View style={{ height: 8, backgroundColor: theme.colors.backgroundGray100, marginHorizontal: -40, marginBottom: 20 }} />
31
+ <Placeholder Animation={Fade}>
32
+ <PlaceholderLine height={20} />
33
+ <PlaceholderLine height={120} style={{ marginBottom: 20, borderRadius: 8 }} />
34
+ <PlaceholderLine height={20} />
35
+ <PlaceholderLine height={20} />
36
+ </Placeholder>
37
+ </ChUserDetails>
38
+ </ChSection>
39
+ </ChContainer>
40
+ </Container>
41
+ )
42
+ }
43
+
44
+ export const MultiCart = (props: any) => {
45
+ const mulcartProps = {
46
+ ...props,
47
+ UIComponent: MultiCartUI
48
+ }
49
+ return <MultiCartCreate {...mulcartProps} />
50
+ }
@@ -7,7 +7,7 @@ import {
7
7
  } from 'ordering-components/native'
8
8
  import { useTheme } from 'styled-components/native'
9
9
  import { View, TouchableOpacity, FlatList, StyleSheet, KeyboardAvoidingView, Platform } from 'react-native'
10
- import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder'
10
+ import { Placeholder, PlaceholderLine, Fade } from 'rn-placeholder'
11
11
  import { OText, OIcon, OModal, OButton } from '../shared'
12
12
  import { getIconCard, flatArray } from '../../utils'
13
13
  import { StripeElementsForm } from '../StripeElementsForm'
@@ -25,7 +25,6 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
25
25
  businessIds,
26
26
  paymethodsAndWallets,
27
27
  walletsState,
28
- businessPaymethods,
29
28
  paymethodSelected,
30
29
  handleSelectPaymethod,
31
30
  handleSelectWallet,
@@ -37,7 +36,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
37
36
  const [{ configs }] = useConfig()
38
37
  const [{ parsePrice }] = useUtils()
39
38
 
40
- const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
39
+ const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
41
40
 
42
41
  const isWalletCashEnabled = configs?.wallet_cash_enabled?.value === '1'
43
42
  const isWalletPointsEnabled = configs?.wallet_credit_point_enabled?.value === '1'
@@ -54,52 +53,52 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
54
53
  }
55
54
 
56
55
  const getPayIcon = (method: string) => {
57
- switch (method) {
58
- case 'cash':
59
- return theme.images.general.cash
60
- case 'card_delivery':
61
- return theme.images.general.carddelivery
62
- case 'paypal':
63
- return theme.images.general.paypal
64
- case 'stripe':
65
- return theme.images.general.stripe
66
- case 'stripe_direct':
67
- return theme.images.general.stripecc
68
- case 'stripe_connect':
69
- return theme.images.general.stripes
70
- case 'stripe_redirect':
71
- return theme.images.general.stripesb
72
- default:
73
- return theme.images.general.creditCard
74
- }
75
- }
56
+ switch (method) {
57
+ case 'cash':
58
+ return theme.images.general.cash
59
+ case 'card_delivery':
60
+ return theme.images.general.carddelivery
61
+ case 'paypal':
62
+ return theme.images.general.paypal
63
+ case 'stripe':
64
+ return theme.images.general.creditCard
65
+ case 'stripe_direct':
66
+ return theme.images.general.stripecc
67
+ case 'stripe_connect':
68
+ return theme.images.general.stripes
69
+ case 'stripe_redirect':
70
+ return theme.images.general.stripesb
71
+ default:
72
+ return theme.images.general.creditCard
73
+ }
74
+ }
76
75
 
77
76
  const renderPaymethods = ({ item }: any) => {
78
- return (
79
- <TouchableOpacity
80
- onPress={() => handleSelectPaymethod(item)}
81
- >
82
- <PMItem
83
- key={item.id}
84
- isActive={paymethodSelected?.paymethod_id === item.paymethod_id}
85
- >
86
- <OIcon
87
- src={getPayIcon(item.paymethod?.gateway)}
88
- width={20}
89
- height={20}
90
- color={paymethodSelected?.paymethod_id === item.paymethod_id ? theme.colors.white : theme.colors.backgroundDark}
91
- />
92
- <OText
93
- size={10}
94
- style={{ margin: 0, marginTop: 4 }}
95
- color={paymethodSelected?.paymethod_id === item.paymethod_id ? theme.colors.white : '#000'}
96
- >
97
- {t(item?.paymethod?.gateway.toUpperCase(), item?.paymethod?.name)}
98
- </OText>
99
- </PMItem>
100
- </TouchableOpacity>
101
- )
102
- }
77
+ return (
78
+ <TouchableOpacity
79
+ onPress={() => handleSelectPaymethod({ ...item, paymethod: { gateway: item.gateway }, paymethod_id: item?.id })}
80
+ >
81
+ <PMItem
82
+ key={item.id}
83
+ isActive={paymethodSelected?.id === item.id}
84
+ >
85
+ <OIcon
86
+ src={getPayIcon(item?.gateway ?? item.paymethod?.gateway)}
87
+ width={20}
88
+ height={20}
89
+ color={paymethodSelected?.id === item.id ? theme.colors.white : theme.colors.backgroundDark}
90
+ />
91
+ <OText
92
+ size={10}
93
+ style={{ margin: 0, marginTop: 4 }}
94
+ color={paymethodSelected?.id === item.id ? theme.colors.white : '#000'}
95
+ >
96
+ {t(item?.gateway.toUpperCase(), item?.name)}
97
+ </OText>
98
+ </PMItem>
99
+ </TouchableOpacity>
100
+ )
101
+ }
103
102
 
104
103
  return (
105
104
  <PMContainer>
@@ -123,10 +122,10 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
123
122
  ) : (
124
123
  <FlatList
125
124
  horizontal
126
- showsHorizontalScrollIndicator={false}
127
- data={businessPaymethods.result.filter((paymethod: any) => paymethodsAndWallets.paymethods.find((item: any) => item.id === paymethod.paymethod_id))}
128
- renderItem={renderPaymethods}
129
- keyExtractor={(paymethod: any) => paymethod?.id?.toString?.()}
125
+ showsHorizontalScrollIndicator={false}
126
+ data={paymethodsAndWallets.paymethods}
127
+ renderItem={renderPaymethods}
128
+ keyExtractor={(paymethod: any) => paymethod?.id?.toString?.()}
130
129
  />
131
130
  )}
132
131
  {!paymethodsAndWallets.loading && !paymethodsAndWallets.error && paymethodsAndWallets.paymethods.length === 0 && (
@@ -138,22 +137,22 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
138
137
  {paymethodSelected?.paymethod?.gateway === 'stripe' && (
139
138
  <View>
140
139
  <OButton
141
- text={t('ADD_PAYMENT_CARD', 'Add New Payment Card')}
142
- bgColor={theme.colors.white}
143
- borderColor={theme.colors.primary}
144
- style={styles.btnAddStyle}
145
- textStyle={{ color: theme.colors.primary, fontSize: 12 }}
146
- imgRightSrc={null}
147
- onClick={() => setAddCardOpen({ ...addCardOpen, stripe: true })}
148
- />
140
+ text={t('ADD_PAYMENT_CARD', 'Add New Payment Card')}
141
+ bgColor={theme.colors.white}
142
+ borderColor={theme.colors.primary}
143
+ style={styles.btnAddStyle}
144
+ textStyle={{ color: theme.colors.primary, fontSize: 12 }}
145
+ imgRightSrc={null}
146
+ onClick={() => setAddCardOpen({ ...addCardOpen, stripe: true })}
147
+ />
149
148
  <StripeCardsList
150
- paymethod={paymethodSelected?.paymethod}
151
- businessId={businessIds[0]}
149
+ paymethod={paymethodSelected?.paymethod}
150
+ businessId={businessIds[0]}
152
151
  businessIds={businessIds}
153
- publicKey={paymethodSelected?.data?.publishable}
154
- payType={paymethodSelected?.paymethod?.name}
155
- onSelectCard={handlePaymethodDataChange}
156
- />
152
+ publicKey={paymethodSelected?.data?.publishable}
153
+ payType={paymethodSelected?.paymethod?.name}
154
+ onSelectCard={handlePaymethodDataChange}
155
+ />
157
156
  </View>
158
157
  )}
159
158
 
@@ -170,7 +169,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
170
169
  </>
171
170
  ) : (
172
171
  <>
173
- {walletsState.result.filter((wallet: any) => paymethodsAndWallets.wallets.find((item: any) => item.type === wallet.type)).map((wallet: any, idx: any) => walletName[wallet.type]?.isActive && (
172
+ {walletsState?.result?.filter((wallet: any) => paymethodsAndWallets.wallets.find((item: any) => item.type === wallet.type)).map((wallet: any, idx: any) => walletName[wallet.type]?.isActive && (
174
173
  <WalletItem
175
174
  key={wallet.type}
176
175
  isBottomBorder={idx === paymethodsAndWallets.wallets?.length - 1}
@@ -197,40 +196,40 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
197
196
  )}
198
197
 
199
198
  <OModal
200
- entireModal
201
- title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
202
- open={addCardOpen.stripe}
203
- onClose={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
204
- style={{ backgroundColor: 'red' }}
205
- >
206
- <KeyboardAvoidingView
207
- behavior={Platform.OS == 'ios' ? 'padding' : 'height'}
208
- keyboardVerticalOffset={Platform.OS == 'ios' ? 0 : 0}
209
- enabled={Platform.OS === 'ios' ? true : false}
210
- >
211
- <StripeElementsForm
212
- toSave
213
- businessId={businessIds[0]}
199
+ entireModal
200
+ title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
201
+ open={addCardOpen.stripe}
202
+ onClose={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
203
+ style={{ backgroundColor: 'red' }}
204
+ >
205
+ <KeyboardAvoidingView
206
+ behavior={Platform.OS == 'ios' ? 'padding' : 'height'}
207
+ keyboardVerticalOffset={Platform.OS == 'ios' ? 0 : 0}
208
+ enabled={Platform.OS === 'ios' ? true : false}
209
+ >
210
+ <StripeElementsForm
211
+ toSave
212
+ businessId={businessIds[0]}
214
213
  businessIds={businessIds}
215
214
  publicKey={paymethodSelected?.data?.publishable}
216
- requirements={props.clientSecret}
217
- onSelectCard={handlePaymethodDataChange}
218
- onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
219
- />
220
- </KeyboardAvoidingView>
221
- </OModal>
215
+ requirements={props.clientSecret}
216
+ onSelectCard={handlePaymethodDataChange}
217
+ onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
218
+ />
219
+ </KeyboardAvoidingView>
220
+ </OModal>
222
221
  </PMContainer>
223
222
  )
224
223
  }
225
224
 
226
225
  const styles = StyleSheet.create({
227
- btnAddStyle: {
228
- marginVertical: 20,
229
- borderRadius: 7.6,
230
- shadowOpacity: 0,
231
- height: 44,
232
- borderWidth: 1
233
- },
226
+ btnAddStyle: {
227
+ marginVertical: 20,
228
+ borderRadius: 7.6,
229
+ shadowOpacity: 0,
230
+ height: 44,
231
+ borderWidth: 1
232
+ },
234
233
  })
235
234
 
236
235