import AppConfig from '@/config'
|
import defaultLogo from '@imgs/common/logo.webp'
|
import {
|
fetchPublicProjectCopyrightConfig,
|
fetchPublicProjectLogoConfig
|
} from '@/api/system-manage'
|
|
const publicProjectState = {
|
logoSrc: '',
|
logoRequest: null,
|
copyrightText: '',
|
copyrightRequest: null
|
}
|
|
function getDefaultProjectLogo() {
|
return defaultLogo
|
}
|
|
function getDefaultProjectCopyright() {
|
return `版权所有 © ${AppConfig.systemInfo.name}`
|
}
|
|
function normalizeProjectLogo(value) {
|
const normalized = String(value || '').trim()
|
return normalized || getDefaultProjectLogo()
|
}
|
|
function normalizeProjectCopyright(value) {
|
const normalized = String(value || '').trim()
|
return normalized || getDefaultProjectCopyright()
|
}
|
|
function setPublicProjectLogo(value) {
|
const nextLogoSrc = normalizeProjectLogo(value)
|
publicProjectState.logoSrc = nextLogoSrc
|
publicProjectState.logoRequest = Promise.resolve(nextLogoSrc)
|
return nextLogoSrc
|
}
|
|
function setPublicProjectCopyright(value) {
|
const nextCopyright = normalizeProjectCopyright(value)
|
publicProjectState.copyrightText = nextCopyright
|
publicProjectState.copyrightRequest = Promise.resolve(nextCopyright)
|
return nextCopyright
|
}
|
|
function loadPublicProjectLogo(force = false) {
|
if (publicProjectState.logoSrc && !force) {
|
return Promise.resolve(publicProjectState.logoSrc)
|
}
|
|
if (!publicProjectState.logoRequest || force) {
|
publicProjectState.logoRequest = fetchPublicProjectLogoConfig()
|
.then((response) => normalizeProjectLogo(response?.val))
|
.catch(() => getDefaultProjectLogo())
|
.then((resolvedLogo) => {
|
publicProjectState.logoSrc = resolvedLogo
|
return resolvedLogo
|
})
|
}
|
|
return publicProjectState.logoRequest
|
}
|
|
function loadPublicProjectCopyright(force = false) {
|
if (publicProjectState.copyrightText && !force) {
|
return Promise.resolve(publicProjectState.copyrightText)
|
}
|
|
if (!publicProjectState.copyrightRequest || force) {
|
publicProjectState.copyrightRequest = fetchPublicProjectCopyrightConfig()
|
.then((response) => normalizeProjectCopyright(response?.val))
|
.catch(() => getDefaultProjectCopyright())
|
.then((resolvedCopyright) => {
|
publicProjectState.copyrightText = resolvedCopyright
|
return resolvedCopyright
|
})
|
}
|
|
return publicProjectState.copyrightRequest
|
}
|
|
export {
|
getDefaultProjectCopyright,
|
getDefaultProjectLogo,
|
loadPublicProjectCopyright,
|
loadPublicProjectLogo,
|
setPublicProjectCopyright,
|
setPublicProjectLogo
|
}
|