Files
Mycontent/miniprogram/utils/mpPagePopups.js
Alex-larget 7027d2405a 同步
2026-03-27 16:54:10 +08:00

80 lines
3.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 从 mpConfig.mpUi.pagePopupItems 按 pagePath + key 取文案(管理端 CRUD
* 兼容旧版 mpUi.memberDetailPage / readPage 字段。
*
* 当前代码显式引用的键(与 soul-admin 默认种子 / db.defaultMpUi 一致,勿改 key 除非双端同步):
* - MEMBER_PATH unlockIntroTitle, unlockIntroBody → member-detail.js _showUnlockIntroThenLogin
* - READ_PATH beforeLoginHint, singlePageTitle, singlePagePaywallHint → read.js onLoad
* - READ_PATH beforePayAvatarNicknameTitle, beforePayAvatarNicknameBody → read.js processPayment支付前头像昵称引导
* - READ_PATH readMomentsShareGuideTitle, readMomentsShareGuideBody → read.js shareToMoments
* - APP_GLOBAL_PATH global* → app.js单页拦截、头像引导、VIP 补全、更新提示等)
*/
const MEMBER_PATH = '/pages/member-detail/member-detail'
const READ_PATH = '/pages/read/read'
const APP_GLOBAL_PATH = '/app/global'
function getList(app) {
const mpUi = app.globalData.configCache && app.globalData.configCache.mpConfig
? app.globalData.configCache.mpConfig.mpUi
: null
const list = mpUi && mpUi.pagePopupItems
return Array.isArray(list) ? list : []
}
/**
* @param {object} app getApp()
* @param {string} pagePath 如 /pages/read/read
* @param {string} key 英文键
* @returns {string} 文案,未配置时返回空串
*/
function getPagePopupContent(app, pagePath, key) {
const list = getList(app)
const it = list.find(function (p) {
return p && p.pagePath === pagePath && p.key === key
})
if (it && typeof it.content === 'string') return it.content.trim()
return ''
}
/**
* 带旧版 readPage / memberDetailPage 兜底
*/
function getReadPageContent(app, key) {
const v = getPagePopupContent(app, READ_PATH, key)
if (v) return v
const rp = (app.globalData.configCache && app.globalData.configCache.mpConfig &&
app.globalData.configCache.mpConfig.mpUi &&
app.globalData.configCache.mpConfig.mpUi.readPage) || {}
if (key === 'beforeLoginHint') return String(rp.beforeLoginHint || '').trim()
if (key === 'singlePageTitle') return String(rp.singlePageTitle || '').trim()
if (key === 'singlePagePaywallHint') return String(rp.singlePagePaywallHint || '').trim()
return ''
}
function getMemberDetailContent(app, key) {
const v = getPagePopupContent(app, MEMBER_PATH, key)
if (v) return v
const md = (app.globalData.configCache && app.globalData.configCache.mpConfig &&
app.globalData.configCache.mpConfig.mpUi &&
app.globalData.configCache.mpConfig.mpUi.memberDetailPage) || {}
if (key === 'unlockIntroTitle') return String(md.unlockIntroTitle || '').trim()
if (key === 'unlockIntroBody') return String(md.unlockIntroBody || '').trim()
return ''
}
/** App 级多页共用弹窗pagePath=/app/global见管理端弹窗文案「全局」 */
function getGlobalPopupContent(app, key) {
return getPagePopupContent(app, APP_GLOBAL_PATH, key)
}
module.exports = {
getPagePopupContent,
getReadPageContent,
getMemberDetailContent,
getGlobalPopupContent,
MEMBER_PATH,
READ_PATH,
APP_GLOBAL_PATH,
}