using MediaBrowser.Controller.Entities; using MediaBrowser.Model.Dto; namespace MediaBrowser.Controller.Library { /// /// The user data of the alternate version that should drive resume for a multi-version item. /// /// The resume version's user data. /// The resume version's runtime, used for the progress percentage. public record VersionResumeData(UserItemData UserData, long? RunTimeTicks) { /// /// Applies the resume version's playback state to the supplied user data dto, so that an item /// whose most recent progress lives on an alternate version still reports that progress. /// /// The user data dto to update. public void ApplyTo(UserItemDataDto dto) { dto.PlaybackPositionTicks = UserData.PlaybackPositionTicks; dto.Played = UserData.Played; dto.LastPlayedDate = UserData.LastPlayedDate; if (RunTimeTicks > 0 && UserData.PlaybackPositionTicks > 0) { dto.PlayedPercentage = 100.0 * UserData.PlaybackPositionTicks / RunTimeTicks.Value; } } } }