diff --git a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs index ed0190a237..1789ab298b 100644 --- a/MediaBrowser.Common.Implementations/BaseApplicationHost.cs +++ b/MediaBrowser.Common.Implementations/BaseApplicationHost.cs @@ -226,6 +226,8 @@ namespace MediaBrowser.Common.Implementations Task.Run(() => ConfigureAutoRunAtStartup()); + Task.Run(() => SecurityManager.LoadAllRegistrationInfo()); + ConfigurationManager.ConfigurationUpdated += ConfigurationManager_ConfigurationUpdated; }); } diff --git a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs index 0404ee7fe8..beca1637de 100644 --- a/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs +++ b/MediaBrowser.Common.Implementations/Security/PluginSecurityManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.Configuration; +using System.Collections.Generic; +using MediaBrowser.Common.Configuration; using MediaBrowser.Common.Security; using MediaBrowser.Model.Serialization; using Mediabrowser.Model.Entities; @@ -7,6 +8,7 @@ using MediaBrowser.Common.Net; using System; using System.Threading; using System.Threading.Tasks; +using System.Linq; namespace MediaBrowser.Common.Implementations.Security { @@ -44,6 +46,7 @@ namespace MediaBrowser.Common.Implementations.Security private IHttpClient _httpClient; private IJsonSerializer _jsonSerializer; private IApplicationHost _appHost; + private IEnumerable _registeredEntities; /// /// Initializes a new instance of the class. @@ -58,9 +61,23 @@ namespace MediaBrowser.Common.Implementations.Security _appHost = appHost; _httpClient = httpClient; _jsonSerializer = jsonSerializer; + _registeredEntities = _appHost.GetExports(); MBRegistration.Init(appPaths); } + /// + /// Load all registration info for all entities that require registration + /// + /// + public async Task LoadAllRegistrationInfo() + { + var tasks = new List(); + + tasks.AddRange(_registeredEntities.Select(i => i.LoadRegistrationInfoAsync())); + await Task.WhenAll(tasks); + ResetSupporterInfo(); + } + /// /// Gets the registration status. /// diff --git a/MediaBrowser.Common/MediaBrowser.Common.csproj b/MediaBrowser.Common/MediaBrowser.Common.csproj index b1c40e3dca..d05ebaf74d 100644 --- a/MediaBrowser.Common/MediaBrowser.Common.csproj +++ b/MediaBrowser.Common/MediaBrowser.Common.csproj @@ -100,6 +100,7 @@ + diff --git a/MediaBrowser.Common/Security/IRequiresRegistration.cs b/MediaBrowser.Common/Security/IRequiresRegistration.cs new file mode 100644 index 0000000000..66667d449b --- /dev/null +++ b/MediaBrowser.Common/Security/IRequiresRegistration.cs @@ -0,0 +1,9 @@ +using System.Threading.Tasks; + +namespace MediaBrowser.Common.Security +{ + public interface IRequiresRegistration + { + Task LoadRegistrationInfoAsync(); + } +} diff --git a/MediaBrowser.Common/Security/ISecurityManager.cs b/MediaBrowser.Common/Security/ISecurityManager.cs index bcda3c6b41..a93bc4ac02 100644 --- a/MediaBrowser.Common/Security/ISecurityManager.cs +++ b/MediaBrowser.Common/Security/ISecurityManager.cs @@ -30,5 +30,11 @@ namespace MediaBrowser.Common.Security /// The MB2 equivalent. /// Task{MBRegistrationRecord}. Task GetRegistrationStatus(string feature, string mb2Equivalent = null); + + /// + /// Load all registration info for all entities that require registration + /// + /// + Task LoadAllRegistrationInfo(); } } \ No newline at end of file