diff --git a/Jel.xcodeproj/project.pbxproj b/Jel.xcodeproj/project.pbxproj index f86762b..fde37c4 100644 --- a/Jel.xcodeproj/project.pbxproj +++ b/Jel.xcodeproj/project.pbxproj @@ -39,7 +39,7 @@ 3D91FDCB2B28CA2500919017 /* SignInToServerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D91FDCA2B28CA2500919017 /* SignInToServerView.swift */; }; 3D91FDCD2B2907E800919017 /* JellyfinDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */; }; 3DAFA8E82B38AFED00D71AD1 /* ItemInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8E72B38AFED00D71AD1 /* ItemInfoView.swift */; }; - 3DAFA8EA2B39039900D71AD1 /* JellyfinKitExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */; }; + 3DAFA8EA2B39039900D71AD1 /* BaseItemDtoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8E92B39039900D71AD1 /* BaseItemDtoExtensions.swift */; }; 3DAFA8EC2B394F9F00D71AD1 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EB2B394F9F00D71AD1 /* ViewExtensions.swift */; }; 3DAFA8EF2B3B707B00D71AD1 /* ItemMovieView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */; }; 3DBAC9E22B4C31BE005F8764 /* ItemPeopleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBAC9E12B4C31BE005F8764 /* ItemPeopleView.swift */; }; @@ -99,7 +99,7 @@ 3D91FDCA2B28CA2500919017 /* SignInToServerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInToServerView.swift; sourceTree = ""; }; 3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinDateFormatter.swift; sourceTree = ""; }; 3DAFA8E72B38AFED00D71AD1 /* ItemInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemInfoView.swift; sourceTree = ""; }; - 3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinKitExtensions.swift; sourceTree = ""; }; + 3DAFA8E92B39039900D71AD1 /* BaseItemDtoExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseItemDtoExtensions.swift; sourceTree = ""; }; 3DAFA8EB2B394F9F00D71AD1 /* ViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewExtensions.swift; sourceTree = ""; }; 3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemMovieView.swift; sourceTree = ""; }; 3DBAC9E12B4C31BE005F8764 /* ItemPeopleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPeopleView.swift; sourceTree = ""; }; @@ -279,7 +279,7 @@ 3DBAC9E32B4C7404005F8764 /* UIScreenCurrent.swift */, 3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */, 3D8AB2A42B36440D005BD7D0 /* BlurHashDecode.swift */, - 3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */, + 3DAFA8E92B39039900D71AD1 /* BaseItemDtoExtensions.swift */, 3DAFA8EB2B394F9F00D71AD1 /* ViewExtensions.swift */, 3D74AE112B7D4EB000C17F2E /* UIScreenWidthExtension.swift */, 3DD6850B2B85A6A8002FAA1A /* BindingNot.swift */, @@ -395,7 +395,7 @@ 3DF1ED3E2B282836000AD8EA /* JellyfinClientController.swift in Sources */, 3D1015D92B27F57400F5C29A /* AddServerView.swift in Sources */, 3DDF35D52B7D384000423923 /* ItemSeriesEpisodesView.swift in Sources */, - 3DAFA8EA2B39039900D71AD1 /* JellyfinKitExtensions.swift in Sources */, + 3DAFA8EA2B39039900D71AD1 /* BaseItemDtoExtensions.swift in Sources */, 3D13F9652B37EC7A00E91913 /* ItemHeaderView.swift in Sources */, 3D3816C92B4B5648006414D7 /* ItemGenresView.swift in Sources */, 3DAFA8EC2B394F9F00D71AD1 /* ViewExtensions.swift in Sources */, @@ -668,8 +668,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/n3d1117/ExpandableText?tab=readme-ov-file"; requirement = { - branch = main; - kind = branch; + kind = exactVersion; + version = 1.0.0; }; }; 3D7709372B29139700199889 /* XCRemoteSwiftPackageReference "Pulse" */ = { diff --git a/Jel.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Jel.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 4d38cb8..33212ed 100644 --- a/Jel.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Jel.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -5,9 +5,9 @@ "package": "ExpandableText", "repositoryURL": "https://github.com/n3d1117/ExpandableText?tab=readme-ov-file", "state": { - "branch": "main", - "revision": "2b0dd2f3d2870fe933ffe5c2ee057d2e9fa647e2", - "version": null + "branch": null, + "revision": "3707127edfb075d26f6f14c940702974ed887f33", + "version": "1.0.0" } }, { diff --git a/Jel/Extensions/JellyfinKitExtensions.swift b/Jel/Extensions/BaseItemDtoExtensions.swift similarity index 80% rename from Jel/Extensions/JellyfinKitExtensions.swift rename to Jel/Extensions/BaseItemDtoExtensions.swift index 197731c..27771bb 100644 --- a/Jel/Extensions/JellyfinKitExtensions.swift +++ b/Jel/Extensions/BaseItemDtoExtensions.swift @@ -26,3 +26,11 @@ extension BaseItemDto { return nil } } + +extension BaseItemDto { + var overviewNL: String? { + get { + self.overview?.replacingOccurrences(of: "
", with: "\n") + } + } +} diff --git a/Jel/Views/Item/ItemMediaView.swift b/Jel/Views/Item/ItemMediaView.swift index efcfb55..515cf47 100644 --- a/Jel/Views/Item/ItemMediaView.swift +++ b/Jel/Views/Item/ItemMediaView.swift @@ -19,7 +19,7 @@ struct ItemMediaView: View { .font(.headline) .frame(maxWidth: .infinity, alignment: .leading) - ExpandableText((item.overview ?? "").replacingOccurrences(of: "
", with: "")) + ExpandableText((item.overviewNL ?? "").replacingOccurrences(of: "
", with: "")) .lineLimit(8) } } diff --git a/Jel/Views/Item/Series/ItemSeriesEpisodeIconView.swift b/Jel/Views/Item/Series/ItemSeriesEpisodeIconView.swift index 9217bea..c198e66 100644 --- a/Jel/Views/Item/Series/ItemSeriesEpisodeIconView.swift +++ b/Jel/Views/Item/Series/ItemSeriesEpisodeIconView.swift @@ -14,30 +14,30 @@ struct ItemSeriesEpisodeIconView: View { @EnvironmentObject var size: ScreenSize - var iconWidthMultiplier: CGFloat = 0.35 + var iconWidthMultiplier: CGFloat = 0.5 var body: some View { VStack(alignment: .leading) { - HStack(alignment: .top) { - ItemIconView(item: item, width: (size.size.width * iconWidthMultiplier), height: (size.size.width * iconWidthMultiplier) / 1.7) + HStack { + ItemIconView(item: item, + width: (size.size.width * iconWidthMultiplier), + height: (size.size.width * iconWidthMultiplier) / 1.7, + contentMode: .fill) VStack(alignment: .leading) { Text("Episode \(item.indexNumber ?? 0)") - .foregroundStyle(Color.secondary) - .font(.caption) - Text(item.name ?? "---") - .bold() - .lineLimit(nil) - - Text(item.overview ?? "") - .foregroundStyle(Color.secondary) + .foregroundStyle(.secondary) .font(.callout) - Spacer() + Text(item.name ?? "---") + .bold() } .frame(height: (size.size.width * iconWidthMultiplier) / 1.7) } + ExpandableText((item.overviewNL ?? "").replacingOccurrences(of: "
", with: "\n")) + .foregroundColor(.secondary) } + .padding(.vertical) } } diff --git a/Jel/Views/Item/Types/ItemPersonView.swift b/Jel/Views/Item/Types/ItemPersonView.swift index 9aad716..15a300c 100644 --- a/Jel/Views/Item/Types/ItemPersonView.swift +++ b/Jel/Views/Item/Types/ItemPersonView.swift @@ -44,7 +44,7 @@ struct ItemPersonView: View { .font(.title) .padding([.horizontal, .top]) - if let overview = item.overview { + if let overview = item.overviewNL { ExpandableText(overview) .lineLimit(8) .padding([.horizontal, .bottom]) diff --git a/Jel/Views/Item/Types/ItemSeasonView.swift b/Jel/Views/Item/Types/ItemSeasonView.swift index f73c9a5..7eae8bb 100644 --- a/Jel/Views/Item/Types/ItemSeasonView.swift +++ b/Jel/Views/Item/Types/ItemSeasonView.swift @@ -13,7 +13,7 @@ struct ItemSeasonView: View { var body: some View { VStack { - if item.overview != nil { + if item.overviewNL != nil { ItemMediaView(item: item) .padding([.horizontal, .bottom]) }