Channel.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Globalization;
  4. using System.Linq;
  5. using System.Text.Json.Serialization;
  6. using System.Threading;
  7. using Jellyfin.Data.Entities;
  8. using Jellyfin.Data.Enums;
  9. using MediaBrowser.Common.Progress;
  10. using MediaBrowser.Controller.Entities;
  11. using MediaBrowser.Model.Querying;
  12. namespace MediaBrowser.Controller.Channels
  13. {
  14. public class Channel : Folder
  15. {
  16. public override bool IsVisible(User user)
  17. {
  18. if (user.GetPreference(PreferenceKind.BlockedChannels) != null)
  19. {
  20. if (user.GetPreference(PreferenceKind.BlockedChannels).Contains(Id.ToString("N", CultureInfo.InvariantCulture), StringComparer.OrdinalIgnoreCase))
  21. {
  22. return false;
  23. }
  24. }
  25. else
  26. {
  27. if (!user.HasPermission(PermissionKind.EnableAllChannels)
  28. && !user.GetPreference(PreferenceKind.EnabledChannels)
  29. .Contains(Id.ToString("N", CultureInfo.InvariantCulture), StringComparer.OrdinalIgnoreCase))
  30. {
  31. return false;
  32. }
  33. }
  34. return base.IsVisible(user);
  35. }
  36. [JsonIgnore]
  37. public override bool SupportsInheritedParentImages => false;
  38. [JsonIgnore]
  39. public override SourceType SourceType => SourceType.Channel;
  40. protected override QueryResult<BaseItem> GetItemsInternal(InternalItemsQuery query)
  41. {
  42. try
  43. {
  44. query.Parent = this;
  45. query.ChannelIds = new Guid[] { Id };
  46. // Don't blow up here because it could cause parent screens with other content to fail
  47. return ChannelManager.GetChannelItemsInternal(query, new SimpleProgress<double>(), CancellationToken.None).Result;
  48. }
  49. catch
  50. {
  51. // Already logged at lower levels
  52. return new QueryResult<BaseItem>();
  53. }
  54. }
  55. protected override string GetInternalMetadataPath(string basePath)
  56. {
  57. return GetInternalMetadataPath(basePath, Id);
  58. }
  59. public static string GetInternalMetadataPath(string basePath, Guid id)
  60. {
  61. return System.IO.Path.Combine(basePath, "channels", id.ToString("N", CultureInfo.InvariantCulture), "metadata");
  62. }
  63. public override bool CanDelete()
  64. {
  65. return false;
  66. }
  67. protected override bool IsAllowTagFilterEnforced()
  68. {
  69. return false;
  70. }
  71. internal static bool IsChannelVisible(BaseItem channelItem, User user)
  72. {
  73. var channel = ChannelManager.GetChannel(channelItem.ChannelId.ToString(""));
  74. return channel.IsVisible(user);
  75. }
  76. }
  77. }