From 78d3036644fd22a6455047d1706a8c856bb208d4 Mon Sep 17 00:00:00 2001 From: Lilian Date: Tue, 2 Jul 2024 02:47:04 +0200 Subject: [PATCH] [frontend] Refactor Note and NoteComponent --- Iceshrimp.Frontend/Components/Note/Note.razor | 100 ++++++++++++++++++ .../Components/Note/NoteComponent.razor | 89 +--------------- .../Components/Note/NoteFooter.razor | 25 +++-- .../Components/Note/NoteReaction.razor | 4 +- 4 files changed, 117 insertions(+), 101 deletions(-) diff --git a/Iceshrimp.Frontend/Components/Note/Note.razor b/Iceshrimp.Frontend/Components/Note/Note.razor index 53b8a3c7..4984201f 100644 --- a/Iceshrimp.Frontend/Components/Note/Note.razor +++ b/Iceshrimp.Frontend/Components/Note/Note.razor @@ -1,4 +1,10 @@ +@using Iceshrimp.Frontend.Core.Services @using Iceshrimp.Shared.Schemas +@inject ApiService ApiService +@inject NavigationManager NavigationManager +@inject ComposeService ComposeService + + @if (NoteResponse.Renote != null) {
@@ -25,9 +31,103 @@ else { } + @code { [Parameter] [EditorRequired] public required NoteResponse NoteResponse { get; set; } [Parameter] public bool Indented { get; set; } + + //FIXME: This needs to be rewritten. + public void React(string name, bool target, string? url = null) + { + var index = NoteResponse.Reactions.FindIndex(x => x.Name == name); + switch (target) + { + case true: + ApiService.Notes.ReactToNote(NoteResponse.Id, name); + if (index == -1 && url != null) + { + NoteResponse.Reactions.Add(new NoteReactionSchema + { + NoteId = NoteResponse.Id, + Name = name, + Count = 1, + Reacted = true, + Url = url + }); + } + else + { + if (NoteResponse.Reactions[index].Reacted != true) + { + NoteResponse.Reactions[index].Count++; + } + + break; + } + + StateHasChanged(); + break; + case false: + ApiService.Notes.RemoveReactionFromNote(NoteResponse.Id, name); + if (NoteResponse.Reactions[index].Count <= 1) + { + NoteResponse.Reactions.RemoveAt(index); + } + else + { + NoteResponse.Reactions[index].Count--; + } + + StateHasChanged(); + break; + } + } + + public void Like() + { + if (NoteResponse.Liked) + { + ApiService.Notes.UnlikeNote(NoteResponse.Id); + NoteResponse.Liked = false; + NoteResponse.Likes--; + StateHasChanged(); + } + else + { + ApiService.Notes.LikeNote(NoteResponse.Id); + NoteResponse.Liked = true; + NoteResponse.Likes++; + StateHasChanged(); + } + } + + public void Reply() + { + ComposeService.ComposeDialog?.OpenDialog(NoteResponse); + } + + public void Renote() + { + ApiService.Notes.RenoteNote(NoteResponse.Id); + NoteResponse.Renotes++; + StateHasChanged(); + } + + public void DoQuote() + { + ComposeService.ComposeDialog?.OpenDialog(null, NoteResponse); + } + + public async Task Redraft() + { + await ApiService.Notes.DeleteNote(NoteResponse.Id); + ComposeService.ComposeDialog?.OpenDialogRedraft(NoteResponse); + } + + public void Delete() + { + ApiService.Notes.DeleteNote(NoteResponse.Id); + } } \ No newline at end of file diff --git a/Iceshrimp.Frontend/Components/Note/NoteComponent.razor b/Iceshrimp.Frontend/Components/Note/NoteComponent.razor index 520ead8a..e63abef7 100644 --- a/Iceshrimp.Frontend/Components/Note/NoteComponent.razor +++ b/Iceshrimp.Frontend/Components/Note/NoteComponent.razor @@ -51,91 +51,4 @@ { NavigationManager.NavigateTo($"/notes/{Quote!.Id}"); } - - //FIXME: This needs to be rewritten. - public void React(string name, bool target, string? url = null) - { - var index = Note.Reactions.FindIndex(x => x.Name == name); - switch (target) - { - case true: - ApiService.Notes.ReactToNote(Note.Id, name); - if (index == -1 && url != null) - { - Note.Reactions.Add(new NoteReactionSchema - { - NoteId = Note.Id, - Name = name, - Count = 1, - Reacted = true, - Url = url - }); - } - else - { - if (Note.Reactions[index].Reacted != true) - { - Note.Reactions[index].Count++; - } - - break; - } - - StateHasChanged(); - break; - case false: - ApiService.Notes.RemoveReactionFromNote(Note.Id, name); - if (Note.Reactions[index].Count <= 1) - { - Note.Reactions.RemoveAt(index); - } - else - { - Note.Reactions[index].Count--; - } - - StateHasChanged(); - break; - } - } - - public void Like() - { - if (Note.Liked) - { - ApiService.Notes.UnlikeNote(Note.Id); - Note.Liked = false; - Note.Likes--; - StateHasChanged(); - } - else - { - ApiService.Notes.LikeNote(Note.Id); - Note.Liked = true; - Note.Likes++; - StateHasChanged(); - } - } - - public void Reply() - { - ComposeService.ComposeDialog?.OpenDialog(Note); - } - - public void Renote() - { - ApiService.Notes.RenoteNote(Note.Id); - Note.Renotes++; - StateHasChanged(); - } - - public void DoQuote() - { - ComposeService.ComposeDialog?.OpenDialog(null, Note); - } - - public void Delete() - { - ApiService.Notes.DeleteNote(Note.Id); - } -} \ No newline at end of file +} diff --git a/Iceshrimp.Frontend/Components/Note/NoteFooter.razor b/Iceshrimp.Frontend/Components/Note/NoteFooter.razor index 60b63199..6db415df 100644 --- a/Iceshrimp.Frontend/Components/Note/NoteFooter.razor +++ b/Iceshrimp.Frontend/Components/Note/NoteFooter.razor @@ -58,11 +58,14 @@