import React, { useState, useEffect } from 'react'
import Taro, { useDidShow, useRouter } from '@tarojs/taro'
import { useSelector } from 'react-redux'
import { View } from '@tarojs/components'
import Overlay from '@/components/Overlay'
import Loading from '@/components/Loading'
import AuthAvatar from '@/components/Auth/AuthAvatar'
import AuthPhone from '@/components/Auth/AuthPhone'
import AuthPage from '@/components/Auth/AuthPage'
import Spin from '@/components/Spin/Spin2'
import FixedConsultant from '@/components/FixedConsultant'
import FirstScreen from '@/components/FirstScreen'
import ShareToCircle from '@/components/ShareToCircle'
import { report as reportCustomer } from '@/utils/customer'
import nav2Target from '@/utils/nav2Target'
import { ROLE_CODE } from '@/constants/user'
import useAuth from './useAuth'
import useScreen from './useScreen'
import { routes } from '../routes'
import './style.scss'
export default (ChildComponent) => (props) => {
const mode = Taro.getStorageSync('mode')
const isSinglePage = mode === 'singlePage'
const consultant = useSelector(s => s.system.consultant)
const city = useSelector(s => s.city.curCity)
const { spinning, userInfo } = useSelector(s => s.user)
const { person, ...extInfo } = userInfo || {}
const router = useRouter()
const page = routes.filter((r) => (router.path.indexOf(r.page) > -1))[0]
const [loading, setLoading] = useState(false)
const [authPhone, authAvatar, authPage] = useAuth(person, page)
const [shareTimelineVisible, setShareTimelineVisible] = useState(false)
const { id } = router.params
const showConsultant = page.shortcut && page.shortcut.consultant
// 页面分享
const [shareContent, setShareContent] = useState({})
// 页面埋点
const [trackData, setTrackData] = useState({})
// 开屏广告
const [screenInfo, screenVisible, toggleShowScreen] = useScreen(city.id, person)
const handleScreen = () => {
toggleShowScreen()
nav2Target(screenInfo)
}
// 分享朋友圈提示
const showShareTimeline = (visible) => setShareTimelineVisible(visible)
// 设置当前页标题
const setNavigationBarTitle = title => {
if (!title) return;
Taro.nextTick(() => {
Taro.setNavigationBarTitle({ title })
})
}
// 报备客户
useEffect(() => {
if (isSinglePage) return;
reportCustomer(person, consultant, false).catch(() => {})
}, [person, consultant, isSinglePage])
// 请求埋点设置
useEffect(() => {
if (isSinglePage) return;
if (id) {
setShareContent({})
}
} ,[id, page.type, isSinglePage])
// 埋点数据
useEffect(() => {
if (isSinglePage) return;
const consultantId = person?.personType === ROLE_CODE.CONSULTANT ? person.personId : undefined
setTrackData({
eventType: page.type,
propertyName: page.name,
consultantId,
sharePersonId: person?.personId,
targetId: id,
})
}, [person, page, id, isSinglePage])
// 主要用于埋点
useEffect(() => {
Taro.setStorage({ key: 'page', data: page })
}, [page])
useEffect(() => {
setLoading(!person || !person.personId)
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [person])
return (
<>
{/* 菊花转 */}
{/* 授权手机 */}
{/* 授权头像 */}
{/* 授权头像-全屏 */}
{ authPage && !isSinglePage && }
{/* 显示分享朋友圈 */}
setShareTimelineVisible(false)} />
{/* 页面内容 */}
{
person && !!person.personId && (
)
}
{/* 当前置业顾问 */}
{
!!showConsultant && ()
}
{/* 开屏广告 */}
>
)
}