fix infinite load for subtitles. also save last used user.

This commit is contained in:
Aiden Vigue 2021-07-31 12:18:12 -04:00
parent d98776f655
commit e8439830f2
No known key found for this signature in database
GPG Key ID: B9A09843AB079D5B
3 changed files with 26 additions and 7 deletions

View File

@ -71,6 +71,7 @@
535870AD2669D8DD00D05A09 /* Typings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535870AC2669D8DD00D05A09 /* Typings.swift */; }; 535870AD2669D8DD00D05A09 /* Typings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535870AC2669D8DD00D05A09 /* Typings.swift */; };
535BAE9F2649E569005FA86D /* ItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535BAE9E2649E569005FA86D /* ItemView.swift */; }; 535BAE9F2649E569005FA86D /* ItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535BAE9E2649E569005FA86D /* ItemView.swift */; };
535BAEA5264A151C005FA86D /* VideoPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535BAEA4264A151C005FA86D /* VideoPlayer.swift */; }; 535BAEA5264A151C005FA86D /* VideoPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535BAEA4264A151C005FA86D /* VideoPlayer.swift */; };
53628C6D26B5AA0D008A64A0 /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = 53628C6C26B5AA0D008A64A0 /* Defaults */; };
53649AAD269CFAEA00A2D8B7 /* Puppy in Frameworks */ = {isa = PBXBuildFile; productRef = 53649AAC269CFAEA00A2D8B7 /* Puppy */; }; 53649AAD269CFAEA00A2D8B7 /* Puppy in Frameworks */ = {isa = PBXBuildFile; productRef = 53649AAC269CFAEA00A2D8B7 /* Puppy */; };
53649AAF269CFAF600A2D8B7 /* Puppy in Frameworks */ = {isa = PBXBuildFile; productRef = 53649AAE269CFAF600A2D8B7 /* Puppy */; }; 53649AAF269CFAF600A2D8B7 /* Puppy in Frameworks */ = {isa = PBXBuildFile; productRef = 53649AAE269CFAF600A2D8B7 /* Puppy */; };
53649AB1269CFB1900A2D8B7 /* LogManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53649AB0269CFB1900A2D8B7 /* LogManager.swift */; }; 53649AB1269CFB1900A2D8B7 /* LogManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53649AB0269CFB1900A2D8B7 /* LogManager.swift */; };
@ -413,6 +414,7 @@
isa = PBXFrameworksBuildPhase; isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
53628C6D26B5AA0D008A64A0 /* Defaults in Frameworks */,
628B95332670CAEA0091AF3B /* NukeUI in Frameworks */, 628B95332670CAEA0091AF3B /* NukeUI in Frameworks */,
628B95242670CABD0091AF3B /* SwiftUI.framework in Frameworks */, 628B95242670CABD0091AF3B /* SwiftUI.framework in Frameworks */,
531ABF6C2671F5CC00C0FE20 /* WidgetKit.framework in Frameworks */, 531ABF6C2671F5CC00C0FE20 /* WidgetKit.framework in Frameworks */,
@ -837,6 +839,7 @@
628B95392670CE250091AF3B /* KeychainSwift */, 628B95392670CE250091AF3B /* KeychainSwift */,
536D3D7C267BD5F90004248C /* ActivityIndicator */, 536D3D7C267BD5F90004248C /* ActivityIndicator */,
53649AB4269D423A00A2D8B7 /* Puppy */, 53649AB4269D423A00A2D8B7 /* Puppy */,
53628C6C26B5AA0D008A64A0 /* Defaults */,
); );
productName = WidgetExtensionExtension; productName = WidgetExtensionExtension;
productReference = 628B95202670CABD0091AF3B /* WidgetExtension.appex */; productReference = 628B95202670CABD0091AF3B /* WidgetExtension.appex */;
@ -1706,6 +1709,11 @@
package = 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */; package = 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */;
productName = NukeUI; productName = NukeUI;
}; };
53628C6C26B5AA0D008A64A0 /* Defaults */ = {
isa = XCSwiftPackageProductDependency;
package = 62CB3F442685BAF7003D0A6F /* XCRemoteSwiftPackageReference "Defaults" */;
productName = Defaults;
};
53649AAC269CFAEA00A2D8B7 /* Puppy */ = { 53649AAC269CFAEA00A2D8B7 /* Puppy */ = {
isa = XCSwiftPackageProductDependency; isa = XCSwiftPackageProductDependency;
package = 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */; package = 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */;

View File

@ -654,7 +654,9 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe
if fetchCaptions { if fetchCaptions {
mediaPlayer.pause() mediaPlayer.pause()
subtitleTrackArray.forEach { sub in subtitleTrackArray.forEach { sub in
if sub.id != -1 && sub.delivery == .external { //stupid fxcking jeff decides to re-encode these when added.
//only add playback streams when codec not supported by VLC.
if sub.id != -1 && sub.delivery == .external && sub.codec != "subrip" {
mediaPlayer.addPlaybackSlave(sub.url!, type: .subtitle, enforce: false) mediaPlayer.addPlaybackSlave(sub.url!, type: .subtitle, enforce: false)
} }
} }

View File

@ -27,10 +27,11 @@ final class SessionManager {
#if os(tvOS) #if os(tvOS)
let tvUserManager = TVUserManager() let tvUserManager = TVUserManager()
#endif #endif
let userDefaults = UserDefaults()
init() { init() {
let savedUserRequest: NSFetchRequest<SignedInUser> = SignedInUser.fetchRequest() let savedUserRequest: NSFetchRequest<SignedInUser> = SignedInUser.fetchRequest()
let lastUsedUserID = userDefaults.string(forKey: "lastUsedUserID")
let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest)
#if os(tvOS) #if os(tvOS)
@ -40,7 +41,15 @@ final class SessionManager {
} }
} }
#else #else
if(lastUsedUserID != nil) {
savedUsers?.forEach { savedUser in
if(savedUser.user_id ?? "" == lastUsedUserID!) {
user = savedUser;
}
}
} else {
user = savedUsers?.first user = savedUsers?.first
}
#endif #endif
if user != nil { if user != nil {
@ -116,7 +125,7 @@ final class SessionManager {
func loginWithSavedSession(user: SignedInUser) { func loginWithSavedSession(user: SignedInUser) {
let accessToken = getAuthToken(userID: user.user_id!) let accessToken = getAuthToken(userID: user.user_id!)
userDefaults.set(user.user_id!, forKey: "lastUsedUserID")
self.user = user self.user = user
generateAuthHeader(with: accessToken, deviceID: user.device_uuid) generateAuthHeader(with: accessToken, deviceID: user.device_uuid)
print(JellyfinAPI.customHeaders) print(JellyfinAPI.customHeaders)
@ -135,7 +144,7 @@ final class SessionManager {
user.device_uuid = self.deviceID user.device_uuid = self.deviceID
#if os(tvOS) #if os(tvOS)
// user.appletv_id = tvUserManager.currentUserIdentifier ?? "" user.appletv_id = tvUserManager.currentUserIdentifier ?? ""
#endif #endif
return (user, response.accessToken) return (user, response.accessToken)