Some fixes
Webhook update functionality is fixed. Workflow list page is fixed.
This commit is contained in:
parent
9a01aefe17
commit
823eaf8a80
18
Elsa.sln
18
Elsa.sln
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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>;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue