diff --git a/packages/admin/src/app.jsx b/packages/admin/src/app.jsx index 8a77a3494..9a86df3e7 100644 --- a/packages/admin/src/app.jsx +++ b/packages/admin/src/app.jsx @@ -47,7 +47,7 @@ export async function getInitialState() { } const initData = await fetchInitData(option); - const { latestVersion, updatedAt, baseUrl, allowDomains, version } = initData; + const { updatedAt, baseUrl, allowDomains, version } = initData; if (baseUrl && !checkUrl(baseUrl)) { Modal.warn({ @@ -72,64 +72,72 @@ export async function getInitialState() { ), }); } - // 来一个横幅提示 - if (version && latestVersion && version != 'dev') { - if (version >= latestVersion) { - } else { - const skipVersion = localStorage.getItem('skipVersion'); - if (skipVersion != latestVersion) { - // 老的 - notification.info({ - duration: 3000, - message: ( -
-

有新版本!

-

{`当前版本:\t${version}`}

-

{`最新版本:\t${latestVersion}`}

-

{`更新时间:\t${moment(updatedAt).format( - 'YYYY-MM-DD HH:mm:ss', - )}`}

-

- {`更新日志:\t`} - - 点击查看 - -

-

- {`更新方法:\t`} + + const updateAlert=async ()=>{ + const initDataUpstream = await fetchAllMetaUpstream(option); + const { latestVersion, updatedAt } = initDataUpstream; + + // 来一个横幅提示 + if (version && latestVersion && version != 'dev') { + if (version >= latestVersion) { + } else { + const skipVersion = localStorage.getItem('skipVersion'); + if (skipVersion != latestVersion) { + // 老的 + notification.info({ + duration: 3000, + message: ( +

+

有新版本!

+

{`当前版本:\t${version}`}

+

{`最新版本:\t${latestVersion}`}

+

{`更新时间:\t${moment(updatedAt).format( + 'YYYY-MM-DD HH:mm:ss', + )}`}

+

+ {`更新日志:\t`} + + 点击查看 + +

+

+ {`更新方法:\t`} + + 点击查看 + +

+

+ PS: 更新后如后台一直 loading 或出现 Fetch error 请手动清理一下浏览器缓存 +

{ + window.localStorage.setItem('skipVersion', latestVersion); + message.success('跳过此版本成功!下次进入后台将不会触发此版本的升级提示'); + const el = document.querySelector('.ant-notification-notice-close-x'); + if (el) { + el.click(); + } + }} > - 点击查看 + 跳过此版本 -

-

- PS: 更新后如后台一直 loading 或出现 Fetch error 请手动清理一下浏览器缓存 -

- { - window.localStorage.setItem('skipVersion', latestVersion); - message.success('跳过此版本成功!下次进入后台将不会触发此版本的升级提示'); - const el = document.querySelector('.ant-notification-notice-close-x'); - if (el) { - el.click(); - } - }} - > - 跳过此版本 - -
- ), - }); +
+ ), + }); + } } } - } + }; + updateAlert(); + // 暗色模式 const theme = getInitTheme(); const sysTheme = mapTheme(theme); diff --git a/packages/admin/src/services/van-blog/api.js b/packages/admin/src/services/van-blog/api.js index 24bb9f89e..5238d2fd8 100644 --- a/packages/admin/src/services/van-blog/api.js +++ b/packages/admin/src/services/van-blog/api.js @@ -10,6 +10,12 @@ export async function fetchAllMeta(options) { ...(options || {}), }); } +export async function fetchAllMetaUpstream(options) { + return request('/api/admin/meta_upstream', { + method: 'GET', + ...(options || {}), + }); +} export async function activeISR() { return request('/api/admin/isr', { method: 'POST', diff --git a/packages/server/src/controller/admin/meta/meta.controller.ts b/packages/server/src/controller/admin/meta/meta.controller.ts index fa21cd696..afb60542e 100644 --- a/packages/server/src/controller/admin/meta/meta.controller.ts +++ b/packages/server/src/controller/admin/meta/meta.controller.ts @@ -16,11 +16,8 @@ export class MetaController { @Get() async getAllMeta(@Req() req: Request) { const meta = await this.metaProvider.getAll(); - const serverData = await getVersionFromServer(); const data = { version: version, - latestVersion: serverData?.version || version, - updatedAt: serverData?.updatedAt || new Date(), user: req.user, baseUrl: meta.siteInfo.baseUrl, enableComment: meta.siteInfo.enableComment || 'true', @@ -32,3 +29,23 @@ export class MetaController { }; } } + +@ApiTags('meta') +@UseGuards(...AdminGuard) +@ApiToken +@Controller('/api/admin/meta_upstream') +export class MetaController { + constructor(private readonly metaProvider: MetaProvider) {} + @Get() + async getAllMetaUpstream(@Req() req: Request) { + const serverData = await getVersionFromServer(); + const data = { + latestVersion: serverData?.version || version, + updatedAt: serverData?.updatedAt || new Date(), + }; + return { + statusCode: 200, + data, + }; + } +} \ No newline at end of file