Revamp EpisodeIconView + format item.overview properly
Some metadata sources use '<br>' instead of '\n' for newlines. This fixes that for the most part.
This commit is contained in:
parent
1ce620567c
commit
33b07566cb
@ -39,7 +39,7 @@
|
|||||||
3D91FDCB2B28CA2500919017 /* SignInToServerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D91FDCA2B28CA2500919017 /* SignInToServerView.swift */; };
|
3D91FDCB2B28CA2500919017 /* SignInToServerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D91FDCA2B28CA2500919017 /* SignInToServerView.swift */; };
|
||||||
3D91FDCD2B2907E800919017 /* JellyfinDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */; };
|
3D91FDCD2B2907E800919017 /* JellyfinDateFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */; };
|
||||||
3DAFA8E82B38AFED00D71AD1 /* ItemInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8E72B38AFED00D71AD1 /* ItemInfoView.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 */; };
|
3DAFA8EC2B394F9F00D71AD1 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EB2B394F9F00D71AD1 /* ViewExtensions.swift */; };
|
||||||
3DAFA8EF2B3B707B00D71AD1 /* ItemMovieView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */; };
|
3DAFA8EF2B3B707B00D71AD1 /* ItemMovieView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */; };
|
||||||
3DBAC9E22B4C31BE005F8764 /* ItemPeopleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3DBAC9E12B4C31BE005F8764 /* ItemPeopleView.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 = "<group>"; };
|
3D91FDCA2B28CA2500919017 /* SignInToServerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignInToServerView.swift; sourceTree = "<group>"; };
|
||||||
3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinDateFormatter.swift; sourceTree = "<group>"; };
|
3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinDateFormatter.swift; sourceTree = "<group>"; };
|
||||||
3DAFA8E72B38AFED00D71AD1 /* ItemInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemInfoView.swift; sourceTree = "<group>"; };
|
3DAFA8E72B38AFED00D71AD1 /* ItemInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemInfoView.swift; sourceTree = "<group>"; };
|
||||||
3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinKitExtensions.swift; sourceTree = "<group>"; };
|
3DAFA8E92B39039900D71AD1 /* BaseItemDtoExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseItemDtoExtensions.swift; sourceTree = "<group>"; };
|
||||||
3DAFA8EB2B394F9F00D71AD1 /* ViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewExtensions.swift; sourceTree = "<group>"; };
|
3DAFA8EB2B394F9F00D71AD1 /* ViewExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewExtensions.swift; sourceTree = "<group>"; };
|
||||||
3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemMovieView.swift; sourceTree = "<group>"; };
|
3DAFA8EE2B3B707B00D71AD1 /* ItemMovieView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemMovieView.swift; sourceTree = "<group>"; };
|
||||||
3DBAC9E12B4C31BE005F8764 /* ItemPeopleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPeopleView.swift; sourceTree = "<group>"; };
|
3DBAC9E12B4C31BE005F8764 /* ItemPeopleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPeopleView.swift; sourceTree = "<group>"; };
|
||||||
@ -279,7 +279,7 @@
|
|||||||
3DBAC9E32B4C7404005F8764 /* UIScreenCurrent.swift */,
|
3DBAC9E32B4C7404005F8764 /* UIScreenCurrent.swift */,
|
||||||
3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */,
|
3D91FDCC2B2907E800919017 /* JellyfinDateFormatter.swift */,
|
||||||
3D8AB2A42B36440D005BD7D0 /* BlurHashDecode.swift */,
|
3D8AB2A42B36440D005BD7D0 /* BlurHashDecode.swift */,
|
||||||
3DAFA8E92B39039900D71AD1 /* JellyfinKitExtensions.swift */,
|
3DAFA8E92B39039900D71AD1 /* BaseItemDtoExtensions.swift */,
|
||||||
3DAFA8EB2B394F9F00D71AD1 /* ViewExtensions.swift */,
|
3DAFA8EB2B394F9F00D71AD1 /* ViewExtensions.swift */,
|
||||||
3D74AE112B7D4EB000C17F2E /* UIScreenWidthExtension.swift */,
|
3D74AE112B7D4EB000C17F2E /* UIScreenWidthExtension.swift */,
|
||||||
3DD6850B2B85A6A8002FAA1A /* BindingNot.swift */,
|
3DD6850B2B85A6A8002FAA1A /* BindingNot.swift */,
|
||||||
@ -395,7 +395,7 @@
|
|||||||
3DF1ED3E2B282836000AD8EA /* JellyfinClientController.swift in Sources */,
|
3DF1ED3E2B282836000AD8EA /* JellyfinClientController.swift in Sources */,
|
||||||
3D1015D92B27F57400F5C29A /* AddServerView.swift in Sources */,
|
3D1015D92B27F57400F5C29A /* AddServerView.swift in Sources */,
|
||||||
3DDF35D52B7D384000423923 /* ItemSeriesEpisodesView.swift in Sources */,
|
3DDF35D52B7D384000423923 /* ItemSeriesEpisodesView.swift in Sources */,
|
||||||
3DAFA8EA2B39039900D71AD1 /* JellyfinKitExtensions.swift in Sources */,
|
3DAFA8EA2B39039900D71AD1 /* BaseItemDtoExtensions.swift in Sources */,
|
||||||
3D13F9652B37EC7A00E91913 /* ItemHeaderView.swift in Sources */,
|
3D13F9652B37EC7A00E91913 /* ItemHeaderView.swift in Sources */,
|
||||||
3D3816C92B4B5648006414D7 /* ItemGenresView.swift in Sources */,
|
3D3816C92B4B5648006414D7 /* ItemGenresView.swift in Sources */,
|
||||||
3DAFA8EC2B394F9F00D71AD1 /* ViewExtensions.swift in Sources */,
|
3DAFA8EC2B394F9F00D71AD1 /* ViewExtensions.swift in Sources */,
|
||||||
@ -668,8 +668,8 @@
|
|||||||
isa = XCRemoteSwiftPackageReference;
|
isa = XCRemoteSwiftPackageReference;
|
||||||
repositoryURL = "https://github.com/n3d1117/ExpandableText?tab=readme-ov-file";
|
repositoryURL = "https://github.com/n3d1117/ExpandableText?tab=readme-ov-file";
|
||||||
requirement = {
|
requirement = {
|
||||||
branch = main;
|
kind = exactVersion;
|
||||||
kind = branch;
|
version = 1.0.0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
3D7709372B29139700199889 /* XCRemoteSwiftPackageReference "Pulse" */ = {
|
3D7709372B29139700199889 /* XCRemoteSwiftPackageReference "Pulse" */ = {
|
||||||
|
@ -5,9 +5,9 @@
|
|||||||
"package": "ExpandableText",
|
"package": "ExpandableText",
|
||||||
"repositoryURL": "https://github.com/n3d1117/ExpandableText?tab=readme-ov-file",
|
"repositoryURL": "https://github.com/n3d1117/ExpandableText?tab=readme-ov-file",
|
||||||
"state": {
|
"state": {
|
||||||
"branch": "main",
|
"branch": null,
|
||||||
"revision": "2b0dd2f3d2870fe933ffe5c2ee057d2e9fa647e2",
|
"revision": "3707127edfb075d26f6f14c940702974ed887f33",
|
||||||
"version": null
|
"version": "1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -26,3 +26,11 @@ extension BaseItemDto {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension BaseItemDto {
|
||||||
|
var overviewNL: String? {
|
||||||
|
get {
|
||||||
|
self.overview?.replacingOccurrences(of: "<br>", with: "\n")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,7 @@ struct ItemMediaView: View {
|
|||||||
.font(.headline)
|
.font(.headline)
|
||||||
.frame(maxWidth: .infinity, alignment: .leading)
|
.frame(maxWidth: .infinity, alignment: .leading)
|
||||||
|
|
||||||
ExpandableText((item.overview ?? "").replacingOccurrences(of: "<br>", with: ""))
|
ExpandableText((item.overviewNL ?? "").replacingOccurrences(of: "<br>", with: ""))
|
||||||
.lineLimit(8)
|
.lineLimit(8)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,30 +14,30 @@ struct ItemSeriesEpisodeIconView: View {
|
|||||||
|
|
||||||
@EnvironmentObject var size: ScreenSize
|
@EnvironmentObject var size: ScreenSize
|
||||||
|
|
||||||
var iconWidthMultiplier: CGFloat = 0.35
|
var iconWidthMultiplier: CGFloat = 0.5
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
HStack(alignment: .top) {
|
HStack {
|
||||||
ItemIconView(item: item, width: (size.size.width * iconWidthMultiplier), height: (size.size.width * iconWidthMultiplier) / 1.7)
|
ItemIconView(item: item,
|
||||||
|
width: (size.size.width * iconWidthMultiplier),
|
||||||
|
height: (size.size.width * iconWidthMultiplier) / 1.7,
|
||||||
|
contentMode: .fill)
|
||||||
|
|
||||||
VStack(alignment: .leading) {
|
VStack(alignment: .leading) {
|
||||||
Text("Episode \(item.indexNumber ?? 0)")
|
Text("Episode \(item.indexNumber ?? 0)")
|
||||||
.foregroundStyle(Color.secondary)
|
.foregroundStyle(.secondary)
|
||||||
.font(.caption)
|
|
||||||
Text(item.name ?? "---")
|
|
||||||
.bold()
|
|
||||||
.lineLimit(nil)
|
|
||||||
|
|
||||||
Text(item.overview ?? "")
|
|
||||||
.foregroundStyle(Color.secondary)
|
|
||||||
.font(.callout)
|
.font(.callout)
|
||||||
|
|
||||||
Spacer()
|
Text(item.name ?? "---")
|
||||||
|
.bold()
|
||||||
}
|
}
|
||||||
.frame(height: (size.size.width * iconWidthMultiplier) / 1.7)
|
.frame(height: (size.size.width * iconWidthMultiplier) / 1.7)
|
||||||
}
|
}
|
||||||
|
ExpandableText((item.overviewNL ?? "").replacingOccurrences(of: "<br>", with: "\n"))
|
||||||
|
.foregroundColor(.secondary)
|
||||||
}
|
}
|
||||||
|
.padding(.vertical)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,7 +44,7 @@ struct ItemPersonView: View {
|
|||||||
.font(.title)
|
.font(.title)
|
||||||
.padding([.horizontal, .top])
|
.padding([.horizontal, .top])
|
||||||
|
|
||||||
if let overview = item.overview {
|
if let overview = item.overviewNL {
|
||||||
ExpandableText(overview)
|
ExpandableText(overview)
|
||||||
.lineLimit(8)
|
.lineLimit(8)
|
||||||
.padding([.horizontal, .bottom])
|
.padding([.horizontal, .bottom])
|
||||||
|
@ -13,7 +13,7 @@ struct ItemSeasonView: View {
|
|||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack {
|
VStack {
|
||||||
if item.overview != nil {
|
if item.overviewNL != nil {
|
||||||
ItemMediaView(item: item)
|
ItemMediaView(item: item)
|
||||||
.padding([.horizontal, .bottom])
|
.padding([.horizontal, .bottom])
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user