using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Jellyfin.Plugin.WatchedTogether.Services; /// /// Computes and applies the library access a shared account should have. /// public interface ILibraryAccessService { /// /// Computes the set of libraries every one of the given members can reach. /// /// The members to intersect. /// /// The library identifiers common to all members. An empty set means the members have no /// library in common, and the shared account should see nothing. /// IReadOnlyList ComputeIntersection(IReadOnlyList memberIds); /// /// Recomputes the intersection for a group and writes it to its shared account. /// /// The shared account to update. /// The group's members. /// The libraries granted to the shared account. Task> ApplyIntersectionAsync(Guid sharedUserId, IReadOnlyList memberIds); }