Fix orientation bug

This commit is contained in:
Aiden Vigue 2021-05-22 12:17:54 -04:00
parent 49c8cb0112
commit 2c2b8a29f7
7 changed files with 62 additions and 7 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -37,6 +37,7 @@ struct CustomShape: Shape {
struct ContinueWatchingView: View {
@Environment(\.managedObjectContext) private var viewContext
@EnvironmentObject var globalData: GlobalData
@EnvironmentObject var orientationInfo: OrientationInfo
@State var resumeItems: [ResumeItem] = []
@State private var viewDidLoad: Int = 0;
@ -64,7 +65,7 @@ struct ContinueWatchingView: View {
for (_,item):(String, JSON) in json["Items"] {
// Do something you want
let itemObj = ResumeItem()
if(item["PrimaryImageAspectRatio"].double! < 1.0) {
if(item["PrimaryImageAspectRatio"].double ?? 0.0 < 1.0) {
//portrait; use backdrop instead
itemObj.Image = item["BackdropImageTags"][0].string ?? ""
itemObj.ImageType = "Backdrop"

View File

@ -15,6 +15,7 @@ struct EpisodeItemView: View {
@EnvironmentObject var globalData: GlobalData
@State private var isLoading: Bool = true;
var item: ResumeItem;
@EnvironmentObject var orientationInfo: OrientationInfo
var fullItem: DetailItem;
@State private var playing: Bool = false;
@State private var vc: PreferenceUIHostingController? = nil;
@ -211,7 +212,7 @@ struct EpisodeItemView: View {
LoadingView(isShowing: $isLoading) {
VStack(alignment:.leading) {
if(!isLoading) {
if(isPortrait) {
if(orientationInfo.orientation == .portrait) {
GeometryReader { geometry in
VStack() {
WebImage(url: URL(string: "\(globalData.server?.baseURI ?? "")/Items/\(fullItem.ParentBackdropItemId)/Images/Backdrop?maxWidth=450&quality=90&tag=\(fullItem.Backdrop)")!)

View File

@ -11,6 +11,46 @@ class justSignedIn: ObservableObject {
@Published var did: Bool = false
}
class OrientationInfo: ObservableObject {
enum Orientation {
case portrait
case landscape
}
@Published var orientation: Orientation
private var _observer: NSObjectProtocol?
init() {
// fairly arbitrary starting value for 'flat' orientations
if UIDevice.current.orientation.isLandscape {
self.orientation = .landscape
}
else {
self.orientation = .portrait
}
// unowned self because we unregister before self becomes invalid
_observer = NotificationCenter.default.addObserver(forName: UIDevice.orientationDidChangeNotification, object: nil, queue: nil) { [unowned self] note in
guard let device = note.object as? UIDevice else {
return
}
if device.orientation.isPortrait {
self.orientation = .portrait
}
else if device.orientation.isLandscape {
self.orientation = .landscape
}
}
}
deinit {
if let observer = _observer {
NotificationCenter.default.removeObserver(observer)
}
}
}
@main
struct JellyfinPlayerApp: App {
let persistenceController = PersistenceController.shared
@ -20,10 +60,11 @@ struct JellyfinPlayerApp: App {
WindowGroup {
ContentView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
.environmentObject(OrientationInfo())
.environmentObject(jsi)
.withHostingWindow() { window in
window?.rootViewController = PreferenceUIHostingController(wrappedView: ContentView().environment(\.managedObjectContext, persistenceController.container.viewContext)
.environmentObject(jsi))
.environmentObject(jsi).environmentObject(OrientationInfo()))
}
}
}

View File

@ -62,6 +62,7 @@ class CastMember: ObservableObject {
struct MovieItemView: View {
@EnvironmentObject var globalData: GlobalData
@EnvironmentObject var orientationInfo: OrientationInfo
@State private var isLoading: Bool = true;
var item: ResumeItem;
var fullItem: DetailItem;
@ -258,7 +259,7 @@ struct MovieItemView: View {
LoadingView(isShowing: $isLoading) {
VStack(alignment:.leading) {
if(!isLoading) {
if(isPortrait) {
if(orientationInfo.orientation == .portrait) {
GeometryReader { geometry in
VStack() {
WebImage(url: URL(string: "\(globalData.server?.baseURI ?? "")/Items/\(fullItem.Id)/Images/Backdrop?maxWidth=450&quality=90&tag=\(fullItem.Backdrop)")!)

View File

@ -13,6 +13,7 @@ import SDWebImageSwiftUI
struct SeasonItemView: View {
@EnvironmentObject var globalData: GlobalData
@EnvironmentObject var orientationInfo: OrientationInfo
@State private var isLoading: Bool = true;
var item: ResumeItem;
var fullItem: DetailItem;
@ -185,7 +186,7 @@ struct SeasonItemView: View {
LoadingView(isShowing: $isLoading) {
VStack(alignment:.leading) {
if(!isLoading) {
if(isPortrait) {
if(orientationInfo.orientation == .portrait) {
GeometryReader { geometry in
VStack() {
WebImage(url: URL(string: "\(globalData.server?.baseURI ?? "")/Items/\(fullItem.SeriesId ?? "")/Images/Backdrop?maxWidth=750&quality=80&tag=\(item.SeasonImage ?? "")")!)

View File

@ -3,8 +3,9 @@
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid101\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid101\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}
{\list\listtemplateid3\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid201\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid3}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}}
\margl1440\margr1440\vieww11520\viewh8400\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
@ -28,4 +29,13 @@
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\pardirnatural\partightenfactor0
\ls2\ilvl0\cf0 {\listtext \uc0\u8259 }Squashed some commits in the repo as sensitive tokens were exposed for Sentry & Dynatrace\
{\listtext \uc0\u8259 }Also adds Fastlane\
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\cf0 \
\
\f0\b\fs26 1.0.0 (Build: 9)\
\pard\tx220\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\li720\fi-720\pardirnatural\partightenfactor0
\ls3\ilvl0\cf0 {\listtext \uc0\u8259 }
\f1\b0 Fixed pointer dereferencing error in ContinueWatchingView:67
\f0\b \
}