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