ordering-ui-react-native 0.21.20 → 0.21.21-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 (238) hide show
  1. package/package.json +7 -6
  2. package/src/DeliveryApp.tsx +43 -1
  3. package/src/components/BusinessesListing/index.tsx +1 -1
  4. package/src/components/PaymentOptionsWebView/index.tsx +1 -0
  5. package/src/components/StripeMethodForm/index.tsx +4 -4
  6. package/src/components/VerifyPhone/styles.tsx +1 -2
  7. package/src/types/index.tsx +2 -1
  8. package/src/utils/index.tsx +2 -2
  9. package/themes/business/index.tsx +4 -0
  10. package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -2
  11. package/themes/business/src/components/BusinessController/index.tsx +19 -17
  12. package/themes/business/src/components/BusinessProductList/AccordionDropdown.tsx +63 -0
  13. package/themes/business/src/components/BusinessProductList/IterateCategories.tsx +108 -0
  14. package/themes/business/src/components/BusinessProductList/ProductList.tsx +196 -0
  15. package/themes/business/src/components/BusinessProductList/index.tsx +196 -0
  16. package/themes/business/src/components/BusinessProductList/styles.tsx +10 -0
  17. package/themes/business/src/components/Chat/index.tsx +39 -12
  18. package/themes/business/src/components/DriverMap/index.tsx +4 -3
  19. package/themes/business/src/components/FloatingButton/index.tsx +34 -31
  20. package/themes/business/src/components/Home/index.tsx +5 -1
  21. package/themes/business/src/components/LanguageSelector/index.tsx +4 -2
  22. package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
  23. package/themes/business/src/components/MapView/index.tsx +11 -7
  24. package/themes/business/src/components/MessagesOption/index.tsx +2 -1
  25. package/themes/business/src/components/NewOrderNotification/index.tsx +163 -113
  26. package/themes/business/src/components/OrderDetails/Business.tsx +50 -2
  27. package/themes/business/src/components/OrderDetails/Delivery.tsx +23 -11
  28. package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +60 -53
  29. package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +54 -23
  30. package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +220 -0
  31. package/themes/business/src/components/OrderDetailsLogistic/index.tsx +6 -1
  32. package/themes/business/src/components/OrderSummary/index.tsx +240 -76
  33. package/themes/business/src/components/OrdersListManager/index.tsx +7 -2
  34. package/themes/business/src/components/OrdersListManager/utils.tsx +1 -1
  35. package/themes/business/src/components/OrdersOption/index.tsx +125 -48
  36. package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
  37. package/themes/business/src/components/PreviousOrders/OrderItem.tsx +33 -36
  38. package/themes/business/src/components/PreviousOrders/OrderList.tsx +18 -13
  39. package/themes/business/src/components/PreviousOrders/index.tsx +80 -66
  40. package/themes/business/src/components/PreviousOrders/styles.tsx +10 -0
  41. package/themes/business/src/components/PrinterSettings/index.tsx +279 -0
  42. package/themes/business/src/components/PrinterSettings/styles.tsx +17 -0
  43. package/themes/business/src/components/ProductItemAccordion/index.tsx +2 -2
  44. package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
  45. package/themes/business/src/components/SearchBar/index.tsx +2 -1
  46. package/themes/business/src/components/Sessions/index.tsx +187 -0
  47. package/themes/business/src/components/Sessions/styles.tsx +20 -0
  48. package/themes/business/src/components/StoresList/index.tsx +5 -3
  49. package/themes/business/src/components/UserFormDetails/index.tsx +111 -107
  50. package/themes/business/src/components/UserProfileForm/index.tsx +98 -43
  51. package/themes/business/src/components/WebsocketStatus/index.tsx +171 -0
  52. package/themes/business/src/components/WebsocketStatus/styles.tsx +28 -0
  53. package/themes/business/src/components/shared/OInput.tsx +2 -0
  54. package/themes/business/src/hooks/useLocation.tsx +5 -4
  55. package/themes/business/src/types/index.tsx +15 -1
  56. package/themes/business/src/utils/index.tsx +5 -0
  57. package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
  58. package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
  59. package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
  60. package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
  61. package/themes/kiosk/src/components/LoginForm/index.tsx +7 -4
  62. package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
  63. package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
  64. package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
  65. package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
  66. package/themes/original/index.tsx +9 -4
  67. package/themes/original/src/components/AddressDetails/index.tsx +20 -10
  68. package/themes/original/src/components/AddressForm/index.tsx +10 -6
  69. package/themes/original/src/components/AddressForm/styles.tsx +1 -1
  70. package/themes/original/src/components/AddressList/index.tsx +4 -7
  71. package/themes/original/src/components/AddressList/styles.tsx +4 -4
  72. package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
  73. package/themes/original/src/components/AppleLogin/index.tsx +4 -4
  74. package/themes/original/src/components/BusinessBasicInformation/index.tsx +4 -4
  75. package/themes/original/src/components/BusinessBasicInformation/styles.tsx +1 -1
  76. package/themes/original/src/components/BusinessController/index.tsx +20 -12
  77. package/themes/original/src/components/BusinessController/styles.tsx +8 -7
  78. package/themes/original/src/components/BusinessInformation/styles.tsx +2 -2
  79. package/themes/original/src/components/BusinessItemAccordion/index.tsx +11 -7
  80. package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +317 -0
  81. package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +96 -0
  82. package/themes/original/src/components/BusinessListingSearch/MaxSectionItem/index.tsx +1 -1
  83. package/themes/original/src/components/BusinessListingSearch/index.tsx +56 -361
  84. package/themes/original/src/components/BusinessListingSearch/styles.tsx +1 -1
  85. package/themes/original/src/components/BusinessPreorder/index.tsx +2 -3
  86. package/themes/original/src/components/BusinessProductsCategories/index.tsx +1 -1
  87. package/themes/original/src/components/BusinessProductsList/index.tsx +3 -3
  88. package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
  89. package/themes/original/src/components/BusinessProductsListing/index.tsx +51 -20
  90. package/themes/original/src/components/BusinessProductsListing/styles.tsx +3 -4
  91. package/themes/original/src/components/BusinessReviews/index.tsx +1 -1
  92. package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +1 -1
  93. package/themes/original/src/components/BusinessesListing/Layout/Appointment/styles.tsx +5 -5
  94. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListFooter.tsx +69 -0
  95. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListHeader.tsx +406 -0
  96. package/themes/original/src/components/BusinessesListing/Layout/Original/FlatListBusinessListing.tsx +76 -0
  97. package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +24 -404
  98. package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
  99. package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
  100. package/themes/original/src/components/Cart/index.tsx +32 -9
  101. package/themes/original/src/components/CartContent/index.tsx +96 -58
  102. package/themes/original/src/components/CartStoresListing/styles.tsx +2 -2
  103. package/themes/original/src/components/Checkout/index.tsx +190 -66
  104. package/themes/original/src/components/Checkout/styles.tsx +17 -0
  105. package/themes/original/src/components/CitiesControl/styles.tsx +1 -1
  106. package/themes/original/src/components/DatePicker/index.tsx +33 -0
  107. package/themes/original/src/components/DatePicker/styles.tsx +20 -0
  108. package/themes/original/src/components/Favorite/index.tsx +4 -9
  109. package/themes/original/src/components/Favorite/styles.tsx +0 -2
  110. package/themes/original/src/components/FloatingButton/styles.tsx +1 -1
  111. package/themes/original/src/components/GPSButton/index.tsx +1 -1
  112. package/themes/original/src/components/GiftCard/GiftCardOrdersList/index.tsx +64 -0
  113. package/themes/original/src/components/GiftCard/GiftCardOrdersList/styles.tsx +8 -0
  114. package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +8 -3
  115. package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +36 -3
  116. package/themes/original/src/components/GiftCard/PurchaseGiftCard/styles.tsx +1 -1
  117. package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +67 -4
  118. package/themes/original/src/components/GiftCard/RedeemGiftCard/styles.tsx +1 -1
  119. package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +2 -2
  120. package/themes/original/src/components/GiftCard/SendGiftCard/styles.tsx +1 -1
  121. package/themes/original/src/components/GiftCard/SingleGiftCard/index.tsx +101 -0
  122. package/themes/original/src/components/GiftCard/SingleGiftCard/styles.tsx +4 -0
  123. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +83 -0
  124. package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/styles.tsx +9 -0
  125. package/themes/original/src/components/GoogleMap/index.tsx +6 -5
  126. package/themes/original/src/components/HighestRatedBusinesses/index.tsx +2 -2
  127. package/themes/original/src/components/HighestRatedBusinesses/styles.tsx +1 -1
  128. package/themes/original/src/components/Home/index.tsx +2 -1
  129. package/themes/original/src/components/LastOrder/index.tsx +2 -1
  130. package/themes/original/src/components/LastOrders/index.tsx +2 -1
  131. package/themes/original/src/components/LoginForm/Otp/index.tsx +4 -16
  132. package/themes/original/src/components/Messages/index.tsx +9 -4
  133. package/themes/original/src/components/Messages/styles.tsx +1 -1
  134. package/themes/original/src/components/MomentOption/index.tsx +4 -3
  135. package/themes/original/src/components/MultiCart/index.tsx +1 -1
  136. package/themes/original/src/components/MultiCheckout/index.tsx +208 -21
  137. package/themes/original/src/components/MultiCheckout/styles.tsx +17 -0
  138. package/themes/original/src/components/MultiOrdersDetails/index.tsx +20 -15
  139. package/themes/original/src/components/MyOrders/index.tsx +24 -29
  140. package/themes/original/src/components/NavBar/index.tsx +3 -1
  141. package/themes/original/src/components/NetworkError/index.tsx +2 -3
  142. package/themes/original/src/components/NetworkError/styles.tsx +2 -2
  143. package/themes/original/src/components/Notifications/index.tsx +4 -8
  144. package/themes/original/src/components/Notifications/styles.tsx +0 -1
  145. package/themes/original/src/components/OrderDetails/OrderHistory.tsx +1 -1
  146. package/themes/original/src/components/OrderDetails/index.tsx +716 -668
  147. package/themes/original/src/components/OrderDetails/styles.tsx +24 -8
  148. package/themes/original/src/components/OrderProgress/index.tsx +28 -6
  149. package/themes/original/src/components/OrderProgress/styles.tsx +1 -1
  150. package/themes/original/src/components/OrderSummary/index.tsx +3 -1
  151. package/themes/original/src/components/OrderTypeSelector/index.tsx +5 -6
  152. package/themes/original/src/components/OrdersOption/PreviousBusinessOrdered/styles.tsx +1 -1
  153. package/themes/original/src/components/OrdersOption/PreviousProductsOrdered/styles.tsx +1 -1
  154. package/themes/original/src/components/OrdersOption/index.tsx +3 -5
  155. package/themes/original/src/components/OrdersOption/styles.tsx +1 -1
  156. package/themes/original/src/components/PageBanner/index.tsx +3 -0
  157. package/themes/original/src/components/PaymentOptionCard/index.tsx +4 -2
  158. package/themes/original/src/components/PaymentOptionStripe/styles.tsx +3 -0
  159. package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
  160. package/themes/original/src/components/PaymentOptions/index.tsx +72 -6
  161. package/themes/original/src/components/ProductForm/ActionButton.tsx +120 -0
  162. package/themes/original/src/components/ProductForm/ExtraOptions.tsx +56 -0
  163. package/themes/original/src/components/ProductForm/index.tsx +74 -165
  164. package/themes/original/src/components/ProductItemAccordion/index.tsx +54 -44
  165. package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
  166. package/themes/original/src/components/ProductOptionSubOption/index.tsx +123 -82
  167. package/themes/original/src/components/ProductOptionSubOption/styles.tsx +6 -1
  168. package/themes/original/src/components/ProfessionalProfile/styles.tsx +3 -3
  169. package/themes/original/src/components/Promotions/index.tsx +4 -4
  170. package/themes/original/src/components/Promotions/styles.tsx +0 -2
  171. package/themes/original/src/components/ReviewDriver/styles.tsx +1 -1
  172. package/themes/original/src/components/ReviewOrder/styles.tsx +1 -1
  173. package/themes/original/src/components/ReviewProducts/styles.tsx +1 -1
  174. package/themes/original/src/components/ServiceForm/index.tsx +2 -2
  175. package/themes/original/src/components/ServiceForm/styles.tsx +4 -4
  176. package/themes/original/src/components/SingleOrderCard/index.tsx +5 -4
  177. package/themes/original/src/components/SingleProductCard/index.tsx +2 -2
  178. package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
  179. package/themes/original/src/components/StripeCardsList/index.tsx +17 -36
  180. package/themes/original/src/components/StripeElementsForm/index.tsx +72 -59
  181. package/themes/original/src/components/StripeElementsForm/naked.tsx +47 -0
  182. package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +170 -0
  183. package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +86 -0
  184. package/themes/original/src/components/UpsellingProducts/index.tsx +15 -199
  185. package/themes/original/src/components/UpsellingProducts/styles.tsx +19 -0
  186. package/themes/original/src/components/UserFormDetails/index.tsx +54 -8
  187. package/themes/original/src/components/UserFormDetails/styles.tsx +7 -0
  188. package/themes/original/src/components/UserProfile/index.tsx +3 -2
  189. package/themes/original/src/components/UserProfileForm/index.tsx +30 -36
  190. package/themes/original/src/components/WalletTransactions/styles.tsx +1 -0
  191. package/themes/original/src/components/Wallets/index.tsx +8 -9
  192. package/themes/original/src/components/Wallets/styles.tsx +1 -1
  193. package/themes/original/src/components/WebsocketStatus/index.tsx +172 -0
  194. package/themes/original/src/components/WebsocketStatus/styles.tsx +28 -0
  195. package/themes/original/src/components/shared/HeaderTitle.tsx +1 -1
  196. package/themes/original/src/components/shared/OButton.tsx +5 -5
  197. package/themes/original/src/components/shared/OInput.tsx +1 -4
  198. package/themes/original/src/components/shared/OModal.tsx +12 -14
  199. package/themes/original/src/layouts/Container.tsx +5 -3
  200. package/themes/original/src/types/index.tsx +1 -0
  201. package/themes/original/src/utils/index.tsx +124 -0
  202. package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
  203. package/src/navigators/BottomNavigator.tsx +0 -117
  204. package/src/navigators/CheckoutNavigator.tsx +0 -66
  205. package/src/navigators/HomeNavigator.tsx +0 -202
  206. package/src/navigators/NavigationRef.tsx +0 -7
  207. package/src/navigators/RootNavigator.tsx +0 -269
  208. package/src/pages/Account.tsx +0 -34
  209. package/src/pages/AddressForm.tsx +0 -62
  210. package/src/pages/AddressList.tsx +0 -24
  211. package/src/pages/BusinessProductsList.tsx +0 -81
  212. package/src/pages/BusinessesListing.tsx +0 -43
  213. package/src/pages/CartList.tsx +0 -49
  214. package/src/pages/Checkout.tsx +0 -101
  215. package/src/pages/ForgotPassword.tsx +0 -24
  216. package/src/pages/Help.tsx +0 -23
  217. package/src/pages/HelpAccountAndPayment.tsx +0 -23
  218. package/src/pages/HelpGuide.tsx +0 -23
  219. package/src/pages/HelpOrder.tsx +0 -23
  220. package/src/pages/Home.tsx +0 -36
  221. package/src/pages/IntroductoryTutorial.tsx +0 -170
  222. package/src/pages/Login.tsx +0 -47
  223. package/src/pages/MomentOption.tsx +0 -30
  224. package/src/pages/MultiCheckout.tsx +0 -31
  225. package/src/pages/MultiOrdersDetails.tsx +0 -27
  226. package/src/pages/MyOrders.tsx +0 -40
  227. package/src/pages/NetworkError.tsx +0 -24
  228. package/src/pages/NotFound.tsx +0 -22
  229. package/src/pages/OrderDetails.tsx +0 -25
  230. package/src/pages/ProductDetails.tsx +0 -55
  231. package/src/pages/Profile.tsx +0 -36
  232. package/src/pages/ReviewDriver.tsx +0 -30
  233. package/src/pages/ReviewOrder.tsx +0 -32
  234. package/src/pages/ReviewProducts.tsx +0 -30
  235. package/src/pages/Sessions.tsx +0 -22
  236. package/src/pages/Signup.tsx +0 -53
  237. package/src/pages/SpinnerLoader.tsx +0 -10
  238. package/src/pages/Splash.tsx +0 -21
