hn-20-2/Apps/Client/Pages/PublishLink.razor
2021-04-29 15:44:39 +02:00

52 lines
1.1 KiB
Plaintext

@page "/links/new"
@inject LinksClient Links
@inject NavigationManager Navigation
@inject NotificationManager Notification
@using System.ComponentModel.DataAnnotations
@attribute [Authorize]
<h1>Publish a new link!</h1>
@if(_error != null) {
<p>An error ! @_error.Message</p>
}
<EditForm Model="@_model" OnValidSubmit="TryPublishLink">
<DataAnnotationsValidator />
<ValidationSummary />
<InputText @bind-Value="@_model.Url" />
<button type="submit">Post!</button>
</EditForm>
@code {
private Model _model = new Model();
private Exception _error = null;
private async Task TryPublishLink()
{
_error = null;
try
{
await Links.CreateAsync(_model.Command);
Notification.Add("Your link was published!");
Navigation.NavigateTo("/");
}
catch(Exception ex)
{
_error = ex;
}
}
private class Model
{
[Required]
[Url]
public string Url { get; set; }
//public PublishLinkCommand Command { get { return new PublishLinkCommand { Url = new System.Uri(Url) }; }}
public PublishLinkCommand Command => new PublishLinkCommand { Url = new System.Uri(Url) };
}
}