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() {