@@ -11,6 +11,7 @@ import {
11
11
  useToast,
12
12
  useLanguage,
13
13
  useUtils,
14
+ useConfig
14
15
  } from 'ordering-components/native';
15
16
  import {
16
17
  CenterView,
@@ -23,6 +24,7 @@ import { LogoutButton } from '../LogoutButton';
23
24
  import { LanguageSelector } from '../LanguageSelector';
24
25
  import { UserFormDetailsUI } from '../UserFormDetails';
25
26
  import { DriverSchedule } from '../DriverSchedule'
27
+ import { PrinterSettings } from '../PrinterSettings'
26
28
  import ToggleSwitch from 'toggle-switch-react-native';
27
29
  import { UDWrapper } from '../UserFormDetails/styles';
28
30
  import {
@@ -39,7 +41,6 @@ import { NotFoundSource } from '../NotFoundSource';
39
41
  import AntDesignIcon from 'react-native-vector-icons/AntDesign'
40
42
  const ProfileUI = (props: ProfileParams) => {
41
43
  const {
42
- navigation,
43
44
  formState,
44
45
  isEdit,
45
46
  validationFields,
@@ -47,15 +48,16 @@ const ProfileUI = (props: ProfileParams) => {
47
48
  toggleIsEdit,
48
49
  cleanFormState,
49
50
  handleToggleAvalaibleStatusDriver,
50
- userState,
51
- isAvailableLoading,
52
- isAlsea
51
+ isAlsea,
52
+ isShowDriverStatus,
53
+ navigation
53
54
  } = props;
54
55
 
55
- const [{ user }] = useSession();
56
- const [state, t] = useLanguage();
56
+ const [{ user, sessionLoading }] = useSession();
57
+ const [, t] = useLanguage();
57
58
  const [, { showToast }] = useToast();
58
59
  const [{ optimizeImage }] = useUtils();
60
+ const [{ configs }] = useConfig()
59
61
  const { errors } = useForm();
60
62
  const theme = useTheme();
61
63
 
@@ -67,10 +69,11 @@ const ProfileUI = (props: ProfileParams) => {
67
69
  },
68
70
  });
69
71
  const [phoneUpdate, setPhoneUpdate] = useState(false);
72
+ const [userState, setUserState] = useState(props.userState)
70
73
  const [userPhoneNumber, setUserPhoneNumber] = useState<any>(null);
71
74
  const [phoneToShow, setPhoneToShow] = useState('');
72
75
  const [openModal, setOpenModal] = useState(false)
73
-
76
+ const allowDriverUpdateData = user?.level !== 4 || configs?.allow_driver_update_data?.value === "1"
74
77
  useEffect(() => {
75
78
  if (phoneInputData.phone.cellphone) {
76
79
  const codeNumberPhone = phoneInputData.phone.cellphone.slice(0, 3);
@@ -115,14 +118,15 @@ const ProfileUI = (props: ProfileParams) => {
115
118
  maxWidth: 200,
116
119
  includeBase64: true,
117
120
  },
118
- (response: any) => {
119
- if (response.didCancel) {
121
+ (image: any) => {
122
+ const response = image?.assets?.[0];
123
+ if (response?.didCancel) {
120
124
  console.log('User cancelled image picker');
121
- } else if (response.errorMessage) {
125
+ } else if (response?.errorMessage) {
122
126
  console.log('ImagePicker Error: ', response.errorMessage);
123
127
  showToast(ToastType.Error, response.errorMessage);
124
128
  } else {
125
- if (response.uri) {
129
+ if (response?.uri) {
126
130
  const url = `data:${response.type};base64,${response.base64}`;
127
131
  handleButtonUpdateClick(null, true, url);
128
132
  } else {
@@ -206,6 +210,22 @@ const ProfileUI = (props: ProfileParams) => {
206
210
  }
207
211
  }, [user?.country_phone_code]);
208
212
 
213
+ useEffect(() => {
214
+ setUserState({ ...userState, ...props.userState })
215
+ }, [props.userState])
216
+
217
+ useEffect(() => {
218
+ if (!user?.id) return
219
+
220
+ setUserState({
221
+ ...userState,
222
+ result: {
223
+ error: true,
224
+ result: user
225
+ }
226
+ })
227
+ }, [user, props.isFocused])
228
+
209
229
  const styles = StyleSheet.create({
210
230
  label: {
211
231
  color: theme.colors.textGray,
@@ -254,7 +274,7 @@ const ProfileUI = (props: ProfileParams) => {
254
274
  />
255
275
  )}
256
276
 
257
- {(formState?.loading || state?.loading) && !validationFields.error && (
277
+ {(formState?.loading || sessionLoading) && !validationFields.error && (
258
278
  <View
259
279
  style={{
260
280
  backgroundColor: theme.colors.backgroundLight,
@@ -325,7 +345,7 @@ const ProfileUI = (props: ProfileParams) => {
325
345
  </View>
326
346
  )}
327
347
 
328
- {!formState?.loading && !state?.loading && !validationFields.error && (
348
+ {!(formState?.loading || sessionLoading) && !validationFields.error && (
329
349
  <ScrollView showsVerticalScrollIndicator={false} style={{ flex: 1 }}>
330
350
  <CenterView>
331
351
  <OIcon
@@ -335,14 +355,15 @@ const ProfileUI = (props: ProfileParams) => {
335
355
  height={150}
336
356
  style={{ borderRadius: 7.2 }}
337
357
  />
338
-
339
- <OIconButton
340
- icon={theme.images.general.camera}
341
- borderColor={theme.colors.clear}
342
- iconStyle={{ width: 21, height: 21 }}
343
- style={{ maxWidth: 40 }}
344
- onClick={() => handleImagePicker()}
345
- />
358
+ {allowDriverUpdateData && (
359
+ <OIconButton
360
+ icon={theme.images.general.camera}
361
+ borderColor={theme.colors.clear}
362
+ iconStyle={{ width: 21, height: 21 }}
363
+ style={{ maxWidth: 40 }}
364
+ onClick={() => handleImagePicker()}
365
+ />
366
+ )}
346
367
  </CenterView>
347
368
 
348
369
  {user?.level === 4 && (
@@ -353,29 +374,33 @@ const ProfileUI = (props: ProfileParams) => {
353
374
  adjustsFontSizeToFit
354
375
  style={{ ...styles.label, paddingHorizontal: 0 }}>
355
376
  {t(
356
- 'AVAILABLE_TO_RECEIVE_ORDERS',
357
- 'Available to receive orders',
377
+ `${!isShowDriverStatus ? 'NOT_' : ''}AVAILABLE_TO_RECEIVE_ORDERS`,
378
+ `${!isShowDriverStatus ? 'You are not ' : ''}Available to receive orders`
358
379
  )}
359
380
  </OText>
360
381
  </View>
361
382
 
362
- {userState.loadingDriver ? (
363
- <ActivityIndicator size="small" color={theme.colors.primary} />
364
- ) : (
365
- <ToggleSwitch
366
- isOn={userState?.result?.result?.available}
367
- onColor={theme.colors.primary}
368
- offColor={theme.colors.offColor}
369
- size="small"
370
- onToggle={() =>
371
- handleToggleAvalaibleStatusDriver &&
372
- handleToggleAvalaibleStatusDriver(
373
- !userState?.result?.result?.available,
374
- )
375
- }
376
- disabled={userState?.loading}
377
- animationSpeed={200}
378
- />
383
+ {isShowDriverStatus && (
384
+ <>
385
+ {userState.loadingDriver ? (
386
+ <ActivityIndicator size="small" color={theme.colors.primary} />
387
+ ) : (
388
+ <ToggleSwitch
389
+ isOn={userState?.result?.result?.available}
390
+ onColor={theme.colors.primary}
391
+ offColor={theme.colors.offColor}
392
+ size="small"
393
+ onToggle={() =>
394
+ handleToggleAvalaibleStatusDriver &&
395
+ handleToggleAvalaibleStatusDriver(
396
+ !userState?.result?.result?.available,
397
+ )
398
+ }
399
+ disabled={userState?.loading}
400
+ animationSpeed={200}
401
+ />
402
+ )}
403
+ </>
379
404
  )}
380
405
  </EnabledStatusDriver>
381
406
  )}
@@ -461,6 +486,7 @@ const ProfileUI = (props: ProfileParams) => {
461
486
  handleCancelEdit={handleCancelEdit}
462
487
  toggleIsEdit={toggleIsEdit}
463
488
  isAlsea={isAlsea}
489
+ allowDriverUpdateData={allowDriverUpdateData}
464
490
  />
465
491
  </View>
466
492
  )}
@@ -478,9 +504,34 @@ const ProfileUI = (props: ProfileParams) => {
478
504
  />
479
505
  </EditButton>
480
506
  )}
481
- <Pressable style={{ marginBottom: 10 }} onPress={() => setOpenModal(true)}>
507
+ {!props.isBusinessApp ? (
508
+ <Pressable style={{ marginBottom: 10 }} onPress={() => setOpenModal(true)}>
509
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
510
+ <OText size={16}>{t('SCHEDULE', 'Schedule')}</OText>
511
+ <AntDesignIcon size={18} name='right' />
512
+ </View>
513
+ <View style={{
514
+ borderBottomColor: theme.colors.tabBar,
515
+ borderBottomWidth: 1,
516
+ marginTop: 10
517
+ }} />
518
+ </Pressable>
519
+ ) : (
520
+ <Pressable style={{ marginBottom: 10 }} onPress={() => setOpenModal(true)}>
521
+ <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
522
+ <OText size={16}>{t('PRINTER_SETTINGS', 'Printer Settings')}</OText>
523
+ <AntDesignIcon size={18} name='right' />
524
+ </View>
525
+ <View style={{
526
+ borderBottomColor: theme.colors.tabBar,
527
+ borderBottomWidth: 1,
528
+ marginTop: 10
529
+ }} />
530
+ </Pressable>
531
+ )}
532
+ <Pressable style={{ marginBottom: 10 }} onPress={() => navigation.navigate('Sessions')}>
482
533
  <View style={{ flexDirection: 'row', justifyContent: 'space-between' }}>
483
- <OText size={16}>{t('SCHEDULE', 'Schedule')}</OText>
534
+ <OText size={16}>{t('SESSIONS', 'Sessions')}</OText>
484
535
  <AntDesignIcon size={18} name='right' />
485
536
  </View>
486
537
  <View style={{
@@ -500,7 +551,11 @@ const ProfileUI = (props: ProfileParams) => {
500
551
  entireModal
501
552
  hideIcons
502
553
  >
503
- <DriverSchedule schedule={user?.schedule} />
554
+ {props.isBusinessApp ? (
555
+ <PrinterSettings onClose={() => setOpenModal(false)} />
556
+ ) : (
557
+ <DriverSchedule schedule={user?.schedule} />
558
+ )}
504
559
  </OModal>
505
560
  </ScrollView>
506
561
  )}
@@ -0,0 +1,171 @@
1
+ import React, { useState } from 'react'
2
+ import { useLanguage, useUtils, WebsocketStatus as WebsocketStatusController } from 'ordering-components/native'
3
+ import { TouchableOpacity, View, StyleSheet } from 'react-native'
4
+ import MaterialIcon from 'react-native-vector-icons/MaterialCommunityIcons';
5
+ import { useTheme } from 'styled-components/native'
6
+ import RNRestart from 'react-native-restart'
7
+ import { OModal, OButton, OText, OIcon } from '../shared'
8
+
9
+ import {
10
+ Container,
11
+ ModalContainer,
12
+ ModalTitle,
13
+ StatusItemWrapper,
14
+ StatusText
15
+ } from './styles'
16
+
17
+ const SocketStatusUI = (props: any) => {
18
+ const {
19
+ socketStatus,
20
+ connectedDate
21
+ } = props
22
+
23
+ const theme = useTheme()
24
+ const [, t] = useLanguage()
25
+ const [{ parseDate }] = useUtils()
26
+ const [openModal, setOpenModal] = useState(false)
27
+
28
+ const styles = StyleSheet.create({
29
+ btnBackArrow: {
30
+ borderWidth: 0,
31
+ width: 32,
32
+ height: 32,
33
+ tintColor: theme.colors.textGray,
34
+ backgroundColor: theme.colors.clear,
35
+ borderColor: theme.colors.clear,
36
+ shadowColor: theme.colors.clear,
37
+ paddingLeft: 0,
38
+ paddingRight: 0,
39
+ marginBottom: 30,
40
+ marginTop: 30
41
+ },
42
+ })
43
+
44
+ const getStatusColor = (status: number) => {
45
+ switch (status) {
46
+ case 0:
47
+ return '#FF9922';
48
+ case 1:
49
+ return '#00D27A';
50
+ case 2:
51
+ return '#E63757';
52
+ default:
53
+ return '#FF9922';
54
+ }
55
+ }
56
+
57
+ return (
58
+ <Container>
59
+ <TouchableOpacity
60
+ style={{
61
+ flexDirection: 'row',
62
+ alignItems: 'center',
63
+ justifyContent: 'center',
64
+ backgroundColor: theme.colors.inputChat,
65
+ borderRadius: 7.6,
66
+ marginVertical: 10,
67
+ paddingVertical: 10,
68
+ paddingHorizontal: 15,
69
+ }}
70
+ activeOpacity={0.6}
71
+ onPress={() => setOpenModal(true)}
72
+ >
73
+ <OText
74
+ style={{ color: theme.colors.backArrow, fontSize: 16, marginBottom: 0, lineHeight: 16 }}
75
+ >
76
+ {t('CONNECTION_STATUS_SHORT', 'Status')}
77
+ </OText>
78
+ <MaterialIcon
79
+ name='circle'
80
+ size={12}
81
+ color={getStatusColor(socketStatus)}
82
+ style={{ marginLeft: 8 }}
83
+ />
84
+ </TouchableOpacity>
85
+
86
+ <OModal
87
+ open={openModal}
88
+ onClose={() => setOpenModal(false)}
89
+ entireModal
90
+ customClose
91
+ >
92
+ <ModalContainer nestedScrollEnabled={true}>
93
+ <TouchableOpacity
94
+ onPress={() => setOpenModal(false)}
95
+ style={styles.btnBackArrow}
96
+ >
97
+ <OIcon src={theme.images.general.arrow_left} color={theme.colors.textGray} />
98
+ </TouchableOpacity>
99
+ <View>
100
+ <ModalTitle>{t('CONNECTION_STATUS', 'Connection status')}</ModalTitle>
101
+ <OText style={{ marginBottom: 20 }}>
102
+ {t('LAST_UPDATE', 'Last update')}: {parseDate(connectedDate)}
103
+ </OText>
104
+ <StatusItemWrapper>
105
+ <MaterialIcon
106
+ name='circle'
107
+ size={12}
108
+ color={getStatusColor(1)}
109
+ style={{ marginTop: 10, marginHorizontal: 8 }}
110
+ />
111
+ <View style={{ marginLeft: 16 }}>
112
+ <StatusText>{t('OK', 'Ok')}</StatusText>
113
+ <OText style={{ color: theme.colors.backArrow, fontSize: 14 }}>{t('WEBSOCKET_OK', 'The websocket works normally.')}</OText>
114
+ </View>
115
+ </StatusItemWrapper>
116
+ <StatusItemWrapper>
117
+ <MaterialIcon
118
+ name='circle'
119
+ size={12}
120
+ color={getStatusColor(0)}
121
+ style={{ marginTop: 10, marginHorizontal: 8 }}
122
+ />
123
+ <View style={{ marginLeft: 16 }}>
124
+ <StatusText>{t('CONNECTING', 'Connecting')}</StatusText>
125
+ <OText style={{ color: theme.colors.backArrow, fontSize: 14 }}>{t('WEBSOCKET_CONNECTING', 'The websocket is connecting.')}</OText>
126
+ </View>
127
+ </StatusItemWrapper>
128
+ <StatusItemWrapper>
129
+ <MaterialIcon
130
+ name='circle'
131
+ size={12}
132
+ color={getStatusColor(2)}
133
+ style={{ marginTop: 10, marginHorizontal: 8 }}
134
+ />
135
+ <View style={{ marginLeft: 16 }}>
136
+ <StatusText>{t('DISCONNECTED', 'Disconnected')}</StatusText>
137
+ <OText style={{ color: theme.colors.backArrow, fontSize: 14 }}>{t('WEBSOCKET_DISCONNECTED', 'The server is slow, please reload.')}</OText>
138
+ </View>
139
+ </StatusItemWrapper>
140
+
141
+ <View style={{ flexDirection: 'row', marginTop: 50 }}>
142
+ <OButton
143
+ onClick={() => setOpenModal(false)}
144
+ bgColor={theme.colors.white}
145
+ borderColor={theme.colors.primary}
146
+ textStyle={{ color: theme.colors.primary }}
147
+ style={{ borderRadius: 8, height: 48 }}
148
+ text={t('CLOSE', 'Close')}
149
+ />
150
+ <OButton
151
+ onClick={() => RNRestart.Restart()}
152
+ borderColor={theme.colors.primary}
153
+ textStyle={{ color: theme.colors.white }}
154
+ style={{ borderRadius: 8, marginLeft: 16, height: 48 }}
155
+ text={t('UPDATE', 'Update')}
156
+ />
157
+ </View>
158
+ </View>
159
+ </ModalContainer>
160
+ </OModal>
161
+ </Container>
162
+ )
163
+ }
164
+
165
+ export const WebsocketStatus = (props: any) => {
166
+ const socketProps = {
167
+ ...props,
168
+ UIComponent: SocketStatusUI
169
+ }
170
+ return <WebsocketStatusController {...socketProps} />
171
+ }
@@ -0,0 +1,28 @@
1
+ import styled from 'styled-components/native'
2
+
3
+ export const Container = styled.View`
4
+ display: flex;
5
+ flex-direction: column;
6
+ `
7
+ export const ModalContainer = styled.ScrollView`
8
+ padding: 0px 30px;
9
+ `
10
+ export const ModalTitle = styled.Text`
11
+ font-family: Poppins;
12
+ font-style: normal;
13
+ font-weight: bold;
14
+ font-size: 20px;
15
+ color: ${(props: any) => props.theme.colors.textGray};
16
+ margin-bottom: 10px;
17
+ `
18
+ export const StatusItemWrapper = styled.View`
19
+ flex-direction: row;
20
+ margin-bottom: 16px;
21
+ `
22
+ export const StatusText = styled.Text`
23
+ font-family: Poppins;
24
+ font-style: normal;
25
+ font-weight: 500;
26
+ font-size: 18px;
27
+ color: ${(props: any) => props.theme.colors.textGray};
28
+ `
@@ -64,6 +64,7 @@ interface Props extends TextInputProps {
64
64
  onSubmitEditing?: any;
65
65
  blurOnSubmit?: any;
66
66
  color?: any;
67
+ isValueSync?: boolean
67
68
  }
68
69
 
69
70
  const OInput = (props: Props): React.ReactElement => {
@@ -118,6 +119,7 @@ const OInput = (props: Props): React.ReactElement => {
118
119
  selectionColor={props.selectionColor}
119
120
  color={props.color}
120
121
  maxLength={props.maxLength || 1000}
122
+ value={props.isValueSync && props.value}
121
123
  />
122
124
 
123
125
  {props.iconRight && (
@@ -48,8 +48,8 @@ export const useLocation = () => {
48
48
  GeoLocation.getCurrentPosition(
49
49
  ({ coords }) => {
50
50
  resolve({
51
- latitude: coords.latitude,
52
- longitude: coords.longitude,
51
+ latitude: typeof coords.latitude === 'number' && !Number.isNaN(coords.latitude) ? coords.latitude : 0,
52
+ longitude: typeof coords.longitude === 'number' && !Number.isNaN(coords.longitude) ? coords.longitude : 0,
53
53
  speed: coords.speed,
54
54
  });
55
55
  },
@@ -63,9 +63,10 @@ export const useLocation = () => {
63
63
  watchId.current = GeoLocation.watchPosition(
64
64
  ({ coords }) => {
65
65
  if (!isMounted.current) return;
66
+ if (typeof coords.latitude !== 'number' || typeof coords.longitude !== 'number') return
66
67
  const location: Location = {
67
- latitude: coords.latitude,
68
- longitude: coords.longitude,
68
+ latitude: coords.latitude || 0,
69
+ longitude: coords.longitude || 0,
69
70
  speed: coords.speed,
70
71
  };
71
72
  setUserLocation(location);
@@ -57,6 +57,9 @@ export interface ProfileParams {
57
57
  showField?: any;
58
58
  isRequiredField?: any;
59
59
  isAlsea?: boolean;
60
+ isShowDriverStatus?: boolean;
61
+ isFocused?: boolean;
62
+ isBusinessApp?: boolean;
60
63
  }
61
64
 
62
65
  export interface AddressListParams {
@@ -172,6 +175,7 @@ export interface BusinessControllerParams {
172
175
  isBusinessOpen?: boolean;
173
176
  businessWillCloseSoonMinutes?: number;
174
177
  updateBusiness?: (id: any, value: any) => {};
178
+ navigation?: any;
175
179
  }
176
180
  export interface BusinessProductsListingParams {
177
181
  navigation?: any;
@@ -300,6 +304,7 @@ export interface OrdersOptionParams {
300
304
  filtered?: any;
301
305
  handleClickOrder?: any;
302
306
  orderGroupStatusCustom?: {
307
+ active?: Array<number>;
303
308
  pending?: Array<number>;
304
309
  inProgress?: Array<number>;
305
310
  completed?: Array<number>;
@@ -387,7 +392,7 @@ export interface OrderDetailsParams {
387
392
  urlToShare?: string;
388
393
  messages?: any;
389
394
  handleAssignDriver?: (id: any) => {};
390
- handleChangeOrderStatus?: (status: any) => {};
395
+ handleChangeOrderStatus?: (status: any, isAcceptOrReject: any) => {};
391
396
  order?: any;
392
397
  isFromRoot?: any;
393
398
  handleOrderRedirect?: () => {};
@@ -491,6 +496,7 @@ export interface FloatingButtonParams {
491
496
  firstColorCustom?: string;
492
497
  secondColorCustom?: string;
493
498
  paddingBottomIos?: any;
499
+ isHideRejectButtons?: boolean
494
500
  }
495
501
  export interface MomentOptionParams {
496
502
  navigation: any;
@@ -625,3 +631,11 @@ export interface OrderDetailsLogisticParams {
625
631
  orderAssingId: number,
626
632
  order: any
627
633
  }
634
+
635
+ export interface SessionsParams {
636
+ navigation: any,
637
+ sessionsList: any,
638
+ actionState: any,
639
+ handleDeleteSession: any,
640
+ handleDeleteAllSessions: any
641
+ }
@@ -146,6 +146,11 @@ export const transformCountryCode = (countryCode: number) => {
146
146
  return code?.countryCode;
147
147
  };
148
148
 
149
+ export const findExitingCode = (countryCode: string) => {
150
+ const code = CODES.find((code: any) => code.countryCode === (countryCode || '').toUpperCase())
151
+ return code?.countryCode
152
+ }
153
+
149
154
  /**
150
155
  * Function to check if a number is decimal or not
151
156
  * @param {*} value number to check if decimal or not
@@ -197,7 +197,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
197
197
  {isFarAway && (
198
198
  <FarAwayMessage style={styles.farAwayMsg}>
199
199
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
200
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
200
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
201
201
  </FarAwayMessage>
202
202
  )}
203
203
  {!auth && (
@@ -410,8 +410,7 @@ const LoginFormUI = (props: LoginParams) => {
410
410
  textInputProps={{
411
411
  returnKeyType: 'next',
412
412
  onSubmitEditing: () => inputRef?.current?.focus?.(),
413
- style: { borderWidth: 0, fontSize: 12 },
414
- maxLength: 10
413
+ style: { borderWidth: 0, fontSize: 12 }
415
414
  }}
416
415
  textWrapStyle={{ borderColor: theme.colors.clear, borderWidth: 0, height: 40, paddingStart: 0 }}
417
416
  />
@@ -155,7 +155,7 @@ const BusinessesListingUI = (props: BusinessesListingParams) => {
155
155
  {isFarAway && (
156
156
  <FarAwayMessage style={styles.farAwayMsg}>
157
157
  <Ionicons name='md-warning-outline' style={styles.iconStyle} />
158
- <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'You are far from this address')}</OText>
158
+ <OText size={12} numberOfLines={1} ellipsizeMode={'tail'} color={theme.colors.textNormal}>{t('YOU_ARE_FAR_FROM_ADDRESS', 'Your are far from this address')}</OText>
159
159
  </FarAwayMessage>
160
160
  )}
161
161
  <View style={styles.wrapperOrderOptions}>
@@ -50,6 +50,12 @@ const CheckoutUI = (props: any) => {
50
50
  }
51
51
  }, [cart])
52
52
 
53
+ useEffect(() => {
54
+ if (!cartState.loading && cart && !cart?.valid && cart?.status === 2) {
55
+ navigation?.canGoBack() && navigation.goBack()
56
+ }
57
+ }, [cart])
58
+
53
59
  return (
54
60
  <>
55
61
  <PaymentOptions
@@ -52,7 +52,7 @@ const LoginFormUI = (props: LoginParams) => {
52
52
  } = props;
53
53
 
54
54
  const theme = useTheme()
55
- const [{ configs }] = useConfig()
55
+ const [{ configs }, { refreshConfigs }] = useConfig()
56
56
  const [ordering, { setOrdering }] = useApi();
57
57
  const [, { showToast }] = useToast();
58
58
  const [, t] = useLanguage();
@@ -347,13 +347,16 @@ const LoginFormUI = (props: LoginParams) => {
347
347
  project: projectName
348
348
  })
349
349
  }
350
- if (isDeviceLoginEnabled) {
351
- props.handleChangeTab('device_code')
352
- }
353
350
  }, 1500)
354
351
  return () => clearTimeout(projectInputTimeout);
355
352
  }, [projectName, isDeviceLoginEnabled])
356
353
 
354
+ useEffect(() => {
355
+ if (ordering?.project) {
356
+ refreshConfigs()
357
+ }
358
+ }, [ordering?.project])
359
+
357
360
  const logo = (
358
361
  <LogoWrapper>
359
362
  <OIcon src={theme.images.logos.logotype} style={styles.logo} />