Backoffice context: adds version

Gets version from the server information API
This commit is contained in:
leekelleher
2024-04-16 22:41:02 +01:00
committed by Jacob Overgaard
parent a05a5a1d75
commit 92ba80f2d8

View File

@@ -1,12 +1,13 @@
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
import { tryExecute } from '@umbraco-cms/backoffice/resources';
import { ServerService } from '@umbraco-cms/backoffice/external/backend-api';
import { UmbBasicState, UmbStringState } from '@umbraco-cms/backoffice/observable-api';
import {
type UmbExtensionManifestInitializer,
UmbExtensionsManifestInitializer,
} from '@umbraco-cms/backoffice/extension-api';
import { UmbContextToken } from '@umbraco-cms/backoffice/context-api';
import { UmbContextBase } from '@umbraco-cms/backoffice/class-api';
import { UmbExtensionsManifestInitializer } from '@umbraco-cms/backoffice/extension-api';
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
import type { ManifestSection } from '@umbraco-cms/backoffice/extension-registry';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { type ManifestSection, umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
import type { UmbExtensionManifestInitializer } from '@umbraco-cms/backoffice/extension-api';
export class UmbBackofficeContext extends UmbContextBase<UmbBackofficeContext> {
#activeSectionAlias = new UmbStringState(undefined);
@@ -16,11 +17,32 @@ export class UmbBackofficeContext extends UmbContextBase<UmbBackofficeContext> {
#allowedSections = new UmbBasicState<Array<UmbExtensionManifestInitializer<ManifestSection>>>([]);
public readonly allowedSections = this.#allowedSections.asObservable();
#verison = new UmbStringState(undefined);
public readonly version = this.#verison.asObservable();
constructor(host: UmbControllerHost) {
super(host, UMB_BACKOFFICE_CONTEXT);
new UmbExtensionsManifestInitializer(this, umbExtensionsRegistry, 'section', null, (sections) => {
this.#allowedSections.setValue([...sections]);
});
this.#getVersion();
}
async #getVersion() {
const { data } = await tryExecute(ServerService.getServerInformation());
if (!data) return;
// A quick semver parser (to remove the unwanted bits) [LK]
// https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const [semVer, major, minor, patch, prerelease, buildmetadata] =
data.version.match(
/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/,
) ?? [];
const version = [major, minor, patch].join('.') + (prerelease ? `-${prerelease}` : '');
this.#verison.setValue(version);
}
public setActiveSectionAlias(alias: string) {