@using OpenArchival.Blazor.FileViewer @ArtifactEntry.Title Artifact Identifier @ArtifactEntry.ArtifactIdentifier Primary Artifact Type @ArtifactEntry.Type.Name @if (!string.IsNullOrEmpty(ArtifactEntry.StorageLocation.Location)) { Storage Location @ArtifactEntry.StorageLocation.Location } @if (ArtifactEntry.Tags.Count > 0) { Tags } @if (ArtifactEntry.ListedNames.Count > 0) { Listed Names } @if (ArtifactEntry.AssociatedDates.Count > 0) { Associated Dates } Description @ArtifactEntry.Description @foreach (FilePathListing file in ArtifactEntry.Files) { @file.OriginalName } @inject IJSRuntime JSRuntime @inject ISnackbar Snackbar @code { [Parameter] public required ArtifactEntry ArtifactEntry { get; set; } private async Task OnFileDownloadClicked(FilePathListing file) { try { byte[] fileBytes = await File.ReadAllBytesAsync(file.Path); string mimeType = ""; await JSRuntime.InvokeVoidAsync("downloadFileFromBytes", file.OriginalName, mimeType, Convert.ToBase64String(fileBytes)); } catch (Exception ex) { Snackbar.Add($"Failed to download file {file.OriginalName}", Severity.Error); throw ex; } } }