import { getLastPage } from '@/utils'
import { debounce } from '@/utils/debounce'

interface ToLoginPageOptions {
    /**
     * 跳转模式, uni.navigateTo | uni.reLaunch
     * @default 'navigateTo'
     */
    mode?: 'navigateTo' | 'reLaunch'
    /**
     * 查询参数
     * @example '?redirect=/pages/home/index'
     */
    queryString?: string
}

// TODO: 自己增加登录页
const LOGIN_PAGE = '/pages-fg/login/login'

/**
 * 跳转到登录页, 带防抖处理
 *
 * 如果要立即跳转，不做延时，可以使用 `toLoginPage.flush()` 方法
 */
export const toLoginPage = debounce((options: ToLoginPageOptions = {}) => {
    const { mode = 'navigateTo', queryString = '' } = options

    const url = `${LOGIN_PAGE}${queryString}`

    // 获取当前页面路径
    const currentPage = getLastPage()
    const currentPath = `/${currentPage.route}`
    // 如果已经在登录页，则不跳转
    if (currentPath === LOGIN_PAGE) {
        return
    }

    if (mode === 'navigateTo') {
        uni.navigateTo({ url })
    }
    else {
        uni.reLaunch({ url })
    }
}, 500)
