diff --git a/MediaBrowser.Controller/Library/IUserManager.cs b/MediaBrowser.Controller/Library/IUserManager.cs index c485f2b1d..0502ec419 100644 --- a/MediaBrowser.Controller/Library/IUserManager.cs +++ b/MediaBrowser.Controller/Library/IUserManager.cs @@ -28,6 +28,8 @@ namespace MediaBrowser.Controller.Library /// event EventHandler> UserDeleted; + event EventHandler> UserCreated; + /// /// Gets a User by Id /// diff --git a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs index 65567d3a8..a97711684 100644 --- a/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs +++ b/MediaBrowser.Server.Implementations/EntryPoints/Notifications/Notifier.cs @@ -2,6 +2,7 @@ using MediaBrowser.Common.Plugins; using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Common.Updates; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Notifications; using MediaBrowser.Controller.Plugins; @@ -42,6 +43,28 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications _installationManager.PluginUninstalled += _installationManager_PluginUninstalled; _taskManager.TaskCompleted += _taskManager_TaskCompleted; + + _userManager.UserCreated += _userManager_UserCreated; + } + + async void _userManager_UserCreated(object sender, GenericEventArgs e) + { + var notification = new Notification + { + UserId = e.Argument.Id, + Category = "UserCreated", + Name = "Welcome to Media Browser!", + Description = "Check back here for more notifications." + }; + + try + { + await _notificationsRepo.AddNotification(notification, CancellationToken.None).ConfigureAwait(false); + } + catch (Exception ex) + { + _logger.ErrorException("Error adding notification", ex); + } } async void _taskManager_TaskCompleted(object sender, GenericEventArgs e) @@ -168,6 +191,11 @@ namespace MediaBrowser.Server.Implementations.EntryPoints.Notifications { _installationManager.PackageInstallationCompleted -= _installationManager_PackageInstallationCompleted; _installationManager.PackageInstallationFailed -= _installationManager_PackageInstallationFailed; + _installationManager.PluginUninstalled -= _installationManager_PluginUninstalled; + + _taskManager.TaskCompleted -= _taskManager_TaskCompleted; + + _userManager.UserCreated -= _userManager_UserCreated; } } } diff --git a/MediaBrowser.Server.Implementations/Library/UserManager.cs b/MediaBrowser.Server.Implementations/Library/UserManager.cs index e6b218c38..8aedca50f 100644 --- a/MediaBrowser.Server.Implementations/Library/UserManager.cs +++ b/MediaBrowser.Server.Implementations/Library/UserManager.cs @@ -303,6 +303,8 @@ namespace MediaBrowser.Server.Implementations.Library OnUserUpdated(user); } + public event EventHandler> UserCreated; + /// /// Creates the user. /// @@ -330,6 +332,8 @@ namespace MediaBrowser.Server.Implementations.Library await UserRepository.SaveUser(user, CancellationToken.None).ConfigureAwait(false); + EventHelper.QueueEventIfNotNull(UserCreated, this, new GenericEventArgs { Argument = user }, _logger); + return user; } @@ -439,5 +443,7 @@ namespace MediaBrowser.Server.Implementations.Library DateModified = DateTime.UtcNow }; } + + } }