diff --git a/Iceshrimp.Frontend/Components/Note/Note.razor.cs b/Iceshrimp.Frontend/Components/Note/Note.razor.cs
index b10fd3e8..60afec8b 100644
--- a/Iceshrimp.Frontend/Components/Note/Note.razor.cs
+++ b/Iceshrimp.Frontend/Components/Note/Note.razor.cs
@@ -165,6 +165,11 @@ public partial class Note : IDisposable
await ApiService.Notes.DeleteNote(NoteResponse.Id);
ComposeService.ComposeDialog?.OpenDialogRedraft(NoteResponse);
}
+
+ public async void Bite()
+ {
+ await ApiService.Notes.BiteNote(NoteResponse.Id);
+ }
public async void Mute()
{
diff --git a/Iceshrimp.Frontend/Components/Note/NoteFooter.razor b/Iceshrimp.Frontend/Components/Note/NoteFooter.razor
index 49bd6b48..3a8e491d 100644
--- a/Iceshrimp.Frontend/Components/Note/NoteFooter.razor
+++ b/Iceshrimp.Frontend/Components/Note/NoteFooter.razor
@@ -82,6 +82,12 @@
@Loc["Redraft"]
}
+ else
+ {
+
+ @Loc["Bite"]
+
+ }
@Loc["Open original page"]
diff --git a/Iceshrimp.Frontend/Core/ControllerModels/NoteControllerModel.cs b/Iceshrimp.Frontend/Core/ControllerModels/NoteControllerModel.cs
index 92f0cf08..72d4220b 100644
--- a/Iceshrimp.Frontend/Core/ControllerModels/NoteControllerModel.cs
+++ b/Iceshrimp.Frontend/Core/ControllerModels/NoteControllerModel.cs
@@ -31,6 +31,9 @@ internal class NoteControllerModel(ApiClient api)
public Task?> GetNoteReactions(string id, string name) =>
api.CallNullable>(HttpMethod.Get, $"/notes/{id}/reactions/{name}");
+ public Task BiteNote(string id) =>
+ api.Call(HttpMethod.Post, $"/notes/{id}/bite");
+
public Task LikeNote(string id) =>
api.CallNullable(HttpMethod.Post, $"/notes/{id}/like");