From 2d9943c4efedf03b5ea472fd4cf4c597700fbaef Mon Sep 17 00:00:00 2001 From: Jacob Overgaard <752371+iOvergaard@users.noreply.github.com> Date: Wed, 11 Sep 2024 15:56:23 +0200 Subject: [PATCH] feat: show a button in the backoffice logo area if a new version is available --- .../src/apps/backoffice/backoffice.context.ts | 7 +++++++ .../components/backoffice-header-logo.element.ts | 16 +++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.context.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.context.ts index 1ae88c7721..04580295bb 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.context.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/backoffice.context.ts @@ -10,6 +10,7 @@ import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api'; import type { UmbExtensionManifestInitializer } from '@umbraco-cms/backoffice/extension-api'; import { UMB_AUTH_CONTEXT } from '@umbraco-cms/backoffice/auth'; import { UMB_CURRENT_USER_CONTEXT } from '@umbraco-cms/backoffice/current-user'; +import { UmbSysinfoRepository } from '@umbraco-cms/backoffice/sysinfo'; export class UmbBackofficeContext extends UmbContextBase { #activeSectionAlias = new UmbStringState(undefined); @@ -76,6 +77,12 @@ export class UmbBackofficeContext extends UmbContextBase { public setActiveSectionAlias(alias: string) { this.#activeSectionAlias.setValue(alias); } + + public async serverUpgradeCheck(): Promise { + const repository = new UmbSysinfoRepository(this); + const check = await repository.serverUpgradeCheck(); + return !!check; + } } export const UMB_BACKOFFICE_CONTEXT = new UmbContextToken('UmbBackofficeContext'); diff --git a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-logo.element.ts b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-logo.element.ts index 48a93afc79..640fcb92c9 100644 --- a/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-logo.element.ts +++ b/src/Umbraco.Web.UI.Client/src/apps/backoffice/components/backoffice-header-logo.element.ts @@ -1,5 +1,5 @@ -import { isCurrentUserAnAdmin } from '@umbraco-cms/backoffice/current-user'; import { UMB_BACKOFFICE_CONTEXT } from '../backoffice.context.js'; +import { isCurrentUserAnAdmin } from '@umbraco-cms/backoffice/current-user'; import { css, html, customElement, state } from '@umbraco-cms/backoffice/external/lit'; import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element'; import { UmbTextStyles } from '@umbraco-cms/backoffice/style'; @@ -14,6 +14,11 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement { @state() private _isUserAdmin = false; + @state() + private _serverUpgradeCheck = false; + + #backofficeContext?: typeof UMB_BACKOFFICE_CONTEXT.TYPE; + constructor() { super(); @@ -26,6 +31,8 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement { }, '_observeVersion', ); + + this.#backofficeContext = context; }); this.#isAdmin(); @@ -33,6 +40,10 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement { async #isAdmin() { this._isUserAdmin = await isCurrentUserAnAdmin(this); + + if (this._isUserAdmin) { + this._serverUpgradeCheck = this.#backofficeContext ? await this.#backofficeContext.serverUpgradeCheck() : false; + } } override render() { @@ -50,6 +61,9 @@ export class UmbBackofficeHeaderLogoElement extends UmbLitElement { height="82" loading="lazy" /> ${this._version} + + ${this._serverUpgradeCheck ? html`` : ''} + Umbraco.com ${this._isUserAdmin