From 2624021d67005835cdffd51694c557bb771f4565 Mon Sep 17 00:00:00 2001 From: Sven Giermann Date: Wed, 15 Jan 2025 11:26:39 +0100 Subject: [PATCH] Add ability to remove a ChannelMapping (#12970) * Add ability to remove a ChannelMapping Remove a ChannelMapping by selecting the same mapping again. This should be an intuitive way to de-select a mapping which currently requires the manual editing of a config file: https://forum.jellyfin.org/t-how-to-unmap-livetv-channels --------- Co-authored-by: Bond-009 --- src/Jellyfin.LiveTv/Listings/ListingsManager.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Jellyfin.LiveTv/Listings/ListingsManager.cs b/src/Jellyfin.LiveTv/Listings/ListingsManager.cs index 3df2d0d2cf..39c2bd375b 100644 --- a/src/Jellyfin.LiveTv/Listings/ListingsManager.cs +++ b/src/Jellyfin.LiveTv/Listings/ListingsManager.cs @@ -230,10 +230,15 @@ public class ListingsManager : IListingsManager var listingsProviderInfo = config.ListingProviders .First(info => string.Equals(providerId, info.Id, StringComparison.OrdinalIgnoreCase)); + var channelMappingExists = listingsProviderInfo.ChannelMappings + .Any(pair => string.Equals(pair.Name, tunerChannelNumber, StringComparison.OrdinalIgnoreCase) + && string.Equals(pair.Value, providerChannelNumber, StringComparison.OrdinalIgnoreCase)); + listingsProviderInfo.ChannelMappings = listingsProviderInfo.ChannelMappings .Where(pair => !string.Equals(pair.Name, tunerChannelNumber, StringComparison.OrdinalIgnoreCase)).ToArray(); - if (!string.Equals(tunerChannelNumber, providerChannelNumber, StringComparison.OrdinalIgnoreCase)) + if (!string.Equals(tunerChannelNumber, providerChannelNumber, StringComparison.OrdinalIgnoreCase) + && !channelMappingExists) { var newItem = new NameValuePair {