ordering-ui-react-native 0.22.2 → 0.22.3-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.
- package/package.json +6 -7
- package/src/DeliveryApp.tsx +43 -1
- package/src/components/BusinessesListing/index.tsx +1 -1
- package/src/components/StripeMethodForm/index.tsx +4 -2
- package/src/components/VerifyPhone/styles.tsx +1 -2
- package/src/context/OfflineActions/index.tsx +236 -0
- package/src/types/index.tsx +2 -1
- package/themes/business/index.tsx +2 -0
- package/themes/business/src/components/AcceptOrRejectOrder/index.tsx +9 -6
- package/themes/business/src/components/AcceptOrRejectOrder/styles.tsx +1 -0
- package/themes/business/src/components/BusinessController/index.tsx +8 -3
- package/themes/business/src/components/BusinessProductList/index.tsx +2 -1
- package/themes/business/src/components/Chat/index.tsx +15 -3
- package/themes/business/src/components/DriverMap/index.tsx +49 -27
- package/themes/business/src/components/FloatingButton/index.tsx +3 -2
- package/themes/business/src/components/GoogleMap/index.tsx +15 -8
- package/themes/business/src/components/LanguageSelector/index.tsx +2 -3
- package/themes/business/src/components/LanguageSelector/lang_country.json +515 -70
- package/themes/business/src/components/LogoutButton/index.tsx +1 -1
- package/themes/business/src/components/MapView/index.tsx +36 -17
- package/themes/business/src/components/NewOrderNotification/index.tsx +40 -27
- package/themes/business/src/components/OrderDetails/Business.tsx +54 -37
- package/themes/business/src/components/OrderDetails/Delivery.tsx +138 -55
- package/themes/business/src/components/OrderDetails/OrderContentComponent.tsx +125 -43
- package/themes/business/src/components/OrderDetails/OrderHeaderComponent.tsx +62 -24
- package/themes/business/src/components/OrderDetails/styles.tsx +39 -3
- package/themes/business/src/components/OrderDetails/usePrinterCommands.tsx +138 -64
- package/themes/business/src/components/OrderDetailsLogistic/index.tsx +3 -2
- package/themes/business/src/components/OrderSummary/index.tsx +210 -65
- package/themes/business/src/components/OrdersListManager/index.tsx +13 -1
- package/themes/business/src/components/OrdersOption/index.tsx +217 -156
- package/themes/business/src/components/PhoneInputNumber/index.tsx +8 -5
- package/themes/business/src/components/PreviousMessages/index.tsx +26 -3
- package/themes/business/src/components/PreviousOrders/OrderItem.tsx +39 -16
- package/themes/business/src/components/PreviousOrders/index.tsx +76 -66
- package/themes/business/src/components/PrinterEdition/MessageAlert.tsx +33 -0
- package/themes/business/src/components/PrinterEdition/index.tsx +431 -0
- package/themes/business/src/components/PrinterEdition/printerList.tsx +23 -0
- package/themes/business/src/components/PrinterEdition/styles.tsx +61 -0
- package/themes/business/src/components/PrinterSettings/index.tsx +173 -154
- package/themes/business/src/components/PrinterSettings/styles.tsx +20 -0
- package/themes/business/src/components/ReviewCustomer/index.tsx +2 -0
- package/themes/business/src/components/StoresList/index.tsx +2 -2
- package/themes/business/src/components/UserProfileForm/index.tsx +16 -17
- package/themes/business/src/components/WebsocketStatus/index.tsx +2 -2
- package/themes/business/src/components/shared/OTextarea.tsx +8 -9
- package/themes/business/src/layouts/SafeAreaContainer.tsx +35 -19
- package/themes/business/src/types/index.tsx +14 -5
- package/themes/business/src/utils/index.tsx +25 -1
- package/themes/doordash/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/doordash/src/components/LoginForm/index.tsx +1 -2
- package/themes/instacart/src/components/BusinessesListing/index.tsx +1 -1
- package/themes/kiosk/src/components/Checkout/index.tsx +6 -0
- package/themes/kiosk/src/components/NavBar/index.tsx +14 -14
- package/themes/kiosk/src/components/OptionCard/index.tsx +1 -1
- package/themes/kiosk/src/components/OrderTypeCardSelector/index.tsx +8 -10
- package/themes/kiosk/src/components/shared/OButton.tsx +5 -18
- package/themes/original/index.tsx +11 -0
- package/themes/original/src/components/AddressForm/index.tsx +32 -17
- package/themes/original/src/components/AddressList/index.tsx +8 -7
- package/themes/original/src/components/AnalyticsSegment/index.tsx +6 -6
- package/themes/original/src/components/AppleLogin/index.tsx +4 -4
- package/themes/original/src/components/BusinessBasicInformation/index.tsx +5 -8
- package/themes/original/src/components/BusinessController/index.tsx +5 -5
- package/themes/original/src/components/BusinessItemAccordion/index.tsx +13 -5
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchFooter.tsx +2 -3
- package/themes/original/src/components/BusinessListingSearch/BusinessSearchHeader.tsx +1 -3
- package/themes/original/src/components/BusinessListingSearch/index.tsx +1 -2
- package/themes/original/src/components/BusinessPreorder/index.tsx +44 -32
- package/themes/original/src/components/BusinessProductsList/SubcategoriesComponent/index.tsx +73 -70
- package/themes/original/src/components/BusinessProductsList/index.tsx +6 -7
- package/themes/original/src/components/BusinessProductsList/styles.tsx +0 -3
- package/themes/original/src/components/BusinessProductsListing/index.tsx +18 -6
- package/themes/original/src/components/BusinessTypeFilter/index.tsx +9 -8
- package/themes/original/src/components/BusinessesListing/Layout/Appointment/index.tsx +2 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/index.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/Layout/Original/styles.tsx +1 -1
- package/themes/original/src/components/BusinessesListing/index.tsx +0 -1
- package/themes/original/src/components/Cart/index.tsx +38 -14
- package/themes/original/src/components/CartContent/index.tsx +2 -4
- package/themes/original/src/components/Checkout/index.tsx +112 -58
- package/themes/original/src/components/CitiesControl/index.tsx +0 -3
- package/themes/original/src/components/CouponControl/index.tsx +1 -3
- package/themes/original/src/components/DriverTips/index.tsx +1 -3
- package/themes/original/src/components/Favorite/index.tsx +1 -5
- package/themes/original/src/components/FavoriteList/index.tsx +0 -1
- package/themes/original/src/components/ForgotPasswordForm/index.tsx +5 -7
- package/themes/original/src/components/GiftCard/GiftCardUI/index.tsx +15 -17
- package/themes/original/src/components/GiftCard/PurchaseGiftCard/index.tsx +3 -7
- package/themes/original/src/components/GiftCard/RedeemGiftCard/index.tsx +24 -32
- package/themes/original/src/components/GiftCard/SendGiftCard/index.tsx +7 -9
- package/themes/original/src/components/GiftCard/VerticalGiftCardOrdersLayout/index.tsx +11 -12
- package/themes/original/src/components/GoogleMap/index.tsx +39 -18
- package/themes/original/src/components/Help/index.tsx +2 -0
- package/themes/original/src/components/HighestRatedBusinesses/index.tsx +1 -1
- package/themes/original/src/components/Home/index.tsx +3 -11
- package/themes/original/src/components/LoginForm/Otp/index.tsx +0 -3
- package/themes/original/src/components/LoginForm/index.tsx +4 -7
- package/themes/original/src/components/MessageListing/index.tsx +2 -1
- package/themes/original/src/components/Messages/index.tsx +29 -17
- package/themes/original/src/components/MomentOption/TimeListItem.tsx +56 -0
- package/themes/original/src/components/MomentOption/index.tsx +79 -56
- package/themes/original/src/components/MomentSelector/index.tsx +1 -1
- package/themes/original/src/components/MultiCartsPaymethodsAndWallets/index.tsx +7 -3
- package/themes/original/src/components/MultiCheckout/index.tsx +55 -27
- package/themes/original/src/components/MultiOrdersDetails/index.tsx +1 -0
- package/themes/original/src/components/MyOrders/index.tsx +2 -2
- package/themes/original/src/components/NavBar/index.tsx +7 -4
- package/themes/original/src/components/NetworkError/index.tsx +0 -5
- package/themes/original/src/components/NotFoundSource/index.tsx +0 -3
- package/themes/original/src/components/OrderDetails/OrderEta.tsx +4 -3
- package/themes/original/src/components/OrderDetails/OrderHistory.tsx +13 -10
- package/themes/original/src/components/OrderDetails/index.tsx +44 -21
- package/themes/original/src/components/OrderDetails/styles.tsx +0 -1
- package/themes/original/src/components/OrderProgress/index.tsx +5 -4
- package/themes/original/src/components/OrderSummary/index.tsx +29 -10
- package/themes/original/src/components/OrderTypeSelector/index.tsx +7 -6
- package/themes/original/src/components/OrdersOption/index.tsx +3 -6
- package/themes/original/src/components/PaymentOptionStripe/index.tsx +0 -5
- package/themes/original/src/components/PaymentOptionWallet/index.tsx +56 -56
- package/themes/original/src/components/PaymentOptions/index.tsx +10 -8
- package/themes/original/src/components/PlaceSpot/index.tsx +1 -3
- package/themes/original/src/components/PreviousOrders/index.tsx +1 -2
- package/themes/original/src/components/ProductForm/ActionButton.tsx +17 -20
- package/themes/original/src/components/ProductForm/index.tsx +107 -102
- package/themes/original/src/components/ProductItemAccordion/index.tsx +51 -44
- package/themes/original/src/components/ProductItemAccordion/styles.tsx +3 -4
- package/themes/original/src/components/ProductOptionSubOption/index.tsx +16 -8
- package/themes/original/src/components/ProfessionalProfile/index.tsx +4 -5
- package/themes/original/src/components/Promotions/index.tsx +6 -9
- package/themes/original/src/components/ReviewDriver/index.tsx +1 -1
- package/themes/original/src/components/ReviewOrder/index.tsx +2 -2
- package/themes/original/src/components/ReviewProducts/index.tsx +1 -1
- package/themes/original/src/components/ReviewTrigger/index.tsx +2 -2
- package/themes/original/src/components/ServiceForm/index.tsx +52 -54
- package/themes/original/src/components/Sessions/index.tsx +3 -3
- package/themes/original/src/components/SignupForm/index.tsx +86 -78
- package/themes/original/src/components/SingleOrderCard/index.tsx +6 -4
- package/themes/original/src/components/SingleProductCard/index.tsx +3 -4
- package/themes/original/src/components/SingleProductCard/styles.tsx +0 -3
- package/themes/original/src/components/StripeCardForm/index.tsx +0 -3
- package/themes/original/src/components/StripeCardsList/index.tsx +10 -3
- package/themes/original/src/components/StripeElementsForm/index.tsx +76 -62
- package/themes/original/src/components/StripeElementsForm/naked.tsx +48 -1
- package/themes/original/src/components/StripeRedirectForm/index.tsx +0 -3
- package/themes/original/src/components/TaxInformation/index.tsx +3 -2
- package/themes/original/src/components/UpsellingProducts/UpsellingContent.tsx +10 -7
- package/themes/original/src/components/UpsellingProducts/UpsellingLayout.tsx +8 -3
- package/themes/original/src/components/UserDetails/index.tsx +17 -16
- package/themes/original/src/components/UserFormDetails/index.tsx +159 -133
- package/themes/original/src/components/UserProfile/index.tsx +9 -1
- package/themes/original/src/components/UserVerification/index.tsx +14 -4
- package/themes/original/src/components/Wallets/index.tsx +6 -3
- package/themes/original/src/components/WebsocketStatus/index.tsx +1 -4
- package/themes/original/src/components/shared/OAlert.tsx +2 -1
- package/themes/original/src/components/shared/OButton.tsx +5 -4
- package/themes/original/src/components/shared/OInput.tsx +4 -8
- package/themes/original/src/components/shared/OModal.tsx +7 -2
- package/themes/original/src/types/index.tsx +5 -1
- package/themes/original/src/utils/index.tsx +30 -1
- package/themes/uber-eats/src/components/BusinessesListing/index.tsx +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React from 'react'
|
|
2
|
+
import { Pressable } from 'react-native'
|
|
3
|
+
import {
|
|
4
|
+
TimeItem,
|
|
5
|
+
} from './styles'
|
|
6
|
+
import { OIcon, OText } from '../shared'
|
|
7
|
+
import { useTheme } from 'styled-components/native'
|
|
8
|
+
|
|
9
|
+
const timeListItemPropsAreEqual = (prevProps: any, nextProps: any) => {
|
|
10
|
+
return JSON.stringify(prevProps.time) === JSON.stringify(nextProps.time) &&
|
|
11
|
+
JSON.stringify(prevProps.selectedTime) === JSON.stringify(nextProps.selectedTime) &&
|
|
12
|
+
JSON.stringify(prevProps.cateringPreorder) === JSON.stringify(nextProps.cateringPreorder)
|
|
13
|
+
}
|
|
14
|
+
export const TimeListItem = React.memo((props : any) => {
|
|
15
|
+
const {
|
|
16
|
+
time,
|
|
17
|
+
selectedTime,
|
|
18
|
+
handleChangeTimeSelected,
|
|
19
|
+
cateringPreorder
|
|
20
|
+
} = props
|
|
21
|
+
const theme = useTheme()
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Pressable onPress={() => handleChangeTimeSelected(time.value)}>
|
|
25
|
+
<TimeItem
|
|
26
|
+
active={selectedTime === time.value}
|
|
27
|
+
cateringPreorder={cateringPreorder}
|
|
28
|
+
>
|
|
29
|
+
{cateringPreorder && (
|
|
30
|
+
<>
|
|
31
|
+
{selectedTime === time.value ? (
|
|
32
|
+
<OIcon
|
|
33
|
+
src={theme.images.general.option_checked}
|
|
34
|
+
width={18}
|
|
35
|
+
style={{ marginEnd: 24, bottom: 2 }}
|
|
36
|
+
/>
|
|
37
|
+
) : (
|
|
38
|
+
<OIcon
|
|
39
|
+
src={theme.images.general.option_normal}
|
|
40
|
+
width={18}
|
|
41
|
+
style={{ marginEnd: 24, bottom: 2 }}
|
|
42
|
+
/>
|
|
43
|
+
)}
|
|
44
|
+
</>
|
|
45
|
+
)}
|
|
46
|
+
<OText
|
|
47
|
+
size={cateringPreorder ? 18 : 16}
|
|
48
|
+
color={selectedTime === time.value ? theme.colors.primary : theme.colors.textNormal}
|
|
49
|
+
style={{
|
|
50
|
+
lineHeight: 24
|
|
51
|
+
}}
|
|
52
|
+
>{time.text} {cateringPreorder && `- ${time.endText}`}</OText>
|
|
53
|
+
</TimeItem>
|
|
54
|
+
</Pressable>
|
|
55
|
+
)
|
|
56
|
+
}, timeListItemPropsAreEqual)
|
|
@@ -29,7 +29,8 @@ import {
|
|
|
29
29
|
TimeItem
|
|
30
30
|
} from './styles';
|
|
31
31
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
32
|
-
import {
|
|
32
|
+
import { monthsEnum, setLocalMoment } from '../../utils';
|
|
33
|
+
import { TimeListItem } from './TimeListItem';
|
|
33
34
|
|
|
34
35
|
const MomentOptionUI = (props: MomentOptionParams) => {
|
|
35
36
|
const {
|
|
@@ -161,6 +162,8 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
161
162
|
const [datesWhitelist, setDateWhitelist] = useState<any>([{ start: null, end: null }])
|
|
162
163
|
const [selectDate, setSelectedDate] = useState<any>(dateSelected)
|
|
163
164
|
const [timeList, setTimeList] = useState<any>(hoursList)
|
|
165
|
+
const [nextTime, setNextTime] = useState(null)
|
|
166
|
+
|
|
164
167
|
const goToBack = () => navigation?.canGoBack() && navigation.goBack();
|
|
165
168
|
|
|
166
169
|
const _handleAsap = () => {
|
|
@@ -256,7 +259,7 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
256
259
|
setDateWhitelist([{ start: _minDate, end: _maxDate }])
|
|
257
260
|
}
|
|
258
261
|
}
|
|
259
|
-
}, [JSON.stringify(datesList), preorderMinimumDays, preorderMaximumDays
|
|
262
|
+
}, [JSON.stringify(datesList), preorderMinimumDays, preorderMaximumDays])
|
|
260
263
|
|
|
261
264
|
useEffect(() => {
|
|
262
265
|
if (dateSelected) {
|
|
@@ -278,13 +281,21 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
278
281
|
let _timeLists = []
|
|
279
282
|
const schedule = business && getActualSchedule()
|
|
280
283
|
if (!schedule && business) {
|
|
284
|
+
setTimeList([])
|
|
281
285
|
return
|
|
282
286
|
}
|
|
283
287
|
_timeLists = hoursList
|
|
284
|
-
.filter(hour =>
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
+
.filter(hour => {
|
|
289
|
+
return (Object.keys(business || {})?.length === 0 || schedule?.lapses?.some((lapse: any) => {
|
|
290
|
+
const openHour = lapse.open.hour < 10 ? `0${lapse.open.hour}` : lapse.open.hour
|
|
291
|
+
const openMinute = lapse.open.minute < 10 ? `0${lapse.open.minute}` : lapse.open.minute
|
|
292
|
+
const closeHour = lapse.close.hour < 10 ? `0${lapse.close.hour}` : lapse.close.hour
|
|
293
|
+
const closeMinute = lapse.close.minute < 10 ? `0${lapse.close.minute}` : lapse.close.minute
|
|
294
|
+
return moment(dateSelected + ` ${hour.startTime}`) >= moment(dateSelected + ` ${openHour}:${openMinute}`).add(preorderLeadTime, 'minutes') && moment(dateSelected + ` ${hour.endTime}`) <= moment(dateSelected + ` ${closeHour}:${closeMinute}`)
|
|
295
|
+
})) &&
|
|
296
|
+
(moment(dateSelected + ` ${hour.startTime}`) < moment(dateSelected + ` ${hour.endTime}`)) &&
|
|
297
|
+
(moment().add(preorderLeadTime, 'minutes') < moment(dateSelected + ` ${hour.startTime}`) || !cateringPreorder)
|
|
298
|
+
})
|
|
288
299
|
.map(hour => {
|
|
289
300
|
return {
|
|
290
301
|
value: hour.startTime,
|
|
@@ -321,7 +332,28 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
321
332
|
}
|
|
322
333
|
}))
|
|
323
334
|
}
|
|
324
|
-
}, [dateSelected,
|
|
335
|
+
}, [dateSelected, hoursList?.length, JSON.stringify(datesWhitelist), JSON.stringify(business)])
|
|
336
|
+
|
|
337
|
+
useEffect(() => {
|
|
338
|
+
setLocalMoment(moment, t)
|
|
339
|
+
}, [])
|
|
340
|
+
|
|
341
|
+
useEffect(() => {
|
|
342
|
+
if (preorderMinimumDays === 0 && preorderLeadTime === 0) return
|
|
343
|
+
const isToday = dateSelected === moment().format('YYYY-MM-DD')
|
|
344
|
+
if (isCart && isToday && !orderState?.loading && timeList?.length > 0) {
|
|
345
|
+
setNextTime(timeList?.[0] ?? null)
|
|
346
|
+
}
|
|
347
|
+
}, [timeList?.length])
|
|
348
|
+
|
|
349
|
+
useEffect(() => {
|
|
350
|
+
if (nextTime?.value && timeList?.length > 0 && isCart && !orderState?.loading && !(preorderMinimumDays === 0 && preorderLeadTime === 0)) {
|
|
351
|
+
const notime = timeList?.filter((_: any, i: number) => i !== 0)?.find?.((time: any) => time?.value === timeSelected)
|
|
352
|
+
if (!notime) {
|
|
353
|
+
handleChangeTime(nextTime?.value)
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
}, [nextTime?.value])
|
|
325
357
|
|
|
326
358
|
return (
|
|
327
359
|
<>
|
|
@@ -395,26 +427,20 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
395
427
|
{selectDate && datesWhitelist[0]?.start !== null && (
|
|
396
428
|
<CalendarStrip
|
|
397
429
|
scrollable
|
|
398
|
-
style={styles.calendar}
|
|
399
|
-
calendarHeaderContainerStyle={styles.calendarHeaderContainer}
|
|
400
|
-
calendarHeaderStyle={styles.calendarHeader}
|
|
401
|
-
dateNumberStyle={styles.dateNumber}
|
|
402
|
-
dateNameStyle={styles.dateName}
|
|
403
|
-
iconContainer={{ flex: 0.1 }}
|
|
404
|
-
highlightDateNameStyle={styles.highlightDateName}
|
|
405
|
-
highlightDateNumberStyle={styles.highlightDateNumber}
|
|
406
|
-
dayContainerStyle={{ height: '100%' }}
|
|
407
|
-
highlightDateContainerStyle={{ height: '100%' }}
|
|
408
430
|
calendarHeaderFormat='MMMM, YYYY'
|
|
409
431
|
iconStyle={{ borderWidth: 1 }}
|
|
410
432
|
selectedDate={dateSelected}
|
|
411
433
|
datesWhitelist={datesWhitelist}
|
|
434
|
+
highlightDateNumberStyle={styles.highlightDateNumber}
|
|
435
|
+
highlightDateNameStyle={styles.highlightDateName}
|
|
412
436
|
minDate={moment()}
|
|
413
437
|
maxDate={cateringPreorder ? moment().add(preorderMaximumDays, 'days') : undefined}
|
|
414
438
|
disabledDateNameStyle={styles.disabledDateName}
|
|
415
439
|
disabledDateNumberStyle={styles.disabledDateNumber}
|
|
416
440
|
disabledDateOpacity={0.6}
|
|
417
|
-
|
|
441
|
+
dateNumberStyle={styles.dateNumber}
|
|
442
|
+
dateNameStyle={styles.dateName}
|
|
443
|
+
onDateSelected={(date: any) => onSelectDate(date)}
|
|
418
444
|
leftSelector={<LeftSelector />}
|
|
419
445
|
rightSelector={<RightSelector />}
|
|
420
446
|
/>
|
|
@@ -422,44 +448,34 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
422
448
|
</View>
|
|
423
449
|
)}
|
|
424
450
|
<TimeListWrapper nestedScrollEnabled={true} cateringPreorder={cateringPreorder}>
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
<
|
|
429
|
-
|
|
451
|
+
{timeList?.length > 0 ? (
|
|
452
|
+
<TimeContentWrapper>
|
|
453
|
+
{timeList.map((time: any, i: number) => (
|
|
454
|
+
<TimeListItem
|
|
455
|
+
key={i}
|
|
456
|
+
time={time}
|
|
457
|
+
selectedTime={selectedTime}
|
|
458
|
+
handleChangeTimeSelected={handleChangeTimeSelected}
|
|
430
459
|
cateringPreorder={cateringPreorder}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
size={cateringPreorder ? 18 : 16}
|
|
451
|
-
color={selectedTime === time.value ? theme.colors.primary : theme.colors.textNormal}
|
|
452
|
-
style={{
|
|
453
|
-
lineHeight: 24
|
|
454
|
-
}}
|
|
455
|
-
>{time.text} {cateringPreorder && `- ${time.endText}`}</OText>
|
|
456
|
-
</TimeItem>
|
|
457
|
-
</Pressable>
|
|
458
|
-
))}
|
|
459
|
-
{timeList.length % 3 === 2 && (
|
|
460
|
-
<TimeItem style={{ backgroundColor: 'transparent' }} />
|
|
461
|
-
)}
|
|
462
|
-
</TimeContentWrapper>
|
|
460
|
+
/>
|
|
461
|
+
))}
|
|
462
|
+
{timeList.length % 3 === 2 && (
|
|
463
|
+
<TimeItem style={{ backgroundColor: 'transparent' }} />
|
|
464
|
+
)}
|
|
465
|
+
</TimeContentWrapper>
|
|
466
|
+
) : (
|
|
467
|
+
<OText
|
|
468
|
+
size={16}
|
|
469
|
+
style={{
|
|
470
|
+
fontWeight: '600',
|
|
471
|
+
lineHeight: 24,
|
|
472
|
+
marginBottom: 12,
|
|
473
|
+
textAlign: 'center'
|
|
474
|
+
}}
|
|
475
|
+
>
|
|
476
|
+
{t('ERROR_ADD_PRODUCT_BUSINESS_CLOSED', 'The business is closed at the moment')}
|
|
477
|
+
</OText>
|
|
478
|
+
)}
|
|
463
479
|
</TimeListWrapper>
|
|
464
480
|
</OrderTimeWrapper>
|
|
465
481
|
)}
|
|
@@ -468,7 +484,14 @@ const MomentOptionUI = (props: MomentOptionParams) => {
|
|
|
468
484
|
</Container>
|
|
469
485
|
{!isCart && !cateringPreorder && (
|
|
470
486
|
<View style={{ position: 'absolute', bottom: bottom, paddingBottom: 20, paddingHorizontal: 20, backgroundColor: 'white', width: '100%' }}>
|
|
471
|
-
<OButton
|
|
487
|
+
<OButton
|
|
488
|
+
onClick={() => handleChangeMoment()}
|
|
489
|
+
isDisabled={!selectedTime}
|
|
490
|
+
text={t('CONTINUE', 'Continue')}
|
|
491
|
+
style={{ borderRadius: 7.6, height: 44, shadowOpacity: 0 }}
|
|
492
|
+
textStyle={{ fontSize: 14 }}
|
|
493
|
+
showNextIcon
|
|
494
|
+
/>
|
|
472
495
|
</View>
|
|
473
496
|
)}
|
|
474
497
|
</>
|
|
@@ -51,7 +51,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
51
51
|
const { confirmApplePayPayment } = useApplePay()
|
|
52
52
|
|
|
53
53
|
const [addCardOpen, setAddCardOpen] = useState({ stripe: false, stripeConnect: false });
|
|
54
|
-
|
|
54
|
+
const [newCardAdded, setNewCardAdded] = useState(null)
|
|
55
55
|
const isWalletCashEnabled = configs?.wallet_cash_enabled?.value === '1'
|
|
56
56
|
const isWalletPointsEnabled = configs?.wallet_credit_point_enabled?.value === '1'
|
|
57
57
|
|
|
@@ -223,6 +223,8 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
223
223
|
handlePaymethodDataChange={handlePaymethodDataChange}
|
|
224
224
|
clientSecret={props.clientSecret}
|
|
225
225
|
onPaymentChange={handlePaymethodDataChange}
|
|
226
|
+
newCardAdded={newCardAdded}
|
|
227
|
+
addNewCardAsDefault
|
|
226
228
|
/>
|
|
227
229
|
</View>
|
|
228
230
|
)}
|
|
@@ -233,6 +235,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
233
235
|
toSave
|
|
234
236
|
businessId={businessIds[0]}
|
|
235
237
|
businessIds={businessIds}
|
|
238
|
+
businessNames={openCarts?.map?.((cart: any) => cart?.business?.name)}
|
|
236
239
|
publicKey={paymethodSelected?.data?.publishable}
|
|
237
240
|
requirements={props.clientSecret}
|
|
238
241
|
handleSource={handlePaymethodDataChange}
|
|
@@ -306,7 +309,7 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
306
309
|
</>
|
|
307
310
|
)}
|
|
308
311
|
|
|
309
|
-
|
|
312
|
+
<OModal
|
|
310
313
|
entireModal
|
|
311
314
|
title={t('ADD_CREDIT_OR_DEBIT_CARD', 'Add credit or debit card')}
|
|
312
315
|
open={addCardOpen.stripe}
|
|
@@ -326,10 +329,11 @@ const MultiCartsPaymethodsAndWalletsUI = (props: any) => {
|
|
|
326
329
|
publicKey={paymethodSelected?.data?.publishable}
|
|
327
330
|
requirements={props.clientSecret}
|
|
328
331
|
onSelectCard={handlePaymethodDataChange}
|
|
332
|
+
setNewCardAdded={setNewCardAdded}
|
|
329
333
|
onCancel={() => setAddCardOpen({ ...addCardOpen, stripe: false })}
|
|
330
334
|
/>
|
|
331
335
|
</KeyboardAvoidingView>
|
|
332
|
-
</OModal>
|
|
336
|
+
</OModal>
|
|
333
337
|
</PMContainer>
|
|
334
338
|
)
|
|
335
339
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useState, useEffect, useCallback } from 'react'
|
|
1
|
+
import React, { useState, useEffect, useCallback, useMemo } from 'react'
|
|
2
2
|
import {
|
|
3
3
|
useLanguage,
|
|
4
4
|
useConfig,
|
|
@@ -70,7 +70,8 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
70
70
|
walletState,
|
|
71
71
|
onNavigationRedirectReplace,
|
|
72
72
|
merchantId,
|
|
73
|
-
cartsInvalid
|
|
73
|
+
cartsInvalid,
|
|
74
|
+
checkoutFieldsState
|
|
74
75
|
} = props
|
|
75
76
|
|
|
76
77
|
const theme = useTheme();
|
|
@@ -96,8 +97,9 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
96
97
|
const [{ parsePrice, parseDate }] = useUtils();
|
|
97
98
|
const [{ options, carts, loading }, { confirmCart }] = useOrder();
|
|
98
99
|
const [validationFields] = useValidationFields();
|
|
99
|
-
const [{ user }, { login }] = useSession()
|
|
100
|
+
const [{ user, loading: userLoading }, { login }] = useSession()
|
|
100
101
|
|
|
102
|
+
const notFields = ['coupon', 'driver_tip', 'mobile_phone', 'address', 'zipcode', 'address_notes', 'comments']
|
|
101
103
|
const configTypes = configs?.order_types_allowed?.value.split('|').map((value: any) => Number(value)) || []
|
|
102
104
|
const isPreOrder = configs?.preorder_status_enabled?.value === '1'
|
|
103
105
|
const isMultiDriverTips = configs?.checkout_multi_business_enabled?.value === '1'
|
|
@@ -121,6 +123,7 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
121
123
|
|
|
122
124
|
const creditPointGeneralPlan = loyaltyPlansState?.result?.find((loyal: any) => loyal.type === 'credit_point')
|
|
123
125
|
const loyalBusinessAvailable = creditPointGeneralPlan?.businesses?.filter((b: any) => b.accumulates) ?? []
|
|
126
|
+
const checkoutFields = useMemo(() => checkoutFieldsState?.fields?.filter((field : any) => field.order_type_id === options?.type), [checkoutFieldsState, options])
|
|
124
127
|
|
|
125
128
|
const accumulationRateBusiness = (businessId: number) => {
|
|
126
129
|
const value = loyalBusinessAvailable?.find((loyal: any) => loyal.business_id === businessId)?.accumulation_rate ?? 0
|
|
@@ -169,35 +172,55 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
169
172
|
|
|
170
173
|
const checkValidationFields = () => {
|
|
171
174
|
setUserErrors([])
|
|
172
|
-
const errors = []
|
|
173
|
-
const
|
|
174
|
-
const _requiredFields:
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
175
|
+
const errors: Array<string> = []
|
|
176
|
+
const userSelected = user
|
|
177
|
+
const _requiredFields: Array<string> = []
|
|
178
|
+
Object.values(checkoutFieldsState?.fields).map((field: any) => {
|
|
179
|
+
if (options?.type === field?.order_type_id &&
|
|
180
|
+
field?.enabled &&
|
|
181
|
+
field?.required &&
|
|
182
|
+
!notFields.includes(field?.validation_field?.code)
|
|
183
|
+
) {
|
|
184
|
+
if (userSelected && !userSelected[field?.validation_field?.code]) {
|
|
185
|
+
_requiredFields.push(field?.validation_field?.code)
|
|
180
186
|
}
|
|
181
187
|
}
|
|
182
188
|
})
|
|
183
|
-
|
|
189
|
+
const mobilePhoneField: any = Object.values(checkoutFieldsState?.fields)?.find((field: any) => field?.order_type_id === options?.type && field?.validation_field?.code === 'mobile_phone')
|
|
184
190
|
if (
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
191
|
+
userSelected &&
|
|
192
|
+
!userSelected?.cellphone &&
|
|
193
|
+
((mobilePhoneField?.enabled &&
|
|
194
|
+
mobilePhoneField?.required) ||
|
|
188
195
|
configs?.verification_phone_required?.value === '1')
|
|
189
196
|
) {
|
|
190
197
|
_requiredFields.push('cellphone')
|
|
191
198
|
}
|
|
192
199
|
setRequiredFields(_requiredFields)
|
|
193
200
|
|
|
194
|
-
if (phoneUpdate) {
|
|
195
|
-
errors.push(t('NECESSARY_UPDATE_COUNTRY_PHONE_CODE', 'It is necessary to update your phone number'))
|
|
196
|
-
}
|
|
197
|
-
|
|
198
201
|
setUserErrors(errors)
|
|
199
202
|
}
|
|
200
203
|
|
|
204
|
+
const checkGuestValidationFields = () => {
|
|
205
|
+
const userSelected = user
|
|
206
|
+
const _requiredFields = checkoutFieldsState?.fields
|
|
207
|
+
.filter((field) => (field?.order_type_id === options?.type) && field?.enabled && field?.required_with_guest &&
|
|
208
|
+
!notFields.includes(field?.validation_field?.code) &&
|
|
209
|
+
userSelected && !userSelected[field?.validation_field?.code])
|
|
210
|
+
const requiredFieldsCode = _requiredFields.map((item) => item?.validation_field?.code)
|
|
211
|
+
const guestCheckoutCellPhone = checkoutFieldsState?.fields?.find((field) => field.order_type_id === options?.type && field?.validation_field?.code === 'mobile_phone')
|
|
212
|
+
if (
|
|
213
|
+
userSelected &&
|
|
214
|
+
!userSelected?.cellphone &&
|
|
215
|
+
((guestCheckoutCellPhone?.enabled &&
|
|
216
|
+
guestCheckoutCellPhone?.required_with_guest) ||
|
|
217
|
+
configs?.verification_phone_required?.value === '1')
|
|
218
|
+
) {
|
|
219
|
+
requiredFieldsCode.push('cellphone')
|
|
220
|
+
}
|
|
221
|
+
setRequiredFields(requiredFieldsCode)
|
|
222
|
+
}
|
|
223
|
+
|
|
201
224
|
const togglePhoneUpdate = (val: boolean) => {
|
|
202
225
|
setPhoneUpdate(val)
|
|
203
226
|
}
|
|
@@ -208,7 +231,7 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
208
231
|
return
|
|
209
232
|
}
|
|
210
233
|
|
|
211
|
-
if (!userErrors.length &&
|
|
234
|
+
if (!userErrors.length && !requiredFields?.length) {
|
|
212
235
|
handleGroupPlaceOrder && handleGroupPlaceOrder(confirmPayment)
|
|
213
236
|
return
|
|
214
237
|
}
|
|
@@ -255,10 +278,13 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
255
278
|
}
|
|
256
279
|
|
|
257
280
|
useEffect(() => {
|
|
258
|
-
if (
|
|
281
|
+
if (checkoutFieldsState?.loading || userLoading) return
|
|
282
|
+
if (user?.guest_id) {
|
|
283
|
+
checkGuestValidationFields()
|
|
284
|
+
} else {
|
|
259
285
|
checkValidationFields()
|
|
260
286
|
}
|
|
261
|
-
}, [
|
|
287
|
+
}, [checkoutFieldsState, user, options?.type])
|
|
262
288
|
|
|
263
289
|
useEffect(() => {
|
|
264
290
|
if (cartsToShow?.length === 1) {
|
|
@@ -394,15 +420,11 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
394
420
|
</OText>
|
|
395
421
|
<OButton
|
|
396
422
|
text={t('SIGN_UP', 'Sign up')}
|
|
397
|
-
textStyle={{ color: theme.colors.white }}
|
|
398
423
|
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
399
424
|
onClick={() => setOpenModal({ ...openModal, signup: true })}
|
|
400
425
|
/>
|
|
401
426
|
<OButton
|
|
402
427
|
text={t('LOGIN', 'Login')}
|
|
403
|
-
textStyle={{ color: theme.colors.primary }}
|
|
404
|
-
bgColor={theme.colors.white}
|
|
405
|
-
borderColor={theme.colors.primary}
|
|
406
428
|
style={{ borderRadius: 7.6, marginTop: 20 }}
|
|
407
429
|
onClick={() => setOpenModal({ ...openModal, login: true })}
|
|
408
430
|
/>
|
|
@@ -424,6 +446,9 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
424
446
|
isCheckout
|
|
425
447
|
phoneUpdate={phoneUpdate}
|
|
426
448
|
togglePhoneUpdate={togglePhoneUpdate}
|
|
449
|
+
isOrderTypeValidationField
|
|
450
|
+
requiredFields={requiredFields}
|
|
451
|
+
checkoutFields={checkoutFields}
|
|
427
452
|
/>
|
|
428
453
|
)}
|
|
429
454
|
</ChUserDetails>
|
|
@@ -660,9 +685,12 @@ const MultiCheckoutUI = (props: any) => {
|
|
|
660
685
|
isEdit
|
|
661
686
|
phoneUpdate={phoneUpdate}
|
|
662
687
|
togglePhoneUpdate={togglePhoneUpdate}
|
|
663
|
-
requiredFields={requiredFields}
|
|
664
688
|
hideUpdateButton
|
|
665
689
|
handlePlaceOrderAsGuest={handlePlaceOrderAsGuest}
|
|
690
|
+
isCheckoutPlace
|
|
691
|
+
isOrderTypeValidationField
|
|
692
|
+
requiredFields={requiredFields}
|
|
693
|
+
checkoutFields={checkoutFields}
|
|
666
694
|
onClose={() => {
|
|
667
695
|
setIsOpen(false)
|
|
668
696
|
handlePlaceOrder()
|
|
@@ -203,9 +203,9 @@ export const MyOrders = (props: any) => {
|
|
|
203
203
|
setOrdersLength={setOrdersLength}
|
|
204
204
|
/>
|
|
205
205
|
)}
|
|
206
|
-
|
|
206
|
+
|
|
207
207
|
{selectedOption === 'giftCards' && (
|
|
208
|
-
<View style={{ paddingHorizontal: 20
|
|
208
|
+
<View style={{ paddingHorizontal: 20 }}>
|
|
209
209
|
<GiftCardOrdersList
|
|
210
210
|
onNavigationRedirect={props?.onNavigationRedirect}
|
|
211
211
|
/>
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
|
|
1
4
|
import * as React from 'react'
|
|
2
5
|
import styled, { useTheme } from 'styled-components/native'
|
|
3
6
|
import { OButton, OIcon, OText } from '../shared'
|
|
@@ -64,6 +67,7 @@ const NavBar = (props: Props) => {
|
|
|
64
67
|
<Wrapper style={{ paddingTop: props.paddingTop, ...{ flexDirection: props.isVertical ? 'column' : 'row', alignItems: props.isVertical ? 'flex-start' : 'center' }, ...props.style }}>
|
|
65
68
|
{!props.hideArrowLeft && (
|
|
66
69
|
<OButton
|
|
70
|
+
useArrow
|
|
67
71
|
iconProps={{
|
|
68
72
|
name: 'arrowleft',
|
|
69
73
|
size: 26
|
|
@@ -114,8 +118,6 @@ const NavBar = (props: Props) => {
|
|
|
114
118
|
{props.showCall
|
|
115
119
|
? (<OButton
|
|
116
120
|
isCircle={true}
|
|
117
|
-
bgColor={theme.colors.primary}
|
|
118
|
-
borderColor={theme.colors.primary}
|
|
119
121
|
imgRightSrc={null}
|
|
120
122
|
imgLeftStyle={{ tintColor: 'white', width: 30, height: 30 }}
|
|
121
123
|
imgLeftSrc={theme.images.general.support}
|
|
@@ -131,8 +133,9 @@ NavBar.defaultProps = {
|
|
|
131
133
|
textAlign: 'center'
|
|
132
134
|
};
|
|
133
135
|
|
|
134
|
-
const areEqual = (prevProps: { route?: any
|
|
135
|
-
return prevProps.route === nextProps.route
|
|
136
|
+
const areEqual = (prevProps: { route?: any, title?: string }, nextProps: { route?: any, title?: string }) => {
|
|
137
|
+
return prevProps.route === nextProps.route &&
|
|
138
|
+
JSON.stringify(prevProps.title) === JSON.stringify(nextProps.title)
|
|
136
139
|
return true
|
|
137
140
|
}
|
|
138
141
|
|
|
@@ -45,15 +45,10 @@ export const NetworkError = (props: NoNetworkParams) => {
|
|
|
45
45
|
/>
|
|
46
46
|
<OButton
|
|
47
47
|
text={t('REFRESH', 'Refresh')}
|
|
48
|
-
bgColor={theme.colors.primary}
|
|
49
|
-
borderColor={theme.colors.primary}
|
|
50
48
|
style={{
|
|
51
49
|
borderRadius: 8,
|
|
52
50
|
marginTop: 45
|
|
53
51
|
}}
|
|
54
|
-
textStyle={{
|
|
55
|
-
color: theme.colors.white
|
|
56
|
-
}}
|
|
57
52
|
onClick={() => RNRestart.Restart()}
|
|
58
53
|
/>
|
|
59
54
|
</ImageContainer>
|
|
@@ -42,11 +42,8 @@ export const NotFoundSource = (props: NotFoundSourceParams) => {
|
|
|
42
42
|
<View style={{ marginTop: 10, width: '100%' }}>
|
|
43
43
|
<OButton
|
|
44
44
|
style={{ width: '100%', height: 50, ...btnStyle }}
|
|
45
|
-
bgColor={theme.colors.primary}
|
|
46
|
-
borderColor={theme.colors.primary}
|
|
47
45
|
onClick={() => onClickButton()}
|
|
48
46
|
text={btnTitle}
|
|
49
|
-
textStyle={{ color: theme.colors.white }}
|
|
50
47
|
/>
|
|
51
48
|
</View>
|
|
52
49
|
)}
|
|
@@ -10,13 +10,14 @@ export const OrderEta = (props: any) => {
|
|
|
10
10
|
|
|
11
11
|
const [{ parseDate }] = useUtils()
|
|
12
12
|
const [estimatedDeliveryTime, setEstimatedDeliveryTime] = useState(null)
|
|
13
|
-
|
|
13
|
+
const deliveryTypes = [1, 7]
|
|
14
|
+
|
|
14
15
|
const getEstimatedDeliveryTime = () => {
|
|
15
16
|
let estimatedUtcTime = null
|
|
16
17
|
let totalEta = 0
|
|
17
18
|
if (order?.delivered_in) totalEta += order?.delivered_in
|
|
18
19
|
if (order?.prepared_in) totalEta += order?.prepared_in
|
|
19
|
-
if (order?.delivery_type
|
|
20
|
+
if (deliveryTypes?.includes?.(order?.delivery_type) && order?.eta_drive_time) {
|
|
20
21
|
totalEta += order?.eta_drive_time
|
|
21
22
|
}
|
|
22
23
|
|
|
@@ -57,7 +58,7 @@ export const OrderEta = (props: any) => {
|
|
|
57
58
|
}
|
|
58
59
|
estimatedUtcTime = moment.utc(_delivery).add(totalEta, 'minutes')
|
|
59
60
|
const _estimatedTime = outputFormat ? moment(estimatedUtcTime).local().format(outputFormat) : parseDate(estimatedUtcTime, { utc: false })
|
|
60
|
-
setEstimatedDeliveryTime(_estimatedTime)
|
|
61
|
+
setEstimatedDeliveryTime(order?.status === 13 ? parseDate(_delivery, { utc: !!order?.delivery_datetime_utc, outputFormat: outputFormat }) : _estimatedTime)
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
useEffect(() => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { useTheme } from 'styled-components/native'
|
|
3
3
|
import { ScrollView, StyleSheet, View } from 'react-native'
|
|
4
|
-
import { useLanguage, useUtils } from 'ordering-components/native'
|
|
4
|
+
import { useLanguage, useUtils, useConfig } from 'ordering-components/native'
|
|
5
5
|
import MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons'
|
|
6
6
|
import { OText, OButton } from '../shared'
|
|
7
7
|
import { formatSeconds } from '../../utils'
|
|
@@ -17,7 +17,9 @@ export const OrderHistory = (props: any) => {
|
|
|
17
17
|
|
|
18
18
|
const [, t] = useLanguage()
|
|
19
19
|
const [{ parseDate }] = useUtils()
|
|
20
|
+
const [{ configs }] = useConfig();
|
|
20
21
|
const theme = useTheme()
|
|
22
|
+
const changeIdToExternalId = configs?.change_order_id?.value === '1'
|
|
21
23
|
|
|
22
24
|
const styles = StyleSheet.create({
|
|
23
25
|
historyItem: {
|
|
@@ -62,7 +64,10 @@ export const OrderHistory = (props: any) => {
|
|
|
62
64
|
20: 'ORDER_CUSTOMER_ALMOST_ARRIVED_BUSINESS',
|
|
63
65
|
21: 'ORDER_CUSTOMER_ARRIVED_BUSINESS',
|
|
64
66
|
22: 'ORDER_LOOKING_FOR_DRIVER',
|
|
65
|
-
23: 'ORDER_DRIVER_ON_WAY'
|
|
67
|
+
23: 'ORDER_DRIVER_ON_WAY',
|
|
68
|
+
24: 'ORDER_DRIVER_WAITING_FOR_ORDER',
|
|
69
|
+
25: 'ORDER_ACCEPTED_BY_DRIVER_COMPANY',
|
|
70
|
+
26: 'ORDER_DRIVER_ARRIVED_CUSTOMER'
|
|
66
71
|
}
|
|
67
72
|
|
|
68
73
|
const getLogisticTagStatus = (status: any) => {
|
|
@@ -90,7 +95,7 @@ export const OrderHistory = (props: any) => {
|
|
|
90
95
|
return (
|
|
91
96
|
<ScrollView contentContainerStyle={styles.container}>
|
|
92
97
|
<OText size={20} style={{ alignSelf: 'center', textAlign: 'center' }} mBottom={10}>
|
|
93
|
-
{t('DETAILS_OF_ORDER', 'Details of Order_NUMBER_').replace('_NUMBER_',
|
|
98
|
+
{t('DETAILS_OF_ORDER', 'Details of Order_NUMBER_').replace('_NUMBER_', (changeIdToExternalId && order?.external_id) || `# ${order?.id}`)}
|
|
94
99
|
</OText>
|
|
95
100
|
{!messages?.loading && order && (
|
|
96
101
|
<View style={styles.historyItem}>
|
|
@@ -145,10 +150,10 @@ export const OrderHistory = (props: any) => {
|
|
|
145
150
|
</>
|
|
146
151
|
)
|
|
147
152
|
: message.change?.attribute === 'prepared_in' ? (
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
153
|
+
<>
|
|
154
|
+
{t('TIME_ADDED_BY_BUSINESS', 'Time added by business')}{'\n'}
|
|
155
|
+
{formatSeconds(parseInt(message.change.new, 10))}
|
|
156
|
+
</>
|
|
152
157
|
) : t(ORDER_STATUS[parseInt(message.change.new, 10)])
|
|
153
158
|
}
|
|
154
159
|
</OText>
|
|
@@ -170,11 +175,9 @@ export const OrderHistory = (props: any) => {
|
|
|
170
175
|
))}
|
|
171
176
|
<OButton
|
|
172
177
|
text={enableReview ? t('REVIEW_ORDER', 'Review order') : t('CONTINUE', 'Continue')}
|
|
173
|
-
textStyle={{ fontSize: 14
|
|
178
|
+
textStyle={{ fontSize: 14 }}
|
|
174
179
|
imgRightSrc={theme.images.general.arrow_right}
|
|
175
180
|
imgRightStyle={{ tintColor: theme.colors.white, right: 5, margin: 5 }}
|
|
176
|
-
borderColor='transparent'
|
|
177
|
-
bgColor={theme.colors.primary}
|
|
178
181
|
style={{ borderRadius: 7.6, borderWidth: 1, height: 44, shadowOpacity: 0, marginBottom: 30, marginTop: 20 }}
|
|
179
182
|
onClick={() => handleReview()}
|
|
180
183
|
/>
|