Some fixes

Webhook update functionality is fixed.
Workflow list page is fixed.
This commit is contained in:
axeleron007 2021-06-09 19:28:00 +03:00
parent 9a01aefe17
commit 823eaf8a80
7 changed files with 87 additions and 15 deletions

View file

@ -235,8 +235,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "aspnetcore", "aspnetcore",
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Samples.AspNetCore.Monolith", "src\samples\dashboard\aspnetcore\ElsaDashboard.Samples.AspNetCore.Monolith\ElsaDashboard.Samples.AspNetCore.Monolith.csproj", "{F1EF5639-021A-4D22-9D4A-73D57C88EBFA}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Samples.AspNetCore.Monolith", "src\samples\dashboard\aspnetcore\ElsaDashboard.Samples.AspNetCore.Monolith\ElsaDashboard.Samples.AspNetCore.Monolith.csproj", "{F1EF5639-021A-4D22-9D4A-73D57C88EBFA}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.Persistence.YesSql", "src\samples\persistence\Elsa.Samples.Persistence.YesSql\Elsa.Samples.Persistence.YesSql.csproj", "{3A30EFFE-32D8-40B8-9C62-427037BB5424}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Designer.Components.Web", "src\designer\bindings\aspnet\Elsa.Designer.Components.Web\Elsa.Designer.Components.Web.csproj", "{3DF05CFC-AC77-489F-9A42-C4FDB599AA69}"
@ -303,19 +301,19 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Webhooks.Persistence.M
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Webhooks.Persistence.YesSql", "src\activities\webhooks\Elsa.Webhooks.Persistence.YesSql\Elsa.Webhooks.Persistence.YesSql.csproj", "{EE147504-555D-4EFC-A79A-34748666AA6C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Web", "src\dashboards\ElsaDashboard\ElsaDashboard.Web.csproj", "{1129868E-BA72-44C4-941C-A28D9001504B}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Web", "src\dashboards\ElsaDashboard\ElsaDashboard.Web.csproj", "{1129868E-BA72-44C4-941C-A28D9001504B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Samples.BlazorWasm", "src\samples\dashboard\blazor\ElsaDashboard.Samples.BlazorWasm\ElsaDashboard.Samples.BlazorWasm.csproj", "{24A99602-F743-4B1A-AC96-599F34AE916C}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Samples.BlazorWasm", "src\samples\dashboard\blazor\ElsaDashboard.Samples.BlazorWasm\ElsaDashboard.Samples.BlazorWasm.csproj", "{24A99602-F743-4B1A-AC96-599F34AE916C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "html", "html", "{8E6215AB-FDD3-4011-B598-B6BB63F294BB}"
ProjectSection(SolutionItems) = preProject
src\samples\dashboard\html\index.html = src\samples\dashboard\html\index.html
src\samples\dashboard\html\package.json = src\samples\dashboard\html\package.json
EndProjectSection
ProjectSection(SolutionItems) = preProject
src\samples\dashboard\html\index.html = src\samples\dashboard\html\index.html
src\samples\dashboard\html\package.json = src\samples\dashboard\html\package.json
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ElsaDashboard.Samples.BlazorServer", "src\samples\dashboard\blazor\ElsaDashboard.Samples.BlazorServer\ElsaDashboard.Samples.BlazorServer.csproj", "{6A03B177-09E0-4421-9704-945E6248AB69}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ElsaDashboard.Samples.BlazorServer", "src\samples\dashboard\blazor\ElsaDashboard.Samples.BlazorServer\ElsaDashboard.Samples.BlazorServer.csproj", "{6A03B177-09E0-4421-9704-945E6248AB69}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Samples.FaultyWorkflows", "src\samples\aspnet\Elsa.Samples.FaultyWorkflows\Elsa.Samples.FaultyWorkflows.csproj", "{84751112-C2B7-41D4-98F5-D87D7C2E1DAE}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Elsa.Samples.FaultyWorkflows", "src\samples\aspnet\Elsa.Samples.FaultyWorkflows\Elsa.Samples.FaultyWorkflows.csproj", "{84751112-C2B7-41D4-98F5-D87D7C2E1DAE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View file

@ -0,0 +1,56 @@
using System.Threading;
using System.Threading.Tasks;
using Elsa.Persistence.Specifications;
using Elsa.Server.Api.Swagger.Examples;
using Elsa.Webhooks.Abstractions.Models;
using Elsa.Webhooks.Abstractions.Persistence;
using Elsa.Webhooks.Abstractions.Services;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
using Swashbuckle.AspNetCore.Filters;
namespace Elsa.Activities.Webhooks.Endpoints.WebhookDefinitions
{
[ApiController]
[ApiVersion("1")]
[Route("v{apiVersion:apiVersion}/webhook-definitions")]
[Produces("application/json")]
public partial class Update : ControllerBase
{
private readonly IWebhookDefinitionStore _webhookDefinitionStore;
private readonly IWebhookPublisher _webhookPublisher;
public Update(IWebhookDefinitionStore webhookDefinitionStore, IWebhookPublisher webhookPublisher)
{
_webhookDefinitionStore = webhookDefinitionStore;
_webhookPublisher = webhookPublisher;
}
[HttpPut]
[ProducesResponseType(StatusCodes.Status201Created, Type = typeof(WebhookDefinition))]
[SwaggerResponseExample(StatusCodes.Status200OK, typeof(WebhookDefinitionExample))]
[SwaggerOperation(
Summary = "Updates an existing webhook.",
Description =
"Creates a new webhook definition or updates an existing one.",
OperationId = "WebhookDefinitions.Put",
Tags = new[] { "WebhookDefinitions" })
]
public async Task<ActionResult<WebhookDefinition>> Handle([FromBody] SaveRequest request, [FromRoute] ApiVersion apiVersion, CancellationToken cancellationToken)
{
var webhookId = request.Id;
var webhookDefinition = !string.IsNullOrWhiteSpace(webhookId) ? await _webhookDefinitionStore.FindAsync(new EntityIdSpecification<WebhookDefinition>(webhookId), cancellationToken) : default;
webhookDefinition.Name = request.Name?.Trim();
webhookDefinition.Path = request.Path?.Trim();
webhookDefinition.Description = request.Description?.Trim();
webhookDefinition.PayloadTypeName = request.PayloadTypeName?.Trim();
webhookDefinition.IsEnabled = request.IsEnabled;
webhookDefinition = await _webhookPublisher.UpdateAsync(webhookDefinition, cancellationToken);
return CreatedAtAction("Handle", "Get", new { id = webhookDefinition.Id, apiVersion = apiVersion.ToString() }, webhookDefinition);
}
}
}

View file

@ -44,6 +44,15 @@ namespace Elsa.Activities.Webhooks.Services
return webhook;
}
public async Task<WebhookDefinition> UpdateAsync(WebhookDefinition webhookDefinition, CancellationToken cancellationToken = default)
{
var webhook = webhookDefinition;
webhook = Initialize(webhook);
await _webhookDefinitionStore.UpdateAsync(webhook, cancellationToken);
return webhook;
}
public async Task DeleteAsync(string webhookId, CancellationToken cancellationToken = default)
{
var webhookDefinition = New();

View file

@ -8,6 +8,7 @@ namespace Elsa.Webhooks.Abstractions.Services
{
WebhookDefinition New();
Task<WebhookDefinition> SaveAsync(WebhookDefinition webhookDefinition, CancellationToken cancellationToken = default);
Task<WebhookDefinition> UpdateAsync(WebhookDefinition webhookDefinition, CancellationToken cancellationToken = default);
Task DeleteAsync(string webhookId, CancellationToken cancellationToken = default);
Task DeleteAsync(WebhookDefinition webhookDefinition, CancellationToken cancellationToken = default);
}

View file

@ -94,12 +94,14 @@ export class ElsaWebhookDefinitionEditorScreen {
this.saving = true;
try {
debugger
webhookDefinition = await client.webhookDefinitionsApi.save(request);
if (request.id == null)
webhookDefinition = await client.webhookDefinitionsApi.save(request);
else
webhookDefinition = await client.webhookDefinitionsApi.update(request);
this.saving = false;
this.saved = true;
//this.webhookDefinitionInternal = webhookDefinition;
setTimeout(() => this.saved = false, 500);
}
catch (e) {

View file

@ -44,7 +44,7 @@ export class ElsaWorkflowDefinitionsListScreen {
render() {
const workflowDefinitions = this.workflowDefinitions.items;
const groupings = collection.groupBy(workflowDefinitions, 'id');
const groupings = collection.groupBy(workflowDefinitions, 'definitionId');
return (
<div>
@ -134,4 +134,4 @@ export class ElsaWorkflowDefinitionsListScreen {
</div>
);
}
}
}

View file

@ -90,6 +90,10 @@ export const createElsaClient = function (serverUrl: string): ElsaClient {
const response = await httpClient.post<WebhookDefinition>('v1/webhook-definitions', request);
return response.data;
},
update: async request => {
const response = await httpClient.put<WebhookDefinition>('v1/webhook-definitions', request);
return response.data;
},
delete: async webhookId => {
await httpClient.delete(`v1/webhook-definitions/${webhookId}`);
},
@ -228,6 +232,8 @@ export interface WebhookDefinitionsApi {
getByWebhookId(webhookId: string): Promise<WebhookDefinition>;
save(request: SaveWebhookDefinitionRequest): Promise<WebhookDefinition>;
update(request: SaveWebhookDefinitionRequest): Promise<WebhookDefinition>;
delete(webhookId: string): Promise<void>;
}