diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 6f43a313..372e6599 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -7,6 +7,7 @@ objects = { /* Begin PBXBuildFile section */ + 5302F82A2658791C00647A2E /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 5302F8292658791C00647A2E /* Sentry */; }; 5338F74E263B61370014BF09 /* ConnectToServerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5338F74D263B61370014BF09 /* ConnectToServerView.swift */; }; 5338F751263B62E80014BF09 /* HidingViews in Frameworks */ = {isa = PBXBuildFile; productRef = 5338F750263B62E80014BF09 /* HidingViews */; }; 5338F754263B65E10014BF09 /* SwiftyRequest in Frameworks */ = {isa = PBXBuildFile; productRef = 5338F753263B65E10014BF09 /* SwiftyRequest */; }; @@ -101,6 +102,7 @@ 5338F757263B7E2E0014BF09 /* KeychainSwift in Frameworks */, 53D5E3DD264B47EE00BADDC8 /* MobileVLCKit.xcframework in Frameworks */, 5338F754263B65E10014BF09 /* SwiftyRequest in Frameworks */, + 5302F82A2658791C00647A2E /* Sentry in Frameworks */, 53892782263CC8770035E14B /* URLImage in Frameworks */, 53D2F74A264C69F6005792BB /* Introspect in Frameworks */, 5389277A263CBFE70035E14B /* SwiftyJSON in Frameworks */, @@ -206,6 +208,7 @@ 53E4E644263F6BC000F67C6B /* PartialSheet */, 53D2F749264C69F6005792BB /* Introspect */, 53E0D5F7265821F50046A05F /* ExyteGrid */, + 5302F8292658791C00647A2E /* Sentry */, ); productName = JellyfinPlayer; productReference = 5377CBF1263B596A003A4E83 /* JellyfinPlayer.app */; @@ -244,6 +247,7 @@ 53E4E643263F6BC000F67C6B /* XCRemoteSwiftPackageReference "PartialSheet" */, 53D2F748264C69F6005792BB /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */, 53E0D5F6265821F50046A05F /* XCRemoteSwiftPackageReference "Grid" */, + 5302F8282658791C00647A2E /* XCRemoteSwiftPackageReference "sentry-cocoa" */, ); productRefGroup = 5377CBF2263B596A003A4E83 /* Products */; projectDirPath = ""; @@ -422,7 +426,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 4; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer/Preview Content\""; DEVELOPMENT_TEAM = 9R8RREG67J; ENABLE_BITCODE = NO; @@ -447,7 +451,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 2; + CURRENT_PROJECT_VERSION = 4; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer/Preview Content\""; DEVELOPMENT_TEAM = 9R8RREG67J; ENABLE_BITCODE = NO; @@ -490,6 +494,14 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ + 5302F8282658791C00647A2E /* XCRemoteSwiftPackageReference "sentry-cocoa" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/getsentry/sentry-cocoa"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 7.1.0; + }; + }; 5338F74F263B62E80014BF09 /* XCRemoteSwiftPackageReference "HidingViews" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/GeorgeElsham/HidingViews"; @@ -565,6 +577,11 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ + 5302F8292658791C00647A2E /* Sentry */ = { + isa = XCSwiftPackageProductDependency; + package = 5302F8282658791C00647A2E /* XCRemoteSwiftPackageReference "sentry-cocoa" */; + productName = Sentry; + }; 5338F750263B62E80014BF09 /* HidingViews */ = { isa = XCSwiftPackageProductDependency; package = 5338F74F263B62E80014BF09 /* XCRemoteSwiftPackageReference "HidingViews" */; diff --git a/JellyfinPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JellyfinPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 1e67e2c2..ba6bdf5b 100644 --- a/JellyfinPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/JellyfinPlayer.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -82,6 +82,15 @@ "version": "2.0.2" } }, + { + "package": "Sentry", + "repositoryURL": "https://github.com/getsentry/sentry-cocoa", + "state": { + "branch": null, + "revision": "5275a1ef438774f5e8a5ce8a5577771aa028ecc1", + "version": "7.1.0" + } + }, { "package": "swift-log", "repositoryURL": "https://github.com/apple/swift-log.git", diff --git a/JellyfinPlayer/ContentView.swift b/JellyfinPlayer/ContentView.swift index 938b815b..fddaeb95 100644 --- a/JellyfinPlayer/ContentView.swift +++ b/JellyfinPlayer/ContentView.swift @@ -10,6 +10,7 @@ import KeychainSwift import SwiftyRequest import SwiftyJSON import Introspect +import Sentry class GlobalData: ObservableObject { @Published var user: SignedInUser? @@ -195,6 +196,10 @@ struct ContentView: View { } func startup() { + SentrySDK.start { options in + options.dsn = "https://7ef695d745e942f8a52d69317c5ae241@o704459.ingest.sentry.io/5778161" + options.debug = false // Enabled debug when first installing is always helpful + } _libraries.wrappedValue = [] _library_names.wrappedValue = [:] _librariesShowRecentlyAdded.wrappedValue = [] @@ -337,8 +342,9 @@ struct ContentView: View { }) .tag("All Media") - } + }.edgesIgnoringSafeArea(isPortrait ? [] : [.leading,.trailing]) }.environmentObject(globalData) + .edgesIgnoringSafeArea(isPortrait ? [] : [.leading,.trailing]) .onAppear(perform: startup) .navigationViewStyle(StackNavigationViewStyle()) .alert(isPresented: $isNetworkErrored) { diff --git a/JellyfinPlayer/EpisodeItemView.swift b/JellyfinPlayer/EpisodeItemView.swift index de7daa8c..2a6f3662 100644 --- a/JellyfinPlayer/EpisodeItemView.swift +++ b/JellyfinPlayer/EpisodeItemView.swift @@ -222,7 +222,7 @@ struct EpisodeItemView: View { .frame(width: geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing, height: (geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing) * 0.5625) } - .opacity(0.4) + .opacity(0.3) .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing, height: (geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing) * 0.5625) .shadow(radius: 5) @@ -404,7 +404,7 @@ struct EpisodeItemView: View { .frame(width: geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing, height: (geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing) * 0.5625) } - .opacity(0.4) + .opacity(0.3) .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing, height: (geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing) * 0.5625) .edgesIgnoringSafeArea(.all) @@ -444,7 +444,7 @@ struct EpisodeItemView: View { .fontWeight(.semibold) .foregroundColor(.primary) .fixedSize(horizontal: false, vertical: true) - .offset(x: 12, y: 0) + .offset(x: 14, y: 0) Spacer().frame(height: 1) HStack() { Text(String(fullItem.ProductionYear)).font(.subheadline) @@ -478,7 +478,7 @@ struct EpisodeItemView: View { } Spacer() }.frame(maxWidth: .infinity) - .offset(x: 12) + .offset(x: 14) }.frame(maxWidth: .infinity) Spacer() HStack() { diff --git a/JellyfinPlayer/Info.plist b/JellyfinPlayer/Info.plist index f299c8f1..c140b301 100644 --- a/JellyfinPlayer/Info.plist +++ b/JellyfinPlayer/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName - Jellyfin + SwiftFin CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -24,6 +24,11 @@ LSRequiresIPhoneOS + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + UIApplicationSceneManifest UIApplicationSupportsMultipleScenes @@ -52,10 +57,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - NSAppTransportSecurity - - NSAllowsArbitraryLoads - - diff --git a/JellyfinPlayer/MovieItemView.swift b/JellyfinPlayer/MovieItemView.swift index 420b3ee9..cd36a0e0 100644 --- a/JellyfinPlayer/MovieItemView.swift +++ b/JellyfinPlayer/MovieItemView.swift @@ -269,7 +269,7 @@ struct MovieItemView: View { .frame(width: geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing, height: (geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing) * 0.5625) } - .opacity(0.4) + .opacity(0.3) .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing, height: (geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing) * 0.5625) .shadow(radius: 5) @@ -451,7 +451,7 @@ struct MovieItemView: View { .frame(width: geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing, height: (geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing) * 0.5625) } - .opacity(0.4) + .opacity(0.3) .aspectRatio(contentMode: .fill) .frame(width: geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing, height: (geometry.size.width + geometry.safeAreaInsets.leading + geometry.safeAreaInsets.trailing) * 0.5625) .edgesIgnoringSafeArea(.all) @@ -490,7 +490,7 @@ struct MovieItemView: View { .fontWeight(.semibold) .foregroundColor(.primary) .fixedSize(horizontal: false, vertical: true) - .offset(x: 12, y: 0) + .offset(x: 14, y: 0) Spacer().frame(height: 1) HStack() { Text(String(fullItem.ProductionYear)).font(.subheadline) @@ -524,7 +524,7 @@ struct MovieItemView: View { } Spacer() }.frame(maxWidth: .infinity) - .offset(x: 12) + .offset(x: 14) }.frame(maxWidth: .infinity) Spacer() HStack() {