Extracted some pages to their own assembly and finished the artifact display page code
This commit is contained in:
38
OpenArchival.Blazor.FileViewer/FileViewerFactory.cs
Normal file
38
OpenArchival.Blazor.FileViewer/FileViewerFactory.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
namespace OpenArchival.Blazor.FileViewer;
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
public static class FileViewerFactory
|
||||
{
|
||||
private static Dictionary<string, Type> _extensionMapping = [];
|
||||
|
||||
static FileViewerFactory() {
|
||||
// Image types taken from https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/Image_types
|
||||
RegisterViewerComponent<ImageViewer>([".apng", ".png", ".avif", ".gif", ".jpg", ".jpeg", ".jfif", ".pjpeg", ".pjp", ".svg", ".webp"]);
|
||||
}
|
||||
|
||||
public static void RegisterViewerComponent<ComponentType>(IEnumerable<string> extensions) where ComponentType : IFileViewer
|
||||
{
|
||||
foreach (var extension in extensions)
|
||||
{
|
||||
_extensionMapping.Add(extension, typeof(ComponentType));
|
||||
}
|
||||
}
|
||||
|
||||
public static Type GetViewerComponent(string filename)
|
||||
{
|
||||
if (_extensionMapping.TryGetValue(Path.GetExtension(filename).ToLowerInvariant(), out var componentType))
|
||||
{
|
||||
return componentType;
|
||||
}
|
||||
else
|
||||
{
|
||||
return typeof(UnsupportedFileViewer);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user