/// <summary> /// Handles the ItemUpdated event of the libraryManager control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param> private void LibraryManager_ItemUpdated(object sender, ItemChangeEventArgs e) { if (!KodiHelpers.FilterAndGetMediaType(e.Item, out var type)) { return; } lock (_libraryChangedSyncLock) { if (LibraryUpdateTimer == null) { LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, Timeout.Infinite); } else { LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite); } var item = new LibItem { Id = e.Item.Id, SyncApiModified = (long)DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc)).TotalSeconds, ItemType = type }; _logger.LogDebug("ItemUpdated added for DB Saving {ItemId}", e.Item.Id); _itemsUpdated.Add(item); } }
/// <summary> /// Handles the ItemRemoved event of the libraryManager control. /// </summary> /// <param name="sender">The source of the event.</param> /// <param name="e">The <see cref="ItemChangeEventArgs"/> instance containing the event data.</param> private void LibraryManager_ItemRemoved(object sender, ItemChangeEventArgs e) { if (!KodiHelpers.FilterAndGetMediaType(e.Item, out var type)) { return; } lock (_libraryChangedSyncLock) { if (LibraryUpdateTimer == null) { LibraryUpdateTimer = new Timer(LibraryUpdateTimerCallback, null, LibraryUpdateDuration, Timeout.Infinite); } else { LibraryUpdateTimer.Change(LibraryUpdateDuration, Timeout.Infinite); } var item = new LibItem { Id = e.Item.Id, SyncApiModified = DateTimeOffset.Now.ToUnixTimeSeconds(), ItemType = type }; _logger.LogDebug("ItemRemoved added for DB Saving {ItemId}", e.Item.Id); _itemsRemoved.Add(item); } }
private void UserDataManager_UserDataSaved(object sender, UserDataSaveEventArgs e) { if (e.SaveReason == UserDataSaveReason.PlaybackProgress) { return; } lock (_syncLock) { var testItem = e.Item; if (testItem != null) { if (!KodiHelpers.FilterAndGetMediaType(testItem, out var type)) { return; } if (UpdateTimer == null) { UpdateTimer = new Timer(UpdateTimerCallback, null, UpdateDuration, Timeout.Infinite); } else { UpdateTimer.Change(UpdateDuration, Timeout.Infinite); } if (!_changedItems.TryGetValue(e.UserId, out var keys)) { keys = new List <BaseItem>(); _changedItems[e.UserId] = keys; } keys.Add(e.Item); // Go up one level for indicators _itemRef.Add(new LibItem { Id = testItem.Id, ItemType = type, }); var parent = testItem.GetParent(); if (parent != null) { keys.Add(parent); } } } }