diff --git a/Iceshrimp.Frontend/Components/DriveEntry.razor b/Iceshrimp.Frontend/Components/DriveEntry.razor
index bc75e290..4b8b636b 100644
--- a/Iceshrimp.Frontend/Components/DriveEntry.razor
+++ b/Iceshrimp.Frontend/Components/DriveEntry.razor
@@ -76,9 +76,18 @@
}
@if (Folder != null && File == null)
{
-
+
@Folder.Name
+
}
@@ -86,7 +95,9 @@
[Parameter] public DriveFileResponse? File { get; set; } = null;
[Parameter] public DriveFolderResponse? Folder { get; set; } = null;
private Menu FileMenu { get; set; } = null!;
+ private Menu FolderMenu { get; set; } = null!;
private ElementReference FileButton { get; set; }
+ private ElementReference FolderButton { get; set; }
private void SelectFile() => FileMenu.Toggle(FileButton);
@@ -114,9 +125,9 @@
}
private async Task MarkFileNotSensitive() => await MarkFileSensitive(false);
-
+
private async Task MarkFileAsSensitive() => await MarkFileSensitive(true);
-
+
private async Task SetFileAltText()
{
var alt = await Js.InvokeAsync
("prompt", "Set alt text", File!.Description);
@@ -131,7 +142,7 @@
}
private void OpenFile() => Js.InvokeVoidAsync("open", File!.Url, "_blank");
-
+
private void CopyFileLink() => Js.InvokeVoidAsync("navigator.clipboard.writeText", File!.Url);
private async Task DeleteFile()
@@ -140,9 +151,23 @@
File = null;
StateHasChanged();
}
-
- private void SelectFolder()
+
+ private void SelectFolder() => FolderMenu.Toggle(FolderButton);
+
+ private async Task RenameFolder()
{
- Nav.NavigateTo($"/drive/{Folder!.Id}");
+ if (Folder is not { Id: not null, Name: not null }) return;
+
+ var name = await Js.InvokeAsync("prompt", "Rename folder", Folder.Name);
+ if (string.IsNullOrWhiteSpace(name)) return;
+
+ var res = await Api.Drive.UpdateFolderAsync(Folder.Id, name.Trim());
+ if (res != null)
+ {
+ Folder.Name = res.Name;
+ StateHasChanged();
+ }
}
+
+ private void OpenFolder() => Nav.NavigateTo($"/drive/{Folder!.Id}");
}
\ No newline at end of file
diff --git a/Iceshrimp.Frontend/Core/ControllerModels/DriveControllerModel.cs b/Iceshrimp.Frontend/Core/ControllerModels/DriveControllerModel.cs
index c9db9613..6c92080e 100644
--- a/Iceshrimp.Frontend/Core/ControllerModels/DriveControllerModel.cs
+++ b/Iceshrimp.Frontend/Core/ControllerModels/DriveControllerModel.cs
@@ -24,4 +24,7 @@ internal class DriveControllerModel(ApiClient api)
public Task GetFolderAsync(string? id) =>
api.CallNullableAsync(HttpMethod.Get, "/drive/folder" + (id != null ? $"/{id}" : ""));
+
+ public Task UpdateFolderAsync(string id, string name) =>
+ api.CallNullableAsync(HttpMethod.Put, $"/drive/folder/{id}", QueryString.Create("name", name));
}
\ No newline at end of file