Merge pull request #4709 from BaronGreenback/PluginDowngrade

(cherry picked from commit 406ae3e43a)
Signed-off-by: Joshua M. Boniface <joshua@boniface.me>
This commit is contained in:
Joshua M. Boniface
2020-12-31 18:47:05 -05:00
parent 83dd3e2201
commit 1ad8e54035
35 changed files with 2017 additions and 993 deletions

View File

@@ -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; }
}
}

View File

@@ -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; }
}
}

View 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
}
}