From b8b23abffc39a8fe7ac654ccf8ea34a6642ee6d7 Mon Sep 17 00:00:00 2001 From: Neil Brommer Date: Mon, 22 Nov 2021 22:12:13 -0800 Subject: [PATCH] Finish delete container process --- Start/Client/Components/DeleteContainer.razor | 63 +++++++++++++++ Start/Client/Pages/StartPage.razor | 79 ++++++++++++------- 2 files changed, 112 insertions(+), 30 deletions(-) create mode 100644 Start/Client/Components/DeleteContainer.razor diff --git a/Start/Client/Components/DeleteContainer.razor b/Start/Client/Components/DeleteContainer.razor new file mode 100644 index 0000000..65deace --- /dev/null +++ b/Start/Client/Components/DeleteContainer.razor @@ -0,0 +1,63 @@ +@using Microsoft.AspNetCore.Components.WebAssembly.Authentication +@inject HttpClient Http + +@{ string title = $"Delete Container \"{this.ContainerTitle}\""; } + + + @if (this.ShowAlert) + { +
+ There was an error deleting the bookmark container +
+ } +

Are you sure you want to delete the bookmark container "@this.ContainerTitle"?

+
+ + +
+
+ +@code { + [Parameter] + public int BookmarkContainerId { get; set; } + [Parameter] + public string ContainerTitle { get; set; } = null!; + [Parameter] + public bool Active { get; set; } + [Parameter] + public EventCallback OnDeleted { get; set; } + [Parameter] + public EventCallback OnClose { get; set; } + + public bool ShowAlert { get; set; } = false; + + public async Task OnDialogClose() + { + this.Active = false; + await this.OnClose.InvokeAsync(); + } + + public async Task OnConfirmDelete() + { + try + { + HttpResponseMessage result = await Http + .DeleteAsync($"Bookmarks/DeleteBookmarkContainer/{this.BookmarkContainerId}"); + + if (result.StatusCode == System.Net.HttpStatusCode.OK) + { + await this.OnDeleted.InvokeAsync(BookmarkContainerId); + this.ShowAlert = false; + this.Active = false; + } + else + { + this.ShowAlert = true; + } + } + catch (AccessTokenNotAvailableException e) + { + e.Redirect(); + } + } +} diff --git a/Start/Client/Pages/StartPage.razor b/Start/Client/Pages/StartPage.razor index 158c998..fc6fa1f 100644 --- a/Start/Client/Pages/StartPage.razor +++ b/Start/Client/Pages/StartPage.razor @@ -73,13 +73,22 @@ else + } @code { private IList? bookmarkContainers; private BookmarkContainerDto? selectedBookmarkContainer; + private bool showCreateContainerForm = false; + + private bool showDeleteContainerForm = false; + private BookmarkContainerDto? bookmarkContainerToDelete; + private bool showCreateGroupForm = false; private bool showCreateBookmarkForm = false; @@ -95,14 +104,9 @@ else .GetFromJsonAsync>( "Bookmarks/GetAllBookmarkContainers"); - if (this.bookmarkContainers == null || !this.bookmarkContainers.Any()) { - HttpResponseMessage response = await Http - .PostAsJsonAsync("Bookmarks/CreateBookmarkContainer", "Default"); - - BookmarkContainerDto? container = await response - .RequestMessage - !.Content - !.ReadFromJsonAsync(); + if (this.bookmarkContainers == null || !this.bookmarkContainers.Any()) + { + await this.CreateDefaultContainer(); } await this.OnContainerSelected(await this.GetSelectedContainerId()); @@ -112,6 +116,20 @@ else } } + protected async Task CreateDefaultContainer() + { + HttpResponseMessage response = await Http + .PostAsJsonAsync("Bookmarks/CreateBookmarkContainer", "Default"); + + BookmarkContainerDto? container = await response + .RequestMessage + !.Content + !.ReadFromJsonAsync(); + + if (container != null) + await this.OnContainerSelected(container.BookmarkContainerId); + } + protected async Task OnContainerSelected(int bookmarkContainerId) { try @@ -132,29 +150,11 @@ else } } - protected async Task OnDeleteContainerClicked(int bookmarkContainerId) + protected void OnDeleteContainerClicked(int bookmarkContainerId) { - try - { - HttpResponseMessage result = await Http - .DeleteAsync($"Bookmarks/DeleteBookmarkContainer/{bookmarkContainerId}"); - - if (result.StatusCode == System.Net.HttpStatusCode.OK) - { - if (await this.GetSelectedContainerId() == bookmarkContainerId) - await this.OnContainerSelected( - this.bookmarkContainers?.First().BookmarkContainerId - ?? bookmarkContainerId); - - this.bookmarkContainers = this.bookmarkContainers - ?.Where(bc => bc.BookmarkContainerId != bookmarkContainerId) - .ToList(); - } - } - catch (AccessTokenNotAvailableException e) - { - e.Redirect(); - } + this.bookmarkContainerToDelete = this.bookmarkContainers + ?.First(bc => bc.BookmarkContainerId == bookmarkContainerId); + this.showDeleteContainerForm = true; } protected void OnCreateContainerClicked() @@ -177,6 +177,25 @@ else await OnContainerSelected(newContainer.BookmarkContainerId); } + protected void OnCloseDeleteContainer() + { + this.showDeleteContainerForm = false; + } + + protected async Task OnContainerDeleted(int bookmarkContainerId) + { + if (!this.bookmarkContainers?.Any(bc => bc.BookmarkContainerId != bookmarkContainerId) ?? false) + await this.CreateDefaultContainer(); + + if (await this.GetSelectedContainerId() == bookmarkContainerId) + await this.OnContainerSelected( + this.bookmarkContainers?.First().BookmarkContainerId ?? bookmarkContainerId); + + this.bookmarkContainers = this.bookmarkContainers + ?.Where(bc => bc.BookmarkContainerId != bookmarkContainerId) + .ToList(); + } + // Save the currently selected container in LocalStorage so that the same container remains // selected between new tabs