去掉协会 WebView 和魔方账密页,微信登录与咨询接口共用同一 token 和拦截器。 Co-authored-by: Cursor <cursoragent@cursor.com>
76 lines
2.4 KiB
JavaScript
76 lines
2.4 KiB
JavaScript
const HOME = '/pages/yxg-magic/index'
|
|
|
|
const MAP = [
|
|
[/^\/explore\/bank\/([^/?#]+)/, (_, c) => `/pages/yxg/explore-bank?category=${encodeURIComponent(c)}`],
|
|
[/^\/explore\/([^/?#]+)/, (_, c) => `/pages/yxg/explore-category?category=${encodeURIComponent(c)}`],
|
|
[/^\/explore\/?$/, '/pages/yxg/explore'],
|
|
[/^\/growth-plan\/?$/, '/pages/yxg/growth-plan'],
|
|
[/^\/ask\/?$/, '/pages/yxg/ask'],
|
|
[/^\/companion\/?$/, '/pages/yxg/companion'],
|
|
[/^\/mine\/?$/, '/pages/yxg/mine'],
|
|
[/^\/login\/?$/, '/pages/login-pop/login-pop?type=2'],
|
|
[/^\/profile\/?$/, '/pages/yxg/profile'],
|
|
[/^\/portrait\/?$/, '/pages/yxg/portrait'],
|
|
[/^\/star\/?$/, '/pages/yxg/star'],
|
|
[/^\/synastry\/invite\/([^/?#]+)/, (_, t) => `/pages/yxg/synastry-invite?token=${encodeURIComponent(t)}`],
|
|
[/^\/synastry\/?$/, '/pages/yxg/synastry'],
|
|
[/^\/rhythm\/?$/, '/pages/yxg/rhythm'],
|
|
[/^\/cards\/?$/, '/pages/yxg/cards'],
|
|
[/^\/relation\/?$/, '/pages/yxg/relation'],
|
|
[/^\/membership\/?$/, '/pages/yxg/membership'],
|
|
[/^\/scales\/([^/?#]+)/, (_, s) => `/pages/yxg/scale?slug=${encodeURIComponent(s)}`],
|
|
[/^\/share\/?$/, '/pages/yxg/share'],
|
|
[/^\/reports\/([^/?#]+)/, (_, id) => `/pages/yxg/report?id=${encodeURIComponent(id)}`],
|
|
[/^\/reports\/?$/, '/pages/yxg/reports'],
|
|
[/^\/decode\/?$/, '/pages/yxg/portrait'],
|
|
[/^\/?$/, HOME],
|
|
]
|
|
|
|
function withQuery(url, query) {
|
|
if (!query) return url
|
|
const pairs = Object.keys(query)
|
|
.filter((k) => query[k] !== undefined && query[k] !== null && query[k] !== '')
|
|
.map((k) => `${encodeURIComponent(k)}=${encodeURIComponent(query[k])}`)
|
|
if (!pairs.length) return url
|
|
return url + (url.includes('?') ? '&' : '?') + pairs.join('&')
|
|
}
|
|
|
|
export function h5ToMp(path, query) {
|
|
const raw = String(path || '/')
|
|
const pathname = raw.split('?')[0]
|
|
for (const [re, dest] of MAP) {
|
|
const m = pathname.match(re)
|
|
if (!m) continue
|
|
const url = typeof dest === 'function' ? dest(...m) : dest
|
|
return withQuery(url, query)
|
|
}
|
|
return HOME
|
|
}
|
|
|
|
export function yxgGo(path, query) {
|
|
const url = h5ToMp(path, query)
|
|
if (url === HOME || url.startsWith(`${HOME}?`)) {
|
|
uni.switchTab({ url: HOME })
|
|
return
|
|
}
|
|
uni.navigateTo({ url })
|
|
}
|
|
|
|
export function yxgReplace(path, query) {
|
|
const url = h5ToMp(path, query)
|
|
if (url === HOME || url.startsWith(`${HOME}?`)) {
|
|
uni.switchTab({ url: HOME })
|
|
return
|
|
}
|
|
uni.redirectTo({ url })
|
|
}
|
|
|
|
export function yxgBack() {
|
|
const pages = getCurrentPages()
|
|
if (pages.length > 1) {
|
|
uni.navigateBack()
|
|
return
|
|
}
|
|
uni.switchTab({ url: HOME })
|
|
}
|