@using System.Net; @using System.Diagnostics; @using Hangfire; @using LANCommander.Server.Jobs.Background; @using Microsoft.EntityFrameworkCore; @inject DatabaseServiceFactory DatabaseServiceFactory @inject NavigationManager Navigator @inject IMessageService MessageService @inject IJSRuntime JS @inject ILogger Logger @{ RenderFragment Footer = @; }

Drag and Drop

or

Only LCX files are supported for importing redistributables
@code { [Parameter] public EventCallback OnRedistributableImported { get; set; } [Parameter] public RenderFragment Hint { get; set; } IBrowserFile File; ChunkUploader ChunkUploader; bool IsValid = false; bool Visible = false; string Filename; string Status; async Task Start() { await ChunkUploader.Start(); } async Task Clear() { await ChunkUploader.Clear(); } async Task Cancel() { await ChunkUploader.Clear(); Visible = false; } public async Task Open() { Visible = true; await InvokeAsync(StateHasChanged); } public async Task OnUploadCompleted(string data) { if (Guid.TryParse(data, out var objectKey)) { try { using (var redistributableService = DatabaseServiceFactory.Create()) { var redistributable = await redistributableService.ImportAsync(objectKey); Visible = false; await InvokeAsync(StateHasChanged); if (OnRedistributableImported.HasDelegate) await OnRedistributableImported.InvokeAsync(redistributable.Id); MessageService.Success($"{redistributable.Name} successfully imported!"); } } catch (Exception ex) { MessageService.Error("An unknown error occurred while trying to import"); Logger.LogError(ex, "An unknown error occurred while trying to import"); } } else { Visible = false; await InvokeAsync(StateHasChanged); MessageService.Error("Import file failed to upload!"); Logger.LogError("Import file failed to upload!"); } await ChunkUploader.Clear(); } public async Task OnUploadError(string message) { Visible = false; await InvokeAsync(StateHasChanged); MessageService.Error("An error occurred while trying to import"); Logger.LogError($"An error occurred while trying to import: {message}"); } }