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

Drag and Drop

or

@Hint
@code { [Parameter] public EventCallback OnGameImported { get; set; } [Parameter] public RenderFragment Hint { get; set; } string RootPath = Path.GetPathRoot(Directory.GetCurrentDirectory()); IBrowserFile File; ChunkUploader ChunkUploader; bool IsValid = false; bool Visible = false; string Filename; string Status; private async Task Start() { await ChunkUploader.Start(); } private async Task Clear() { await ChunkUploader.Clear(); } private 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 gameService = DatabaseServiceFactory.Create()) { var game = await gameService.ImportAsync(objectKey); Visible = false; await InvokeAsync(StateHasChanged); if (OnGameImported.HasDelegate) await OnGameImported.InvokeAsync(game.Id); MessageService.Success($"{game.Title} successfully imported!"); } } catch (Exception ex) { Logger?.LogError(ex, "An unknown error occurred while trying to import"); MessageService.Error("An unknown error occurred while trying to import"); } } else { Visible = false; await InvokeAsync(StateHasChanged); MessageService.Error("Import file failed to upload!"); } await 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}"); } public async Task OnLocalFileSelected(string path) { try { using (var gameService = DatabaseServiceFactory.Create()) { var game = await gameService.ImportLocalFileAsync(path); Visible = false; await InvokeAsync(StateHasChanged); if (OnGameImported.HasDelegate) await OnGameImported.InvokeAsync(game.Id); MessageService.Success($"{game.Title} successfully imported!"); } } catch (Exception ex) { Logger?.LogError(ex, "An unknown error occurred while trying to import"); MessageService.Error("An unknown error occurred while trying to import"); } } }