zhou zhou
4 天以前 33bd4dd1f0e41131cd8e5bbf87204a1f0b72bb08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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
}