import React, { useEffect, useState } from 'react' import Taro, { useDidShow } from '@tarojs/taro' import { View } from '@tarojs/components' import { check_login_status } from '@/services/loginService' export function getCurrentFullPath(): string { const pages = Taro.getCurrentPages() const currentPage = pages.at(-1) if (currentPage) { const route = currentPage.route const options = currentPage.options || {} const query = Object.keys(options) .map(key => `${key}=${options[key]}`) .join('&') return query ? `/${route}?${query}` : `/${route}` } return '' } export default function withAuth
(WrappedComponent: React.ComponentType
) { const ComponentWithAuth: React.FC
= (props: P) => {
const [authed, setAuthed] = useState(false)
useEffect(() => {
const is_login = check_login_status()
setAuthed(is_login)
if (!is_login) {
const currentPage = getCurrentFullPath()
Taro.redirectTo({
url: `/pages/login/index/index${
currentPage ? `?redirect=${currentPage}` : ''
}`,
})
}
}, [])
if (!authed) {
return