import React, { useState, useEffect } from 'react'
import { useOrder, useSession, useLanguage, useConfig } from 'ordering-components/native';
import { useTheme } from 'styled-components/native'
import { BusinessesListing as OriginalBusinessListing } from './Layout/Original'
import { BusinessesListing as AppointmentBusinessListing } from './Layout/Appointment'
import { OBottomPopup } from '../shared';
import { ReviewTrigger } from '../ReviewTrigger';
import { NotificationSetting } from '../../../../../src/components/NotificationSetting';
export const BusinessesListing = (props: any) => {
const { logosLayout } = props
const theme = useTheme()
const layout = theme?.business_listing_view?.components?.layout?.type || 'original'
const [, t] = useLanguage();
const [{ auth }] = useSession()
const [, { getLastOrderHasNoReview }] = useOrder();
const [{ configs }] = useConfig()
const isShowReviewsPopupEnabled = configs?.show_reviews_popups_enabled?.value === '1'
const [, setIsReviewed] = useState()
const [checkNotificationStatus, setCheckNotificationStatus] = useState({ open: false, checked: false })
const defaultOrder = {
id: 0,
business_id: 0,
business_name: '',
logo: '',
driver: {},
products: [],
review: {},
user_review: {},
delivery_datetime: ''
}
const [lastOrderReview, setLastOrderReview] = useState({
isReviewOpen: false,
order: defaultOrder,
defaultStar: 5,
})
const _getLastOrderHasNoReview = async () => {
const lastOrderHasNoReview = await getLastOrderHasNoReview()
lastOrderHasNoReview && OrderReviewRequired(lastOrderHasNoReview)
}
const OrderReviewRequired = (order: any) => {
setLastOrderReview({
isReviewOpen: true,
order: {
id: order?.id,
business_id: order?.business_id,
business_name: order?.business?.name,
logo: order.business?.logo,
driver: order?.driver,
products: order?.products,
review: order?.review,
user_review: order?.user_review,
delivery_datetime: order?.delivery_datetime_utc
},
defaultStar: 5
})
}
const handleOpenOrderReview = (star: number) => {
setLastOrderReview({
...lastOrderReview, isReviewOpen: false, order: defaultOrder
})
props?.navigation && props.navigation.navigate(
'ReviewOrder',
{
order: lastOrderReview.order,
defaultStar: star || 5,
setIsReviewed
}
)
}
useEffect(() => {
if (!isShowReviewsPopupEnabled) return
(checkNotificationStatus?.checked && auth) && _getLastOrderHasNoReview()
}, [checkNotificationStatus, auth, isShowReviewsPopupEnabled])
return (
<>
{((layout === 'original') || logosLayout) && }
{(layout === 'appointments') && !logosLayout && }
{lastOrderReview?.isReviewOpen && (
setLastOrderReview({ ...lastOrderReview, isReviewOpen: false, order: defaultOrder })}
title={t('HEY', 'Hey! ') + t('HOW_WAS_YOUR_ORDER', 'How was your order?')}
bottomContainerStyle={{ height: 'auto', borderRadius: 10 }}
titleStyle={{ textAlign: 'center' }}
closeIcon={theme.images.general.close}
presentationStyle='overFullScreen'
>
{lastOrderReview?.order && }
)}
>
)
}