From 744029495a5ca0ae32cf7856f5108c95bea2b393 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Tue, 31 Oct 2023 22:11:23 -0600 Subject: [PATCH] Basic Algorithm Cleanup (#897) --- Shared/Extensions/Array.swift | 2 +- .../Extensions/JellyfinAPI/BaseItemDto.swift | 26 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Shared/Extensions/Array.swift b/Shared/Extensions/Array.swift index 0e4fcff7..4d627d1e 100644 --- a/Shared/Extensions/Array.swift +++ b/Shared/Extensions/Array.swift @@ -31,7 +31,7 @@ extension Array { } func oneSatisfies(_ predicate: (Element) throws -> Bool) rethrows -> Bool { - try first(where: predicate) != nil + try contains(where: predicate) } func prepending(_ element: Element) -> [Element] { diff --git a/Shared/Extensions/JellyfinAPI/BaseItemDto.swift b/Shared/Extensions/JellyfinAPI/BaseItemDto.swift index eecf61c7..8f3d9f96 100644 --- a/Shared/Extensions/JellyfinAPI/BaseItemDto.swift +++ b/Shared/Extensions/JellyfinAPI/BaseItemDto.swift @@ -165,36 +165,38 @@ extension BaseItemDto { var fullChapterInfo: [ChapterInfo.FullInfo] { guard let chapters else { return [] } - let ranges: [Range] = [] - .appending(chapters.map(\.startTimeSeconds)) + let ranges: [Range] = chapters + .map(\.startTimeSeconds) .appending(runTimeSeconds + 1) .adjacentPairs() .map { $0 ..< $1 } - return chapters + return zip(chapters, ranges) .enumerated() - .map { index, chapterInfo in + .map { i, zip in - let client = Container.userSession.callAsFunction().client let parameters = Paths.GetItemImageParameters( maxWidth: 500, quality: 90, - imageIndex: index + imageIndex: i ) + let request = Paths.getItemImage( itemID: id ?? "", imageType: ImageType.chapter.rawValue, parameters: parameters ) - let imageURL = client.fullURL(with: request) + let imageURL = Container + .userSession + .callAsFunction() + .client + .fullURL(with: request) - let range = ranges.first(where: { $0.first == chapterInfo.startTimeSeconds }) ?? startTimeSeconds ..< startTimeSeconds + 1 - - return ChapterInfo.FullInfo( - chapterInfo: chapterInfo, + return .init( + chapterInfo: zip.0, imageSource: .init(url: imageURL), - secondsRange: range + secondsRange: zip.1 ) } }