From df01d0babd2645e290f52ad151d03dcc1955ddc4 Mon Sep 17 00:00:00 2001 From: Marcel Baumgartner Date: Wed, 26 Apr 2023 18:13:19 +0200 Subject: [PATCH] Fixed import and export --- .../App/Database/Entities/DockerImage.cs | 5 +- Moonlight/App/Database/Entities/Image.cs | 5 +- .../App/Database/Entities/ImageVariable.cs | 5 +- .../Views/Admin/Servers/Images/Index.razor | 96 ++++++------------- 4 files changed, 39 insertions(+), 72 deletions(-) diff --git a/Moonlight/App/Database/Entities/DockerImage.cs b/Moonlight/App/Database/Entities/DockerImage.cs index 4ad6137..047d1fa 100644 --- a/Moonlight/App/Database/Entities/DockerImage.cs +++ b/Moonlight/App/Database/Entities/DockerImage.cs @@ -1,7 +1,10 @@ -namespace Moonlight.App.Database.Entities; +using Newtonsoft.Json; + +namespace Moonlight.App.Database.Entities; public class DockerImage { + [JsonIgnore] public int Id { get; set; } public bool Default { get; set; } = false; public string Name { get; set; } = ""; diff --git a/Moonlight/App/Database/Entities/Image.cs b/Moonlight/App/Database/Entities/Image.cs index 6e2b604..1711940 100644 --- a/Moonlight/App/Database/Entities/Image.cs +++ b/Moonlight/App/Database/Entities/Image.cs @@ -1,7 +1,10 @@ -namespace Moonlight.App.Database.Entities; +using Newtonsoft.Json; + +namespace Moonlight.App.Database.Entities; public class Image { + [JsonIgnore] public int Id { get; set; } public Guid Uuid { get; set; } public string Name { get; set; } = ""; diff --git a/Moonlight/App/Database/Entities/ImageVariable.cs b/Moonlight/App/Database/Entities/ImageVariable.cs index dd14b22..8a394a7 100644 --- a/Moonlight/App/Database/Entities/ImageVariable.cs +++ b/Moonlight/App/Database/Entities/ImageVariable.cs @@ -1,7 +1,10 @@ -namespace Moonlight.App.Database.Entities; +using Newtonsoft.Json; + +namespace Moonlight.App.Database.Entities; public class ImageVariable { + [JsonIgnore] public int Id { get; set; } public string Key { get; set; } = ""; public string DefaultValue { get; set; } = ""; diff --git a/Moonlight/Shared/Views/Admin/Servers/Images/Index.razor b/Moonlight/Shared/Views/Admin/Servers/Images/Index.razor index 99f3c08..29c3829 100644 --- a/Moonlight/Shared/Views/Admin/Servers/Images/Index.razor +++ b/Moonlight/Shared/Views/Admin/Servers/Images/Index.razor @@ -14,8 +14,7 @@ @inject Repository ImageVariableRepository @inject Repository ServerRepository @inject SmartTranslateService SmartTranslateService -@inject ToastService ToastService -@inject NavigationManager NavigationManager +@inject AlertService AlertService
@@ -33,22 +32,15 @@ New image
@@ -108,10 +100,7 @@ private Image[] Images; private LazyLoader LazyLoader; - private Dictionary ServersCount = new(); - - private bool Uploading = false; - private int Percent = 0; + private readonly Dictionary ServersCount = new(); private async Task Load(LazyLoader lazyLoader) { @@ -156,63 +145,32 @@ private async Task OnFileChanged(InputFileChangeEventArgs arg) { - await ToastService.CreateProcessToast("upload", SmartTranslateService.Translate("Uploading files")); - - Uploading = true; - await InvokeAsync(StateHasChanged); - - int i = 1; foreach (var browserFile in arg.GetMultipleFiles()) { - if (browserFile.Size < 1024 * 1024 * 100) + try { - Percent = 0; + var stream = browserFile.OpenReadStream(1024 * 1024 * 100); + var data = new byte[browserFile.Size]; + _ = await stream.ReadAsync(data, 0, data.Length); - try - { - var stream = browserFile.OpenReadStream(1024 * 1024 * 100); - var data = new byte[browserFile.Size]; - await stream.ReadAsync(data, 0, data.Length); - Percent = 50; + var text = Encoding.UTF8.GetString(data); + var image = JsonConvert.DeserializeObject(text)!; + + image.Uuid = Guid.NewGuid(); - var text = Encoding.UTF8.GetString(data); + ImageRepository.Add(image); - var image = JsonConvert.DeserializeObject(text); - foreach (var imageDockerImage in image.DockerImages) - { - imageDockerImage.Id = 0; - } - foreach (var imageVariable in image.Variables) - { - imageVariable.Id = 0; - } - image.Id = 0; - - image = ImageRepository.Add(image); - - NavigationManager.NavigateTo("/admin/servers/images/edit/" + image.Id); - } - catch (Exception e) - { - await ToastService.Error(SmartTranslateService.Translate("An unknown error occured while uploading and importing the image")); - Logger.Error("Error uploading file"); - Logger.Error(e); - } - - await ToastService.UpdateProcessToast("upload", $"{i}/{arg.GetMultipleFiles().Count} {SmartTranslateService.Translate("complete")}"); + await AlertService.Success(SmartTranslateService.Translate("Successfully imported image")); + await LazyLoader.Reload(); } - else + catch (Exception e) { - await ToastService.Error(SmartTranslateService.Translate("The uploaded file should not be bigger than 100MB")); + await AlertService.Error(SmartTranslateService.Translate("An unknown error occured while uploading and importing the image")); + Logger.Error("Error importing image"); + Logger.Error(e); } - - i++; } - - Uploading = false; + await InvokeAsync(StateHasChanged); - - await ToastService.UpdateProcessToast("upload", SmartTranslateService.Translate("Upload complete")); - await ToastService.RemoveProcessToast("upload"); } } \ No newline at end of file