- Add PreviewJob (WebP) — same master/sub-job pattern as ThumbnailJob - Convert ThumbnailJob from JPEG to WebP with configurable quality - Add ThumbnailQuality/PreviewQuality settings (configurable in settings UI) - Add PreviewSize, ThumbnailFormat, PreviewFormat fields to Asset model - Add format-aware repo queries for auto-regeneration of stale JPEGs - Fix MIME types in MediaRepository/MediaController to return image/webp - Wire PreviewJob into JobScheduler, JobMapper, JobsController - Expose quality settings on Settings page (Jobs group, range sliders) - Add 'Make Previews' button on Jobs page, reorder to scan/metadata/thumb/preview/phash/integrity
66 lines
2.9 KiB
C#
66 lines
2.9 KiB
C#
namespace Butter.Settings;
|
||
|
||
/// <summary>
|
||
/// Defines the available application settings keys.
|
||
/// </summary>
|
||
public enum Settings {
|
||
/// <summary>Enable or disable self user registration.</summary>
|
||
UserRegistrationEnabled,
|
||
/// <summary>Enable or disable folder scanning.</summary>
|
||
FolderScanEnabled,
|
||
/// <summary>Interval in minutes for folder scanning.</summary>
|
||
FolderScanInterval,
|
||
/// <summary>Enable or disable file upload.</summary>
|
||
FileUploadEnabled,
|
||
/// <summary>Maximum file size for uploads in bytes.</summary>
|
||
FileUploadMaxSize,
|
||
/// <summary>Path to store thumbnails.</summary>
|
||
ThumbnailPath,
|
||
/// <summary>Path to store previews.</summary>
|
||
PreviewPath,
|
||
/// <summary>Longest side size for thumbnails.</summary>
|
||
ThumbnailSize,
|
||
/// <summary>Longest side size for previews.</summary>
|
||
PreviewSize,
|
||
/// <summary>Maximum number of concurrent jobs.</summary>
|
||
MaxConcurrentJobs,
|
||
/// <summary>Number of days to keep completed/failed/canceled jobs.</summary>
|
||
JobRetentionDays,
|
||
/// <summary>Number of assets to process per sub-job batch.</summary>
|
||
JobBatchSize,
|
||
/// <summary>Quality setting (1–100) for WebP thumbnail encoding.</summary>
|
||
ThumbnailQuality,
|
||
/// <summary>Quality setting (1–100) for WebP preview encoding.</summary>
|
||
PreviewQuality
|
||
}
|
||
|
||
/// <summary>
|
||
/// Provides extension methods for the <see cref="Settings"/> enum.
|
||
/// </summary>
|
||
public static class SettingsExtensions {
|
||
/// <summary>
|
||
/// Converts a <see cref="Settings"/> value to its human-readable display string.
|
||
/// </summary>
|
||
/// <param name="setting">The setting to convert.</param>
|
||
/// <returns>A human-readable string representation of the setting.</returns>
|
||
public static string AsString(this Settings setting) {
|
||
return setting switch {
|
||
Settings.UserRegistrationEnabled => "User Registration Enabled",
|
||
Settings.FolderScanEnabled => "Folder Scan Enabled",
|
||
Settings.FolderScanInterval => "Folder Scan Interval",
|
||
Settings.FileUploadEnabled => "File Upload Enabled",
|
||
Settings.FileUploadMaxSize => "File Upload MaxSize",
|
||
Settings.ThumbnailPath => "Thumbnail Path",
|
||
Settings.PreviewPath => "Preview Path",
|
||
Settings.ThumbnailSize => "Thumbnail Size",
|
||
Settings.PreviewSize => "Preview Size",
|
||
Settings.MaxConcurrentJobs => "Max Concurrent Jobs",
|
||
Settings.JobRetentionDays => "Job Retention Days",
|
||
Settings.JobBatchSize => "Job Batch Size",
|
||
Settings.ThumbnailQuality => "Thumbnail Quality",
|
||
Settings.PreviewQuality => "Preview Quality",
|
||
_ => setting.ToString() // Fallback to the enum name
|
||
};
|
||
}
|
||
}
|