/// <summary> /// apply collection as an asynchronous operation. /// </summary> /// <param name="id">The identifier.</param> /// <param name="showOverlay">if set to <c>true</c> [show overlay].</param> protected virtual async Task ApplyCollectionAsync(long id, bool showOverlay = true) { if (ApplyingCollection) { return; } ApplyingCollection = true; if (CollectionMods.SelectedModCollection != null) { if (showOverlay) { await TriggerOverlayAsync(id, true, localizationManager.GetResource(LocalizationResources.Mod_Actions.Overlay_Apply_Message)); } var notificationType = NotificationType.Success; try { var result = await modService.ExportModsAsync(CollectionMods.SelectedMods.ToList(), InstalledMods.AllMods.ToList(), CollectionMods.SelectedModCollection.Name); string title; string message; if (result) { title = localizationManager.GetResource(LocalizationResources.Notifications.CollectionApplied.Title); message = Smart.Format(localizationManager.GetResource(LocalizationResources.Notifications.CollectionApplied.Message), new { CollectionName = CollectionMods.SelectedModCollection.Name }); } else { title = localizationManager.GetResource(LocalizationResources.Notifications.CollectionNotApplied.Title); message = Smart.Format(localizationManager.GetResource(LocalizationResources.Notifications.CollectionNotApplied.Message), new { CollectionName = CollectionMods.SelectedModCollection.Name }); notificationType = NotificationType.Error; } notificationAction.ShowNotification(title, message, notificationType, 5); } catch (Exception ex) { var title = localizationManager.GetResource(LocalizationResources.SavingError.Title); var message = localizationManager.GetResource(LocalizationResources.SavingError.Message); logger.Error(ex); notificationAction.ShowNotification(title, message, NotificationType.Error, 30); } if (showOverlay) { await TriggerOverlayAsync(id, false); } } ApplyingCollection = false; }