mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-04-22 18:14:42 +01:00
Merge pull request #4709 from BaronGreenback/PluginDowngrade
This commit is contained in:
@@ -456,5 +456,15 @@ namespace MediaBrowser.Model.Configuration
|
||||
/// Gets or sets the how many metadata refreshes can run concurrently.
|
||||
/// </summary>
|
||||
public int LibraryMetadataRefreshConcurrency { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether older plugins should automatically be deleted from the plugin folder.
|
||||
/// </summary>
|
||||
public bool RemoveOldPlugins { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether plugin image should be disabled.
|
||||
/// </summary>
|
||||
public bool DisablePluginImages { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
#nullable disable
|
||||
#nullable enable
|
||||
|
||||
using System;
|
||||
|
||||
namespace MediaBrowser.Model.Plugins
|
||||
{
|
||||
/// <summary>
|
||||
@@ -6,35 +9,47 @@ namespace MediaBrowser.Model.Plugins
|
||||
/// </summary>
|
||||
public class PluginInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="PluginInfo"/> class.
|
||||
/// </summary>
|
||||
/// <param name="name">The plugin name.</param>
|
||||
/// <param name="version">The plugin <see cref="Version"/>.</param>
|
||||
/// <param name="description">The plugin description.</param>
|
||||
/// <param name="id">The <see cref="Guid"/>.</param>
|
||||
/// <param name="canUninstall">True if this plugin can be uninstalled.</param>
|
||||
public PluginInfo(string name, Version version, string description, Guid id, bool canUninstall)
|
||||
{
|
||||
Name = name;
|
||||
Version = version;
|
||||
Description = description;
|
||||
Id = id;
|
||||
CanUninstall = canUninstall;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the name.
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the version.
|
||||
/// </summary>
|
||||
/// <value>The version.</value>
|
||||
public string Version { get; set; }
|
||||
public Version Version { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the name of the configuration file.
|
||||
/// </summary>
|
||||
/// <value>The name of the configuration file.</value>
|
||||
public string ConfigurationFileName { get; set; }
|
||||
public string? ConfigurationFileName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the description.
|
||||
/// </summary>
|
||||
/// <value>The description.</value>
|
||||
public string Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the unique id.
|
||||
/// </summary>
|
||||
/// <value>The unique id.</value>
|
||||
public string Id { get; set; }
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether the plugin can be uninstalled.
|
||||
@@ -42,9 +57,13 @@ namespace MediaBrowser.Model.Plugins
|
||||
public bool CanUninstall { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the image URL.
|
||||
/// Gets or sets a value indicating whether this plugin has a valid image.
|
||||
/// </summary>
|
||||
/// <value>The image URL.</value>
|
||||
public string ImageUrl { get; set; }
|
||||
public bool HasImage { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating the status of the plugin.
|
||||
/// </summary>
|
||||
public PluginStatus Status { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +1,40 @@
|
||||
#nullable disable
|
||||
#pragma warning disable CS1591
|
||||
#nullable enable
|
||||
|
||||
namespace MediaBrowser.Model.Plugins
|
||||
{
|
||||
/// <summary>
|
||||
/// Defines the <see cref="PluginPageInfo" />.
|
||||
/// </summary>
|
||||
public class PluginPageInfo
|
||||
{
|
||||
public string Name { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets the name.
|
||||
/// </summary>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
public string DisplayName { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets the display name.
|
||||
/// </summary>
|
||||
public string? DisplayName { get; set; }
|
||||
|
||||
public string EmbeddedResourcePath { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets the resource path.
|
||||
/// </summary>
|
||||
public string EmbeddedResourcePath { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether this plugin should appear in the main menu.
|
||||
/// </summary>
|
||||
public bool EnableInMainMenu { get; set; }
|
||||
|
||||
public string MenuSection { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets the menu section.
|
||||
/// </summary>
|
||||
public string? MenuSection { get; set; }
|
||||
|
||||
public string MenuIcon { get; set; }
|
||||
/// <summary>
|
||||
/// Gets or sets the menu icon.
|
||||
/// </summary>
|
||||
public string? MenuIcon { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
47
MediaBrowser.Model/Plugins/PluginStatus.cs
Normal file
47
MediaBrowser.Model/Plugins/PluginStatus.cs
Normal file
@@ -0,0 +1,47 @@
|
||||
namespace MediaBrowser.Model.Plugins
|
||||
{
|
||||
/// <summary>
|
||||
/// Plugin load status.
|
||||
/// </summary>
|
||||
public enum PluginStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// This plugin requires a restart in order for it to load. This is a memory only status.
|
||||
/// The actual status of the plugin after reload is present in the manifest.
|
||||
/// eg. A disabled plugin will still be active until the next restart, and so will have a memory status of Restart,
|
||||
/// but a disk manifest status of Disabled.
|
||||
/// </summary>
|
||||
Restart = 1,
|
||||
|
||||
/// <summary>
|
||||
/// This plugin is currently running.
|
||||
/// </summary>
|
||||
Active = 0,
|
||||
|
||||
/// <summary>
|
||||
/// This plugin has been marked as disabled.
|
||||
/// </summary>
|
||||
Disabled = -1,
|
||||
|
||||
/// <summary>
|
||||
/// This plugin does not meet the TargetAbi requirements.
|
||||
/// </summary>
|
||||
NotSupported = -2,
|
||||
|
||||
/// <summary>
|
||||
/// This plugin caused an error when instantiated. (Either DI loop, or exception)
|
||||
/// </summary>
|
||||
Malfunctioned = -3,
|
||||
|
||||
/// <summary>
|
||||
/// This plugin has been superceded by another version.
|
||||
/// </summary>
|
||||
Superceded = -4,
|
||||
|
||||
/// <summary>
|
||||
/// An attempt to remove this plugin from disk will happen at every restart.
|
||||
/// It will not be loaded, if unable to do so.
|
||||
/// </summary>
|
||||
Deleted = -5
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
#nullable disable
|
||||
using System;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace MediaBrowser.Model.Updates
|
||||
{
|
||||
@@ -9,10 +10,11 @@ namespace MediaBrowser.Model.Updates
|
||||
public class InstallationInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets the guid.
|
||||
/// Gets or sets the Id.
|
||||
/// </summary>
|
||||
/// <value>The guid.</value>
|
||||
public Guid Guid { get; set; }
|
||||
/// <value>The Id.</value>
|
||||
[JsonPropertyName("Guid")]
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the name.
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#nullable disable
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace MediaBrowser.Model.Updates
|
||||
{
|
||||
@@ -9,55 +10,76 @@ namespace MediaBrowser.Model.Updates
|
||||
/// </summary>
|
||||
public class PackageInfo
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="PackageInfo"/> class.
|
||||
/// </summary>
|
||||
public PackageInfo()
|
||||
{
|
||||
Versions = Array.Empty<VersionInfo>();
|
||||
Id = string.Empty;
|
||||
Category = string.Empty;
|
||||
Name = string.Empty;
|
||||
Overview = string.Empty;
|
||||
Owner = string.Empty;
|
||||
Description = string.Empty;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the name.
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string name { get; set; }
|
||||
[JsonPropertyName("name")]
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a long description of the plugin containing features or helpful explanations.
|
||||
/// </summary>
|
||||
/// <value>The description.</value>
|
||||
public string description { get; set; }
|
||||
[JsonPropertyName("description")]
|
||||
public string Description { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a short overview of what the plugin does.
|
||||
/// </summary>
|
||||
/// <value>The overview.</value>
|
||||
public string overview { get; set; }
|
||||
[JsonPropertyName("overview")]
|
||||
public string Overview { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the owner.
|
||||
/// </summary>
|
||||
/// <value>The owner.</value>
|
||||
public string owner { get; set; }
|
||||
[JsonPropertyName("owner")]
|
||||
public string Owner { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the category.
|
||||
/// </summary>
|
||||
/// <value>The category.</value>
|
||||
public string category { get; set; }
|
||||
[JsonPropertyName("category")]
|
||||
public string Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// The guid of the assembly associated with this plugin.
|
||||
/// Gets or sets the guid of the assembly associated with this plugin.
|
||||
/// This is used to identify the proper item for automatic updates.
|
||||
/// </summary>
|
||||
/// <value>The name.</value>
|
||||
public string guid { get; set; }
|
||||
[JsonPropertyName("guid")]
|
||||
public string Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the versions.
|
||||
/// </summary>
|
||||
/// <value>The versions.</value>
|
||||
public IList<VersionInfo> versions { get; set; }
|
||||
[JsonPropertyName("versions")]
|
||||
#pragma warning disable CA2227 // Collection properties should be read only
|
||||
public IList<VersionInfo> Versions { get; set; }
|
||||
#pragma warning restore CA2227 // Collection properties should be read only
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="PackageInfo"/> class.
|
||||
/// Gets or sets the image url for the package.
|
||||
/// </summary>
|
||||
public PackageInfo()
|
||||
{
|
||||
versions = Array.Empty<VersionInfo>();
|
||||
}
|
||||
[JsonPropertyName("imageUrl")]
|
||||
public string? ImageUrl { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,76 +1,79 @@
|
||||
#nullable disable
|
||||
#nullable enable
|
||||
|
||||
using System;
|
||||
using System.Text.Json.Serialization;
|
||||
using SysVersion = System.Version;
|
||||
|
||||
namespace MediaBrowser.Model.Updates
|
||||
{
|
||||
/// <summary>
|
||||
/// Class PackageVersionInfo.
|
||||
/// Defines the <see cref="VersionInfo"/> class.
|
||||
/// </summary>
|
||||
public class VersionInfo
|
||||
{
|
||||
private Version _version;
|
||||
private SysVersion? _version;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the version.
|
||||
/// </summary>
|
||||
/// <value>The version.</value>
|
||||
public string version
|
||||
[JsonPropertyName("version")]
|
||||
public string Version
|
||||
{
|
||||
get
|
||||
{
|
||||
return _version == null ? string.Empty : _version.ToString();
|
||||
}
|
||||
get => _version == null ? string.Empty : _version.ToString();
|
||||
|
||||
set
|
||||
{
|
||||
_version = Version.Parse(value);
|
||||
}
|
||||
set => _version = SysVersion.Parse(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the version as a <see cref="Version"/>.
|
||||
/// Gets the version as a <see cref="SysVersion"/>.
|
||||
/// </summary>
|
||||
public Version VersionNumber => _version;
|
||||
public SysVersion VersionNumber => _version ?? new SysVersion(0, 0, 0);
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the changelog for this version.
|
||||
/// </summary>
|
||||
/// <value>The changelog.</value>
|
||||
public string changelog { get; set; }
|
||||
[JsonPropertyName("changelog")]
|
||||
public string? Changelog { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the ABI that this version was built against.
|
||||
/// </summary>
|
||||
/// <value>The target ABI version.</value>
|
||||
public string targetAbi { get; set; }
|
||||
[JsonPropertyName("targetAbi")]
|
||||
public string? TargetAbi { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the source URL.
|
||||
/// </summary>
|
||||
/// <value>The source URL.</value>
|
||||
public string sourceUrl { get; set; }
|
||||
[JsonPropertyName("sourceUrl")]
|
||||
public string? SourceUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a checksum for the binary.
|
||||
/// </summary>
|
||||
/// <value>The checksum.</value>
|
||||
public string checksum { get; set; }
|
||||
[JsonPropertyName("checksum")]
|
||||
public string? Checksum { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a timestamp of when the binary was built.
|
||||
/// </summary>
|
||||
/// <value>The timestamp.</value>
|
||||
public string timestamp { get; set; }
|
||||
[JsonPropertyName("timestamp")]
|
||||
public string? Timestamp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the repository name.
|
||||
/// </summary>
|
||||
public string repositoryName { get; set; }
|
||||
[JsonPropertyName("repositoryName")]
|
||||
public string RepositoryName { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets the repository url.
|
||||
/// </summary>
|
||||
public string repositoryUrl { get; set; }
|
||||
[JsonPropertyName("repositoryUrl")]
|
||||
public string RepositoryUrl { get; set; } = string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user