@page "/drive" @page "/drive/{Id}" @attribute [Authorize] @using Iceshrimp.Frontend.Localization @using Microsoft.AspNetCore.Components.Sections @using Microsoft.Extensions.Localization @using Iceshrimp.Assets.PhosphorIcons @using Iceshrimp.Frontend.Core.Miscellaneous @using Iceshrimp.Frontend.Core.Services @using Iceshrimp.Shared.Schemas.Web @using Microsoft.AspNetCore.Authorization @inject ApiService Api; @inject IStringLocalizer Loc; @inject ILogger Logger; @Loc["Drive"] @if (_state == State.Loaded && Folder != null) {
    @foreach (var el in Folder.Folders) {
  1. @el.Name
  2. } @foreach (var el in Folder.Files) {
  3. @if (el.ContentType.StartsWith("image")) { @el.Description } else if (el.ContentType.StartsWith("audio")) { } else if (el.ContentType.StartsWith("video")) { } else { } @el.Filename
  4. }
} @if (_state == State.Loading) {
Loading
} @if (_state == State.NotFound) {
This folder does not exist
} @if (_state == State.Error) {
An error occured while loading the drive folder. Please inspect logs.
} @code { [Parameter] public string? Id { get; set; } private DriveFolderResponse? Folder { get; set; } = null; private State _state { get; set; } private async Task Load() { Logger.LogTrace($"Opening drive folder: {Id ?? "root"}"); _state = State.Loading; try { Folder = await Api.Drive.GetFolderAsync(Id); } catch (ApiException e) { Logger.LogWarning($"Failed to load folder '{Id ?? "root"}' due to API Exception: {e.Message}"); _state = State.Error; return; } if (Folder == null) { _state = State.NotFound; return; } _state = State.Loaded; } protected override async Task OnInitializedAsync() { await Load(); } protected override async Task OnParametersSetAsync() { await Load(); } }