From ecb95cc35dab44ad1e9028077e696970a3087070 Mon Sep 17 00:00:00 2001 From: gurkanguran Date: Tue, 18 Apr 2023 21:29:55 +0200 Subject: [PATCH] Display generated version number on the designer (#3923) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Implemented get version endpoint * Get version from backend to display on designer * Updated github pipelines --------- Co-authored-by: Gürkan Güran --- .github/workflows/npm-packages.yml | 1 + .../workflow-toolbar/workflow-toolbar.tsx | 14 +++++++-- .../elsa-workflows-designer/src/models/api.ts | 4 +++ .../src/services/api-client/packages-api.ts | 20 +++++++++++++ .../Elsa.Workflows.Api.csproj | 1 + .../Endpoints/Package/GetVersion.cs | 29 +++++++++++++++++++ .../Endpoints/Package/Models.cs | 13 +++++++++ 7 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 src/designer/designer_packages/elsa-workflows-designer/src/services/api-client/packages-api.ts create mode 100644 src/modules/Elsa.Workflows.Api/Endpoints/Package/GetVersion.cs create mode 100644 src/modules/Elsa.Workflows.Api/Endpoints/Package/Models.cs diff --git a/.github/workflows/npm-packages.yml b/.github/workflows/npm-packages.yml index 713401b85..8faa006f2 100644 --- a/.github/workflows/npm-packages.yml +++ b/.github/workflows/npm-packages.yml @@ -166,6 +166,7 @@ jobs: name: Update Version in Elsa.Workflows.Designer backend module needs: publish_npm_preview runs-on: ubuntu-latest + if: ${{ github.ref == 'refs/heads/v3' }} steps: - name: Install jq run: sudo apt-get install jq diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/components/toolbar/workflow-toolbar/workflow-toolbar.tsx b/src/designer/designer_packages/elsa-workflows-designer/src/components/toolbar/workflow-toolbar/workflow-toolbar.tsx index ac4c274dd..357a42e7f 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/src/components/toolbar/workflow-toolbar/workflow-toolbar.tsx +++ b/src/designer/designer_packages/elsa-workflows-designer/src/components/toolbar/workflow-toolbar/workflow-toolbar.tsx @@ -5,6 +5,7 @@ import {EventBus} from '../../../services'; import toolbarComponentStore from "../../../data/toolbar-component-store"; import notificationService from '../../../modules/notifications/notification-service'; import notificationStore from "../../../modules/notifications/notification-store"; +import {PackagesApi} from "../../../services/api-client/packages-api"; @Component({ tag: 'elsa-workflow-toolbar', @@ -12,11 +13,20 @@ import notificationStore from "../../../modules/notifications/notification-store }) export class WorkflowToolbar { private readonly eventBus: EventBus; + private readonly packagesApi: PackagesApi; + + private currentElsaVersion: string; static NotificationService = notificationService; constructor() { this.eventBus = Container.get(EventBus); + this.packagesApi = Container.get(PackagesApi); + } + + async componentDidLoad() { + var response = await this.packagesApi.getVersion(); + return this.currentElsaVersion = response.packageVersion; } onNotificationClick = async e => { @@ -28,7 +38,7 @@ export class WorkflowToolbar { render() { const logoPath = getAssetPath('./assets/logo.png'); const infoPanelBoolean = notificationStore.infoPanelBoolean; - + return (
- elsa 3.0.0 + {this.currentElsaVersion}
diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/models/api.ts b/src/designer/designer_packages/elsa-workflows-designer/src/models/api.ts index aa813f63f..b9db84b47 100644 --- a/src/designer/designer_packages/elsa-workflows-designer/src/models/api.ts +++ b/src/designer/designer_packages/elsa-workflows-designer/src/models/api.ts @@ -79,3 +79,7 @@ export interface WorkflowActivationStrategyDescriptor { description: string; typeName: string; } + +export interface PackageVersion { + packageVersion: string; +} \ No newline at end of file diff --git a/src/designer/designer_packages/elsa-workflows-designer/src/services/api-client/packages-api.ts b/src/designer/designer_packages/elsa-workflows-designer/src/services/api-client/packages-api.ts new file mode 100644 index 000000000..eea626114 --- /dev/null +++ b/src/designer/designer_packages/elsa-workflows-designer/src/services/api-client/packages-api.ts @@ -0,0 +1,20 @@ +import {Service} from "typedi"; +import {ElsaClientProvider} from "./elsa-client"; +import { PackageVersion } from "../../models"; + +@Service() +export class PackagesApi { + private provider: ElsaClientProvider; + + constructor(provider: ElsaClientProvider) { + this.provider = provider; + } + + async getVersion(): Promise { + const httpClient = await this.getHttpClient(); + const response = await httpClient.get(`package/version`); + return response.data; + } + + private getHttpClient = async () => await this.provider.getHttpClient(); +} diff --git a/src/modules/Elsa.Workflows.Api/Elsa.Workflows.Api.csproj b/src/modules/Elsa.Workflows.Api/Elsa.Workflows.Api.csproj index 7c61fc7a7..83ad563b6 100644 --- a/src/modules/Elsa.Workflows.Api/Elsa.Workflows.Api.csproj +++ b/src/modules/Elsa.Workflows.Api/Elsa.Workflows.Api.csproj @@ -5,6 +5,7 @@ net6.0;net7.0 + 3.0.0 Provides API endpoints for client applications such as the Elsa Designer web component. diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/Package/GetVersion.cs b/src/modules/Elsa.Workflows.Api/Endpoints/Package/GetVersion.cs new file mode 100644 index 000000000..ac1c9d509 --- /dev/null +++ b/src/modules/Elsa.Workflows.Api/Endpoints/Package/GetVersion.cs @@ -0,0 +1,29 @@ +using System.Reflection; +using Elsa.Abstractions; +using FastEndpoints; +using JetBrains.Annotations; + +namespace Elsa.Workflows.Api.Endpoints.Package; + +/// +public class GetVersion : Endpoint +{ + /// + public override void Configure() + { + Get("/package/version"); + } + + /// + public override async Task HandleAsync(Request request, CancellationToken cancellationToken) + { + var assembly = Assembly.GetExecutingAssembly(); + var versionAttribute = assembly.GetCustomAttribute(); + var version = RemoveAutoGeneratedPostfix(versionAttribute); + + await SendOkAsync(new Response(version), cancellationToken); + } + + private static string RemoveAutoGeneratedPostfix(AssemblyInformationalVersionAttribute? versionAttribute) => + versionAttribute?.InformationalVersion.Split("+")[0]!; +} \ No newline at end of file diff --git a/src/modules/Elsa.Workflows.Api/Endpoints/Package/Models.cs b/src/modules/Elsa.Workflows.Api/Endpoints/Package/Models.cs new file mode 100644 index 000000000..66b474cb9 --- /dev/null +++ b/src/modules/Elsa.Workflows.Api/Endpoints/Package/Models.cs @@ -0,0 +1,13 @@ +namespace Elsa.Workflows.Api.Endpoints.Package; + +public class Response +{ + public Response(string packageVersion) + { + PackageVersion = packageVersion; + } + + public string PackageVersion { get; set; } +} + +public class Request {} \ No newline at end of file