From 4e75905f705348291ce2959635d9c781b4201e73 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Tue, 12 Oct 2021 17:57:30 -0600 Subject: [PATCH 01/88] Initial CoreStore foundation --- .../JellyfinPlayer_tvOSApp.swift | 1 + JellyfinPlayer.xcodeproj/project.pbxproj | 79 +++++++++++- .../xcshareddata/swiftpm/Package.resolved | 9 ++ JellyfinPlayer/App/AppDelegate.swift | 18 +++ JellyfinPlayer/App/EmailHelper.swift | 82 +++++++++++++ .../{ => App}/JellyfinPlayerApp.swift | 115 ++++-------------- .../Coordinators/MainCoordinator.swift | 1 + Shared/Extensions/UIDeviceExtensions.swift | 16 +++ Shared/Singleton/SessionManager.swift | 78 ++++++++++++ Shared/SwiftfinStore/SwiftfinStore.swift | 62 ++++++++++ 10 files changed, 365 insertions(+), 96 deletions(-) create mode 100644 JellyfinPlayer/App/AppDelegate.swift create mode 100644 JellyfinPlayer/App/EmailHelper.swift rename JellyfinPlayer/{ => App}/JellyfinPlayerApp.swift (58%) create mode 100644 Shared/Extensions/UIDeviceExtensions.swift create mode 100644 Shared/SwiftfinStore/SwiftfinStore.swift diff --git a/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift b/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift index 9ab606cb..86dcfd74 100644 --- a/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift +++ b/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift @@ -7,6 +7,7 @@ import SwiftUI import UIKit + @main struct JellyfinPlayer_tvOSApp: App { let persistenceController = PersistenceController.shared diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 3b1434b8..eec79346 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -258,6 +258,17 @@ E131691726C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691926C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; + E13DD3BD27163C63009D4DAF /* EmailHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3BC27163C63009D4DAF /* EmailHelper.swift */; }; + E13DD3BF27163DD7009D4DAF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3BE27163DD7009D4DAF /* AppDelegate.swift */; }; + E13DD3C227164941009D4DAF /* SwiftfinStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3C127164941009D4DAF /* SwiftfinStore.swift */; }; + E13DD3C327164941009D4DAF /* SwiftfinStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3C127164941009D4DAF /* SwiftfinStore.swift */; }; + E13DD3C62716499E009D4DAF /* CoreStore in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3C52716499E009D4DAF /* CoreStore */; }; + E13DD3C827164B1E009D4DAF /* UIDeviceExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */; }; + E13DD3C927164B1E009D4DAF /* UIDeviceExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */; }; + E13DD3CA27164B80009D4DAF /* SwiftfinStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3C127164941009D4DAF /* SwiftfinStore.swift */; }; + E13DD3CB27164BA8009D4DAF /* UIDeviceExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */; }; + E13DD3CD27164CA7009D4DAF /* CoreStore in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3CC27164CA7009D4DAF /* CoreStore */; }; + E13DD3CF27164E1F009D4DAF /* CoreStore in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3CE27164E1F009D4DAF /* CoreStore */; }; E14F7D0726DB36EF007C3AE6 /* ItemPortraitMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */; }; E14F7D0926DB36F7007C3AE6 /* ItemLandscapeMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */; }; E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */; }; @@ -492,6 +503,10 @@ DE5004F745B19E28744A7DE7 /* Pods-JellyfinPlayer tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinPlayer tvOS.debug.xcconfig"; path = "Target Support Files/Pods-JellyfinPlayer tvOS/Pods-JellyfinPlayer tvOS.debug.xcconfig"; sourceTree = ""; }; E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPlayButtonRowView.swift; sourceTree = ""; }; E131691626C583BC0074BFEE /* LogConstructor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogConstructor.swift; sourceTree = ""; }; + E13DD3BC27163C63009D4DAF /* EmailHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailHelper.swift; sourceTree = ""; }; + E13DD3BE27163DD7009D4DAF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + E13DD3C127164941009D4DAF /* SwiftfinStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinStore.swift; sourceTree = ""; }; + E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIDeviceExtensions.swift; sourceTree = ""; }; E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPortraitMainView.swift; sourceTree = ""; }; E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemLandscapeMainView.swift; sourceTree = ""; }; E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerDetailView.swift; sourceTree = ""; }; @@ -529,6 +544,7 @@ 5358708D2669D7A800D05A09 /* KeychainSwift in Frameworks */, 536D3D84267BEA550004248C /* ParallaxView in Frameworks */, 53ABFDDC267972BF00886593 /* TVServices.framework in Frameworks */, + E13DD3CD27164CA7009D4DAF /* CoreStore in Frameworks */, 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */, 53ABFDED26799D7700886593 /* ActivityIndicator in Frameworks */, ); @@ -545,6 +561,7 @@ 53EC6E25267EB10F006DD26A /* SwiftyJSON in Frameworks */, 53EC6E21267E80B1006DD26A /* Pods_JellyfinPlayer_iOS.framework in Frameworks */, 53352571265EA0A0006CCA86 /* Introspect in Frameworks */, + E13DD3C62716499E009D4DAF /* CoreStore in Frameworks */, 621C638026672A30004216EA /* NukeUI in Frameworks */, 625CB57A2678C4A400530A6E /* ActivityIndicator in Frameworks */, 6260FFF926A09754003FA968 /* CombineExt in Frameworks */, @@ -563,6 +580,7 @@ 53649AB5269D423A00A2D8B7 /* Puppy in Frameworks */, 536D3D7D267BD5F90004248C /* ActivityIndicator in Frameworks */, 628B953A2670CE250091AF3B /* KeychainSwift in Frameworks */, + E13DD3CF27164E1F009D4DAF /* CoreStore in Frameworks */, 628B95352670CAEA0091AF3B /* JellyfinAPI in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -710,6 +728,7 @@ 535870752669D60C00D05A09 /* Shared */ = { isa = PBXGroup; children = ( + E13DD3C0271648EC009D4DAF /* SwiftfinStore */, E1FCD08E26C466F3007C8DCF /* Errors */, 621338912660106C00A81A2A /* Extensions */, 535870AB2669D8D300D05A09 /* Objects */, @@ -774,6 +793,7 @@ 5377CBF3263B596A003A4E83 /* JellyfinPlayer */ = { isa = PBXGroup; children = ( + E13DD3BB27163C3E009D4DAF /* App */, 62C29E9D26D0FE5900C1D2E7 /* Coordinators */, 53F866422687A45400DCD1D7 /* Components */, 62ECA01926FA6D6900E8EBB7 /* Singleton */, @@ -783,7 +803,6 @@ 5389276D263C25100035E14B /* ContinueWatchingView.swift */, 5377CC02263B596B003A4E83 /* Info.plist */, E14F7D0A26DB3714007C3AE6 /* ItemView */, - 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */, 53FF7F29263CF3F500585C35 /* LatestMediaView.swift */, 53E4E646263F6CF100F67C6B /* LibraryFilterView.swift */, 6213388F265F83A900A81A2A /* LibraryListView.swift */, @@ -978,6 +997,7 @@ isa = PBXGroup; children = ( 5389277B263CC3DB0035E14B /* BlurHashDecode.swift */, + E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */, 6267B3D526710B8900A7371D /* CollectionExtensions.swift */, E173DA5126D04AAF00CC4EB7 /* ColorExtension.swift */, 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */, @@ -1058,6 +1078,24 @@ path = Pods; sourceTree = ""; }; + E13DD3BB27163C3E009D4DAF /* App */ = { + isa = PBXGroup; + children = ( + 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */, + E13DD3BE27163DD7009D4DAF /* AppDelegate.swift */, + E13DD3BC27163C63009D4DAF /* EmailHelper.swift */, + ); + path = App; + sourceTree = ""; + }; + E13DD3C0271648EC009D4DAF /* SwiftfinStore */ = { + isa = PBXGroup; + children = ( + E13DD3C127164941009D4DAF /* SwiftfinStore.swift */, + ); + path = SwiftfinStore; + sourceTree = ""; + }; E14F7D0A26DB3714007C3AE6 /* ItemView */ = { isa = PBXGroup; children = ( @@ -1151,6 +1189,7 @@ 53649AAE269CFAF600A2D8B7 /* Puppy */, 6261A0DF26A0AB710072EF1C /* CombineExt */, 6220D0C826D63F3700B8E046 /* Stinsen */, + E13DD3CC27164CA7009D4DAF /* CoreStore */, ); productName = "JellyfinPlayer tvOS"; productReference = 535870602669D21600D05A09 /* JellyfinPlayer tvOS.app */; @@ -1186,6 +1225,7 @@ 53649AAC269CFAEA00A2D8B7 /* Puppy */, 6260FFF826A09754003FA968 /* CombineExt */, 62C29E9B26D0FE4200C1D2E7 /* Stinsen */, + E13DD3C52716499E009D4DAF /* CoreStore */, ); productName = JellyfinPlayer; productReference = 5377CBF1263B596A003A4E83 /* JellyfinPlayer iOS.app */; @@ -1211,6 +1251,7 @@ 536D3D7C267BD5F90004248C /* ActivityIndicator */, 53649AB4269D423A00A2D8B7 /* Puppy */, 53628C6C26B5AA0D008A64A0 /* Defaults */, + E13DD3CE27164E1F009D4DAF /* CoreStore */, ); productName = WidgetExtensionExtension; productReference = 628B95202670CABD0091AF3B /* WidgetExtension.appex */; @@ -1275,6 +1316,7 @@ 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */, 6260FFF726A09754003FA968 /* XCRemoteSwiftPackageReference "CombineExt" */, 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */, + E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */, ); productRefGroup = 5377CBF2263B596A003A4E83 /* Products */; projectDirPath = ""; @@ -1535,6 +1577,7 @@ 6220D0C726D62D8700B8E046 /* VideoPlayerCoordinator.swift in Sources */, 53272537268C1DBB0035FBF1 /* SeasonItemView.swift in Sources */, 09389CC526814E4500AE350E /* DeviceProfileBuilder.swift in Sources */, + E13DD3C927164B1E009D4DAF /* UIDeviceExtensions.swift in Sources */, 535870A62669D8AE00D05A09 /* LazyView.swift in Sources */, 6220D0AE26D5EABB00B8E046 /* ViewExtensions.swift in Sources */, 5321753E2671DE9C005491E6 /* Typings.swift in Sources */, @@ -1552,6 +1595,7 @@ 531690FA267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift in Sources */, E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */, E1AD105726D981CE003E4A08 /* PortraitHStackView.swift in Sources */, + E13DD3C327164941009D4DAF /* SwiftfinStore.swift in Sources */, 535870A32669D89F00D05A09 /* Model.xcdatamodeld in Sources */, 09389CC826819B4600AE350E /* VideoPlayerModel.swift in Sources */, ); @@ -1629,6 +1673,8 @@ 6220D0B126D5EC9900B8E046 /* SettingsCoordinator.swift in Sources */, 62C29EA626D1036A00C1D2E7 /* HomeCoordinator.swift in Sources */, 531AC8BF26750DE20091C7EB /* ImageView.swift in Sources */, + E13DD3BD27163C63009D4DAF /* EmailHelper.swift in Sources */, + E13DD3C227164941009D4DAF /* SwiftfinStore.swift in Sources */, E1AD104A26D94822003E4A08 /* DetailItem.swift in Sources */, 62E632E0267D30CA0063E547 /* LibraryViewModel.swift in Sources */, 624C21752685CF60007F1390 /* SearchablePickerView.swift in Sources */, @@ -1637,7 +1683,9 @@ 62E632E3267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, 091B5A8A2683142E00D78B61 /* ServerDiscovery.swift in Sources */, 62E632EF267D43320063E547 /* LibraryFilterViewModel.swift in Sources */, + E13DD3C827164B1E009D4DAF /* UIDeviceExtensions.swift in Sources */, E1AD104D26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */, + E13DD3BF27163DD7009D4DAF /* AppDelegate.swift in Sources */, 535870AD2669D8DD00D05A09 /* Typings.swift in Sources */, E1AD105F26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift in Sources */, 6220D0BA26D6092100B8E046 /* FilterCoordinator.swift in Sources */, @@ -1662,6 +1710,7 @@ buildActionMask = 2147483647; files = ( 53649AB3269D3F5B00A2D8B7 /* LogManager.swift in Sources */, + E13DD3CB27164BA8009D4DAF /* UIDeviceExtensions.swift in Sources */, 62EC353126766848000E9F2D /* ServerEnvironment.swift in Sources */, 6267B3D726710B9700A7371D /* CollectionExtensions.swift in Sources */, 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */, @@ -1676,6 +1725,7 @@ 628B95382670CDAB0091AF3B /* Model.xcdatamodeld in Sources */, E1FCD09926C4F358007C8DCF /* NetworkError.swift in Sources */, E131691926C583BC0074BFEE /* LogConstructor.swift in Sources */, + E13DD3CA27164B80009D4DAF /* SwiftfinStore.swift in Sources */, 62EC353226766849000E9F2D /* SessionManager.swift in Sources */, 536D3D79267BD5D00004248C /* ViewModel.swift in Sources */, ); @@ -2087,7 +2137,7 @@ CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_TEAM = 9R8RREG67J; INFOPLIST_FILE = WidgetExtension/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2114,7 +2164,7 @@ CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_TEAM = 9R8RREG67J; INFOPLIST_FILE = WidgetExtension/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 14.1; + IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -2268,6 +2318,14 @@ kind = branch; }; }; + E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/JohnEstropia/CoreStore.git"; + requirement = { + kind = exactVersion; + version = 8.1.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -2406,6 +2464,21 @@ package = 62CB3F442685BAF7003D0A6F /* XCRemoteSwiftPackageReference "Defaults" */; productName = Defaults; }; + E13DD3C52716499E009D4DAF /* CoreStore */ = { + isa = XCSwiftPackageProductDependency; + package = E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */; + productName = CoreStore; + }; + E13DD3CC27164CA7009D4DAF /* CoreStore */ = { + isa = XCSwiftPackageProductDependency; + package = E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */; + productName = CoreStore; + }; + E13DD3CE27164E1F009D4DAF /* CoreStore */ = { + isa = XCSwiftPackageProductDependency; + package = E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */; + productName = CoreStore; + }; /* End XCSwiftPackageProductDependency section */ /* Begin XCVersionGroup section */ diff --git a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved index d601cf81..7c5ca76a 100644 --- a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -37,6 +37,15 @@ "version": null } }, + { + "package": "CoreStore", + "repositoryURL": "https://github.com/JohnEstropia/CoreStore.git", + "state": { + "branch": null, + "revision": "496145761ab30e8cf1c44220c0882b95e6b41077", + "version": "8.1.0" + } + }, { "package": "Defaults", "repositoryURL": "https://github.com/acvigue/Defaults", diff --git a/JellyfinPlayer/App/AppDelegate.swift b/JellyfinPlayer/App/AppDelegate.swift new file mode 100644 index 00000000..e887b225 --- /dev/null +++ b/JellyfinPlayer/App/AppDelegate.swift @@ -0,0 +1,18 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import UIKit + +class AppDelegate: NSObject, UIApplicationDelegate { + static var orientationLock = UIInterfaceOrientationMask.all + + func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { + AppDelegate.orientationLock + } +} diff --git a/JellyfinPlayer/App/EmailHelper.swift b/JellyfinPlayer/App/EmailHelper.swift new file mode 100644 index 00000000..c5025ac1 --- /dev/null +++ b/JellyfinPlayer/App/EmailHelper.swift @@ -0,0 +1,82 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI +import MessageUI + +class EmailHelper: NSObject, MFMailComposeViewControllerDelegate { + public static let shared = EmailHelper() + override private init() { + // + } + + func sendLogs(logURL: URL) { + if !MFMailComposeViewController.canSendMail() { + // Utilities.showErrorBanner(title: "No mail account found", subtitle: "Please setup a mail account") + return // EXIT + } + + let picker = MFMailComposeViewController() + + let fileManager = FileManager() + let data = fileManager.contents(atPath: logURL.path) + + picker.setSubject("[DEV-BUG] SwiftFin") + picker + .setMessageBody("Please don't edit this email.\n Please don't change the subject. \nUDID: \(UIDevice.current.identifierForVendor?.uuidString ?? "NIL")\n", + isHTML: false) + picker.setToRecipients(["SwiftFin Bug Reports "]) + picker.addAttachmentData(data!, mimeType: "text/plain", fileName: logURL.lastPathComponent) + picker.mailComposeDelegate = self + + EmailHelper.getRootViewController()?.present(picker, animated: true, completion: nil) + } + + func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { + EmailHelper.getRootViewController()?.dismiss(animated: true, completion: nil) + } + + static func getRootViewController() -> UIViewController? { + UIApplication.shared.windows.first?.rootViewController + } +} + +// A view modifier that detects shaking and calls a function of our choosing. +struct DeviceShakeViewModifier: ViewModifier { + let action: () -> Void + + func body(content: Self.Content) -> some View { + content + .onAppear() + .onReceive(NotificationCenter.default.publisher(for: UIDevice.deviceDidShakeNotification)) { _ in + action() + } + } +} + +// A View extension to make the modifier easier to use. +extension View { + func onShake(perform action: @escaping () -> Void) -> some View { + modifier(DeviceShakeViewModifier(action: action)) + } +} + +// The notification we'll send when a shake gesture happens. +extension UIDevice { + static let deviceDidShakeNotification = Notification.Name(rawValue: "deviceDidShakeNotification") +} + +// Override the default behavior of shake gestures to send our notification instead. +extension UIWindow { + override open func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { + if motion == .motionShake { + NotificationCenter.default.post(name: UIDevice.deviceDidShakeNotification, object: nil) + } + } +} diff --git a/JellyfinPlayer/JellyfinPlayerApp.swift b/JellyfinPlayer/App/JellyfinPlayerApp.swift similarity index 58% rename from JellyfinPlayer/JellyfinPlayerApp.swift rename to JellyfinPlayer/App/JellyfinPlayerApp.swift index 74e2cedd..624dee3e 100644 --- a/JellyfinPlayer/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/App/JellyfinPlayerApp.swift @@ -10,40 +10,6 @@ import MessageUI import Stinsen import SwiftUI -// The notification we'll send when a shake gesture happens. -extension UIDevice { - static let deviceDidShakeNotification = Notification.Name(rawValue: "deviceDidShakeNotification") -} - -// Override the default behavior of shake gestures to send our notification instead. -extension UIWindow { - override open func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) { - if motion == .motionShake { - NotificationCenter.default.post(name: UIDevice.deviceDidShakeNotification, object: nil) - } - } -} - -// A view modifier that detects shaking and calls a function of our choosing. -struct DeviceShakeViewModifier: ViewModifier { - let action: () -> Void - - func body(content: Self.Content) -> some View { - content - .onAppear() - .onReceive(NotificationCenter.default.publisher(for: UIDevice.deviceDidShakeNotification)) { _ in - action() - } - } -} - -// A View extension to make the modifier easier to use. -extension View { - func onShake(perform action: @escaping () -> Void) -> some View { - modifier(DeviceShakeViewModifier(action: action)) - } -} - extension UIDevice { var hasNotch: Bool { let bottom = UIApplication.shared.windows.filter { $0.isKeyWindow }.first?.safeAreaInsets.bottom ?? 0 @@ -175,43 +141,6 @@ extension View { } } -class EmailHelper: NSObject, MFMailComposeViewControllerDelegate { - public static let shared = EmailHelper() - override private init() { - // - } - - func sendLogs(logURL: URL) { - if !MFMailComposeViewController.canSendMail() { - // Utilities.showErrorBanner(title: "No mail account found", subtitle: "Please setup a mail account") - return // EXIT - } - - let picker = MFMailComposeViewController() - - let fileManager = FileManager() - let data = fileManager.contents(atPath: logURL.path) - - picker.setSubject("[DEV-BUG] SwiftFin") - picker - .setMessageBody("Please don't edit this email.\n Please don't change the subject. \nUDID: \(UIDevice.current.identifierForVendor?.uuidString ?? "NIL")\n", - isHTML: false) - picker.setToRecipients(["SwiftFin Bug Reports "]) - picker.addAttachmentData(data!, mimeType: "text/plain", fileName: logURL.lastPathComponent) - picker.mailComposeDelegate = self - - EmailHelper.getRootViewController()?.present(picker, animated: true, completion: nil) - } - - func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { - EmailHelper.getRootViewController()?.dismiss(animated: true, completion: nil) - } - - static func getRootViewController() -> UIViewController? { - UIApplication.shared.windows.first?.rootViewController - } -} - @main struct JellyfinPlayerApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate @@ -221,34 +150,34 @@ struct JellyfinPlayerApp: App { var body: some Scene { WindowGroup { - EmptyView() - .environment(\.managedObjectContext, persistenceController.container.viewContext) - .onAppear(perform: { + MainCoordinator().view() + .onAppear { setupAppearance() - }) - .withHostingWindow { window in - window? - .rootViewController = PreferenceUIHostingController(wrappedView: MainCoordinator().view() - .environment(\.managedObjectContext, persistenceController.container.viewContext)) - } - .onShake { - EmailHelper.shared.sendLogs(logURL: LogManager.shared.logFileURL()) - } - .onOpenURL { url in - AppURLHandler.shared.processDeepLink(url: url) } } + + +// WindowGroup { +// EmptyView() +// .environment(\.managedObjectContext, persistenceController.container.viewContext) +// .onAppear(perform: { +// setupAppearance() +// }) +// .withHostingWindow { window in +// window? +// .rootViewController = PreferenceUIHostingController(wrappedView: MainCoordinator().view() +// .environment(\.managedObjectContext, persistenceController.container.viewContext)) +// } +// .onShake { +// EmailHelper.shared.sendLogs(logURL: LogManager.shared.logFileURL()) +// } +// .onOpenURL { url in +// AppURLHandler.shared.processDeepLink(url: url) +// } +// } } private func setupAppearance() { UIApplication.shared.windows.first?.overrideUserInterfaceStyle = appAppearance.style } } - -class AppDelegate: NSObject, UIApplicationDelegate { - static var orientationLock = UIInterfaceOrientationMask.all - - func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { - AppDelegate.orientationLock - } -} diff --git a/JellyfinPlayer/Coordinators/MainCoordinator.swift b/JellyfinPlayer/Coordinators/MainCoordinator.swift index 0d0f7f29..f6381804 100644 --- a/JellyfinPlayer/Coordinators/MainCoordinator.swift +++ b/JellyfinPlayer/Coordinators/MainCoordinator.swift @@ -28,6 +28,7 @@ import SwiftUI } else { self.stack = NavigationStack(initial: \MainCoordinator.connectToServer) } + ImageCache.shared.costLimit = 125 * 1024 * 1024 // 125MB memory DataLoader.sharedUrlCache.diskCapacity = 1000 * 1024 * 1024 // 1000MB disk diff --git a/Shared/Extensions/UIDeviceExtensions.swift b/Shared/Extensions/UIDeviceExtensions.swift new file mode 100644 index 00000000..e837782f --- /dev/null +++ b/Shared/Extensions/UIDeviceExtensions.swift @@ -0,0 +1,16 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import UIKit + +extension UIDevice { + static var vendorUUIDString: String { + return current.identifierForVendor!.uuidString + } +} diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index 9a69bc28..7cdb3b7c 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -9,6 +9,7 @@ import Combine import CoreData +import CoreStore import Foundation import JellyfinAPI import KeychainSwift @@ -18,6 +19,83 @@ import UIKit import TVServices #endif +typealias CurrentLogin = (server: SwiftfinStore.Models.Server, user: SwiftfinStore.Models.User) + +// MARK: New SessionManager +final class NewSessionManager { + + // MARK: currentLogin + private(set) var currentLogin: CurrentLogin! + + // MARK: main + static let main = SessionManager() + + private let JellyfinDefaults = UserDefaults(suiteName: "jellyfin-defaults")! + + private init() { } + + func generateServerUserID(server: SwiftfinStore.Models.Server, user: SwiftfinStore.Models.User) -> String { + return "\(server.id)-\(user.id)" + } + + func connectToServer(with uri: String) -> AnyPublisher { + var uri = uri + if !uri.contains("http") { + uri = "https://" + uri + } + if uri.last == "/" { + uri = String(uri.dropLast()) + } + + JellyfinAPI.basePath = uri + + return SystemAPI.getPublicSystemInfo() + .handleEvents(receiveOutput: { response in + print(response) + }).eraseToAnyPublisher() + } + + func fetchServers() -> [SwiftfinStore.Models.Server] { + let servers = try! SwiftfinStore.dataStack.fetchAll(From()) + return servers + } + + func loginUser(server: SwiftfinStore.Models.Server, username: String, password: String) -> AnyPublisher { + setAuthHeader(with: "") + + return UserAPI.authenticateUserByName(authenticateUserByName: AuthenticateUserByName(username: username, pw: password)) + .handleEvents(receiveOutput: { [unowned self] response in + guard let accessToken = response.accessToken else { fatalError() } + setAuthHeader(with: accessToken) + }) + .eraseToAnyPublisher() + } + + private func setAuthHeader(with accessToken: String) { + let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String + var deviceName = UIDevice.current.name + deviceName = deviceName.folding(options: .diacriticInsensitive, locale: .current) + deviceName = String(deviceName.unicodeScalars.filter {CharacterSet.urlQueryAllowed.contains($0) }) + + var header = "MediaBrowser " + + let platform: String + #if os(tvOS) + platform = "tvOS" + #else + platform = "iOS" + #endif + + header.append("Client=\"Jellyfin \(platform)\", ") + header.append("Device=\"\(deviceName)\", ") + header.append("DeviceId=\"\(platform)_\(UIDevice.vendorUUIDString)_\(String(Date().timeIntervalSince1970))\", ") + header.append("Version=\"\(appVersion ?? "0.0.1")\", ") + header.append("Token=\"\(accessToken)\"") + + JellyfinAPI.customHeaders["X-Emby-Authorization"] = header + } +} + final class SessionManager { static let current = SessionManager() fileprivate(set) var user: SignedInUser! diff --git a/Shared/SwiftfinStore/SwiftfinStore.swift b/Shared/SwiftfinStore/SwiftfinStore.swift new file mode 100644 index 00000000..94163787 --- /dev/null +++ b/Shared/SwiftfinStore/SwiftfinStore.swift @@ -0,0 +1,62 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import CoreStore + +enum SwiftfinStore { + + enum Models { + + final class Server: CoreStoreObject { + + @Field.Stored("url") + var url: String = "" + + @Field.Stored("name") + var name: String = "" + + @Field.Stored("id") + var id: String = "" + + @Field.Relationship("users", inverse: \User.$server) + var users: Set + } + + final class User: CoreStoreObject { + + @Field.Stored("name") + var name: String = "" + + @Field.Stored("id") + var id: String = "" + + @Field.Relationship("server") + var server: Server? + } + } + + static let dataStack: DataStack = { + let schema = CoreStoreSchema(modelVersion: "V1", + entities: [ + Entity("Server"), + Entity("User"), + ], + versionLock: nil) + + let _dataStack = DataStack(schema) + try! _dataStack.addStorageAndWait( + SQLiteStore( + fileName: "Swiftfin.sqlite", + localStorageOptions: .recreateStoreOnModelMismatch + ) + ) + return _dataStack + }() +} From 7dd253c530ba8c5ecd14858c8f56591754ea8145 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Tue, 12 Oct 2021 18:12:14 -0600 Subject: [PATCH 02/88] Organize files --- JellyfinPlayer.xcodeproj/project.pbxproj | 70 ++++++++++--------- .../AppURLHandler.swift | 0 .../{ => AppURLHandler}/DeepLink.swift | 0 JellyfinPlayer/PersistenceController.swift | 55 --------------- .../{ => Views}/ConnectToServerView.swift | 0 .../{ => Views}/ContinueWatchingView.swift | 0 JellyfinPlayer/{ => Views}/HomeView.swift | 0 .../{ => Views}/ItemView/ItemView.swift | 0 .../{ => Views}/ItemView/ItemViewBody.swift | 0 .../Landscape/ItemLandscapeMainView.swift | 0 .../Landscape/ItemLandscapeTopBarView.swift | 0 .../ItemPortraitHeaderOverlayView.swift | 0 .../Portrait/ItemPortraitMainView.swift | 0 .../{ => Views}/LatestMediaView.swift | 0 .../{ => Views}/LibraryFilterView.swift | 0 .../{ => Views}/LibraryListView.swift | 0 .../{ => Views}/LibrarySearchView.swift | 0 JellyfinPlayer/{ => Views}/LibraryView.swift | 0 JellyfinPlayer/{ => Views}/LoadingView.swift | 0 JellyfinPlayer/{ => Views}/NextUpView.swift | 0 .../{ => Views}/ServerDetailView.swift | 0 JellyfinPlayer/{ => Views}/SettingsView.swift | 0 JellyfinPlayer/{ => Views}/SplashView.swift | 0 .../{ => Views}/VideoPlayerSettingsView.swift | 0 Shared/SwiftfinStore/SwiftfinStore.swift | 13 +++- 25 files changed, 47 insertions(+), 91 deletions(-) rename JellyfinPlayer/{Singleton => AppURLHandler}/AppURLHandler.swift (100%) rename JellyfinPlayer/{ => AppURLHandler}/DeepLink.swift (100%) delete mode 100644 JellyfinPlayer/PersistenceController.swift rename JellyfinPlayer/{ => Views}/ConnectToServerView.swift (100%) rename JellyfinPlayer/{ => Views}/ContinueWatchingView.swift (100%) rename JellyfinPlayer/{ => Views}/HomeView.swift (100%) rename JellyfinPlayer/{ => Views}/ItemView/ItemView.swift (100%) rename JellyfinPlayer/{ => Views}/ItemView/ItemViewBody.swift (100%) rename JellyfinPlayer/{ => Views}/ItemView/Landscape/ItemLandscapeMainView.swift (100%) rename JellyfinPlayer/{ => Views}/ItemView/Landscape/ItemLandscapeTopBarView.swift (100%) rename JellyfinPlayer/{ => Views}/ItemView/Portrait/ItemPortraitHeaderOverlayView.swift (100%) rename JellyfinPlayer/{ => Views}/ItemView/Portrait/ItemPortraitMainView.swift (100%) rename JellyfinPlayer/{ => Views}/LatestMediaView.swift (100%) rename JellyfinPlayer/{ => Views}/LibraryFilterView.swift (100%) rename JellyfinPlayer/{ => Views}/LibraryListView.swift (100%) rename JellyfinPlayer/{ => Views}/LibrarySearchView.swift (100%) rename JellyfinPlayer/{ => Views}/LibraryView.swift (100%) rename JellyfinPlayer/{ => Views}/LoadingView.swift (100%) rename JellyfinPlayer/{ => Views}/NextUpView.swift (100%) rename JellyfinPlayer/{ => Views}/ServerDetailView.swift (100%) rename JellyfinPlayer/{ => Views}/SettingsView.swift (100%) rename JellyfinPlayer/{ => Views}/SplashView.swift (100%) rename JellyfinPlayer/{ => Views}/VideoPlayerSettingsView.swift (100%) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index eec79346..840fe36a 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -92,7 +92,6 @@ 5377CBF5263B596A003A4E83 /* JellyfinPlayerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */; }; 5377CBF9263B596B003A4E83 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5377CBF8263B596B003A4E83 /* Assets.xcassets */; }; 5377CBFC263B596B003A4E83 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5377CBFB263B596B003A4E83 /* Preview Assets.xcassets */; }; - 5377CBFE263B596B003A4E83 /* PersistenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBFD263B596B003A4E83 /* PersistenceController.swift */; }; 5377CC01263B596B003A4E83 /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */; }; 5389276E263C25100035E14B /* ContinueWatchingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5389276D263C25100035E14B /* ContinueWatchingView.swift */; }; 53892770263C25230035E14B /* NextUpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5389276F263C25230035E14B /* NextUpView.swift */; }; @@ -186,7 +185,6 @@ 6220D0C926D63F3700B8E046 /* Stinsen in Frameworks */ = {isa = PBXBuildFile; productRef = 6220D0C826D63F3700B8E046 /* Stinsen */; }; 6220D0CC26D640C400B8E046 /* AppURLHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0CB26D640C400B8E046 /* AppURLHandler.swift */; }; 6225FCCB2663841E00E067F6 /* ParallaxHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6225FCCA2663841E00E067F6 /* ParallaxHeader.swift */; }; - 6228B1C22670EB010067FD35 /* PersistenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBFD263B596B003A4E83 /* PersistenceController.swift */; }; 624C21752685CF60007F1390 /* SearchablePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 624C21742685CF60007F1390 /* SearchablePickerView.swift */; }; 625CB5682678B6FB00530A6E /* SplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5672678B6FB00530A6E /* SplashView.swift */; }; 625CB56A2678B71200530A6E /* SplashViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5692678B71200530A6E /* SplashViewModel.swift */; }; @@ -405,7 +403,6 @@ 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinPlayerApp.swift; sourceTree = ""; }; 5377CBF8263B596B003A4E83 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 5377CBFB263B596B003A4E83 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 5377CBFD263B596B003A4E83 /* PersistenceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceController.swift; sourceTree = ""; }; 5377CC00263B596B003A4E83 /* JellyfinPlayer.xcdatamodel */ = {isa = PBXFileReference; explicitFileType = wrapper.xcdatamodel; path = JellyfinPlayer.xcdatamodel; sourceTree = ""; }; 5377CC02263B596B003A4E83 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 5389276D263C25100035E14B /* ContinueWatchingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContinueWatchingView.swift; sourceTree = ""; }; @@ -744,10 +741,10 @@ 535870AB2669D8D300D05A09 /* Objects */ = { isa = PBXGroup; children = ( - 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */, - 53192D5C265AA78A008A4215 /* DeviceProfileBuilder.swift */, - 535870AC2669D8DD00D05A09 /* Typings.swift */, E1AD104926D94822003E4A08 /* DetailItem.swift */, + 53192D5C265AA78A008A4215 /* DeviceProfileBuilder.swift */, + 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */, + 535870AC2669D8DD00D05A09 /* Typings.swift */, E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */, ); path = Objects; @@ -794,34 +791,18 @@ isa = PBXGroup; children = ( E13DD3BB27163C3E009D4DAF /* App */, - 62C29E9D26D0FE5900C1D2E7 /* Coordinators */, - 53F866422687A45400DCD1D7 /* Components */, - 62ECA01926FA6D6900E8EBB7 /* Singleton */, - 53AD124C2670278D0094A276 /* JellyfinPlayer.entitlements */, + 62ECA01926FA6D6900E8EBB7 /* AppURLHandler */, 5377CBF8263B596B003A4E83 /* Assets.xcassets */, - 5338F74D263B61370014BF09 /* ConnectToServerView.swift */, - 5389276D263C25100035E14B /* ContinueWatchingView.swift */, + 53F866422687A45400DCD1D7 /* Components */, + 62C29E9D26D0FE5900C1D2E7 /* Coordinators */, 5377CC02263B596B003A4E83 /* Info.plist */, - E14F7D0A26DB3714007C3AE6 /* ItemView */, - 53FF7F29263CF3F500585C35 /* LatestMediaView.swift */, - 53E4E646263F6CF100F67C6B /* LibraryFilterView.swift */, - 6213388F265F83A900A81A2A /* LibraryListView.swift */, - 53EE24E5265060780068F029 /* LibrarySearchView.swift */, - 53DF641D263D9C0600A7CD1A /* LibraryView.swift */, - 53892771263C8C6F0035E14B /* LoadingView.swift */, - 5389276F263C25230035E14B /* NextUpView.swift */, - 5377CBFD263B596B003A4E83 /* PersistenceController.swift */, + 53AD124C2670278D0094A276 /* JellyfinPlayer.entitlements */, 5377CBFA263B596B003A4E83 /* Preview Content */, - 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, - E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */, - 535BAEA4264A151C005FA86D /* VideoPlayer.swift */, - 0959A5FC2686D29800C7C9A9 /* VideoUpNextView.swift */, 53313B8F265EEA6D00947AA3 /* VideoPlayer.storyboard */, + 535BAEA4264A151C005FA86D /* VideoPlayer.swift */, 532E68CE267D9F6B007B9F13 /* VideoPlayerCastDeviceSelector.swift */, - 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, - 625CB5672678B6FB00530A6E /* SplashView.swift */, - 625CB56E2678C23300530A6E /* HomeView.swift */, - 62ECA01726FA685A00E8EBB7 /* DeepLink.swift */, + 0959A5FC2686D29800C7C9A9 /* VideoUpNextView.swift */, + E13DD3D027165886009D4DAF /* Views */, ); path = JellyfinPlayer; sourceTree = ""; @@ -997,13 +978,13 @@ isa = PBXGroup; children = ( 5389277B263CC3DB0035E14B /* BlurHashDecode.swift */, - E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */, 6267B3D526710B8900A7371D /* CollectionExtensions.swift */, E173DA5126D04AAF00CC4EB7 /* ColorExtension.swift */, 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */, 6267B3D92671138200A7371D /* ImageExtensions.swift */, E1AD105226D96D5F003E4A08 /* JellyfinAPIExtensions */, 621338922660107500A81A2A /* StringExtensions.swift */, + E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */, 6220D0AC26D5EABB00B8E046 /* ViewExtensions.swift */, ); path = Extensions; @@ -1050,12 +1031,13 @@ path = Singleton; sourceTree = ""; }; - 62ECA01926FA6D6900E8EBB7 /* Singleton */ = { + 62ECA01926FA6D6900E8EBB7 /* AppURLHandler */ = { isa = PBXGroup; children = ( 6220D0CB26D640C400B8E046 /* AppURLHandler.swift */, + 62ECA01726FA685A00E8EBB7 /* DeepLink.swift */, ); - path = Singleton; + path = AppURLHandler; sourceTree = ""; }; AE8C3157265D6F5E008AA076 /* Resources */ = { @@ -1096,6 +1078,28 @@ path = SwiftfinStore; sourceTree = ""; }; + E13DD3D027165886009D4DAF /* Views */ = { + isa = PBXGroup; + children = ( + 5338F74D263B61370014BF09 /* ConnectToServerView.swift */, + 5389276D263C25100035E14B /* ContinueWatchingView.swift */, + 625CB56E2678C23300530A6E /* HomeView.swift */, + E14F7D0A26DB3714007C3AE6 /* ItemView */, + 53FF7F29263CF3F500585C35 /* LatestMediaView.swift */, + 53E4E646263F6CF100F67C6B /* LibraryFilterView.swift */, + 6213388F265F83A900A81A2A /* LibraryListView.swift */, + 53EE24E5265060780068F029 /* LibrarySearchView.swift */, + 53DF641D263D9C0600A7CD1A /* LibraryView.swift */, + 53892771263C8C6F0035E14B /* LoadingView.swift */, + 5389276F263C25230035E14B /* NextUpView.swift */, + E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */, + 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, + 625CB5672678B6FB00530A6E /* SplashView.swift */, + 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, + ); + path = Views; + sourceTree = ""; + }; E14F7D0A26DB3714007C3AE6 /* ItemView */ = { isa = PBXGroup; children = ( @@ -1616,7 +1620,6 @@ 625CB5732678C32A00530A6E /* HomeViewModel.swift in Sources */, 62C29EA826D103D500C1D2E7 /* LibraryListCoordinator.swift in Sources */, 62E632DC267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */, - 5377CBFE263B596B003A4E83 /* PersistenceController.swift in Sources */, 6220D0BD26D60D6600B8E046 /* ItemViewModel.swift in Sources */, 62C29E9F26D1016600C1D2E7 /* MainCoordinator.swift in Sources */, 5389276E263C25100035E14B /* ContinueWatchingView.swift in Sources */, @@ -1718,7 +1721,6 @@ E1AD105926D9A543003E4A08 /* LazyView.swift in Sources */, 628B95372670CB800091AF3B /* JellyfinWidget.swift in Sources */, E1AD105426D97161003E4A08 /* BaseItemDtoExtensions.swift in Sources */, - 6228B1C22670EB010067FD35 /* PersistenceController.swift in Sources */, E1FCD09A26C4F35A007C8DCF /* ErrorMessage.swift in Sources */, 628B95272670CABD0091AF3B /* NextUpWidget.swift in Sources */, 6220D0AF26D5EABE00B8E046 /* ViewExtensions.swift in Sources */, diff --git a/JellyfinPlayer/Singleton/AppURLHandler.swift b/JellyfinPlayer/AppURLHandler/AppURLHandler.swift similarity index 100% rename from JellyfinPlayer/Singleton/AppURLHandler.swift rename to JellyfinPlayer/AppURLHandler/AppURLHandler.swift diff --git a/JellyfinPlayer/DeepLink.swift b/JellyfinPlayer/AppURLHandler/DeepLink.swift similarity index 100% rename from JellyfinPlayer/DeepLink.swift rename to JellyfinPlayer/AppURLHandler/DeepLink.swift diff --git a/JellyfinPlayer/PersistenceController.swift b/JellyfinPlayer/PersistenceController.swift deleted file mode 100644 index 5e7b23ae..00000000 --- a/JellyfinPlayer/PersistenceController.swift +++ /dev/null @@ -1,55 +0,0 @@ -/* JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import CoreData - -struct PersistenceController { - static let shared = PersistenceController() - - static var preview: PersistenceController = { - let result = PersistenceController(inMemory: true) - let viewContext = result.container.viewContext - - do { - try viewContext.save() - } catch { - // Replace this implementation with code to handle the error appropriately. - // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. - let nsError = error as NSError - fatalError("Unresolved error \(nsError), \(nsError.userInfo)") - } - return result - }() - - let container: NSPersistentCloudKitContainer - - init(inMemory: Bool = false) { - container = NSPersistentCloudKitContainer(name: "Model") - container.persistentStoreDescriptions = [NSPersistentStoreDescription(url: FileManager.default - .containerURL(forSecurityApplicationGroupIdentifier: "group.me.vigue.jellyfin.mobileclient")!.appendingPathComponent("\(container.name).sqlite"))] - - if inMemory { - container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") - } - container.loadPersistentStores(completionHandler: { (_, error) in - if let error = error as NSError? { - // Replace this implementation with code to handle the error appropriately. - // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. - - /* - Typical reasons for an error here include: - * The parent directory does not exist, cannot be created, or disallows writing. - * The persistent store is not accessible, due to permissions or data protection when the device is locked. - * The device is out of space. - * The store could not be migrated to the current model version. - Check the error message to determine what the actual problem was. - */ - fatalError("Unresolved error \(error), \(error.userInfo)") - } - }) - } -} diff --git a/JellyfinPlayer/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift similarity index 100% rename from JellyfinPlayer/ConnectToServerView.swift rename to JellyfinPlayer/Views/ConnectToServerView.swift diff --git a/JellyfinPlayer/ContinueWatchingView.swift b/JellyfinPlayer/Views/ContinueWatchingView.swift similarity index 100% rename from JellyfinPlayer/ContinueWatchingView.swift rename to JellyfinPlayer/Views/ContinueWatchingView.swift diff --git a/JellyfinPlayer/HomeView.swift b/JellyfinPlayer/Views/HomeView.swift similarity index 100% rename from JellyfinPlayer/HomeView.swift rename to JellyfinPlayer/Views/HomeView.swift diff --git a/JellyfinPlayer/ItemView/ItemView.swift b/JellyfinPlayer/Views/ItemView/ItemView.swift similarity index 100% rename from JellyfinPlayer/ItemView/ItemView.swift rename to JellyfinPlayer/Views/ItemView/ItemView.swift diff --git a/JellyfinPlayer/ItemView/ItemViewBody.swift b/JellyfinPlayer/Views/ItemView/ItemViewBody.swift similarity index 100% rename from JellyfinPlayer/ItemView/ItemViewBody.swift rename to JellyfinPlayer/Views/ItemView/ItemViewBody.swift diff --git a/JellyfinPlayer/ItemView/Landscape/ItemLandscapeMainView.swift b/JellyfinPlayer/Views/ItemView/Landscape/ItemLandscapeMainView.swift similarity index 100% rename from JellyfinPlayer/ItemView/Landscape/ItemLandscapeMainView.swift rename to JellyfinPlayer/Views/ItemView/Landscape/ItemLandscapeMainView.swift diff --git a/JellyfinPlayer/ItemView/Landscape/ItemLandscapeTopBarView.swift b/JellyfinPlayer/Views/ItemView/Landscape/ItemLandscapeTopBarView.swift similarity index 100% rename from JellyfinPlayer/ItemView/Landscape/ItemLandscapeTopBarView.swift rename to JellyfinPlayer/Views/ItemView/Landscape/ItemLandscapeTopBarView.swift diff --git a/JellyfinPlayer/ItemView/Portrait/ItemPortraitHeaderOverlayView.swift b/JellyfinPlayer/Views/ItemView/Portrait/ItemPortraitHeaderOverlayView.swift similarity index 100% rename from JellyfinPlayer/ItemView/Portrait/ItemPortraitHeaderOverlayView.swift rename to JellyfinPlayer/Views/ItemView/Portrait/ItemPortraitHeaderOverlayView.swift diff --git a/JellyfinPlayer/ItemView/Portrait/ItemPortraitMainView.swift b/JellyfinPlayer/Views/ItemView/Portrait/ItemPortraitMainView.swift similarity index 100% rename from JellyfinPlayer/ItemView/Portrait/ItemPortraitMainView.swift rename to JellyfinPlayer/Views/ItemView/Portrait/ItemPortraitMainView.swift diff --git a/JellyfinPlayer/LatestMediaView.swift b/JellyfinPlayer/Views/LatestMediaView.swift similarity index 100% rename from JellyfinPlayer/LatestMediaView.swift rename to JellyfinPlayer/Views/LatestMediaView.swift diff --git a/JellyfinPlayer/LibraryFilterView.swift b/JellyfinPlayer/Views/LibraryFilterView.swift similarity index 100% rename from JellyfinPlayer/LibraryFilterView.swift rename to JellyfinPlayer/Views/LibraryFilterView.swift diff --git a/JellyfinPlayer/LibraryListView.swift b/JellyfinPlayer/Views/LibraryListView.swift similarity index 100% rename from JellyfinPlayer/LibraryListView.swift rename to JellyfinPlayer/Views/LibraryListView.swift diff --git a/JellyfinPlayer/LibrarySearchView.swift b/JellyfinPlayer/Views/LibrarySearchView.swift similarity index 100% rename from JellyfinPlayer/LibrarySearchView.swift rename to JellyfinPlayer/Views/LibrarySearchView.swift diff --git a/JellyfinPlayer/LibraryView.swift b/JellyfinPlayer/Views/LibraryView.swift similarity index 100% rename from JellyfinPlayer/LibraryView.swift rename to JellyfinPlayer/Views/LibraryView.swift diff --git a/JellyfinPlayer/LoadingView.swift b/JellyfinPlayer/Views/LoadingView.swift similarity index 100% rename from JellyfinPlayer/LoadingView.swift rename to JellyfinPlayer/Views/LoadingView.swift diff --git a/JellyfinPlayer/NextUpView.swift b/JellyfinPlayer/Views/NextUpView.swift similarity index 100% rename from JellyfinPlayer/NextUpView.swift rename to JellyfinPlayer/Views/NextUpView.swift diff --git a/JellyfinPlayer/ServerDetailView.swift b/JellyfinPlayer/Views/ServerDetailView.swift similarity index 100% rename from JellyfinPlayer/ServerDetailView.swift rename to JellyfinPlayer/Views/ServerDetailView.swift diff --git a/JellyfinPlayer/SettingsView.swift b/JellyfinPlayer/Views/SettingsView.swift similarity index 100% rename from JellyfinPlayer/SettingsView.swift rename to JellyfinPlayer/Views/SettingsView.swift diff --git a/JellyfinPlayer/SplashView.swift b/JellyfinPlayer/Views/SplashView.swift similarity index 100% rename from JellyfinPlayer/SplashView.swift rename to JellyfinPlayer/Views/SplashView.swift diff --git a/JellyfinPlayer/VideoPlayerSettingsView.swift b/JellyfinPlayer/Views/VideoPlayerSettingsView.swift similarity index 100% rename from JellyfinPlayer/VideoPlayerSettingsView.swift rename to JellyfinPlayer/Views/VideoPlayerSettingsView.swift diff --git a/Shared/SwiftfinStore/SwiftfinStore.swift b/Shared/SwiftfinStore/SwiftfinStore.swift index 94163787..85f285ac 100644 --- a/Shared/SwiftfinStore/SwiftfinStore.swift +++ b/Shared/SwiftfinStore/SwiftfinStore.swift @@ -16,7 +16,7 @@ enum SwiftfinStore { final class Server: CoreStoreObject { - @Field.Stored("url") + @Field.Stored("uri") var url: String = "" @Field.Stored("name") @@ -25,18 +25,27 @@ enum SwiftfinStore { @Field.Stored("id") var id: String = "" + @Field.Stored("os") + var os: String = "" + + @Field.Stored("version") + var version: String = "" + @Field.Relationship("users", inverse: \User.$server) var users: Set } final class User: CoreStoreObject { - @Field.Stored("name") + @Field.Stored("username") var name: String = "" @Field.Stored("id") var id: String = "" + @Field.Stored("appleTVID") + var appleTVID: String = "" + @Field.Relationship("server") var server: Server? } From 1576d9d6b7850afa6c0e32e3009210b99c5b9d74 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Wed, 13 Oct 2021 15:58:45 -0600 Subject: [PATCH 03/88] Create new SessionManager and begin new connect flow --- .../Components/PublicUserButton.swift | 2 +- JellyfinPlayer tvOS/ConnectToServerView.swift | 2 +- JellyfinPlayer tvOS/LatestMediaView.swift | 2 +- .../VideoPlayerViewController.swift | 6 +- JellyfinPlayer.xcodeproj/project.pbxproj | 128 +++--- .../xcshareddata/swiftpm/Package.resolved | 8 +- JellyfinPlayer/App/AppDelegate.swift | 8 + JellyfinPlayer/App/JellyfinPlayerApp.swift | 2 - .../Coordinators/MainCoordinator.swift | 12 +- .../Coordinators/MainTabCoordinator.swift | 1 - .../Coordinators/ServerListCoordinator.swift | 30 ++ JellyfinPlayer/VideoPlayer.swift | 32 +- .../Views/ConnectToServerView.swift | 375 +++++++++------- JellyfinPlayer/Views/ServerDetailView.swift | 8 +- JellyfinPlayer/Views/ServerListView.swift | 34 ++ JellyfinPlayer/Views/SettingsView.swift | 7 +- .../BaseItemDtoExtensions.swift | 8 +- .../BaseItemPersonExtensions.swift | 2 +- .../ServerDiscovery.swift | 17 +- .../UDPBroadCastConnection.swift | 0 Shared/Singleton/ServerEnvironment.swift | 67 --- Shared/Singleton/SessionManager.swift | 423 ++++++++++-------- Shared/SwiftfinStore/SwiftfinStore.swift | 20 +- .../SwiftfinStore/SwiftfinStoreDefaults.swift | 29 ++ .../SwiftfinStore/SwiftfinStoreKeychain.swift | 33 ++ .../ViewModels/ConnectToServerViewModel.swift | 89 +--- Shared/ViewModels/EpisodeItemViewModel.swift | 4 +- Shared/ViewModels/HomeViewModel.swift | 6 +- Shared/ViewModels/ItemViewModel.swift | 10 +- Shared/ViewModels/LatestMediaViewModel.swift | 4 +- .../ViewModels/LibraryFilterViewModel.swift | 2 +- Shared/ViewModels/LibraryListViewModel.swift | 2 +- .../ViewModels/LibrarySearchViewModel.swift | 8 +- Shared/ViewModels/LibraryViewModel.swift | 4 +- Shared/ViewModels/SeasonItemViewModel.swift | 4 +- Shared/ViewModels/SeriesItemViewModel.swift | 4 +- Shared/ViewModels/ServerListViewModel.swift | 20 + Shared/ViewModels/SplashViewModel.swift | 3 +- Shared/ViewModels/UserLoginViewModel.swift | 47 ++ WidgetExtension/NextUpWidget.swift | 145 +++--- 40 files changed, 915 insertions(+), 693 deletions(-) create mode 100644 JellyfinPlayer/Coordinators/ServerListCoordinator.swift create mode 100644 JellyfinPlayer/Views/ServerListView.swift rename Shared/{ServerLocator => ServerDiscovery}/ServerDiscovery.swift (82%) rename Shared/{ServerLocator => ServerDiscovery}/UDPBroadCastConnection.swift (100%) delete mode 100644 Shared/Singleton/ServerEnvironment.swift create mode 100644 Shared/SwiftfinStore/SwiftfinStoreDefaults.swift create mode 100644 Shared/SwiftfinStore/SwiftfinStoreKeychain.swift create mode 100644 Shared/ViewModels/ServerListViewModel.swift create mode 100644 Shared/ViewModels/UserLoginViewModel.swift diff --git a/JellyfinPlayer tvOS/Components/PublicUserButton.swift b/JellyfinPlayer tvOS/Components/PublicUserButton.swift index ac49c59a..36943861 100644 --- a/JellyfinPlayer tvOS/Components/PublicUserButton.swift +++ b/JellyfinPlayer tvOS/Components/PublicUserButton.swift @@ -19,7 +19,7 @@ struct PublicUserButton: View { var body: some View { VStack { if publicUser.primaryImageTag != nil { - ImageView(src: URL(string: "\(ServerEnvironment.current.server.baseURI ?? "")/Users/\(publicUser.id ?? "")/Images/Primary?width=500&quality=80&tag=\(publicUser.primaryImageTag!)")!) + ImageView(src: URL(string: "\(SessionManager.main.currentLogin.server.uri)/Users/\(publicUser.id ?? "")/Images/Primary?width=500&quality=80&tag=\(publicUser.primaryImageTag!)")!) .frame(width: 250, height: 250) .cornerRadius(125.0) } else { diff --git a/JellyfinPlayer tvOS/ConnectToServerView.swift b/JellyfinPlayer tvOS/ConnectToServerView.swift index f42803ba..5044f6bc 100644 --- a/JellyfinPlayer tvOS/ConnectToServerView.swift +++ b/JellyfinPlayer tvOS/ConnectToServerView.swift @@ -26,7 +26,7 @@ struct ConnectToServerView: View { } else { HStack { Spacer() - ImageView(src: URL(string: "\(ServerEnvironment.current.server.baseURI ?? "")/Users/\(viewModel.selectedPublicUser.id ?? "")/Images/Primary?width=500&quality=80&tag=\(viewModel.selectedPublicUser.primaryImageTag ?? "")")!) + ImageView(src: URL(string: "\(SessionManager.main.currentLogin.server.uri)/Users/\(viewModel.selectedPublicUser.id ?? "")/Images/Primary?width=500&quality=80&tag=\(viewModel.selectedPublicUser.primaryImageTag ?? "")")!) .frame(width: 250, height: 250) .cornerRadius(125.0) Spacer() diff --git a/JellyfinPlayer tvOS/LatestMediaView.swift b/JellyfinPlayer tvOS/LatestMediaView.swift index 582dd035..4034892a 100644 --- a/JellyfinPlayer tvOS/LatestMediaView.swift +++ b/JellyfinPlayer tvOS/LatestMediaView.swift @@ -27,7 +27,7 @@ struct LatestMediaView: View { viewDidLoad = true DispatchQueue.global(qos: .userInitiated).async { - UserLibraryAPI.getLatestMedia(userId: SessionManager.current.user.user_id!, parentId: library_id, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], enableUserData: true, limit: 12) + UserLibraryAPI.getLatestMedia(userId: SessionManager.main.currentLogin.user.id, parentId: library_id, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], enableUserData: true, limit: 12) .sink(receiveCompletion: { completion in print(completion) }, receiveValue: { response in diff --git a/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift b/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift index 875fcd06..dc996638 100644 --- a/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift +++ b/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift @@ -166,12 +166,12 @@ class VideoPlayerViewController: UIViewController, VideoPlayerSettingsDelegate, // Item is being transcoded by request of server if let transcodiungUrl = mediaSource.transcodingUrl { item.videoType = .transcode - streamURL = URL(string: "\(ServerEnvironment.current.server.baseURI!)\(transcodiungUrl)")! + streamURL = URL(string: "\(SessionManager.main.currentLogin.server.uri)\(transcodiungUrl)")! } // Item will be directly played by the client else { item.videoType = .directPlay - streamURL = URL(string: "\(ServerEnvironment.current.server.baseURI!)/Videos/\(manifest.id!)/stream?Static=true&mediaSourceId=\(manifest.id!)&deviceId=\(SessionManager.current.deviceID)&api_key=\(SessionManager.current.accessToken)&Tag=\(mediaSource.eTag!)")! + streamURL = URL(string: "\(SessionManager.main.currentLogin.server.uri)/Videos/\(manifest.id!)/stream?Static=true&mediaSourceId=\(manifest.id!)&deviceId=\(SessionManager.current.deviceID)&api_key=\(SessionManager.current.accessToken)&Tag=\(mediaSource.eTag!)")! } item.videoUrl = streamURL @@ -186,7 +186,7 @@ class VideoPlayerViewController: UIViewController, VideoPlayerSettingsDelegate, var deliveryUrl: URL? if stream.deliveryMethod == .external { - deliveryUrl = URL(string: "\(ServerEnvironment.current.server.baseURI!)\(stream.deliveryUrl!)")! + deliveryUrl = URL(string: "\(SessionManager.main.currentLogin.server.uri)\(stream.deliveryUrl!)")! } let subtitle = Subtitle(name: stream.displayTitle ?? "Unknown", id: Int32(stream.index!), url: deliveryUrl, delivery: stream.deliveryMethod!, codec: stream.codec ?? "webvtt", languageCode: stream.language ?? "") diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 840fe36a..e4b17dd3 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -71,7 +71,6 @@ 535870AD2669D8DD00D05A09 /* Typings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535870AC2669D8DD00D05A09 /* Typings.swift */; }; 535BAE9F2649E569005FA86D /* ItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535BAE9E2649E569005FA86D /* ItemView.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 */; }; 53649AAF269CFAF600A2D8B7 /* Puppy in Frameworks */ = {isa = PBXBuildFile; productRef = 53649AAE269CFAF600A2D8B7 /* Puppy */; }; 53649AB1269CFB1900A2D8B7 /* LogManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53649AB0269CFB1900A2D8B7 /* LogManager.swift */; }; @@ -177,8 +176,6 @@ 6220D0B426D5ED8000B8E046 /* LibraryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B326D5ED8000B8E046 /* LibraryCoordinator.swift */; }; 6220D0B726D5EE1100B8E046 /* SearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */; }; 6220D0BA26D6092100B8E046 /* FilterCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B926D6092100B8E046 /* FilterCoordinator.swift */; }; - 6220D0BD26D60D6600B8E046 /* ItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0BC26D60D6600B8E046 /* ItemViewModel.swift */; }; - 6220D0BE26D60D6600B8E046 /* ItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0BC26D60D6600B8E046 /* ItemViewModel.swift */; }; 6220D0C026D61C5000B8E046 /* ItemCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */; }; 6220D0C626D62D8700B8E046 /* VideoPlayerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */; }; 6220D0C726D62D8700B8E046 /* VideoPlayerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */; }; @@ -217,8 +214,6 @@ 62C29EA326D1030F00C1D2E7 /* ConnectToServerCoodinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */; }; 62C29EA626D1036A00C1D2E7 /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */; }; 62C29EA826D103D500C1D2E7 /* LibraryListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */; }; - 62CB3F462685BAF7003D0A6F /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = 62CB3F452685BAF7003D0A6F /* Defaults */; }; - 62CB3F482685BB3B003D0A6F /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = 62CB3F472685BB3B003D0A6F /* Defaults */; }; 62CB3F4B2685BB77003D0A6F /* DefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */; }; 62CB3F4C2685BB77003D0A6F /* DefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */; }; 62D8535B26FC631300FDFC59 /* MainCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29E9E26D1016600C1D2E7 /* MainCoordinator.swift */; }; @@ -240,11 +235,8 @@ 62E632F0267D43320063E547 /* LibraryFilterViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632EE267D43320063E547 /* LibraryFilterViewModel.swift */; }; 62E632F3267D54030063E547 /* ItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632F2267D54030063E547 /* ItemViewModel.swift */; }; 62E632F4267D54030063E547 /* ItemViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632F2267D54030063E547 /* ItemViewModel.swift */; }; - 62EC352C26766675000E9F2D /* ServerEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62EC352B26766675000E9F2D /* ServerEnvironment.swift */; }; - 62EC352D26766675000E9F2D /* ServerEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62EC352B26766675000E9F2D /* ServerEnvironment.swift */; }; 62EC352F267666A5000E9F2D /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62EC352E267666A5000E9F2D /* SessionManager.swift */; }; 62EC3530267666A5000E9F2D /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62EC352E267666A5000E9F2D /* SessionManager.swift */; }; - 62EC353126766848000E9F2D /* ServerEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62EC352B26766675000E9F2D /* ServerEnvironment.swift */; }; 62EC353226766849000E9F2D /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62EC352E267666A5000E9F2D /* SessionManager.swift */; }; 62EC353426766B03000E9F2D /* DeviceRotationViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */; }; 62ECA01826FA685A00E8EBB7 /* DeepLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62ECA01726FA685A00E8EBB7 /* DeepLink.swift */; }; @@ -267,6 +259,23 @@ E13DD3CB27164BA8009D4DAF /* UIDeviceExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */; }; E13DD3CD27164CA7009D4DAF /* CoreStore in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3CC27164CA7009D4DAF /* CoreStore */; }; E13DD3CF27164E1F009D4DAF /* CoreStore in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3CE27164E1F009D4DAF /* CoreStore */; }; + E13DD3D327168E65009D4DAF /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3D227168E65009D4DAF /* Defaults */; }; + E13DD3D5271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */; }; + E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */; }; + E13DD3D7271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */; }; + E13DD3D927169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */; }; + E13DD3DA27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */; }; + E13DD3DB27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */; }; + E13DD3DD27175CE3009D4DAF /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3DC27175CE3009D4DAF /* Defaults */; }; + E13DD3DF27175CEA009D4DAF /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3DE27175CEA009D4DAF /* Defaults */; }; + E13DD3E127176BD3009D4DAF /* ServerListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */; }; + E13DD3E227176BD3009D4DAF /* ServerListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */; }; + E13DD3E527177D15009D4DAF /* ServerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E427177D15009D4DAF /* ServerListView.swift */; }; + E13DD3E627177D15009D4DAF /* ServerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E427177D15009D4DAF /* ServerListView.swift */; }; + E13DD3E927177ED6009D4DAF /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; + E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; + E13DD3EC27178A54009D4DAF /* UserLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */; }; + E13DD3ED27178A54009D4DAF /* UserLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */; }; E14F7D0726DB36EF007C3AE6 /* ItemPortraitMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */; }; E14F7D0926DB36F7007C3AE6 /* ItemLandscapeMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */; }; E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */; }; @@ -449,7 +458,6 @@ 6220D0B326D5ED8000B8E046 /* LibraryCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryCoordinator.swift; sourceTree = ""; }; 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchCoordinator.swift; sourceTree = ""; }; 6220D0B926D6092100B8E046 /* FilterCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FilterCoordinator.swift; sourceTree = ""; }; - 6220D0BC26D60D6600B8E046 /* ItemViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemViewModel.swift; sourceTree = ""; }; 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemCoordinator.swift; sourceTree = ""; }; 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayerCoordinator.swift; sourceTree = ""; }; 6220D0CB26D640C400B8E046 /* AppURLHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppURLHandler.swift; sourceTree = ""; }; @@ -488,7 +496,6 @@ 62E632EB267D410B0063E547 /* SeriesItemViewModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SeriesItemViewModel.swift; sourceTree = ""; }; 62E632EE267D43320063E547 /* LibraryFilterViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryFilterViewModel.swift; sourceTree = ""; }; 62E632F2267D54030063E547 /* ItemViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemViewModel.swift; sourceTree = ""; }; - 62EC352B26766675000E9F2D /* ServerEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerEnvironment.swift; sourceTree = ""; }; 62EC352E267666A5000E9F2D /* SessionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionManager.swift; sourceTree = ""; }; 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceRotationViewModifier.swift; sourceTree = ""; }; 62ECA01726FA685A00E8EBB7 /* DeepLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeepLink.swift; sourceTree = ""; }; @@ -504,6 +511,12 @@ E13DD3BE27163DD7009D4DAF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; E13DD3C127164941009D4DAF /* SwiftfinStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinStore.swift; sourceTree = ""; }; E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIDeviceExtensions.swift; sourceTree = ""; }; + E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinStoreDefaults.swift; sourceTree = ""; }; + E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinStoreKeychain.swift; sourceTree = ""; }; + E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListViewModel.swift; sourceTree = ""; }; + E13DD3E427177D15009D4DAF /* ServerListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListView.swift; sourceTree = ""; }; + E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListCoordinator.swift; sourceTree = ""; }; + E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginViewModel.swift; sourceTree = ""; }; E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPortraitMainView.swift; sourceTree = ""; }; E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemLandscapeMainView.swift; sourceTree = ""; }; E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerDetailView.swift; sourceTree = ""; }; @@ -536,7 +549,7 @@ 53A431BF266B0FFE0016769F /* JellyfinAPI in Frameworks */, 535870912669D7A800D05A09 /* Introspect in Frameworks */, 6261A0E026A0AB710072EF1C /* CombineExt in Frameworks */, - 62CB3F482685BB3B003D0A6F /* Defaults in Frameworks */, + E13DD3DF27175CEA009D4DAF /* Defaults in Frameworks */, 53272535268BF9710035FBF1 /* SwiftUIFocusGuide in Frameworks */, 5358708D2669D7A800D05A09 /* KeychainSwift in Frameworks */, 536D3D84267BEA550004248C /* ParallaxView in Frameworks */, @@ -551,9 +564,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + E13DD3D327168E65009D4DAF /* Defaults in Frameworks */, 53649AAD269CFAEA00A2D8B7 /* Puppy in Frameworks */, 62C29E9C26D0FE4200C1D2E7 /* Stinsen in Frameworks */, - 62CB3F462685BAF7003D0A6F /* Defaults in Frameworks */, 5338F757263B7E2E0014BF09 /* KeychainSwift in Frameworks */, 53EC6E25267EB10F006DD26A /* SwiftyJSON in Frameworks */, 53EC6E21267E80B1006DD26A /* Pods_JellyfinPlayer_iOS.framework in Frameworks */, @@ -570,10 +583,10 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 53628C6D26B5AA0D008A64A0 /* Defaults in Frameworks */, 628B95332670CAEA0091AF3B /* NukeUI in Frameworks */, 628B95242670CABD0091AF3B /* SwiftUI.framework in Frameworks */, 531ABF6C2671F5CC00C0FE20 /* WidgetKit.framework in Frameworks */, + E13DD3DD27175CE3009D4DAF /* Defaults in Frameworks */, 53649AB5269D423A00A2D8B7 /* Puppy in Frameworks */, 536D3D7D267BD5F90004248C /* ActivityIndicator in Frameworks */, 628B953A2670CE250091AF3B /* KeychainSwift in Frameworks */, @@ -585,13 +598,13 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 091B5A852683142E00D78B61 /* ServerLocator */ = { + 091B5A852683142E00D78B61 /* ServerDiscovery */ = { isa = PBXGroup; children = ( 091B5A872683142E00D78B61 /* ServerDiscovery.swift */, 091B5A882683142E00D78B61 /* UDPBroadCastConnection.swift */, ); - path = ServerLocator; + path = ServerDiscovery; sourceTree = ""; }; 5310694F2684E7EE00CFFDBA /* VideoPlayer */ = { @@ -612,9 +625,9 @@ isa = PBXGroup; children = ( 625CB5762678C34300530A6E /* ConnectToServerViewModel.swift */, - 62E632F2267D54030063E547 /* ItemViewModel.swift */, 62E632E5267D3F5B0063E547 /* EpisodeItemViewModel.swift */, 625CB5722678C32A00530A6E /* HomeViewModel.swift */, + 62E632F2267D54030063E547 /* ItemViewModel.swift */, 62E632D9267D2BC40063E547 /* LatestMediaViewModel.swift */, 62E632EE267D43320063E547 /* LibraryFilterViewModel.swift */, 625CB5742678C33500530A6E /* LibraryListViewModel.swift */, @@ -625,11 +638,12 @@ 62E632E8267D3FF50063E547 /* SeasonItemViewModel.swift */, 62E632EB267D410B0063E547 /* SeriesItemViewModel.swift */, E173DA5326D050F500CC4EB7 /* ServerDetailViewModel.swift */, + E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */, 5321753A2671BCFC005491E6 /* SettingsViewModel.swift */, 625CB5692678B71200530A6E /* SplashViewModel.swift */, + E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */, 09389CC626819B4500AE350E /* VideoPlayerModel.swift */, 625CB57B2678CE1000530A6E /* ViewModel.swift */, - 6220D0BC26D60D6600B8E046 /* ItemViewModel.swift */, ); path = ViewModels; sourceTree = ""; @@ -730,7 +744,7 @@ 621338912660106C00A81A2A /* Extensions */, 535870AB2669D8D300D05A09 /* Objects */, AE8C3157265D6F5E008AA076 /* Resources */, - 091B5A852683142E00D78B61 /* ServerLocator */, + 091B5A852683142E00D78B61 /* ServerDiscovery */, 62EC352A26766657000E9F2D /* Singleton */, 532175392671BCED005491E6 /* ViewModels */, E1AD105326D96F5A003E4A08 /* Views */, @@ -1014,6 +1028,7 @@ 62C29E9E26D1016600C1D2E7 /* MainCoordinator.swift */, 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */, 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */, + E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */, 6220D0B026D5EC9900B8E046 /* SettingsCoordinator.swift */, 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */, ); @@ -1025,7 +1040,6 @@ children = ( 536D3D73267BA8170004248C /* BackgroundManager.swift */, 53649AB0269CFB1900A2D8B7 /* LogManager.swift */, - 62EC352B26766675000E9F2D /* ServerEnvironment.swift */, 62EC352E267666A5000E9F2D /* SessionManager.swift */, ); path = Singleton; @@ -1074,6 +1088,8 @@ isa = PBXGroup; children = ( E13DD3C127164941009D4DAF /* SwiftfinStore.swift */, + E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */, + E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */, ); path = SwiftfinStore; sourceTree = ""; @@ -1093,6 +1109,7 @@ 53892771263C8C6F0035E14B /* LoadingView.swift */, 5389276F263C25230035E14B /* NextUpView.swift */, E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */, + E13DD3E427177D15009D4DAF /* ServerListView.swift */, 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, 625CB5672678B6FB00530A6E /* SplashView.swift */, 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, @@ -1188,12 +1205,12 @@ 53A431BE266B0FFE0016769F /* JellyfinAPI */, 53ABFDEC26799D7700886593 /* ActivityIndicator */, 536D3D83267BEA550004248C /* ParallaxView */, - 62CB3F472685BB3B003D0A6F /* Defaults */, 53272534268BF9710035FBF1 /* SwiftUIFocusGuide */, 53649AAE269CFAF600A2D8B7 /* Puppy */, 6261A0DF26A0AB710072EF1C /* CombineExt */, 6220D0C826D63F3700B8E046 /* Stinsen */, E13DD3CC27164CA7009D4DAF /* CoreStore */, + E13DD3DE27175CEA009D4DAF /* Defaults */, ); productName = "JellyfinPlayer tvOS"; productReference = 535870602669D21600D05A09 /* JellyfinPlayer tvOS.app */; @@ -1225,11 +1242,11 @@ 53A431BC266B0FF20016769F /* JellyfinAPI */, 625CB5792678C4A400530A6E /* ActivityIndicator */, 53EC6E24267EB10F006DD26A /* SwiftyJSON */, - 62CB3F452685BAF7003D0A6F /* Defaults */, 53649AAC269CFAEA00A2D8B7 /* Puppy */, 6260FFF826A09754003FA968 /* CombineExt */, 62C29E9B26D0FE4200C1D2E7 /* Stinsen */, E13DD3C52716499E009D4DAF /* CoreStore */, + E13DD3D227168E65009D4DAF /* Defaults */, ); productName = JellyfinPlayer; productReference = 5377CBF1263B596A003A4E83 /* JellyfinPlayer iOS.app */; @@ -1254,8 +1271,8 @@ 628B95392670CE250091AF3B /* KeychainSwift */, 536D3D7C267BD5F90004248C /* ActivityIndicator */, 53649AB4269D423A00A2D8B7 /* Puppy */, - 53628C6C26B5AA0D008A64A0 /* Defaults */, E13DD3CE27164E1F009D4DAF /* CoreStore */, + E13DD3DC27175CE3009D4DAF /* Defaults */, ); productName = WidgetExtensionExtension; productReference = 628B95202670CABD0091AF3B /* WidgetExtension.appex */; @@ -1315,12 +1332,12 @@ 625CB5782678C4A400530A6E /* XCRemoteSwiftPackageReference "ActivityIndicator" */, 536D3D82267BEA550004248C /* XCRemoteSwiftPackageReference "ParallaxView" */, 53EC6E23267EB10F006DD26A /* XCRemoteSwiftPackageReference "SwiftyJSON" */, - 62CB3F442685BAF7003D0A6F /* XCRemoteSwiftPackageReference "Defaults" */, 53272533268BF9710035FBF1 /* XCRemoteSwiftPackageReference "SwiftUIFocusGuide" */, 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */, 6260FFF726A09754003FA968 /* XCRemoteSwiftPackageReference "CombineExt" */, 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */, E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */, + E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */, ); productRefGroup = 5377CBF2263B596A003A4E83 /* Products */; projectDirPath = ""; @@ -1524,12 +1541,13 @@ C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */, 53ABFDE9267974EF00886593 /* HomeViewModel.swift in Sources */, 53116A17268B919A003024C9 /* SeriesItemView.swift in Sources */, - 62EC352D26766675000E9F2D /* ServerEnvironment.swift in Sources */, + E13DD3DA27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */, 531690E7267ABD79005D8AB9 /* HomeView.swift in Sources */, 53ABFDDE267974E300886593 /* SplashView.swift in Sources */, 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */, 62E632DE267D2E170063E547 /* LatestMediaViewModel.swift in Sources */, E1FCD09726C47118007C8DCF /* ErrorMessage.swift in Sources */, + E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */, 53116A19268B947A003024C9 /* PlainLinkButton.swift in Sources */, 536D3D88267C17350004248C /* PublicUserButton.swift in Sources */, 62E632EA267D3FF50063E547 /* SeasonItemViewModel.swift in Sources */, @@ -1539,8 +1557,10 @@ 091B5A8E268315D400D78B61 /* UDPBroadCastConnection.swift in Sources */, E1FCD08926C35A0D007C8DCF /* NetworkError.swift in Sources */, 531690ED267ABF46005D8AB9 /* ContinueWatchingView.swift in Sources */, + E13DD3ED27178A54009D4DAF /* UserLoginViewModel.swift in Sources */, 62EC3530267666A5000E9F2D /* SessionManager.swift in Sources */, E1AD104B26D94822003E4A08 /* DetailItem.swift in Sources */, + E13DD3E227176BD3009D4DAF /* ServerListViewModel.swift in Sources */, 53272539268C20100035FBF1 /* EpisodeItemView.swift in Sources */, 531690F7267ACC00005D8AB9 /* LandscapeItemElement.swift in Sources */, 62E632E1267D30CA0063E547 /* LibraryViewModel.swift in Sources */, @@ -1574,6 +1594,7 @@ 62E632E4267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, 5358706C2669D21700D05A09 /* PersistenceController.swift in Sources */, 53649AB2269D019100A2D8B7 /* LogManager.swift in Sources */, + E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, 535870AA2669D8AE00D05A09 /* BlurHashDecode.swift in Sources */, 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */, C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, @@ -1592,10 +1613,10 @@ C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */, 536D3D74267BA8170004248C /* BackgroundManager.swift in Sources */, 535870632669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift in Sources */, + E13DD3E627177D15009D4DAF /* ServerListView.swift in Sources */, 53ABFDE4267974EF00886593 /* LibraryListViewModel.swift in Sources */, 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, - 6220D0BE26D60D6600B8E046 /* ItemViewModel.swift in Sources */, 531690FA267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift in Sources */, E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */, E1AD105726D981CE003E4A08 /* PortraitHStackView.swift in Sources */, @@ -1620,7 +1641,6 @@ 625CB5732678C32A00530A6E /* HomeViewModel.swift in Sources */, 62C29EA826D103D500C1D2E7 /* LibraryListCoordinator.swift in Sources */, 62E632DC267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */, - 6220D0BD26D60D6600B8E046 /* ItemViewModel.swift in Sources */, 62C29E9F26D1016600C1D2E7 /* MainCoordinator.swift in Sources */, 5389276E263C25100035E14B /* ContinueWatchingView.swift in Sources */, 53F866442687A45F00DCD1D7 /* PortraitItemView.swift in Sources */, @@ -1629,10 +1649,12 @@ 535BAE9F2649E569005FA86D /* ItemView.swift in Sources */, 6225FCCB2663841E00E067F6 /* ParallaxHeader.swift in Sources */, 6220D0AD26D5EABB00B8E046 /* ViewExtensions.swift in Sources */, + E13DD3EC27178A54009D4DAF /* UserLoginViewModel.swift in Sources */, 625CB5772678C34300530A6E /* ConnectToServerViewModel.swift in Sources */, 536D3D78267BD5C30004248C /* ViewModel.swift in Sources */, 62CB3F4B2685BB77003D0A6F /* DefaultsExtension.swift in Sources */, E1FCD08826C35A0D007C8DCF /* NetworkError.swift in Sources */, + E13DD3E527177D15009D4DAF /* ServerListView.swift in Sources */, E18845F826DEA9C900B0C5B7 /* ItemViewBody.swift in Sources */, E173DA5426D050F500CC4EB7 /* ServerDetailViewModel.swift in Sources */, E188460426DEF04800B0C5B7 /* EpisodeCardVStackView.swift in Sources */, @@ -1662,6 +1684,7 @@ 6267B3D626710B8900A7371D /* CollectionExtensions.swift in Sources */, E1F0204E26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */, 53649AB1269CFB1900A2D8B7 /* LogManager.swift in Sources */, + E13DD3E127176BD3009D4DAF /* ServerListViewModel.swift in Sources */, 62E632E9267D3FF50063E547 /* SeasonItemViewModel.swift in Sources */, 625CB56A2678B71200530A6E /* SplashViewModel.swift in Sources */, 62E632F3267D54030063E547 /* ItemViewModel.swift in Sources */, @@ -1676,6 +1699,7 @@ 6220D0B126D5EC9900B8E046 /* SettingsCoordinator.swift in Sources */, 62C29EA626D1036A00C1D2E7 /* HomeCoordinator.swift in Sources */, 531AC8BF26750DE20091C7EB /* ImageView.swift in Sources */, + E13DD3E927177ED6009D4DAF /* ServerListCoordinator.swift in Sources */, E13DD3BD27163C63009D4DAF /* EmailHelper.swift in Sources */, E13DD3C227164941009D4DAF /* SwiftfinStore.swift in Sources */, E1AD104A26D94822003E4A08 /* DetailItem.swift in Sources */, @@ -1686,13 +1710,14 @@ 62E632E3267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, 091B5A8A2683142E00D78B61 /* ServerDiscovery.swift in Sources */, 62E632EF267D43320063E547 /* LibraryFilterViewModel.swift in Sources */, + E13DD3D927169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */, E13DD3C827164B1E009D4DAF /* UIDeviceExtensions.swift in Sources */, E1AD104D26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */, E13DD3BF27163DD7009D4DAF /* AppDelegate.swift in Sources */, 535870AD2669D8DD00D05A09 /* Typings.swift in Sources */, E1AD105F26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift in Sources */, + E13DD3D5271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, 6220D0BA26D6092100B8E046 /* FilterCoordinator.swift in Sources */, - 62EC352C26766675000E9F2D /* ServerEnvironment.swift in Sources */, 6267B3DA2671138200A7371D /* ImageExtensions.swift in Sources */, 62EC353426766B03000E9F2D /* DeviceRotationViewModifier.swift in Sources */, 5389277C263CC3DB0035E14B /* BlurHashDecode.swift in Sources */, @@ -1714,7 +1739,6 @@ files = ( 53649AB3269D3F5B00A2D8B7 /* LogManager.swift in Sources */, E13DD3CB27164BA8009D4DAF /* UIDeviceExtensions.swift in Sources */, - 62EC353126766848000E9F2D /* ServerEnvironment.swift in Sources */, 6267B3D726710B9700A7371D /* CollectionExtensions.swift in Sources */, 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */, 6267B3DB2671139400A7371D /* ImageExtensions.swift in Sources */, @@ -1725,9 +1749,11 @@ 628B95272670CABD0091AF3B /* NextUpWidget.swift in Sources */, 6220D0AF26D5EABE00B8E046 /* ViewExtensions.swift in Sources */, 628B95382670CDAB0091AF3B /* Model.xcdatamodeld in Sources */, + E13DD3D7271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, E1FCD09926C4F358007C8DCF /* NetworkError.swift in Sources */, E131691926C583BC0074BFEE /* LogConstructor.swift in Sources */, E13DD3CA27164B80009D4DAF /* SwiftfinStore.swift in Sources */, + E13DD3DB27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */, 62EC353226766849000E9F2D /* SessionManager.swift in Sources */, 536D3D79267BD5D00004248C /* ViewModel.swift in Sources */, ); @@ -2312,14 +2338,6 @@ minimumVersion = 2.0.2; }; }; - 62CB3F442685BAF7003D0A6F /* XCRemoteSwiftPackageReference "Defaults" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/acvigue/Defaults"; - requirement = { - branch = main; - kind = branch; - }; - }; E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/JohnEstropia/CoreStore.git"; @@ -2328,6 +2346,14 @@ version = 8.1.0; }; }; + E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/sindresorhus/Defaults"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 6.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -2361,11 +2387,6 @@ package = 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */; productName = NukeUI; }; - 53628C6C26B5AA0D008A64A0 /* Defaults */ = { - isa = XCSwiftPackageProductDependency; - package = 62CB3F442685BAF7003D0A6F /* XCRemoteSwiftPackageReference "Defaults" */; - productName = Defaults; - }; 53649AAC269CFAEA00A2D8B7 /* Puppy */ = { isa = XCSwiftPackageProductDependency; package = 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */; @@ -2456,16 +2477,6 @@ package = 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */; productName = Stinsen; }; - 62CB3F452685BAF7003D0A6F /* Defaults */ = { - isa = XCSwiftPackageProductDependency; - package = 62CB3F442685BAF7003D0A6F /* XCRemoteSwiftPackageReference "Defaults" */; - productName = Defaults; - }; - 62CB3F472685BB3B003D0A6F /* Defaults */ = { - isa = XCSwiftPackageProductDependency; - package = 62CB3F442685BAF7003D0A6F /* XCRemoteSwiftPackageReference "Defaults" */; - productName = Defaults; - }; E13DD3C52716499E009D4DAF /* CoreStore */ = { isa = XCSwiftPackageProductDependency; package = E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */; @@ -2481,6 +2492,21 @@ package = E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */; productName = CoreStore; }; + E13DD3D227168E65009D4DAF /* Defaults */ = { + isa = XCSwiftPackageProductDependency; + package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; + productName = Defaults; + }; + E13DD3DC27175CE3009D4DAF /* Defaults */ = { + isa = XCSwiftPackageProductDependency; + package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; + productName = Defaults; + }; + E13DD3DE27175CEA009D4DAF /* Defaults */ = { + isa = XCSwiftPackageProductDependency; + package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; + productName = Defaults; + }; /* End XCSwiftPackageProductDependency section */ /* Begin XCVersionGroup section */ diff --git a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved index 7c5ca76a..d524c9b5 100644 --- a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -48,11 +48,11 @@ }, { "package": "Defaults", - "repositoryURL": "https://github.com/acvigue/Defaults", + "repositoryURL": "https://github.com/sindresorhus/Defaults", "state": { - "branch": "main", - "revision": "a4153b523ab3df9f5e3f70e9cfe9c54bed98c7e3", - "version": null + "branch": null, + "revision": "8a6e4a96fd38504a05903d136c85634b65fd7c4d", + "version": "6.0.0" } }, { diff --git a/JellyfinPlayer/App/AppDelegate.swift b/JellyfinPlayer/App/AppDelegate.swift index e887b225..c696bf56 100644 --- a/JellyfinPlayer/App/AppDelegate.swift +++ b/JellyfinPlayer/App/AppDelegate.swift @@ -11,6 +11,14 @@ import UIKit class AppDelegate: NSObject, UIApplicationDelegate { static var orientationLock = UIInterfaceOrientationMask.all + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool { + + // Lazily initialize datastack + let _ = SwiftfinStore.dataStack + + return true + } func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { AppDelegate.orientationLock diff --git a/JellyfinPlayer/App/JellyfinPlayerApp.swift b/JellyfinPlayer/App/JellyfinPlayerApp.swift index 624dee3e..2e05a2b3 100644 --- a/JellyfinPlayer/App/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/App/JellyfinPlayerApp.swift @@ -146,8 +146,6 @@ struct JellyfinPlayerApp: App { @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate @Default(.appAppearance) var appAppearance - let persistenceController = PersistenceController.shared - var body: some Scene { WindowGroup { MainCoordinator().view() diff --git a/JellyfinPlayer/Coordinators/MainCoordinator.swift b/JellyfinPlayer/Coordinators/MainCoordinator.swift index f6381804..7b723617 100644 --- a/JellyfinPlayer/Coordinators/MainCoordinator.swift +++ b/JellyfinPlayer/Coordinators/MainCoordinator.swift @@ -20,13 +20,13 @@ import SwiftUI var stack: NavigationStack @Root var mainTab = makeMainTab - @Root var connectToServer = makeConnectToServer + @Root var serverList = makeServerList init() { - if ServerEnvironment.current.server != nil, SessionManager.current.user != nil { + if SessionManager.main.currentLogin != nil { self.stack = NavigationStack(initial: \MainCoordinator.mainTab) } else { - self.stack = NavigationStack(initial: \MainCoordinator.connectToServer) + self.stack = NavigationStack(initial: \MainCoordinator.serverList) } ImageCache.shared.costLimit = 125 * 1024 * 1024 // 125MB memory @@ -50,7 +50,7 @@ import SwiftUI @objc func didLogOut() { LogManager.shared.log.info("Received `didSignOut` from NSNotificationCenter.") - root(\.connectToServer) + root(\.serverList) } @objc func processDeepLink(_ notification: Notification) { @@ -70,8 +70,8 @@ import SwiftUI MainTabCoordinator() } - func makeConnectToServer() -> NavigationViewCoordinator { - NavigationViewCoordinator(ConnectToServerCoodinator()) + func makeServerList() -> NavigationViewCoordinator { + NavigationViewCoordinator(ServerListCoordinator()) } } diff --git a/JellyfinPlayer/Coordinators/MainTabCoordinator.swift b/JellyfinPlayer/Coordinators/MainTabCoordinator.swift index d5f430ab..52bcbca7 100644 --- a/JellyfinPlayer/Coordinators/MainTabCoordinator.swift +++ b/JellyfinPlayer/Coordinators/MainTabCoordinator.swift @@ -9,7 +9,6 @@ import Foundation import SwiftUI - import Stinsen final class MainTabCoordinator: TabCoordinatable { diff --git a/JellyfinPlayer/Coordinators/ServerListCoordinator.swift b/JellyfinPlayer/Coordinators/ServerListCoordinator.swift new file mode 100644 index 00000000..0dbdb704 --- /dev/null +++ b/JellyfinPlayer/Coordinators/ServerListCoordinator.swift @@ -0,0 +1,30 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import Stinsen +import SwiftUI + +final class ServerListCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \ServerListCoordinator.start) + + @Root var start = makeStart + @Route(.push) var connectToServer = makeConnectToServer +// @Route(.push) var loginUser = makeLoginuser + + func makeConnectToServer() -> ConnectToServerCoodinator { + ConnectToServerCoodinator() + } + +// func makeLoginUser -> + + @ViewBuilder func makeStart() -> some View { + ServerListView(viewModel: ServerListViewModel()) + } +} diff --git a/JellyfinPlayer/VideoPlayer.swift b/JellyfinPlayer/VideoPlayer.swift index cf29da12..35c5f0c8 100644 --- a/JellyfinPlayer/VideoPlayer.swift +++ b/JellyfinPlayer/VideoPlayer.swift @@ -518,13 +518,13 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe let builder = DeviceProfileBuilder() builder.setMaxBitrate(bitrate: maxBitrate) let profile = builder.buildProfile() - let playbackInfo = PlaybackInfoDto(userId: SessionManager.current.user.user_id!, maxStreamingBitrate: Int(maxBitrate), + let playbackInfo = PlaybackInfoDto(userId: SessionManager.main.currentLogin.user.id, maxStreamingBitrate: Int(maxBitrate), startTimeTicks: manifest.userData?.playbackPositionTicks ?? 0, deviceProfile: profile, autoOpenLiveStream: true) DispatchQueue.global(qos: .userInitiated).async { [self] in delegate?.showLoadingView(self) - MediaInfoAPI.getPostedPlaybackInfo(itemId: manifest.id!, userId: SessionManager.current.user.user_id!, + MediaInfoAPI.getPostedPlaybackInfo(itemId: manifest.id!, userId: SessionManager.main.currentLogin.user.id, maxStreamingBitrate: Int(maxBitrate), startTimeTicks: manifest.userData?.playbackPositionTicks ?? 0, autoOpenLiveStream: true, playbackInfoDto: playbackInfo) @@ -537,7 +537,8 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe switch err { case .error(401, _, _, _): self.delegate?.exitPlayer(self) - SessionManager.current.logout() + // TODO: todo +// SessionManager.current.logout() main?.root(\.connectToServer) case .error: self.delegate?.exitPlayer(self) @@ -550,7 +551,7 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe let mediaSource = response.mediaSources!.first.self! if mediaSource.transcodingUrl != nil { // Item is being transcoded by request of server - let streamURL = URL(string: "\(ServerEnvironment.current.server.baseURI!)\(mediaSource.transcodingUrl!)") + let streamURL = URL(string: "\(SessionManager.main.currentLogin.server.uri)\(mediaSource.transcodingUrl!)") let item = PlaybackItem() item.videoType = .transcode item.videoUrl = streamURL! @@ -564,7 +565,7 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe if stream.type == .subtitle { var deliveryUrl: URL? if stream.deliveryMethod == .external { - deliveryUrl = URL(string: "\(ServerEnvironment.current.server.baseURI!)\(stream.deliveryUrl ?? "")")! + deliveryUrl = URL(string: "\(SessionManager.main.currentLogin.server.uri)\(stream.deliveryUrl ?? "")")! } else { deliveryUrl = nil } @@ -596,9 +597,10 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe self.sendPlayReport() playbackItem = item } else { + // TODO: todo // Item will be directly played by the client. - let streamURL = - URL(string: "\(ServerEnvironment.current.server.baseURI!)/Videos/\(manifest.id!)/stream?Static=true&mediaSourceId=\(manifest.id!)&deviceId=\(SessionManager.current.deviceID)&api_key=\(SessionManager.current.accessToken)&Tag=\(mediaSource.eTag ?? "")")! + let streamURL = URL(string: "\(SessionManager.main.currentLogin.server.uri)/Videos/\(manifest.id!)/stream?Static=true&mediaSourceId=\(manifest.id!)&Tag=\(mediaSource.eTag ?? "")")! +// URL(string: "\(SessionManager.main.currentLogin.server.uri)/Videos/\(manifest.id!)/stream?Static=true&mediaSourceId=\(manifest.id!)&deviceId=\(SessionManager.current.deviceID)&api_key=\(SessionManager.current.accessToken)&Tag=\(mediaSource.eTag ?? "")")! let item = PlaybackItem() item.videoUrl = streamURL @@ -613,7 +615,7 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe if stream.type == .subtitle { var deliveryUrl: URL? if stream.deliveryMethod == .external { - deliveryUrl = URL(string: "\(ServerEnvironment.current.server.baseURI!)\(stream.deliveryUrl!)")! + deliveryUrl = URL(string: "\(SessionManager.main.currentLogin.server.uri)\(stream.deliveryUrl!)")! } else { deliveryUrl = nil } @@ -771,7 +773,7 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe } func getNextEpisode() { - TvShowsAPI.getEpisodes(seriesId: manifest.seriesId!, userId: SessionManager.current.user.user_id!, startItemId: manifest.id, + TvShowsAPI.getEpisodes(seriesId: manifest.seriesId!, userId: SessionManager.main.currentLogin.user.id, startItemId: manifest.id, limit: 2) .sink(receiveCompletion: { completion in print(completion) @@ -873,11 +875,11 @@ extension PlayerViewController: GCKGenericChannelDelegate { let payload: [String: Any] = [ "options": options, "command": command, - "userId": SessionManager.current.user.user_id!, - "deviceId": SessionManager.current.deviceID, - "accessToken": SessionManager.current.accessToken, - "serverAddress": ServerEnvironment.current.server.baseURI!, - "serverId": ServerEnvironment.current.server.server_id!, + "userId": SessionManager.main.currentLogin.user.id, +// "deviceId": SessionManager.main.currentLogin.de.deviceID, + "accessToken": SessionManager.main.currentLogin.user.accessToken?.value ?? "", + "serverAddress": SessionManager.main.currentLogin.server.uri, + "serverId": SessionManager.main.currentLogin.server.id, "serverVersion": "10.8.0", "receiverName": castSessionManager.currentCastSession!.device.friendlyName!, "subtitleBurnIn": false, @@ -931,7 +933,7 @@ extension PlayerViewController: GCKSessionManagerListener { let playNowOptions: [String: Any] = [ "items": [[ "Id": manifest.id!, - "ServerId": ServerEnvironment.current.server.server_id!, + "ServerId": SessionManager.main.currentLogin.server.id, "Name": manifest.name!, "Type": manifest.type!, "MediaType": manifest.mediaType!, diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index 15f6fe04..fc923d2c 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -9,176 +9,243 @@ import SwiftUI import Stinsen struct ConnectToServerView: View { + @EnvironmentObject var mainRouter: MainCoordinator.Router @StateObject var viewModel = ConnectToServerViewModel() - @State var username = "" - @State var password = "" @State var uri = "" - + var body: some View { - ZStack { - Form { - if viewModel.isConnectedServer { - if viewModel.publicUsers.isEmpty { - Section(header: Text("Login to \(ServerEnvironment.current.server.name ?? "")")) { - TextField(NSLocalizedString("Username", comment: ""), text: $username) - .disableAutocorrection(true) - .autocapitalization(.none) - SecureField(NSLocalizedString("Password", comment: ""), text: $password) - .disableAutocorrection(true) - .autocapitalization(.none) - Button { - viewModel.login() - } label: { - HStack { - Text("Login") - Spacer() - if viewModel.isLoading { - ProgressView() - } - } - }.disabled(viewModel.isLoading || username.isEmpty) - } - - Section { - Button { - viewModel.isConnectedServer = false - } label: { - HStack { - HStack { - Image(systemName: "chevron.left") - Text("Change Server") - } - Spacer() - } - } - } - } else { - Section(header: Text("Login to \(ServerEnvironment.current.server.name ?? "")")) { - ForEach(viewModel.publicUsers, id: \.id) { publicUser in - HStack { - Button(action: { - if SessionManager.current.doesUserHaveSavedSession(userID: publicUser.id!) { - let user = SessionManager.current.getSavedSession(userID: publicUser.id!) - SessionManager.current.loginWithSavedSession(user: user) - mainRouter.root(\.mainTab) - } else { - username = publicUser.name ?? "" - viewModel.selectedPublicUser = publicUser - viewModel.hidePublicUsers() - if !(publicUser.hasPassword ?? true) { - password = "" - DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { - viewModel.login() - } - } - } - }) { - HStack { - Text(publicUser.name ?? "").font(.subheadline).fontWeight(.semibold) - Spacer() - if publicUser.primaryImageTag != nil { - ImageView(src: URL(string: "\(ServerEnvironment.current.server.baseURI ?? "")/Users/\(publicUser.id ?? "")/Images/Primary?width=60&quality=80&tag=\(publicUser.primaryImageTag!)")!) - .frame(width: 60, height: 60) - .cornerRadius(30.0) - } else { - Image(systemName: "person.fill") - .foregroundColor(Color(red: 1, green: 1, blue: 1).opacity(0.8)) - .font(.system(size: 35)) - .frame(width: 60, height: 60) - .background(Color(red: 98 / 255, green: 121 / 255, blue: 205 / 255)) - .cornerRadius(30.0) - .shadow(radius: 6) - } - } - } - } - } - } - - Section { - Button { - viewModel.publicUsers.removeAll() - username = "" - } label: { - HStack { - Text("Other User").font(.subheadline).fontWeight(.semibold) - Spacer() - Image(systemName: "person.fill.questionmark") - .foregroundColor(Color(red: 1, green: 1, blue: 1).opacity(0.8)) - .font(.system(size: 35)) - .frame(width: 60, height: 60) - .background(Color(red: 98 / 255, green: 121 / 255, blue: 205 / 255)) - .cornerRadius(30.0) - .shadow(radius: 6) - } - } - } - } - } else { - Section(header: Text("Connect Manually")) { - TextField(NSLocalizedString("Server URL", comment: ""), text: $uri) - .disableAutocorrection(true) - .autocapitalization(.none) - .keyboardType(.URL) - Button { - viewModel.connectToServer() - } label: { - HStack { - Text("Connect") - Spacer() - if viewModel.isLoading { - ProgressView() - } - } - } - .disabled(viewModel.isLoading || uri.isEmpty) - } - - Section(header: Text("Discovered Servers")) { - if self.viewModel.searching { + List { + Section { + TextField(NSLocalizedString("Server URL", comment: ""), text: $uri) + .disableAutocorrection(true) + .autocapitalization(.none) + .keyboardType(.URL) + Button { + viewModel.connectToServer(uri: uri) + } label: { + HStack { + Text("Connect") + Spacer() + if viewModel.isLoading { ProgressView() } - ForEach(self.viewModel.servers, id: \.id) { server in - Button(action: { - viewModel.connectToServer(at: server.url) - }, label: { - HStack { - Text(server.name) - .font(.headline) - Text("• \(server.host)") - .font(.subheadline) - .foregroundColor(.secondary) - Spacer() - if viewModel.isLoading { - ProgressView() - } - } - - }) - } } - .onAppear(perform: self.viewModel.discoverServers) + } + .disabled(viewModel.isLoading || uri.isEmpty) + } + + Section(header: Text("Discovered Servers")) { + if viewModel.searching { + ProgressView() + } + ForEach(viewModel.discoveredServers.sorted(by: { $0.name < $1.name }), id: \.id) { discoveredServer in + Button(action: { + viewModel.connectToServer(uri: discoveredServer.url.absoluteString) + }, label: { + HStack { + Text(discoveredServer.name) + .font(.headline) + Text("• \(discoveredServer.host)") + .font(.subheadline) + .foregroundColor(.secondary) + Spacer() + if viewModel.isLoading { + ProgressView() + } + } + + }) } } - } - .onChange(of: uri) { uri in - viewModel.uriSubject.send(uri) - } - .onChange(of: username) { username in - viewModel.usernameSubject.send(username) - } - .onChange(of: password) { password in - viewModel.passwordSubject.send(password) + .onAppear(perform: self.viewModel.discoverServers) + .headerProminence(.increased) } .alert(item: $viewModel.errorMessage) { _ in Alert(title: Text("\(viewModel.errorMessage?.code ?? -1)\n\(viewModel.errorMessage?.title ?? "Error")"), message: Text(viewModel.errorMessage?.displayMessage ?? "Error"), dismissButton: .cancel()) } - .navigationTitle(NSLocalizedString("Connect to Server", comment: "")) - .onAppear { + .navigationTitle("Connect") + .onAppear { AppURLHandler.shared.appURLState = .allowedInLogin } } } + +//struct ConnectToServerView: View { +// @EnvironmentObject var mainRouter: MainCoordinator.Router +// @StateObject var viewModel = ConnectToServerViewModel() +// @State var username = "" +// @State var password = "" +// @State var uri = "" +// +// var body: some View { +// ZStack { +// Form { +// if viewModel.isConnectedServer { +// if viewModel.publicUsers.isEmpty { +// Section(header: Text("Login to \(SessionManager.main.currentLogin.server.name)")) { +// TextField(NSLocalizedString("Username", comment: ""), text: $username) +// .disableAutocorrection(true) +// .autocapitalization(.none) +// SecureField(NSLocalizedString("Password", comment: ""), text: $password) +// .disableAutocorrection(true) +// .autocapitalization(.none) +// Button { +// viewModel.login() +// } label: { +// HStack { +// Text("Login") +// Spacer() +// if viewModel.isLoading { +// ProgressView() +// } +// } +// }.disabled(viewModel.isLoading || username.isEmpty) +// } +// +// Section { +// Button { +// viewModel.isConnectedServer = false +// } label: { +// HStack { +// HStack { +// Image(systemName: "chevron.left") +// Text("Change Server") +// } +// Spacer() +// } +// } +// } +// } else { +// Section(header: Text("Login to \(SessionManager.main.currentLogin.server.name)")) { +// ForEach(viewModel.publicUsers, id: \.id) { publicUser in +// HStack { +// Button(action: { +// // TODO: todo +// print("TODO") +//// if SessionManager.current.doesUserHaveSavedSession(userID: publicUser.id!) { +//// let user = SessionManager.current.getSavedSession(userID: publicUser.id!) +//// SessionManager.current.loginWithSavedSession(user: user) +//// mainRouter.root(\.mainTab) +//// } else { +//// username = publicUser.name ?? "" +//// viewModel.selectedPublicUser = publicUser +//// viewModel.hidePublicUsers() +//// if !(publicUser.hasPassword ?? true) { +//// password = "" +//// DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { +//// viewModel.login() +//// } +//// } +//// } +// }) { +// HStack { +// Text(publicUser.name ?? "").font(.subheadline).fontWeight(.semibold) +// Spacer() +// if publicUser.primaryImageTag != nil { +// ImageView(src: URL(string: "\(SessionManager.main.currentLogin.server.uri)/Users/\(publicUser.id ?? "")/Images/Primary?width=60&quality=80&tag=\(publicUser.primaryImageTag!)")!) +// .frame(width: 60, height: 60) +// .cornerRadius(30.0) +// } else { +// Image(systemName: "person.fill") +// .foregroundColor(Color(red: 1, green: 1, blue: 1).opacity(0.8)) +// .font(.system(size: 35)) +// .frame(width: 60, height: 60) +// .background(Color(red: 98 / 255, green: 121 / 255, blue: 205 / 255)) +// .cornerRadius(30.0) +// .shadow(radius: 6) +// } +// } +// } +// } +// } +// } +// +// Section { +// Button { +// viewModel.publicUsers.removeAll() +// username = "" +// } label: { +// HStack { +// Text("Other User").font(.subheadline).fontWeight(.semibold) +// Spacer() +// Image(systemName: "person.fill.questionmark") +// .foregroundColor(Color(red: 1, green: 1, blue: 1).opacity(0.8)) +// .font(.system(size: 35)) +// .frame(width: 60, height: 60) +// .background(Color(red: 98 / 255, green: 121 / 255, blue: 205 / 255)) +// .cornerRadius(30.0) +// .shadow(radius: 6) +// } +// } +// } +// } +// } else { +// Section(header: Text("Connect Manually")) { +// TextField(NSLocalizedString("Server URL", comment: ""), text: $uri) +// .disableAutocorrection(true) +// .autocapitalization(.none) +// .keyboardType(.URL) +// Button { +// viewModel.connectToServer() +// } label: { +// HStack { +// Text("Connect") +// Spacer() +// if viewModel.isLoading { +// ProgressView() +// } +// } +// } +// .disabled(viewModel.isLoading || uri.isEmpty) +// } +// +// Section(header: Text("Discovered Servers")) { +// if self.viewModel.searching { +// ProgressView() +// } +// ForEach(self.viewModel.servers, id: \.id) { server in +// Button(action: { +// viewModel.connectToServer(at: server.url) +// }, label: { +// HStack { +// Text(server.name) +// .font(.headline) +// Text("• \(server.host)") +// .font(.subheadline) +// .foregroundColor(.secondary) +// Spacer() +// if viewModel.isLoading { +// ProgressView() +// } +// } +// +// }) +// } +// } +// .onAppear(perform: self.viewModel.discoverServers) +// } +// } +// } +// .onChange(of: uri) { uri in +// viewModel.uriSubject.send(uri) +// } +// .onChange(of: username) { username in +// viewModel.usernameSubject.send(username) +// } +// .onChange(of: password) { password in +// viewModel.passwordSubject.send(password) +// } +// .alert(item: $viewModel.errorMessage) { _ in +// Alert(title: Text("\(viewModel.errorMessage?.code ?? -1)\n\(viewModel.errorMessage?.title ?? "Error")"), +// message: Text(viewModel.errorMessage?.displayMessage ?? "Error"), +// dismissButton: .cancel()) +// } +// .navigationTitle(NSLocalizedString("Connect to Server", comment: "")) +// .onAppear { +// AppURLHandler.shared.appURLState = .allowedInLogin +// } +// } +//} diff --git a/JellyfinPlayer/Views/ServerDetailView.swift b/JellyfinPlayer/Views/ServerDetailView.swift index 8c4b9b56..98901a05 100644 --- a/JellyfinPlayer/Views/ServerDetailView.swift +++ b/JellyfinPlayer/Views/ServerDetailView.swift @@ -19,28 +19,28 @@ struct ServerDetailView: View { HStack { Text("Name") Spacer() - Text(ServerEnvironment.current.server.name ?? "") + Text(SessionManager.main.currentLogin.server.name) .foregroundColor(.secondary) } HStack { Text("URI") Spacer() - Text(ServerEnvironment.current.server.baseURI ?? "") + Text(SessionManager.main.currentLogin.server.uri) .foregroundColor(.secondary) } HStack { Text("Version") Spacer() - Text(ServerEnvironment.current.server.version ?? "") + Text(SessionManager.main.currentLogin.server.version) .foregroundColor(.secondary) } HStack { Text("Operating System") Spacer() - Text(ServerEnvironment.current.server.os ?? "") + Text(SessionManager.main.currentLogin.server.os) .foregroundColor(.secondary) } } diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift new file mode 100644 index 00000000..9c208724 --- /dev/null +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -0,0 +1,34 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI + +struct ServerListView: View { + + @EnvironmentObject var serverListRouter: ServerListCoordinator.Router + @ObservedObject var viewModel: ServerListViewModel + + var body: some View { + List { + ForEach(viewModel.servers, id: \.id) { server in + Text(server.name) + } + } + .navigationTitle("Servers") + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button { + serverListRouter.route(to: \.connectToServer) + } label: { + Text("Connect") + } + } + } + } +} diff --git a/JellyfinPlayer/Views/SettingsView.swift b/JellyfinPlayer/Views/SettingsView.swift index c309b8c2..707b89e2 100644 --- a/JellyfinPlayer/Views/SettingsView.swift +++ b/JellyfinPlayer/Views/SettingsView.swift @@ -31,7 +31,7 @@ struct SettingsView: View { HStack { Text("User") Spacer() - Text(SessionManager.current.user?.username ?? "") + Text(SessionManager.main.currentLogin.user.username) .foregroundColor(.jellyfinPurple) } @@ -41,7 +41,7 @@ struct SettingsView: View { HStack { Text("Server") Spacer() - Text(ServerEnvironment.current.server?.name ?? "") + Text(SessionManager.main.currentLogin.server.name) .foregroundColor(.jellyfinPurple) Image(systemName: "chevron.right") @@ -51,7 +51,8 @@ struct SettingsView: View { Button { settingsRouter.dismissCoordinator() DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - SessionManager.current.logout() + // TODO: todo +// SessionManager.current.logout() let nc = NotificationCenter.default nc.post(name: Notification.Name("didSignOut"), object: nil) } diff --git a/Shared/Extensions/JellyfinAPIExtensions/BaseItemDtoExtensions.swift b/Shared/Extensions/JellyfinAPIExtensions/BaseItemDtoExtensions.swift index 83ea48eb..78ad8991 100644 --- a/Shared/Extensions/JellyfinAPIExtensions/BaseItemDtoExtensions.swift +++ b/Shared/Extensions/JellyfinAPIExtensions/BaseItemDtoExtensions.swift @@ -74,7 +74,7 @@ public extension BaseItemDto { let x = UIScreen.main.nativeScale * CGFloat(maxWidth) let urlString = - "\(ServerEnvironment.current.server.baseURI!)/Items/\(imageItemId)/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=96&tag=\(imageTag)" + "\(SessionManager.main.currentLogin.server.uri)/Items/\(imageItemId)/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=96&tag=\(imageTag)" return URL(string: urlString)! } @@ -91,7 +91,7 @@ public extension BaseItemDto { let x = UIScreen.main.nativeScale * CGFloat(maxWidth) let urlString = - "\(ServerEnvironment.current.server.baseURI!)/Items/\(parentBackdropItemId ?? "")/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=96&tag=\(imageTag)" + "\(SessionManager.main.currentLogin.server.uri)/Items/\(parentBackdropItemId ?? "")/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=96&tag=\(imageTag)" return URL(string: urlString)! } @@ -100,7 +100,7 @@ public extension BaseItemDto { let imageTag = seriesPrimaryImageTag ?? "" let x = UIScreen.main.nativeScale * CGFloat(maxWidth) let urlString = - "\(ServerEnvironment.current.server.baseURI!)/Items/\(seriesId ?? "")/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=96&tag=\(imageTag)" + "\(SessionManager.main.currentLogin.server.uri)/Items/\(seriesId ?? "")/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=96&tag=\(imageTag)" return URL(string: urlString)! } @@ -117,7 +117,7 @@ public extension BaseItemDto { let x = UIScreen.main.nativeScale * CGFloat(maxWidth) let urlString = - "\(ServerEnvironment.current.server.baseURI!)/Items/\(imageItemId)/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=96&tag=\(imageTag)" + "\(SessionManager.main.currentLogin.server.uri)/Items/\(imageItemId)/Images/\(imageType)?maxWidth=\(String(Int(x)))&quality=96&tag=\(imageTag)" // print(urlString) return URL(string: urlString)! } diff --git a/Shared/Extensions/JellyfinAPIExtensions/BaseItemPersonExtensions.swift b/Shared/Extensions/JellyfinAPIExtensions/BaseItemPersonExtensions.swift index a3a9c042..63b2d239 100644 --- a/Shared/Extensions/JellyfinAPIExtensions/BaseItemPersonExtensions.swift +++ b/Shared/Extensions/JellyfinAPIExtensions/BaseItemPersonExtensions.swift @@ -57,7 +57,7 @@ extension BaseItemPerson { // MARK: PortraitImageStackable extension BaseItemPerson: PortraitImageStackable { public func imageURLContsructor(maxWidth: Int) -> URL { - return self.getImage(baseURL: ServerEnvironment.current.server.baseURI!, maxWidth: maxWidth) + return self.getImage(baseURL: SessionManager.main.currentLogin.server.uri, maxWidth: maxWidth) } public var title: String { diff --git a/Shared/ServerLocator/ServerDiscovery.swift b/Shared/ServerDiscovery/ServerDiscovery.swift similarity index 82% rename from Shared/ServerLocator/ServerDiscovery.swift rename to Shared/ServerDiscovery/ServerDiscovery.swift index 911239cd..7d718078 100644 --- a/Shared/ServerLocator/ServerDiscovery.swift +++ b/Shared/ServerDiscovery/ServerDiscovery.swift @@ -11,22 +11,6 @@ import Foundation public class ServerDiscovery { - public struct ServerCredential: Codable { - public let host: String - public let port: Int - public let username: String - public let password: String - public let deviceId: String - - public init(_ host: String, _ port: Int, _ username: String, _ password: String, _ deviceId: String = UUID().uuidString) { - self.host = host - self.port = port - self.username = username - self.password = password - self.deviceId = deviceId - } - } - public struct ServerLookupResponse: Codable, Hashable, Identifiable { public func hash(into hasher: inout Hasher) { @@ -62,6 +46,7 @@ public class ServerDiscovery { case name = "Name" } } + private let broadcastConn: UDPBroadcastConnection public init() { diff --git a/Shared/ServerLocator/UDPBroadCastConnection.swift b/Shared/ServerDiscovery/UDPBroadCastConnection.swift similarity index 100% rename from Shared/ServerLocator/UDPBroadCastConnection.swift rename to Shared/ServerDiscovery/UDPBroadCastConnection.swift diff --git a/Shared/Singleton/ServerEnvironment.swift b/Shared/Singleton/ServerEnvironment.swift deleted file mode 100644 index 326ede82..00000000 --- a/Shared/Singleton/ServerEnvironment.swift +++ /dev/null @@ -1,67 +0,0 @@ -// -/* - * SwiftFin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import Combine -import CoreData -import Foundation -import JellyfinAPI - -final class ServerEnvironment { - static let current = ServerEnvironment() - fileprivate(set) var server: Server! - - init() { - let serverRequest: NSFetchRequest = Server.fetchRequest() - let servers = try? PersistenceController.shared.container.viewContext.fetch(serverRequest) - - if servers?.count != 0 { - server = servers?.first - JellyfinAPI.basePath = server.baseURI! - } - } - - func create(with uri: String) -> AnyPublisher { - LogManager.shared.log.debug("Initializing new Server object with raw URI: \"\(uri)\"") - var uri = uri - if !uri.contains("http") { - uri = "https://" + uri - } - if uri.last == "/" { - uri = String(uri.dropLast()) - } - LogManager.shared.log.debug("Normalized URI: \"\(uri)\", attempting to getPublicSystemInfo()") - - JellyfinAPI.basePath = uri - return SystemAPI.getPublicSystemInfo() - .map { response in - let server = Server(context: PersistenceController.shared.container.viewContext) - server.baseURI = uri - server.name = response.serverName - server.server_id = response.id - server.version = response.version - server.os = response.operatingSystem - return server - } - .handleEvents(receiveOutput: { [unowned self] response in - server = response - _ = try? PersistenceController.shared.container.viewContext.save() - }).eraseToAnyPublisher() - } - - func reset() { - JellyfinAPI.basePath = "" - server = nil - - let serverRequest: NSFetchRequest = Server.fetchRequest() - let deleteRequest = NSBatchDeleteRequest(fetchRequest: serverRequest) - - // coredata will theoretically never throw - _ = try? PersistenceController.shared.container.viewContext.execute(deleteRequest) - } -} diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index 7cdb3b7c..13096968 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -21,8 +21,8 @@ import TVServices typealias CurrentLogin = (server: SwiftfinStore.Models.Server, user: SwiftfinStore.Models.User) -// MARK: New SessionManager -final class NewSessionManager { +// MARK: NewSessionManager +final class SessionManager { // MARK: currentLogin private(set) var currentLogin: CurrentLogin! @@ -32,13 +32,30 @@ final class NewSessionManager { private let JellyfinDefaults = UserDefaults(suiteName: "jellyfin-defaults")! - private init() { } + private init() { + if let lastServerUserID = SwiftfinStore.Defaults.suite[.lastServerUserID], + let userID = lastServerUserID.split(separator: "-")[safe: 1], + let user = try? SwiftfinStore.dataStack.fetchOne(From(), + [Where("id == %@", userID)]) { + // Strongly assuming that we didn't delete the server associate with the user + guard let server = user.server, let accessToken = user.accessToken else { return } + + setAuthHeader(with: accessToken.value) + currentLogin = (server: server, user: user) + } + } - func generateServerUserID(server: SwiftfinStore.Models.Server, user: SwiftfinStore.Models.User) -> String { + private func generateServerUserID(server: SwiftfinStore.Models.Server, user: SwiftfinStore.Models.User) -> String { return "\(server.id)-\(user.id)" } - func connectToServer(with uri: String) -> AnyPublisher { + func fetchServers() -> [SwiftfinStore.Models.Server] { + let servers = try! SwiftfinStore.dataStack.fetchAll(From()) + return servers + } + + // Connects to a server at the given uri, storing if successful + func connectToServer(with uri: String) -> AnyPublisher { var uri = uri if !uri.contains("http") { uri = "https://" + uri @@ -50,23 +67,58 @@ final class NewSessionManager { JellyfinAPI.basePath = uri return SystemAPI.getPublicSystemInfo() - .handleEvents(receiveOutput: { response in - print(response) - }).eraseToAnyPublisher() + .map({ response -> (SwiftfinStore.Models.Server, UnsafeDataTransaction) in + let transaction = SwiftfinStore.dataStack.beginUnsafe() + let newServer = transaction.create(Into()) + newServer.uri = response.localAddress ?? "SfUri" + newServer.name = response.serverName ?? "SfServerName" + newServer.id = response.id ?? "" + newServer.os = response.operatingSystem ?? "SfOS" + newServer.version = response.version ?? "SfVersion" + newServer.users = [] + + return (newServer, transaction) + }) + .handleEvents(receiveOutput: { (_, transaction) in + try? transaction.commitAndWait() + }) + .map({ (server, _) in + return server + }) + .eraseToAnyPublisher() } - func fetchServers() -> [SwiftfinStore.Models.Server] { - let servers = try! SwiftfinStore.dataStack.fetchAll(From()) - return servers - } - - func loginUser(server: SwiftfinStore.Models.Server, username: String, password: String) -> AnyPublisher { + // Logs in a user with an associated server, storing if successful + func loginUser(server: SwiftfinStore.Models.Server, username: String, password: String) -> AnyPublisher { setAuthHeader(with: "") return UserAPI.authenticateUserByName(authenticateUserByName: AuthenticateUserByName(username: username, pw: password)) - .handleEvents(receiveOutput: { [unowned self] response in - guard let accessToken = response.accessToken else { fatalError() } - setAuthHeader(with: accessToken) + .map({ response -> (SwiftfinStore.Models.User, UnsafeDataTransaction) in + + guard let accessToken = response.accessToken else { fatalError("Received successful user with no access token") } + + let transaction = SwiftfinStore.dataStack.beginUnsafe() + let newUser = transaction.create(Into()) + newUser.username = response.user?.name ?? "SfUsername" + newUser.id = response.user?.id ?? "SfID" + newUser.appleTVID = "" + + let newAccessToken = transaction.create(Into()) + newAccessToken.value = accessToken + newUser.accessToken = newAccessToken + + let userServer = transaction.edit(server) + userServer?.users.insert(newUser) + + return (newUser, transaction) + }) + .handleEvents(receiveOutput: { [unowned self] (user, transaction) in + setAuthHeader(with: user.accessToken?.value ?? "") + try? transaction.commitAndWait() + currentLogin = (server: server, user: user) + }) + .map({ (user, _) in + return user }) .eraseToAnyPublisher() } @@ -76,8 +128,6 @@ final class NewSessionManager { var deviceName = UIDevice.current.name deviceName = deviceName.folding(options: .diacriticInsensitive, locale: .current) deviceName = String(deviceName.unicodeScalars.filter {CharacterSet.urlQueryAllowed.contains($0) }) - - var header = "MediaBrowser " let platform: String #if os(tvOS) @@ -86,6 +136,7 @@ final class NewSessionManager { platform = "iOS" #endif + var header = "MediaBrowser " header.append("Client=\"Jellyfin \(platform)\", ") header.append("Device=\"\(deviceName)\", ") header.append("DeviceId=\"\(platform)_\(UIDevice.vendorUUIDString)_\(String(Date().timeIntervalSince1970))\", ") @@ -96,170 +147,170 @@ final class NewSessionManager { } } -final class SessionManager { - static let current = SessionManager() - fileprivate(set) var user: SignedInUser! - fileprivate(set) var deviceID: String = "" - fileprivate(set) var accessToken: String = "" - - #if os(tvOS) - let tvUserManager = TVUserManager() - #endif - let userDefaults = UserDefaults() - - init() { - let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() - let lastUsedUserID = userDefaults.string(forKey: "lastUsedUserID") - let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) - - #if os(tvOS) - savedUsers?.forEach { savedUser in - if savedUser.appletv_id == tvUserManager.currentUserIdentifier ?? "" { - self.user = savedUser - } - } - #else - if lastUsedUserID != nil { - savedUsers?.forEach { savedUser in - if savedUser.user_id ?? "" == lastUsedUserID! { - user = savedUser - } - } - } else { - user = savedUsers?.first - } - #endif - - if user != nil { - let authToken = getAuthToken(userID: user.user_id!) - generateAuthHeader(with: authToken, deviceID: user.device_uuid) - } - } - - fileprivate func generateAuthHeader(with authToken: String?, deviceID devID: String?) { - let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String - var deviceName = UIDevice.current.name - deviceName = deviceName.folding(options: .diacriticInsensitive, locale: .current) - deviceName = String(deviceName.unicodeScalars.filter {CharacterSet.urlQueryAllowed.contains($0) }) - - var header = "MediaBrowser " - #if os(tvOS) - header.append("Client=\"Jellyfin tvOS\", ") - #else - header.append("Client=\"SwiftFin iOS\", ") - #endif - - header.append("Device=\"\(deviceName)\", ") - - if devID == nil { - LogManager.shared.log.info("Generating device ID...") - #if os(tvOS) - header.append("DeviceId=\"tvOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))\", ") - deviceID = "tvOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))" - #else - header.append("DeviceId=\"iOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))\", ") - deviceID = "iOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))" - #endif - } else { - LogManager.shared.log.info("Using stored device ID...") - header.append("DeviceId=\"\(devID!)\", ") - deviceID = devID! - } - - header.append("Version=\"\(appVersion ?? "0.0.1")\", ") - - if authToken != nil { - header.append("Token=\"\(authToken!)\"") - accessToken = authToken! - } - - JellyfinAPI.customHeaders["X-Emby-Authorization"] = header - } - - fileprivate func getAuthToken(userID: String) -> String? { - let keychain = KeychainSwift() - keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" - return keychain.get("AccessToken_\(userID)") - } - - func doesUserHaveSavedSession(userID: String) -> Bool { - let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() - savedUserRequest.predicate = NSPredicate(format: "user_id == %@", userID) - let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) - - if savedUsers!.isEmpty { - return false - } - - return true - } - - func getSavedSession(userID: String) -> SignedInUser { - let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() - savedUserRequest.predicate = NSPredicate(format: "user_id == %@", userID) - let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) - return savedUsers!.first! - } - - func loginWithSavedSession(user: SignedInUser) { - let accessToken = getAuthToken(userID: user.user_id!) - userDefaults.set(user.user_id!, forKey: "lastUsedUserID") - self.user = user - generateAuthHeader(with: accessToken, deviceID: user.device_uuid) - print(JellyfinAPI.customHeaders) - let nc = NotificationCenter.default - nc.post(name: Notification.Name("didSignIn"), object: nil) - } - - func login(username: String, password: String) -> AnyPublisher { - generateAuthHeader(with: nil, deviceID: nil) - - return UserAPI.authenticateUserByName(authenticateUserByName: AuthenticateUserByName(username: username, pw: password)) - .map { response -> (SignedInUser, String?) in - let user = SignedInUser(context: PersistenceController.shared.container.viewContext) - user.username = response.user?.name - user.user_id = response.user?.id - user.device_uuid = self.deviceID - - #if os(tvOS) - let descriptor: TVAppProfileDescriptor = TVAppProfileDescriptor(name: user.username!) - self.tvUserManager.shouldStorePreferenceForCurrentUser(to: descriptor) { should in - if should { - user.appletv_id = self.tvUserManager.currentUserIdentifier ?? "" - } - } - #endif - - return (user, response.accessToken) - } - .handleEvents(receiveOutput: { [unowned self] response, accessToken in - user = response - _ = try? PersistenceController.shared.container.viewContext.save() - - let keychain = KeychainSwift() - keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" - keychain.set(accessToken!, forKey: "AccessToken_\(user.user_id!)") - - generateAuthHeader(with: accessToken, deviceID: user.device_uuid) - - let nc = NotificationCenter.default - nc.post(name: Notification.Name("didSignIn"), object: nil) - }) - .map(\.0) - .eraseToAnyPublisher() - } - - func logout() { - let nc = NotificationCenter.default - nc.post(name: Notification.Name("didSignOut"), object: nil) - let keychain = KeychainSwift() - keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" - keychain.delete("AccessToken_\(user?.user_id ?? "")") - generateAuthHeader(with: nil, deviceID: nil) - if user != nil { - let deleteRequest = NSBatchDeleteRequest(objectIDs: [user.objectID]) - user = nil - _ = try? PersistenceController.shared.container.viewContext.execute(deleteRequest) - } - } -} +//final class SessionManager { +// static let current = SessionManager() +// fileprivate(set) var user: SignedInUser! +// fileprivate(set) var deviceID: String = "" +// fileprivate(set) var accessToken: String = "" +// +// #if os(tvOS) +// let tvUserManager = TVUserManager() +// #endif +// let userDefaults = UserDefaults() +// +// init() { +// let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() +// let lastUsedUserID = userDefaults.string(forKey: "lastUsedUserID") +// let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) +// +// #if os(tvOS) +// savedUsers?.forEach { savedUser in +// if savedUser.appletv_id == tvUserManager.currentUserIdentifier ?? "" { +// self.user = savedUser +// } +// } +// #else +// if lastUsedUserID != nil { +// savedUsers?.forEach { savedUser in +// if savedUser.user_id ?? "" == lastUsedUserID! { +// user = savedUser +// } +// } +// } else { +// user = savedUsers?.first +// } +// #endif +// +// if user != nil { +// let authToken = getAuthToken(userID: user.user_id!) +// generateAuthHeader(with: authToken, deviceID: user.device_uuid) +// } +// } +// +// fileprivate func generateAuthHeader(with authToken: String?, deviceID devID: String?) { +// let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String +// var deviceName = UIDevice.current.name +// deviceName = deviceName.folding(options: .diacriticInsensitive, locale: .current) +// deviceName = String(deviceName.unicodeScalars.filter {CharacterSet.urlQueryAllowed.contains($0) }) +// +// var header = "MediaBrowser " +// #if os(tvOS) +// header.append("Client=\"Jellyfin tvOS\", ") +// #else +// header.append("Client=\"SwiftFin iOS\", ") +// #endif +// +// header.append("Device=\"\(deviceName)\", ") +// +// if devID == nil { +// LogManager.shared.log.info("Generating device ID...") +// #if os(tvOS) +// header.append("DeviceId=\"tvOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))\", ") +// deviceID = "tvOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))" +// #else +// header.append("DeviceId=\"iOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))\", ") +// deviceID = "iOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))" +// #endif +// } else { +// LogManager.shared.log.info("Using stored device ID...") +// header.append("DeviceId=\"\(devID!)\", ") +// deviceID = devID! +// } +// +// header.append("Version=\"\(appVersion ?? "0.0.1")\", ") +// +// if authToken != nil { +// header.append("Token=\"\(authToken!)\"") +// accessToken = authToken! +// } +// +// JellyfinAPI.customHeaders["X-Emby-Authorization"] = header +// } +// +// fileprivate func getAuthToken(userID: String) -> String? { +// let keychain = KeychainSwift() +// keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" +// return keychain.get("AccessToken_\(userID)") +// } +// +// func doesUserHaveSavedSession(userID: String) -> Bool { +// let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() +// savedUserRequest.predicate = NSPredicate(format: "user_id == %@", userID) +// let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) +// +// if savedUsers!.isEmpty { +// return false +// } +// +// return true +// } +// +// func getSavedSession(userID: String) -> SignedInUser { +// let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() +// savedUserRequest.predicate = NSPredicate(format: "user_id == %@", userID) +// let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) +// return savedUsers!.first! +// } +// +// func loginWithSavedSession(user: SignedInUser) { +// let accessToken = getAuthToken(userID: user.user_id!) +// userDefaults.set(user.user_id!, forKey: "lastUsedUserID") +// self.user = user +// generateAuthHeader(with: accessToken, deviceID: user.device_uuid) +// print(JellyfinAPI.customHeaders) +// let nc = NotificationCenter.default +// nc.post(name: Notification.Name("didSignIn"), object: nil) +// } +// +// func login(username: String, password: String) -> AnyPublisher { +// generateAuthHeader(with: nil, deviceID: nil) +// +// return UserAPI.authenticateUserByName(authenticateUserByName: AuthenticateUserByName(username: username, pw: password)) +// .map { response -> (SignedInUser, String?) in +// let user = SignedInUser(context: PersistenceController.shared.container.viewContext) +// user.username = response.user?.name +// user.user_id = response.user?.id +// user.device_uuid = self.deviceID +// +// #if os(tvOS) +// let descriptor: TVAppProfileDescriptor = TVAppProfileDescriptor(name: user.username!) +// self.tvUserManager.shouldStorePreferenceForCurrentUser(to: descriptor) { should in +// if should { +// user.appletv_id = self.tvUserManager.currentUserIdentifier ?? "" +// } +// } +// #endif +// +// return (user, response.accessToken) +// } +// .handleEvents(receiveOutput: { [unowned self] response, accessToken in +// user = response +// _ = try? PersistenceController.shared.container.viewContext.save() +// +// let keychain = KeychainSwift() +// keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" +// keychain.set(accessToken!, forKey: "AccessToken_\(user.user_id!)") +// +// generateAuthHeader(with: accessToken, deviceID: user.device_uuid) +// +// let nc = NotificationCenter.default +// nc.post(name: Notification.Name("didSignIn"), object: nil) +// }) +// .map(\.0) +// .eraseToAnyPublisher() +// } +// +// func logout() { +// let nc = NotificationCenter.default +// nc.post(name: Notification.Name("didSignOut"), object: nil) +// let keychain = KeychainSwift() +// keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" +// keychain.delete("AccessToken_\(user?.user_id ?? "")") +// generateAuthHeader(with: nil, deviceID: nil) +// if user != nil { +// let deleteRequest = NSBatchDeleteRequest(objectIDs: [user.objectID]) +// user = nil +// _ = try? PersistenceController.shared.container.viewContext.execute(deleteRequest) +// } +// } +//} diff --git a/Shared/SwiftfinStore/SwiftfinStore.swift b/Shared/SwiftfinStore/SwiftfinStore.swift index 85f285ac..c30ca41b 100644 --- a/Shared/SwiftfinStore/SwiftfinStore.swift +++ b/Shared/SwiftfinStore/SwiftfinStore.swift @@ -9,6 +9,7 @@ import Foundation import CoreStore +import Defaults enum SwiftfinStore { @@ -17,7 +18,7 @@ enum SwiftfinStore { final class Server: CoreStoreObject { @Field.Stored("uri") - var url: String = "" + var uri: String = "" @Field.Stored("name") var name: String = "" @@ -38,7 +39,7 @@ enum SwiftfinStore { final class User: CoreStoreObject { @Field.Stored("username") - var name: String = "" + var username: String = "" @Field.Stored("id") var id: String = "" @@ -48,6 +49,18 @@ enum SwiftfinStore { @Field.Relationship("server") var server: Server? + + @Field.Relationship("accessToken", inverse: \AccessToken.$user) + var accessToken: AccessToken? + } + + final class AccessToken: CoreStoreObject { + + @Field.Stored("value") + var value: String = "" + + @Field.Relationship("user") + var user: User? } } @@ -56,8 +69,9 @@ enum SwiftfinStore { entities: [ Entity("Server"), Entity("User"), + Entity("AccessToken") ], - versionLock: nil) + versionLock: nil) // TODO: todo let _dataStack = DataStack(schema) try! _dataStack.addStorageAndWait( diff --git a/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift b/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift new file mode 100644 index 00000000..7d6d7d30 --- /dev/null +++ b/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift @@ -0,0 +1,29 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Defaults +import Foundation + +extension SwiftfinStore { + + enum Defaults { + + static let suite: UserDefaults = { + return UserDefaults(suiteName: "swiftfinstore-defaults")! + }() + +// enum Keys { +// static let lastUserID = Defaults.Key("lastUserID", suite: SwiftfinStore.Defaults.suite) +// } + } +} + +extension Defaults.Keys { + static let lastServerUserID = Defaults.Key("lastServerUserID", suite: SwiftfinStore.Defaults.suite) +} diff --git a/Shared/SwiftfinStore/SwiftfinStoreKeychain.swift b/Shared/SwiftfinStore/SwiftfinStoreKeychain.swift new file mode 100644 index 00000000..31368ccf --- /dev/null +++ b/Shared/SwiftfinStore/SwiftfinStoreKeychain.swift @@ -0,0 +1,33 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import KeychainSwift + +extension SwiftfinStore { + + enum Keychain { + + private static let keychainAccessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" + + private static let keychain: KeychainSwift = { + let keychain = KeychainSwift() + keychain.accessGroup = keychainAccessGroup + return keychain + }() + + static func getAuthToken(serverUserID: String) -> String? { + return keychain.get("AccessToken_\(serverUserID)") + } + + static func delete(serverUserID: String) { + // TODO: todo + } + } +} diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index 04929d81..d0479cbe 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -13,77 +13,32 @@ import JellyfinAPI import Stinsen final class ConnectToServerViewModel: ViewModel { - @RouterObject - var main: MainCoordinator.Router? - - @Published var isConnectedServer = false - - var uriSubject = CurrentValueSubject("") - var usernameSubject = CurrentValueSubject("") - var passwordSubject = CurrentValueSubject("") - - @Published var lastPublicUsers = [UserDto]() - @Published var publicUsers = [UserDto]() - @Published var selectedPublicUser = UserDto() - - private let discovery = ServerDiscovery() - @Published var servers: [ServerDiscovery.ServerLookupResponse] = [] + + @RouterObject var main: MainCoordinator.Router? + @Published var discoveredServers: Set = [] @Published var searching = false + private let discovery = ServerDiscovery() - func getPublicUsers() { - if ServerEnvironment.current.server != nil { - LogManager.shared.log.debug("Attempting to read public users from \(ServerEnvironment.current.server.baseURI!)", - tag: "getPublicUsers") - UserAPI.getPublicUsers() - .trackActivity(loading) - .sink(receiveCompletion: { completion in - self.handleAPIRequestError(completion: completion) - }, receiveValue: { response in - self.publicUsers = response - LogManager.shared.log.debug("Received \(String(response.count)) public users.", tag: "getPublicUsers") - self.isConnectedServer = true - }) - .store(in: &cancellables) - } else { - LogManager.shared.log.debug("Not getting users - server is nil", tag: "getPublicUsers") - } - } - - func hidePublicUsers() { - lastPublicUsers = publicUsers - publicUsers = [] - } - - func showPublicUsers() { - publicUsers = lastPublicUsers - lastPublicUsers = [] - } - - func connectToServer() { + func connectToServer(uri: String) { #if targetEnvironment(simulator) - if uriSubject.value == "localhost" { - uriSubject.value = "http://localhost:8096" - } + var uri = uri + if uri == "localhost" { + uri = "http://localhost:8096" + } #endif - LogManager.shared.log.debug("Attempting to connect to server at \"\(uriSubject.value)\"", tag: "connectToServer") - ServerEnvironment.current.create(with: uriSubject.value) + LogManager.shared.log.debug("Attempting to connect to server at \"\(uri)\"", tag: "connectToServer") + SessionManager.main.connectToServer(with: uri) .trackActivity(loading) .sink(receiveCompletion: { completion in self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "connectToServer", completion: completion) }, receiveValue: { _ in - LogManager.shared.log.debug("Connected to server at \"\(self.uriSubject.value)\"", tag: "connectToServer") - self.getPublicUsers() + LogManager.shared.log.debug("Connected to server at \"\(uri)\"", tag: "connectToServer") }) .store(in: &cancellables) } - func connectToServer(at url: URL) { - uriSubject.send(url.absoluteString) - connectToServer() - } - func discoverServers() { searching = true @@ -93,26 +48,10 @@ final class ConnectToServerViewModel: ViewModel { } discovery.locateServer { [self] server in - if let server = server, !servers.contains(server) { - servers.append(server) + if let server = server { + discoveredServers.insert(server) } searching = false } } - - func login() { - LogManager.shared.log.debug("Attempting to login to server at \"\(uriSubject.value)\"", tag: "login") - LogManager.shared.log - .debug("username == \"\": \(usernameSubject.value.isEmpty), password == \"\": \(passwordSubject.value.isEmpty)", - tag: "login") - SessionManager.current.login(username: usernameSubject.value, password: passwordSubject.value) - .trackActivity(loading) - .sink(receiveCompletion: { completion in - self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "login", - completion: completion) - }, receiveValue: { [weak self] _ in - self?.main?.root(\.mainTab) - }) - .store(in: &cancellables) - } } diff --git a/Shared/ViewModels/EpisodeItemViewModel.swift b/Shared/ViewModels/EpisodeItemViewModel.swift index eaed1330..89a88ca2 100644 --- a/Shared/ViewModels/EpisodeItemViewModel.swift +++ b/Shared/ViewModels/EpisodeItemViewModel.swift @@ -26,7 +26,7 @@ final class EpisodeItemViewModel: ItemViewModel { func routeToSeasonItem() { guard let id = item.seasonId else { return } - UserLibraryAPI.getItem(userId: SessionManager.current.user.user_id!, itemId: id) + UserLibraryAPI.getItem(userId: SessionManager.main.currentLogin.user.id, itemId: id) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) @@ -38,7 +38,7 @@ final class EpisodeItemViewModel: ItemViewModel { func routeToSeriesItem() { guard let id = item.seriesId else { return } - UserLibraryAPI.getItem(userId: SessionManager.current.user.user_id!, itemId: id) + UserLibraryAPI.getItem(userId: SessionManager.main.currentLogin.user.id, itemId: id) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) diff --git a/Shared/ViewModels/HomeViewModel.swift b/Shared/ViewModels/HomeViewModel.swift index 0f98e7a4..88eb4188 100644 --- a/Shared/ViewModels/HomeViewModel.swift +++ b/Shared/ViewModels/HomeViewModel.swift @@ -29,7 +29,7 @@ final class HomeViewModel: ViewModel { func refresh() { LogManager.shared.log.debug("Refresh called.") - UserViewsAPI.getUserViews(userId: SessionManager.current.user.user_id!) + UserViewsAPI.getUserViews(userId: SessionManager.main.currentLogin.user.id) .trackActivity(loading) .sink(receiveCompletion: { completion in self.handleAPIRequestError(completion: completion) @@ -57,7 +57,7 @@ final class HomeViewModel: ViewModel { }) .store(in: &cancellables) - ItemsAPI.getResumeItems(userId: SessionManager.current.user.user_id!, limit: 12, + ItemsAPI.getResumeItems(userId: SessionManager.main.currentLogin.user.id, limit: 12, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], mediaTypes: ["Video"], imageTypeLimit: 1, enableImageTypes: [.primary, .backdrop, .thumb]) .trackActivity(loading) @@ -69,7 +69,7 @@ final class HomeViewModel: ViewModel { }) .store(in: &cancellables) - TvShowsAPI.getNextUp(userId: SessionManager.current.user.user_id!, limit: 12, + TvShowsAPI.getNextUp(userId: SessionManager.main.currentLogin.user.id, limit: 12, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people]) .trackActivity(loading) .sink(receiveCompletion: { completion in diff --git a/Shared/ViewModels/ItemViewModel.swift b/Shared/ViewModels/ItemViewModel.swift index f55b3171..7b2dc5c3 100644 --- a/Shared/ViewModels/ItemViewModel.swift +++ b/Shared/ViewModels/ItemViewModel.swift @@ -47,7 +47,7 @@ class ItemViewModel: ViewModel { } func getSimilarItems() { - LibraryAPI.getSimilarItems(itemId: item.id!, userId: SessionManager.current.user.user_id!, limit: 20, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people]) + LibraryAPI.getSimilarItems(itemId: item.id!, userId: SessionManager.main.currentLogin.user.id, limit: 20, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people]) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) @@ -59,7 +59,7 @@ class ItemViewModel: ViewModel { func updateWatchState() { if isWatched { - PlaystateAPI.markUnplayedItem(userId: SessionManager.current.user.user_id!, itemId: item.id!) + PlaystateAPI.markUnplayedItem(userId: SessionManager.main.currentLogin.user.id, itemId: item.id!) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) @@ -68,7 +68,7 @@ class ItemViewModel: ViewModel { }) .store(in: &cancellables) } else { - PlaystateAPI.markPlayedItem(userId: SessionManager.current.user.user_id!, itemId: item.id!) + PlaystateAPI.markPlayedItem(userId: SessionManager.main.currentLogin.user.id, itemId: item.id!) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) @@ -81,7 +81,7 @@ class ItemViewModel: ViewModel { func updateFavoriteState() { if isFavorited { - UserLibraryAPI.unmarkFavoriteItem(userId: SessionManager.current.user.user_id!, itemId: item.id!) + UserLibraryAPI.unmarkFavoriteItem(userId: SessionManager.main.currentLogin.user.id, itemId: item.id!) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) @@ -90,7 +90,7 @@ class ItemViewModel: ViewModel { }) .store(in: &cancellables) } else { - UserLibraryAPI.markFavoriteItem(userId: SessionManager.current.user.user_id!, itemId: item.id!) + UserLibraryAPI.markFavoriteItem(userId: SessionManager.main.currentLogin.user.id, itemId: item.id!) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) diff --git a/Shared/ViewModels/LatestMediaViewModel.swift b/Shared/ViewModels/LatestMediaViewModel.swift index d0ebbba8..c70f156e 100644 --- a/Shared/ViewModels/LatestMediaViewModel.swift +++ b/Shared/ViewModels/LatestMediaViewModel.swift @@ -25,8 +25,8 @@ final class LatestMediaViewModel: ViewModel { } func requestLatestMedia() { - LogManager.shared.log.debug("Requesting latest media for user id \(SessionManager.current.user.user_id ?? "NIL")") - UserLibraryAPI.getLatestMedia(userId: SessionManager.current.user.user_id!, + LogManager.shared.log.debug("Requesting latest media for user id \(SessionManager.main.currentLogin.user.id ?? "NIL")") + UserLibraryAPI.getLatestMedia(userId: SessionManager.main.currentLogin.user.id, parentId: libraryID, fields: [ .primaryImageAspectRatio, diff --git a/Shared/ViewModels/LibraryFilterViewModel.swift b/Shared/ViewModels/LibraryFilterViewModel.swift index 30cc442e..127e4d99 100644 --- a/Shared/ViewModels/LibraryFilterViewModel.swift +++ b/Shared/ViewModels/LibraryFilterViewModel.swift @@ -58,7 +58,7 @@ final class LibraryFilterViewModel: ViewModel { } func requestQueryFilters() { - FilterAPI.getQueryFilters(userId: SessionManager.current.user.user_id!, parentId: self.parentId) + FilterAPI.getQueryFilters(userId: SessionManager.main.currentLogin.user.id, parentId: self.parentId) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) diff --git a/Shared/ViewModels/LibraryListViewModel.swift b/Shared/ViewModels/LibraryListViewModel.swift index 1c85db9e..f352f686 100644 --- a/Shared/ViewModels/LibraryListViewModel.swift +++ b/Shared/ViewModels/LibraryListViewModel.swift @@ -24,7 +24,7 @@ final class LibraryListViewModel: ViewModel { } func requestLibraries() { - UserViewsAPI.getUserViews(userId: SessionManager.current.user.user_id ?? "val was nil") + UserViewsAPI.getUserViews(userId: SessionManager.main.currentLogin.user.id ?? "val was nil") .trackActivity(loading) .sink(receiveCompletion: { completion in self.handleAPIRequestError(completion: completion) diff --git a/Shared/ViewModels/LibrarySearchViewModel.swift b/Shared/ViewModels/LibrarySearchViewModel.swift index 9d0e035b..0aeb6098 100644 --- a/Shared/ViewModels/LibrarySearchViewModel.swift +++ b/Shared/ViewModels/LibrarySearchViewModel.swift @@ -77,7 +77,7 @@ final class LibrarySearchViewModel: ViewModel { } func requestSuggestions() { - ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, + ItemsAPI.getItemsByUserId(userId: SessionManager.main.currentLogin.user.id, limit: 20, recursive: true, parentId: parentID, @@ -96,7 +96,7 @@ final class LibrarySearchViewModel: ViewModel { } func search(with query: String) { - ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, limit: 50, recursive: true, searchTerm: query, + ItemsAPI.getItemsByUserId(userId: SessionManager.main.currentLogin.user.id, limit: 50, recursive: true, searchTerm: query, sortOrder: [.ascending], parentId: parentID, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], includeItemTypes: [ItemType.movie.rawValue], sortBy: ["SortName"], enableUserData: true, enableImages: true) @@ -107,7 +107,7 @@ final class LibrarySearchViewModel: ViewModel { self?.movieItems = response.items ?? [] }) .store(in: &cancellables) - ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, limit: 50, recursive: true, searchTerm: query, + ItemsAPI.getItemsByUserId(userId: SessionManager.main.currentLogin.user.id, limit: 50, recursive: true, searchTerm: query, sortOrder: [.ascending], parentId: parentID, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], includeItemTypes: [ItemType.series.rawValue], sortBy: ["SortName"], enableUserData: true, enableImages: true) @@ -118,7 +118,7 @@ final class LibrarySearchViewModel: ViewModel { self?.showItems = response.items ?? [] }) .store(in: &cancellables) - ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, limit: 50, recursive: true, searchTerm: query, + ItemsAPI.getItemsByUserId(userId: SessionManager.main.currentLogin.user.id, limit: 50, recursive: true, searchTerm: query, sortOrder: [.ascending], parentId: parentID, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], includeItemTypes: [ItemType.episode.rawValue], sortBy: ["SortName"], enableUserData: true, enableImages: true) diff --git a/Shared/ViewModels/LibraryViewModel.swift b/Shared/ViewModels/LibraryViewModel.swift index f73d2803..4999d044 100644 --- a/Shared/ViewModels/LibraryViewModel.swift +++ b/Shared/ViewModels/LibraryViewModel.swift @@ -63,7 +63,7 @@ final class LibraryViewModel: ViewModel { } let sortBy = filters.sortBy.map(\.rawValue) let shouldBeRecursive: Bool = filters.filters.contains(.isFavorite) || personIDs != [] || studioIDs != [] || genreIDs != [] - ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, startIndex: currentPage * 100, limit: 100, recursive: shouldBeRecursive, + ItemsAPI.getItemsByUserId(userId: SessionManager.main.currentLogin.user.id, startIndex: currentPage * 100, limit: 100, recursive: shouldBeRecursive, searchTerm: nil, sortOrder: filters.sortOrder, parentId: parentID, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], includeItemTypes: filters.filters.contains(.isFavorite) ? ["Movie", "Series", "Season", "Episode"] : ["Movie", "Series"], filters: filters.filters, sortBy: sortBy, tags: filters.tags, @@ -94,7 +94,7 @@ final class LibraryViewModel: ViewModel { } let sortBy = filters.sortBy.map(\.rawValue) let shouldBeRecursive: Bool = filters.filters.contains(.isFavorite) || personIDs != [] || studioIDs != [] || genreIDs != [] - ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, startIndex: currentPage * 100, limit: 100, recursive: shouldBeRecursive, + ItemsAPI.getItemsByUserId(userId: SessionManager.main.currentLogin.user.id, startIndex: currentPage * 100, limit: 100, recursive: shouldBeRecursive, searchTerm: nil, sortOrder: filters.sortOrder, parentId: parentID, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], includeItemTypes: filters.filters.contains(.isFavorite) ? ["Movie", "Series", "Season", "Episode"] : ["Movie", "Series"], filters: filters.filters, sortBy: sortBy, tags: filters.tags, diff --git a/Shared/ViewModels/SeasonItemViewModel.swift b/Shared/ViewModels/SeasonItemViewModel.swift index e2919306..c3d1a739 100644 --- a/Shared/ViewModels/SeasonItemViewModel.swift +++ b/Shared/ViewModels/SeasonItemViewModel.swift @@ -32,7 +32,7 @@ final class SeasonItemViewModel: ItemViewModel { private func requestEpisodes() { LogManager.shared.log .debug("Getting episodes in season \(item.id!) (\(item.name!)) of show \(item.seriesId!) (\(item.seriesName!))") - TvShowsAPI.getEpisodes(seriesId: item.seriesId ?? "", userId: SessionManager.current.user.user_id!, + TvShowsAPI.getEpisodes(seriesId: item.seriesId ?? "", userId: SessionManager.main.currentLogin.user.id, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], seasonId: item.id ?? "") .trackActivity(loading) @@ -73,7 +73,7 @@ final class SeasonItemViewModel: ItemViewModel { func routeToSeriesItem() { guard let id = item.seriesId else { return } - UserLibraryAPI.getItem(userId: SessionManager.current.user.user_id!, itemId: id) + UserLibraryAPI.getItem(userId: SessionManager.main.currentLogin.user.id, itemId: id) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) diff --git a/Shared/ViewModels/SeriesItemViewModel.swift b/Shared/ViewModels/SeriesItemViewModel.swift index 81a9e8e1..b204c87b 100644 --- a/Shared/ViewModels/SeriesItemViewModel.swift +++ b/Shared/ViewModels/SeriesItemViewModel.swift @@ -35,7 +35,7 @@ final class SeriesItemViewModel: ItemViewModel { private func getNextUp() { LogManager.shared.log.debug("Getting next up for show \(self.item.id!) (\(self.item.name!))") - TvShowsAPI.getNextUp(userId: SessionManager.current.user.user_id!, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], seriesId: self.item.id!, enableUserData: true) + TvShowsAPI.getNextUp(userId: SessionManager.main.currentLogin.user.id, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], seriesId: self.item.id!, enableUserData: true) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) @@ -67,7 +67,7 @@ final class SeriesItemViewModel: ItemViewModel { private func requestSeasons() { LogManager.shared.log.debug("Getting seasons of show \(self.item.id!) (\(self.item.name!))") - TvShowsAPI.getSeasons(seriesId: item.id ?? "", userId: SessionManager.current.user.user_id!, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], enableUserData: true) + TvShowsAPI.getSeasons(seriesId: item.id ?? "", userId: SessionManager.main.currentLogin.user.id, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], enableUserData: true) .trackActivity(loading) .sink(receiveCompletion: { [weak self] completion in self?.handleAPIRequestError(completion: completion) diff --git a/Shared/ViewModels/ServerListViewModel.swift b/Shared/ViewModels/ServerListViewModel.swift new file mode 100644 index 00000000..d77c7225 --- /dev/null +++ b/Shared/ViewModels/ServerListViewModel.swift @@ -0,0 +1,20 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import SwiftUI + +class ServerListViewModel: ObservableObject { + + @Published var servers: [SwiftfinStore.Models.Server] = [] + + init() { + self.servers = SessionManager.main.fetchServers() + } +} diff --git a/Shared/ViewModels/SplashViewModel.swift b/Shared/ViewModels/SplashViewModel.swift index df524bb1..dbbe9a56 100644 --- a/Shared/ViewModels/SplashViewModel.swift +++ b/Shared/ViewModels/SplashViewModel.swift @@ -21,7 +21,8 @@ final class SplashViewModel: ViewModel { @Published var isLoggedIn: Bool = false override init() { - isLoggedIn = ServerEnvironment.current.server != nil && SessionManager.current.user != nil + // TODO: Remove SplashViewModel + isLoggedIn = SessionManager.main.currentLogin != nil super.init() ImageCache.shared.costLimit = 125 * 1024 * 1024 // 125MB memory diff --git a/Shared/ViewModels/UserLoginViewModel.swift b/Shared/ViewModels/UserLoginViewModel.swift new file mode 100644 index 00000000..103d884c --- /dev/null +++ b/Shared/ViewModels/UserLoginViewModel.swift @@ -0,0 +1,47 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import JellyfinAPI +import Stinsen + +final class UserLoginViewModel: ViewModel { + + let server: SwiftfinStore.Models.Server + + init(server: SwiftfinStore.Models.Server) { + self.server = server + } + + func login(username: String, password: String) { + LogManager.shared.log.debug("Attempting to login to server at \"\(server.uri)\"", tag: "login") + LogManager.shared.log.debug("username == \"\": \(username), password == \"\": \(password)", tag: "login") + + SessionManager.main.loginUser(server: server, username: username, password: password) + .trackActivity(loading) + .sink { completion in + self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "login", + completion: completion) + } receiveValue: { user in + print(user) + } + .store(in: &cancellables) +// +// +// SessionManager.current.login(username: username, password: password) +// .trackActivity(loading) +// .sink(receiveCompletion: { completion in +// self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "login", +// completion: completion) +// }, receiveValue: { [weak self] _ in +// self?.main?.root(\.mainTab) +// }) +// .store(in: &cancellables) + } +} diff --git a/WidgetExtension/NextUpWidget.swift b/WidgetExtension/NextUpWidget.swift index fbe1930a..eec8417d 100644 --- a/WidgetExtension/NextUpWidget.swift +++ b/WidgetExtension/NextUpWidget.swift @@ -24,92 +24,94 @@ struct NextUpWidgetProvider: TimelineProvider { } func getSnapshot(in context: Context, completion: @escaping (NextUpEntry) -> Void) { + + guard let currentLogin = SessionManager.main.currentLogin else { return } + let currentDate = Date() - let server = ServerEnvironment.current.server - let savedUser = SessionManager.current.user + let server = currentLogin.server + let savedUser = currentLogin.user var tempCancellables = Set() - if server != nil && savedUser != nil { - JellyfinAPI.basePath = server!.baseURI ?? "" - TvShowsAPI.getNextUp(userId: savedUser!.user_id, limit: 3, - fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], - imageTypeLimit: 1, enableImageTypes: [.primary, .backdrop, .thumb]) - .subscribe(on: DispatchQueue.global(qos: .background)) - .sink(receiveCompletion: { result in - switch result { - case .finished: - break - case let .failure(error): - completion(NextUpEntry(date: currentDate, items: [], error: error)) - } - }, receiveValue: { response in - let dispatchGroup = DispatchGroup() - let items = response.items ?? [] - var downloadedItems = [(BaseItemDto, UIImage?)]() - items.enumerated().forEach { _, item in - dispatchGroup.enter() - ImagePipeline.shared.loadImage(with: item.getBackdropImage(maxWidth: 320)) { result in - guard case let .success(image) = result else { - dispatchGroup.leave() - return - } - downloadedItems.append((item, image.image)) + JellyfinAPI.basePath = server.uri + TvShowsAPI.getNextUp(userId: savedUser.id, limit: 3, + fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], + imageTypeLimit: 1, enableImageTypes: [.primary, .backdrop, .thumb]) + .subscribe(on: DispatchQueue.global(qos: .background)) + .sink(receiveCompletion: { result in + switch result { + case .finished: + break + case let .failure(error): + completion(NextUpEntry(date: currentDate, items: [], error: error)) + } + }, receiveValue: { response in + let dispatchGroup = DispatchGroup() + let items = response.items ?? [] + var downloadedItems = [(BaseItemDto, UIImage?)]() + items.enumerated().forEach { _, item in + dispatchGroup.enter() + ImagePipeline.shared.loadImage(with: item.getBackdropImage(maxWidth: 320)) { result in + guard case let .success(image) = result else { dispatchGroup.leave() + return } + downloadedItems.append((item, image.image)) + dispatchGroup.leave() } + } - dispatchGroup.notify(queue: .main) { - completion(NextUpEntry(date: currentDate, items: downloadedItems, error: nil)) - } - }) - .store(in: &tempCancellables) - } + dispatchGroup.notify(queue: .main) { + completion(NextUpEntry(date: currentDate, items: downloadedItems, error: nil)) + } + }) + .store(in: &tempCancellables) } func getTimeline(in context: Context, completion: @escaping (Timeline) -> Void) { + + guard let currentLogin = SessionManager.main.currentLogin else { return } + let currentDate = Date() let entryDate = Calendar.current.date(byAdding: .hour, value: 1, to: currentDate)! - let server = ServerEnvironment.current.server - let savedUser = SessionManager.current.user + let server = currentLogin.server + let savedUser = currentLogin.user var tempCancellables = Set() - if server != nil && savedUser != nil { - JellyfinAPI.basePath = server!.baseURI ?? "" - TvShowsAPI.getNextUp(userId: savedUser!.user_id, limit: 3, - fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], - imageTypeLimit: 1, enableImageTypes: [.primary, .backdrop, .thumb]) - .subscribe(on: DispatchQueue.global(qos: .background)) - .sink(receiveCompletion: { result in - switch result { - case .finished: - break - case let .failure(error): - completion(Timeline(entries: [NextUpEntry(date: currentDate, items: [], error: error)], policy: .after(entryDate))) - } - }, receiveValue: { response in - let dispatchGroup = DispatchGroup() - let items = response.items ?? [] - var downloadedItems = [(BaseItemDto, UIImage?)]() - items.enumerated().forEach { _, item in - dispatchGroup.enter() - ImagePipeline.shared.loadImage(with: item.getBackdropImage(maxWidth: 320)) { result in - guard case let .success(image) = result else { - dispatchGroup.leave() - return - } - downloadedItems.append((item, image.image)) + JellyfinAPI.basePath = server.uri + TvShowsAPI.getNextUp(userId: savedUser.id, limit: 3, + fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], + imageTypeLimit: 1, enableImageTypes: [.primary, .backdrop, .thumb]) + .subscribe(on: DispatchQueue.global(qos: .background)) + .sink(receiveCompletion: { result in + switch result { + case .finished: + break + case let .failure(error): + completion(Timeline(entries: [NextUpEntry(date: currentDate, items: [], error: error)], policy: .after(entryDate))) + } + }, receiveValue: { response in + let dispatchGroup = DispatchGroup() + let items = response.items ?? [] + var downloadedItems = [(BaseItemDto, UIImage?)]() + items.enumerated().forEach { _, item in + dispatchGroup.enter() + ImagePipeline.shared.loadImage(with: item.getBackdropImage(maxWidth: 320)) { result in + guard case let .success(image) = result else { dispatchGroup.leave() + return } + downloadedItems.append((item, image.image)) + dispatchGroup.leave() } + } - dispatchGroup.notify(queue: .main) { - completion(Timeline(entries: [NextUpEntry(date: currentDate, items: downloadedItems, error: nil)], - policy: .after(entryDate))) - } - }) - .store(in: &tempCancellables) - } + dispatchGroup.notify(queue: .main) { + completion(Timeline(entries: [NextUpEntry(date: currentDate, items: downloadedItems, error: nil)], + policy: .after(entryDate))) + } + }) + .store(in: &tempCancellables) } } @@ -198,7 +200,8 @@ extension NextUpEntryView { } func smallVideoView(item: (BaseItemDto, UIImage?)) -> some View { - Link(destination: URL(string: "widget-extension://Users/\(SessionManager.current.user.user_id!)/Items/\(item.0.id!)")!, label: { + let url = URL(string: "widget-extension://Users/\(SessionManager.main.currentLogin.user.id)/Items/\(item.0.id!)")! + return Link(destination: url, label: { VStack(alignment: .leading) { if let image = item.1 { Image(uiImage: image) @@ -223,7 +226,8 @@ extension NextUpEntryView { } func largeVideoView(item: (BaseItemDto, UIImage?)) -> some View { - Link(destination: URL(string: "widget-extension://Users/\(SessionManager.current.user.user_id!)/Items/\(item.0.id!)")!, label: { + let url = URL(string: "widget-extension://Users/\(SessionManager.main.currentLogin.user.id)/Items/\(item.0.id!)")! + return Link(destination: url, label: { HStack(spacing: 20) { if let image = item.1 { Image(uiImage: image) @@ -285,7 +289,8 @@ extension NextUpEntryView { func large(items: [(BaseItemDto, UIImage?)]) -> some View { VStack(spacing: 0) { if let firstItem = items[safe: 0] { - Link(destination: URL(string: "widget-extension://Users/\(SessionManager.current.user.user_id!)/Items/\(firstItem.0.id!)")!, + let url = URL(string: "widget-extension://Users/\(SessionManager.main.currentLogin.user.id)/Items/\(firstItem.0.id!)")! + Link(destination: url, label: { ZStack(alignment: .topTrailing) { ZStack(alignment: .bottomLeading) { From e81b593fa11197a92d539258d5fc090ad4d0fe12 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Wed, 13 Oct 2021 19:24:50 -0600 Subject: [PATCH 04/88] Add UserLoginView --- JellyfinPlayer tvOS/SettingsView.swift | 7 +- JellyfinPlayer.xcodeproj/project.pbxproj | 18 ++ .../AppURLHandler/AppURLHandler.swift | 2 +- .../ConnectToServerCoodinator.swift | 5 + .../Coordinators/MainCoordinator.swift | 8 +- .../Coordinators/ServerListCoordinator.swift | 3 - .../Coordinators/UserLoginCoordinator.swift | 28 +++ JellyfinPlayer/VideoPlayer.swift | 2 +- .../Views/ConnectToServerView.swift | 177 ------------------ JellyfinPlayer/Views/HomeView.swift | 1 + JellyfinPlayer/Views/ServerListView.swift | 34 +++- JellyfinPlayer/Views/SettingsView.swift | 5 +- JellyfinPlayer/Views/SplashView.swift | 2 +- JellyfinPlayer/Views/UserLoginView.swift | 51 +++++ Shared/Singleton/NotificationCenter.swift | 23 +++ Shared/Singleton/SessionManager.swift | 27 ++- .../ViewModels/ConnectToServerViewModel.swift | 5 +- Shared/ViewModels/SplashViewModel.swift | 3 +- Shared/ViewModels/UserLoginViewModel.swift | 18 +- 19 files changed, 197 insertions(+), 222 deletions(-) create mode 100644 JellyfinPlayer/Coordinators/UserLoginCoordinator.swift create mode 100644 JellyfinPlayer/Views/UserLoginView.swift create mode 100644 Shared/Singleton/NotificationCenter.swift diff --git a/JellyfinPlayer tvOS/SettingsView.swift b/JellyfinPlayer tvOS/SettingsView.swift index 97916b7c..e2e3ebea 100644 --- a/JellyfinPlayer tvOS/SettingsView.swift +++ b/JellyfinPlayer tvOS/SettingsView.swift @@ -67,18 +67,17 @@ struct SettingsView: View { Spacer() Button { DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - let nc = NotificationCenter.default - nc.post(name: Notification.Name("didSignOut"), object: nil) + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) } } label: { Text("Switch user").font(.callout) } } Button { + // TODO: remove delay DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { SessionManager.current.logout() - let nc = NotificationCenter.default - nc.post(name: Notification.Name("didSignOut"), object: nil) + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) } } label: { Text("Sign out").font(.callout) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index e4b17dd3..512282c8 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -276,6 +276,12 @@ E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; E13DD3EC27178A54009D4DAF /* UserLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */; }; E13DD3ED27178A54009D4DAF /* UserLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */; }; + E13DD3EF27178F87009D4DAF /* NotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* NotificationCenter.swift */; }; + E13DD3F027178F87009D4DAF /* NotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* NotificationCenter.swift */; }; + E13DD3F227179378009D4DAF /* UserLoginCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */; }; + E13DD3F327179378009D4DAF /* UserLoginCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */; }; + E13DD3F5271793BB009D4DAF /* UserLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserLoginView.swift */; }; + E13DD3F6271793BB009D4DAF /* UserLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserLoginView.swift */; }; E14F7D0726DB36EF007C3AE6 /* ItemPortraitMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */; }; E14F7D0926DB36F7007C3AE6 /* ItemLandscapeMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */; }; E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */; }; @@ -517,6 +523,9 @@ E13DD3E427177D15009D4DAF /* ServerListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListView.swift; sourceTree = ""; }; E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListCoordinator.swift; sourceTree = ""; }; E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginViewModel.swift; sourceTree = ""; }; + E13DD3EE27178F87009D4DAF /* NotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationCenter.swift; sourceTree = ""; }; + E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginCoordinator.swift; sourceTree = ""; }; + E13DD3F4271793BB009D4DAF /* UserLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginView.swift; sourceTree = ""; }; E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPortraitMainView.swift; sourceTree = ""; }; E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemLandscapeMainView.swift; sourceTree = ""; }; E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerDetailView.swift; sourceTree = ""; }; @@ -1029,6 +1038,7 @@ 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */, 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */, E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */, + E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */, 6220D0B026D5EC9900B8E046 /* SettingsCoordinator.swift */, 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */, ); @@ -1039,6 +1049,7 @@ isa = PBXGroup; children = ( 536D3D73267BA8170004248C /* BackgroundManager.swift */, + E13DD3EE27178F87009D4DAF /* NotificationCenter.swift */, 53649AB0269CFB1900A2D8B7 /* LogManager.swift */, 62EC352E267666A5000E9F2D /* SessionManager.swift */, ); @@ -1112,6 +1123,7 @@ E13DD3E427177D15009D4DAF /* ServerListView.swift */, 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, 625CB5672678B6FB00530A6E /* SplashView.swift */, + E13DD3F4271793BB009D4DAF /* UserLoginView.swift */, 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, ); path = Views; @@ -1541,11 +1553,13 @@ C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */, 53ABFDE9267974EF00886593 /* HomeViewModel.swift in Sources */, 53116A17268B919A003024C9 /* SeriesItemView.swift in Sources */, + E13DD3F027178F87009D4DAF /* NotificationCenter.swift in Sources */, E13DD3DA27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */, 531690E7267ABD79005D8AB9 /* HomeView.swift in Sources */, 53ABFDDE267974E300886593 /* SplashView.swift in Sources */, 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */, 62E632DE267D2E170063E547 /* LatestMediaViewModel.swift in Sources */, + E13DD3F327179378009D4DAF /* UserLoginCoordinator.swift in Sources */, E1FCD09726C47118007C8DCF /* ErrorMessage.swift in Sources */, E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */, 53116A19268B947A003024C9 /* PlainLinkButton.swift in Sources */, @@ -1609,6 +1623,7 @@ E1F0204F26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */, 53ABFDEB2679753200886593 /* ConnectToServerView.swift in Sources */, 536D3D76267BA9BB0004248C /* MainTabViewModel.swift in Sources */, + E13DD3F6271793BB009D4DAF /* UserLoginView.swift in Sources */, 5310695C2684E7EE00CFFDBA /* VideoPlayerViewController.swift in Sources */, C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */, 536D3D74267BA8170004248C /* BackgroundManager.swift in Sources */, @@ -1635,6 +1650,7 @@ 5364F455266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 6220D0B426D5ED8000B8E046 /* LibraryCoordinator.swift in Sources */, 6220D0C026D61C5000B8E046 /* ItemCoordinator.swift in Sources */, + E13DD3F227179378009D4DAF /* UserLoginCoordinator.swift in Sources */, 621338932660107500A81A2A /* StringExtensions.swift in Sources */, 53FF7F2A263CF3F500585C35 /* LatestMediaView.swift in Sources */, 62E632EC267D410B0063E547 /* SeriesItemViewModel.swift in Sources */, @@ -1682,6 +1698,7 @@ E188460026DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift in Sources */, 091B5A8B2683142E00D78B61 /* UDPBroadCastConnection.swift in Sources */, 6267B3D626710B8900A7371D /* CollectionExtensions.swift in Sources */, + E13DD3F5271793BB009D4DAF /* UserLoginView.swift in Sources */, E1F0204E26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */, 53649AB1269CFB1900A2D8B7 /* LogManager.swift in Sources */, E13DD3E127176BD3009D4DAF /* ServerListViewModel.swift in Sources */, @@ -1725,6 +1742,7 @@ 5338F74E263B61370014BF09 /* ConnectToServerView.swift in Sources */, 09389CC726819B4600AE350E /* VideoPlayerModel.swift in Sources */, 6220D0B726D5EE1100B8E046 /* SearchCoordinator.swift in Sources */, + E13DD3EF27178F87009D4DAF /* NotificationCenter.swift in Sources */, 5377CBF5263B596A003A4E83 /* JellyfinPlayerApp.swift in Sources */, E1FCD09626C47118007C8DCF /* ErrorMessage.swift in Sources */, 53EE24E6265060780068F029 /* LibrarySearchView.swift in Sources */, diff --git a/JellyfinPlayer/AppURLHandler/AppURLHandler.swift b/JellyfinPlayer/AppURLHandler/AppURLHandler.swift index 9dcb5eaf..4c64b916 100644 --- a/JellyfinPlayer/AppURLHandler/AppURLHandler.swift +++ b/JellyfinPlayer/AppURLHandler/AppURLHandler.swift @@ -82,7 +82,7 @@ extension AppURLHandler { // It would be nice if the ItemViewModel could be initialized to id later. getItem(userID: userID, itemID: itemID) { item in guard let item = item else { return } - NotificationCenter.default.post(name: Notification.Name("processDeepLink"), object: DeepLink.item(item)) + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.processDeepLink, object: DeepLink.item(item)) } return true diff --git a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift b/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift index 5f81bd85..4d3c49e0 100644 --- a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift +++ b/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift @@ -15,6 +15,11 @@ final class ConnectToServerCoodinator: NavigationCoordinatable { let stack = NavigationStack(initial: \ConnectToServerCoodinator.start) @Root var start = makeStart + @Route(.push) var userLogin = makeUserLogin + + func makeUserLogin(server: SwiftfinStore.Models.Server) -> UserLoginCoordinator { + return UserLoginCoordinator(viewModel: .init(server: server)) + } @ViewBuilder func makeStart() -> some View { ConnectToServerView() diff --git a/JellyfinPlayer/Coordinators/MainCoordinator.swift b/JellyfinPlayer/Coordinators/MainCoordinator.swift index 7b723617..4f50e0cf 100644 --- a/JellyfinPlayer/Coordinators/MainCoordinator.swift +++ b/JellyfinPlayer/Coordinators/MainCoordinator.swift @@ -37,10 +37,10 @@ import SwiftUI UIScrollView.appearance().keyboardDismissMode = .onDrag #endif - let nc = NotificationCenter.default - nc.addObserver(self, selector: #selector(didLogIn), name: Notification.Name("didSignIn"), object: nil) - nc.addObserver(self, selector: #selector(didLogOut), name: Notification.Name("didSignOut"), object: nil) - nc.addObserver(self, selector: #selector(processDeepLink), name: Notification.Name("processDeepLink"), object: nil) + let nc = SwiftfinNotificationCenter.main + nc.addObserver(self, selector: #selector(didLogIn), name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) + nc.addObserver(self, selector: #selector(didLogOut), name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) + nc.addObserver(self, selector: #selector(processDeepLink), name: SwiftfinNotificationCenter.Keys.processDeepLink, object: nil) } @objc func didLogIn() { diff --git a/JellyfinPlayer/Coordinators/ServerListCoordinator.swift b/JellyfinPlayer/Coordinators/ServerListCoordinator.swift index 0dbdb704..20ea321a 100644 --- a/JellyfinPlayer/Coordinators/ServerListCoordinator.swift +++ b/JellyfinPlayer/Coordinators/ServerListCoordinator.swift @@ -16,14 +16,11 @@ final class ServerListCoordinator: NavigationCoordinatable { @Root var start = makeStart @Route(.push) var connectToServer = makeConnectToServer -// @Route(.push) var loginUser = makeLoginuser func makeConnectToServer() -> ConnectToServerCoodinator { ConnectToServerCoodinator() } -// func makeLoginUser -> - @ViewBuilder func makeStart() -> some View { ServerListView(viewModel: ServerListViewModel()) } diff --git a/JellyfinPlayer/Coordinators/UserLoginCoordinator.swift b/JellyfinPlayer/Coordinators/UserLoginCoordinator.swift new file mode 100644 index 00000000..f40522a0 --- /dev/null +++ b/JellyfinPlayer/Coordinators/UserLoginCoordinator.swift @@ -0,0 +1,28 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import Stinsen +import SwiftUI + +final class UserLoginCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \UserLoginCoordinator.start) + + @Root var start = makeStart + + let viewModel: UserLoginViewModel + + init(viewModel: UserLoginViewModel) { + self.viewModel = viewModel + } + + @ViewBuilder func makeStart() -> some View { + UserLoginView(viewModel: viewModel) + } +} diff --git a/JellyfinPlayer/VideoPlayer.swift b/JellyfinPlayer/VideoPlayer.swift index 35c5f0c8..3585c916 100644 --- a/JellyfinPlayer/VideoPlayer.swift +++ b/JellyfinPlayer/VideoPlayer.swift @@ -539,7 +539,7 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe self.delegate?.exitPlayer(self) // TODO: todo // SessionManager.current.logout() - main?.root(\.connectToServer) + main?.root(\.serverList) case .error: self.delegate?.exitPlayer(self) } diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index fc923d2c..6792f388 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -72,180 +72,3 @@ struct ConnectToServerView: View { } } } - -//struct ConnectToServerView: View { -// @EnvironmentObject var mainRouter: MainCoordinator.Router -// @StateObject var viewModel = ConnectToServerViewModel() -// @State var username = "" -// @State var password = "" -// @State var uri = "" -// -// var body: some View { -// ZStack { -// Form { -// if viewModel.isConnectedServer { -// if viewModel.publicUsers.isEmpty { -// Section(header: Text("Login to \(SessionManager.main.currentLogin.server.name)")) { -// TextField(NSLocalizedString("Username", comment: ""), text: $username) -// .disableAutocorrection(true) -// .autocapitalization(.none) -// SecureField(NSLocalizedString("Password", comment: ""), text: $password) -// .disableAutocorrection(true) -// .autocapitalization(.none) -// Button { -// viewModel.login() -// } label: { -// HStack { -// Text("Login") -// Spacer() -// if viewModel.isLoading { -// ProgressView() -// } -// } -// }.disabled(viewModel.isLoading || username.isEmpty) -// } -// -// Section { -// Button { -// viewModel.isConnectedServer = false -// } label: { -// HStack { -// HStack { -// Image(systemName: "chevron.left") -// Text("Change Server") -// } -// Spacer() -// } -// } -// } -// } else { -// Section(header: Text("Login to \(SessionManager.main.currentLogin.server.name)")) { -// ForEach(viewModel.publicUsers, id: \.id) { publicUser in -// HStack { -// Button(action: { -// // TODO: todo -// print("TODO") -//// if SessionManager.current.doesUserHaveSavedSession(userID: publicUser.id!) { -//// let user = SessionManager.current.getSavedSession(userID: publicUser.id!) -//// SessionManager.current.loginWithSavedSession(user: user) -//// mainRouter.root(\.mainTab) -//// } else { -//// username = publicUser.name ?? "" -//// viewModel.selectedPublicUser = publicUser -//// viewModel.hidePublicUsers() -//// if !(publicUser.hasPassword ?? true) { -//// password = "" -//// DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { -//// viewModel.login() -//// } -//// } -//// } -// }) { -// HStack { -// Text(publicUser.name ?? "").font(.subheadline).fontWeight(.semibold) -// Spacer() -// if publicUser.primaryImageTag != nil { -// ImageView(src: URL(string: "\(SessionManager.main.currentLogin.server.uri)/Users/\(publicUser.id ?? "")/Images/Primary?width=60&quality=80&tag=\(publicUser.primaryImageTag!)")!) -// .frame(width: 60, height: 60) -// .cornerRadius(30.0) -// } else { -// Image(systemName: "person.fill") -// .foregroundColor(Color(red: 1, green: 1, blue: 1).opacity(0.8)) -// .font(.system(size: 35)) -// .frame(width: 60, height: 60) -// .background(Color(red: 98 / 255, green: 121 / 255, blue: 205 / 255)) -// .cornerRadius(30.0) -// .shadow(radius: 6) -// } -// } -// } -// } -// } -// } -// -// Section { -// Button { -// viewModel.publicUsers.removeAll() -// username = "" -// } label: { -// HStack { -// Text("Other User").font(.subheadline).fontWeight(.semibold) -// Spacer() -// Image(systemName: "person.fill.questionmark") -// .foregroundColor(Color(red: 1, green: 1, blue: 1).opacity(0.8)) -// .font(.system(size: 35)) -// .frame(width: 60, height: 60) -// .background(Color(red: 98 / 255, green: 121 / 255, blue: 205 / 255)) -// .cornerRadius(30.0) -// .shadow(radius: 6) -// } -// } -// } -// } -// } else { -// Section(header: Text("Connect Manually")) { -// TextField(NSLocalizedString("Server URL", comment: ""), text: $uri) -// .disableAutocorrection(true) -// .autocapitalization(.none) -// .keyboardType(.URL) -// Button { -// viewModel.connectToServer() -// } label: { -// HStack { -// Text("Connect") -// Spacer() -// if viewModel.isLoading { -// ProgressView() -// } -// } -// } -// .disabled(viewModel.isLoading || uri.isEmpty) -// } -// -// Section(header: Text("Discovered Servers")) { -// if self.viewModel.searching { -// ProgressView() -// } -// ForEach(self.viewModel.servers, id: \.id) { server in -// Button(action: { -// viewModel.connectToServer(at: server.url) -// }, label: { -// HStack { -// Text(server.name) -// .font(.headline) -// Text("• \(server.host)") -// .font(.subheadline) -// .foregroundColor(.secondary) -// Spacer() -// if viewModel.isLoading { -// ProgressView() -// } -// } -// -// }) -// } -// } -// .onAppear(perform: self.viewModel.discoverServers) -// } -// } -// } -// .onChange(of: uri) { uri in -// viewModel.uriSubject.send(uri) -// } -// .onChange(of: username) { username in -// viewModel.usernameSubject.send(username) -// } -// .onChange(of: password) { password in -// viewModel.passwordSubject.send(password) -// } -// .alert(item: $viewModel.errorMessage) { _ in -// Alert(title: Text("\(viewModel.errorMessage?.code ?? -1)\n\(viewModel.errorMessage?.title ?? "Error")"), -// message: Text(viewModel.errorMessage?.displayMessage ?? "Error"), -// dismissButton: .cancel()) -// } -// .navigationTitle(NSLocalizedString("Connect to Server", comment: "")) -// .onAppear { -// AppURLHandler.shared.appURLState = .allowedInLogin -// } -// } -//} diff --git a/JellyfinPlayer/Views/HomeView.swift b/JellyfinPlayer/Views/HomeView.swift index 05687d0e..d534f1af 100644 --- a/JellyfinPlayer/Views/HomeView.swift +++ b/JellyfinPlayer/Views/HomeView.swift @@ -14,6 +14,7 @@ struct HomeView: View { @EnvironmentObject var homeRouter: HomeCoordinator.Router @StateObject var viewModel = HomeViewModel() + // TODO: Move so that setup has same button init() { let backButtonBackgroundImage = UIImage(systemName: "chevron.backward.circle.fill") let barAppearance = UINavigationBar.appearance() diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index 9c208724..3fa614f9 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -7,6 +7,7 @@ * Copyright 2021 Aiden Vigue & Jellyfin Contributors */ +import CoreStore import SwiftUI struct ServerListView: View { @@ -22,13 +23,36 @@ struct ServerListView: View { } .navigationTitle("Servers") .toolbar { - ToolbarItem(placement: .navigationBarTrailing) { - Button { - serverListRouter.route(to: \.connectToServer) - } label: { - Text("Connect") + + ToolbarItemGroup(placement: .navigation) { + HStack { + Button { + serverListRouter.route(to: \.connectToServer) + } label: { + Text("Connect") + } + + Button { + SwiftfinStore.dataStack.perform(asynchronous: { transaction in + try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) + }) { _ in + viewModel.servers = [] + } + } label: { + Text("Purge") + } } } + +// ToolbarItem(placement: .navigationBarTrailing) { +// Button { +// serverListRouter.route(to: \.connectToServer) +// } label: { +// Text("Connect") +// } +// } } } } diff --git a/JellyfinPlayer/Views/SettingsView.swift b/JellyfinPlayer/Views/SettingsView.swift index 707b89e2..197bbe61 100644 --- a/JellyfinPlayer/Views/SettingsView.swift +++ b/JellyfinPlayer/Views/SettingsView.swift @@ -51,10 +51,9 @@ struct SettingsView: View { Button { settingsRouter.dismissCoordinator() DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - // TODO: todo + // TODO: todo and move notification somewhere else // SessionManager.current.logout() - let nc = NotificationCenter.default - nc.post(name: Notification.Name("didSignOut"), object: nil) + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) } } label: { Text("Sign out") diff --git a/JellyfinPlayer/Views/SplashView.swift b/JellyfinPlayer/Views/SplashView.swift index 1235572e..fd099537 100644 --- a/JellyfinPlayer/Views/SplashView.swift +++ b/JellyfinPlayer/Views/SplashView.swift @@ -20,7 +20,7 @@ struct SplashView: View { if flag { mainRouter.root(\.mainTab) } else { - mainRouter.root(\.connectToServer) + mainRouter.root(\.serverList) } } } diff --git a/JellyfinPlayer/Views/UserLoginView.swift b/JellyfinPlayer/Views/UserLoginView.swift new file mode 100644 index 00000000..b2810ba0 --- /dev/null +++ b/JellyfinPlayer/Views/UserLoginView.swift @@ -0,0 +1,51 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI +import Stinsen + +struct UserLoginView: View { + + @ObservedObject var viewModel: UserLoginViewModel + @State private var username: String = "" + @State private var password: String = "" + + var body: some View { + Form { + + Section { + TextField("Username", text: $username) + .disableAutocorrection(true) + .autocapitalization(.none) + + SecureField("Password", text: $password) + .disableAutocorrection(true) + .autocapitalization(.none) + + Button { + viewModel.login(username: username, password: password) + } label: { + HStack { + Text("Connect") + Spacer() + if viewModel.isLoading { + ProgressView() + } + } + } + .disabled(viewModel.isLoading || username.isEmpty) + + } header: { + // TODO: Server + Text("Login to \(viewModel.server.name)") + } + } + .navigationTitle("Login") + } +} diff --git a/Shared/Singleton/NotificationCenter.swift b/Shared/Singleton/NotificationCenter.swift new file mode 100644 index 00000000..6717d878 --- /dev/null +++ b/Shared/Singleton/NotificationCenter.swift @@ -0,0 +1,23 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation + +enum SwiftfinNotificationCenter { + + static let main: NotificationCenter = { + return NotificationCenter() + }() + + enum Keys { + static let didSignIn = Notification.Name("didSignIn") + static let didSignOut = Notification.Name("didSignOut") + static let processDeepLink = Notification.Name("processDeepLink") + } +} diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index 13096968..19732556 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -10,6 +10,7 @@ import Combine import CoreData import CoreStore +import Defaults import Foundation import JellyfinAPI import KeychainSwift @@ -17,6 +18,7 @@ import UIKit #if os(tvOS) import TVServices +import SwiftUIFocusGuide #endif typealias CurrentLogin = (server: SwiftfinStore.Models.Server, user: SwiftfinStore.Models.User) @@ -30,18 +32,18 @@ final class SessionManager { // MARK: main static let main = SessionManager() - private let JellyfinDefaults = UserDefaults(suiteName: "jellyfin-defaults")! - private init() { - if let lastServerUserID = SwiftfinStore.Defaults.suite[.lastServerUserID], - let userID = lastServerUserID.split(separator: "-")[safe: 1], + if let lastUserID = SwiftfinStore.Defaults.suite[.lastServerUserID], let user = try? SwiftfinStore.dataStack.fetchOne(From(), - [Where("id == %@", userID)]) { + [Where("id == %@", lastUserID)]) { + + // TODO: Fetch for right queue // Strongly assuming that we didn't delete the server associate with the user guard let server = user.server, let accessToken = user.accessToken else { return } + guard let existingServer = SwiftfinStore.dataStack.fetchExisting(server) else { return } setAuthHeader(with: accessToken.value) - currentLogin = (server: server, user: user) + currentLogin = (server: existingServer, user: user) } } @@ -115,7 +117,14 @@ final class SessionManager { .handleEvents(receiveOutput: { [unowned self] (user, transaction) in setAuthHeader(with: user.accessToken?.value ?? "") try? transaction.commitAndWait() - currentLogin = (server: server, user: user) + + // Fetch for the right queue + let currentServer = SwiftfinStore.dataStack.fetchExisting(server)! + let currentUser = SwiftfinStore.dataStack.fetchExisting(user)! + + SwiftfinStore.Defaults.suite[.lastServerUserID] = user.id + + currentLogin = (server: currentServer, user: currentUser) }) .map({ (user, _) in return user @@ -123,6 +132,10 @@ final class SessionManager { .eraseToAnyPublisher() } + func logout() { + // TODO: todo + } + private func setAuthHeader(with accessToken: String) { let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String var deviceName = UIDevice.current.name diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index d0479cbe..474018fe 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -14,7 +14,7 @@ import Stinsen final class ConnectToServerViewModel: ViewModel { - @RouterObject var main: MainCoordinator.Router? + @RouterObject var router: ConnectToServerCoodinator.Router? @Published var discoveredServers: Set = [] @Published var searching = false private let discovery = ServerDiscovery() @@ -33,8 +33,9 @@ final class ConnectToServerViewModel: ViewModel { .sink(receiveCompletion: { completion in self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "connectToServer", completion: completion) - }, receiveValue: { _ in + }, receiveValue: { server in LogManager.shared.log.debug("Connected to server at \"\(uri)\"", tag: "connectToServer") + self.router?.route(to: \.userLogin, server) }) .store(in: &cancellables) } diff --git a/Shared/ViewModels/SplashViewModel.swift b/Shared/ViewModels/SplashViewModel.swift index dbbe9a56..22d2c308 100644 --- a/Shared/ViewModels/SplashViewModel.swift +++ b/Shared/ViewModels/SplashViewModel.swift @@ -16,12 +16,13 @@ import UIKit import WidgetKit #endif +// TODO: Remove SplashViewModel + final class SplashViewModel: ViewModel { @Published var isLoggedIn: Bool = false override init() { - // TODO: Remove SplashViewModel isLoggedIn = SessionManager.main.currentLogin != nil super.init() diff --git a/Shared/ViewModels/UserLoginViewModel.swift b/Shared/ViewModels/UserLoginViewModel.swift index 103d884c..c177bcfe 100644 --- a/Shared/ViewModels/UserLoginViewModel.swift +++ b/Shared/ViewModels/UserLoginViewModel.swift @@ -7,16 +7,19 @@ * Copyright 2021 Aiden Vigue & Jellyfin Contributors */ +import CoreStore import Foundation import JellyfinAPI import Stinsen final class UserLoginViewModel: ViewModel { + @RouterObject var router: UserLoginCoordinator.Router? let server: SwiftfinStore.Models.Server init(server: SwiftfinStore.Models.Server) { - self.server = server + // Need to fetch for this context + self.server = SwiftfinStore.dataStack.fetchExisting(server)! } func login(username: String, password: String) { @@ -29,19 +32,8 @@ final class UserLoginViewModel: ViewModel { self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "login", completion: completion) } receiveValue: { user in - print(user) + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) } .store(in: &cancellables) -// -// -// SessionManager.current.login(username: username, password: password) -// .trackActivity(loading) -// .sink(receiveCompletion: { completion in -// self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "login", -// completion: completion) -// }, receiveValue: { [weak self] _ in -// self?.main?.root(\.mainTab) -// }) -// .store(in: &cancellables) } } From 67bfdcb207d673f0c0c79059ba2de2510cb83fc5 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Wed, 13 Oct 2021 22:25:57 -0600 Subject: [PATCH 05/88] Add state models and proper logout --- JellyfinPlayer.xcodeproj/project.pbxproj | 43 ++-------- .../ConnectToServerCoodinator.swift | 2 +- JellyfinPlayer/VideoPlayer.swift | 2 +- JellyfinPlayer/Views/ServerListView.swift | 13 +-- JellyfinPlayer/Views/SettingsView.swift | 10 ++- .../Model.xcdatamodeld/.xccurrentversion | 5 +- Shared/Singleton/SessionManager.swift | 54 +++++++------ ...swift => SwiftfinNotificationCenter.swift} | 0 Shared/SwiftfinStore/SwiftfinStore.swift | 79 ++++++++++++++++--- .../SwiftfinStore/SwiftfinStoreDefaults.swift | 4 - .../SwiftfinStore/SwiftfinStoreKeychain.swift | 33 -------- Shared/ViewModels/ServerListViewModel.swift | 4 +- Shared/ViewModels/UserLoginViewModel.swift | 7 +- 13 files changed, 125 insertions(+), 131 deletions(-) rename Shared/Singleton/{NotificationCenter.swift => SwiftfinNotificationCenter.swift} (100%) delete mode 100644 Shared/SwiftfinStore/SwiftfinStoreKeychain.swift diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 512282c8..17dd0180 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -62,7 +62,6 @@ 5358708D2669D7A800D05A09 /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 5358708C2669D7A800D05A09 /* KeychainSwift */; }; 535870912669D7A800D05A09 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 535870902669D7A800D05A09 /* Introspect */; }; 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5358709A2669D7A800D05A09 /* NukeUI */; }; - 535870A32669D89F00D05A09 /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */; }; 535870A52669D8AE00D05A09 /* ParallaxHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6225FCCA2663841E00E067F6 /* ParallaxHeader.swift */; }; 535870A62669D8AE00D05A09 /* LazyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338B22660A07800A81A2A /* LazyView.swift */; }; 535870A72669D8AE00D05A09 /* MultiSelectorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E4E648263F725B00F67C6B /* MultiSelectorView.swift */; }; @@ -91,7 +90,6 @@ 5377CBF5263B596A003A4E83 /* JellyfinPlayerApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */; }; 5377CBF9263B596B003A4E83 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5377CBF8263B596B003A4E83 /* Assets.xcassets */; }; 5377CBFC263B596B003A4E83 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5377CBFB263B596B003A4E83 /* Preview Assets.xcassets */; }; - 5377CC01263B596B003A4E83 /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */; }; 5389276E263C25100035E14B /* ContinueWatchingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5389276D263C25100035E14B /* ContinueWatchingView.swift */; }; 53892770263C25230035E14B /* NextUpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5389276F263C25230035E14B /* NextUpView.swift */; }; 53892772263C8C6F0035E14B /* LoadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53892771263C8C6F0035E14B /* LoadingView.swift */; }; @@ -205,7 +203,6 @@ 628B95332670CAEA0091AF3B /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 628B95322670CAEA0091AF3B /* NukeUI */; }; 628B95352670CAEA0091AF3B /* JellyfinAPI in Frameworks */ = {isa = PBXBuildFile; productRef = 628B95342670CAEA0091AF3B /* JellyfinAPI */; }; 628B95372670CB800091AF3B /* JellyfinWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 628B95362670CB800091AF3B /* JellyfinWidget.swift */; }; - 628B95382670CDAB0091AF3B /* Model.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */; }; 628B953A2670CE250091AF3B /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 628B95392670CE250091AF3B /* KeychainSwift */; }; 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338922660107500A81A2A /* StringExtensions.swift */; }; 62C29E9C26D0FE4200C1D2E7 /* Stinsen in Frameworks */ = {isa = PBXBuildFile; productRef = 62C29E9B26D0FE4200C1D2E7 /* Stinsen */; }; @@ -263,9 +260,6 @@ E13DD3D5271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */; }; E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */; }; E13DD3D7271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */; }; - E13DD3D927169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */; }; - E13DD3DA27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */; }; - E13DD3DB27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */; }; E13DD3DD27175CE3009D4DAF /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3DC27175CE3009D4DAF /* Defaults */; }; E13DD3DF27175CEA009D4DAF /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3DE27175CEA009D4DAF /* Defaults */; }; E13DD3E127176BD3009D4DAF /* ServerListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */; }; @@ -276,12 +270,13 @@ E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; E13DD3EC27178A54009D4DAF /* UserLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */; }; E13DD3ED27178A54009D4DAF /* UserLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */; }; - E13DD3EF27178F87009D4DAF /* NotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* NotificationCenter.swift */; }; - E13DD3F027178F87009D4DAF /* NotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* NotificationCenter.swift */; }; + E13DD3EF27178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; + E13DD3F027178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; E13DD3F227179378009D4DAF /* UserLoginCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */; }; E13DD3F327179378009D4DAF /* UserLoginCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */; }; E13DD3F5271793BB009D4DAF /* UserLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserLoginView.swift */; }; E13DD3F6271793BB009D4DAF /* UserLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserLoginView.swift */; }; + E13DD3F72717E87D009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; E14F7D0726DB36EF007C3AE6 /* ItemPortraitMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */; }; E14F7D0926DB36F7007C3AE6 /* ItemLandscapeMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */; }; E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */; }; @@ -418,7 +413,6 @@ 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinPlayerApp.swift; sourceTree = ""; }; 5377CBF8263B596B003A4E83 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 5377CBFB263B596B003A4E83 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 5377CC00263B596B003A4E83 /* JellyfinPlayer.xcdatamodel */ = {isa = PBXFileReference; explicitFileType = wrapper.xcdatamodel; path = JellyfinPlayer.xcdatamodel; sourceTree = ""; }; 5377CC02263B596B003A4E83 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 5389276D263C25100035E14B /* ContinueWatchingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContinueWatchingView.swift; sourceTree = ""; }; 5389276F263C25230035E14B /* NextUpView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextUpView.swift; sourceTree = ""; }; @@ -518,12 +512,11 @@ E13DD3C127164941009D4DAF /* SwiftfinStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinStore.swift; sourceTree = ""; }; E13DD3C727164B1E009D4DAF /* UIDeviceExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UIDeviceExtensions.swift; sourceTree = ""; }; E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinStoreDefaults.swift; sourceTree = ""; }; - E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinStoreKeychain.swift; sourceTree = ""; }; E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListViewModel.swift; sourceTree = ""; }; E13DD3E427177D15009D4DAF /* ServerListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListView.swift; sourceTree = ""; }; E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListCoordinator.swift; sourceTree = ""; }; E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginViewModel.swift; sourceTree = ""; }; - E13DD3EE27178F87009D4DAF /* NotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationCenter.swift; sourceTree = ""; }; + E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinNotificationCenter.swift; sourceTree = ""; }; E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginCoordinator.swift; sourceTree = ""; }; E13DD3F4271793BB009D4DAF /* UserLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginView.swift; sourceTree = ""; }; E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPortraitMainView.swift; sourceTree = ""; }; @@ -1049,9 +1042,9 @@ isa = PBXGroup; children = ( 536D3D73267BA8170004248C /* BackgroundManager.swift */, - E13DD3EE27178F87009D4DAF /* NotificationCenter.swift */, 53649AB0269CFB1900A2D8B7 /* LogManager.swift */, 62EC352E267666A5000E9F2D /* SessionManager.swift */, + E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */, ); path = Singleton; sourceTree = ""; @@ -1069,7 +1062,6 @@ isa = PBXGroup; children = ( AE8C3158265D6F90008AA076 /* bitrates.json */, - 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */, ); path = Resources; sourceTree = ""; @@ -1100,7 +1092,6 @@ children = ( E13DD3C127164941009D4DAF /* SwiftfinStore.swift */, E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */, - E13DD3D827169406009D4DAF /* SwiftfinStoreKeychain.swift */, ); path = SwiftfinStore; sourceTree = ""; @@ -1553,8 +1544,7 @@ C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */, 53ABFDE9267974EF00886593 /* HomeViewModel.swift in Sources */, 53116A17268B919A003024C9 /* SeriesItemView.swift in Sources */, - E13DD3F027178F87009D4DAF /* NotificationCenter.swift in Sources */, - E13DD3DA27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */, + E13DD3F027178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, 531690E7267ABD79005D8AB9 /* HomeView.swift in Sources */, 53ABFDDE267974E300886593 /* SplashView.swift in Sources */, 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */, @@ -1636,7 +1626,6 @@ E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */, E1AD105726D981CE003E4A08 /* PortraitHStackView.swift in Sources */, E13DD3C327164941009D4DAF /* SwiftfinStore.swift in Sources */, - 535870A32669D89F00D05A09 /* Model.xcdatamodeld in Sources */, 09389CC826819B4600AE350E /* VideoPlayerModel.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1693,7 +1682,6 @@ 532E68CF267D9F6B007B9F13 /* VideoPlayerCastDeviceSelector.swift in Sources */, E14F7D0926DB36F7007C3AE6 /* ItemLandscapeMainView.swift in Sources */, 532175402671EE4F005491E6 /* LibraryFilterView.swift in Sources */, - 5377CC01263B596B003A4E83 /* Model.xcdatamodeld in Sources */, 53DF641E263D9C0600A7CD1A /* LibraryView.swift in Sources */, E188460026DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift in Sources */, 091B5A8B2683142E00D78B61 /* UDPBroadCastConnection.swift in Sources */, @@ -1727,7 +1715,6 @@ 62E632E3267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, 091B5A8A2683142E00D78B61 /* ServerDiscovery.swift in Sources */, 62E632EF267D43320063E547 /* LibraryFilterViewModel.swift in Sources */, - E13DD3D927169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */, E13DD3C827164B1E009D4DAF /* UIDeviceExtensions.swift in Sources */, E1AD104D26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */, E13DD3BF27163DD7009D4DAF /* AppDelegate.swift in Sources */, @@ -1742,7 +1729,7 @@ 5338F74E263B61370014BF09 /* ConnectToServerView.swift in Sources */, 09389CC726819B4600AE350E /* VideoPlayerModel.swift in Sources */, 6220D0B726D5EE1100B8E046 /* SearchCoordinator.swift in Sources */, - E13DD3EF27178F87009D4DAF /* NotificationCenter.swift in Sources */, + E13DD3EF27178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, 5377CBF5263B596A003A4E83 /* JellyfinPlayerApp.swift in Sources */, E1FCD09626C47118007C8DCF /* ErrorMessage.swift in Sources */, 53EE24E6265060780068F029 /* LibrarySearchView.swift in Sources */, @@ -1765,13 +1752,12 @@ E1AD105426D97161003E4A08 /* BaseItemDtoExtensions.swift in Sources */, E1FCD09A26C4F35A007C8DCF /* ErrorMessage.swift in Sources */, 628B95272670CABD0091AF3B /* NextUpWidget.swift in Sources */, + E13DD3F72717E87D009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, 6220D0AF26D5EABE00B8E046 /* ViewExtensions.swift in Sources */, - 628B95382670CDAB0091AF3B /* Model.xcdatamodeld in Sources */, E13DD3D7271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, E1FCD09926C4F358007C8DCF /* NetworkError.swift in Sources */, E131691926C583BC0074BFEE /* LogConstructor.swift in Sources */, E13DD3CA27164B80009D4DAF /* SwiftfinStore.swift in Sources */, - E13DD3DB27169406009D4DAF /* SwiftfinStoreKeychain.swift in Sources */, 62EC353226766849000E9F2D /* SessionManager.swift in Sources */, 536D3D79267BD5D00004248C /* ViewModel.swift in Sources */, ); @@ -2526,19 +2512,6 @@ productName = Defaults; }; /* End XCSwiftPackageProductDependency section */ - -/* Begin XCVersionGroup section */ - 5377CBFF263B596B003A4E83 /* Model.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - 5377CC00263B596B003A4E83 /* JellyfinPlayer.xcdatamodel */, - ); - currentVersion = 5377CC00263B596B003A4E83 /* JellyfinPlayer.xcdatamodel */; - path = Model.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ }; rootObject = 5377CBE9263B596A003A4E83 /* Project object */; } diff --git a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift b/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift index 4d3c49e0..a191313d 100644 --- a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift +++ b/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift @@ -17,7 +17,7 @@ final class ConnectToServerCoodinator: NavigationCoordinatable { @Root var start = makeStart @Route(.push) var userLogin = makeUserLogin - func makeUserLogin(server: SwiftfinStore.Models.Server) -> UserLoginCoordinator { + func makeUserLogin(server: SwiftfinStore.State.Server) -> UserLoginCoordinator { return UserLoginCoordinator(viewModel: .init(server: server)) } diff --git a/JellyfinPlayer/VideoPlayer.swift b/JellyfinPlayer/VideoPlayer.swift index 3585c916..cddd460e 100644 --- a/JellyfinPlayer/VideoPlayer.swift +++ b/JellyfinPlayer/VideoPlayer.swift @@ -877,7 +877,7 @@ extension PlayerViewController: GCKGenericChannelDelegate { "command": command, "userId": SessionManager.main.currentLogin.user.id, // "deviceId": SessionManager.main.currentLogin.de.deviceID, - "accessToken": SessionManager.main.currentLogin.user.accessToken?.value ?? "", + "accessToken": SessionManager.main.currentLogin.user.accessToken, "serverAddress": SessionManager.main.currentLogin.server.uri, "serverId": SessionManager.main.currentLogin.server.id, "serverVersion": "10.8.0", diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index 3fa614f9..08167846 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -34,18 +34,18 @@ struct ServerListView: View { Button { SwiftfinStore.dataStack.perform(asynchronous: { transaction in - try! transaction.deleteAll(From()) - try! transaction.deleteAll(From()) - try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) }) { _ in - viewModel.servers = [] + SwiftfinStore.Defaults.suite[.lastServerUserID] = nil + viewModel.fetchServers() } } label: { Text("Purge") } } } - // ToolbarItem(placement: .navigationBarTrailing) { // Button { // serverListRouter.route(to: \.connectToServer) @@ -54,5 +54,8 @@ struct ServerListView: View { // } // } } + .onAppear { + viewModel.fetchServers() + } } } diff --git a/JellyfinPlayer/Views/SettingsView.swift b/JellyfinPlayer/Views/SettingsView.swift index 197bbe61..60faeee8 100644 --- a/JellyfinPlayer/Views/SettingsView.swift +++ b/JellyfinPlayer/Views/SettingsView.swift @@ -49,12 +49,14 @@ struct SettingsView: View { } Button { - settingsRouter.dismissCoordinator() - DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { + SessionManager.main.logout() + +// settingsRouter.dismissCoordinator() +// DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { // TODO: todo and move notification somewhere else // SessionManager.current.logout() - SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) - } +// SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) +// } } label: { Text("Sign out") .font(.callout) diff --git a/Shared/Resources/Model.xcdatamodeld/.xccurrentversion b/Shared/Resources/Model.xcdatamodeld/.xccurrentversion index ea5bdb72..0c67376e 100644 --- a/Shared/Resources/Model.xcdatamodeld/.xccurrentversion +++ b/Shared/Resources/Model.xcdatamodeld/.xccurrentversion @@ -1,8 +1,5 @@ - - _XCCurrentVersionName - JellyfinPlayer.xcdatamodel - + diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index 19732556..db9ba4ec 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -21,7 +21,7 @@ import TVServices import SwiftUIFocusGuide #endif -typealias CurrentLogin = (server: SwiftfinStore.Models.Server, user: SwiftfinStore.Models.User) +typealias CurrentLogin = (server: SwiftfinStore.State.Server, user: SwiftfinStore.State.User) // MARK: NewSessionManager final class SessionManager { @@ -34,30 +34,28 @@ final class SessionManager { private init() { if let lastUserID = SwiftfinStore.Defaults.suite[.lastServerUserID], - let user = try? SwiftfinStore.dataStack.fetchOne(From(), - [Where("id == %@", lastUserID)]) { + let user = try? SwiftfinStore.dataStack.fetchOne(From(), + [Where("id == %@", lastUserID)]) { - // TODO: Fetch for right queue - // Strongly assuming that we didn't delete the server associate with the user - guard let server = user.server, let accessToken = user.accessToken else { return } + guard let server = user.server, let accessToken = user.accessToken else { fatalError("No associated server or access token for last user?") } guard let existingServer = SwiftfinStore.dataStack.fetchExisting(server) else { return } setAuthHeader(with: accessToken.value) - currentLogin = (server: existingServer, user: user) + currentLogin = (server: existingServer.state, user: user.state) } } - private func generateServerUserID(server: SwiftfinStore.Models.Server, user: SwiftfinStore.Models.User) -> String { + private func generateServerUserID(server: SwiftfinStore.Models.StoredServer, user: SwiftfinStore.Models.StoredUser) -> String { return "\(server.id)-\(user.id)" } - func fetchServers() -> [SwiftfinStore.Models.Server] { - let servers = try! SwiftfinStore.dataStack.fetchAll(From()) - return servers + func fetchServers() -> [SwiftfinStore.State.Server] { + let servers = try! SwiftfinStore.dataStack.fetchAll(From()) + return servers.map({ $0.state }) } // Connects to a server at the given uri, storing if successful - func connectToServer(with uri: String) -> AnyPublisher { + func connectToServer(with uri: String) -> AnyPublisher { var uri = uri if !uri.contains("http") { uri = "https://" + uri @@ -69,9 +67,9 @@ final class SessionManager { JellyfinAPI.basePath = uri return SystemAPI.getPublicSystemInfo() - .map({ response -> (SwiftfinStore.Models.Server, UnsafeDataTransaction) in + .map({ response -> (SwiftfinStore.Models.StoredServer, UnsafeDataTransaction) in let transaction = SwiftfinStore.dataStack.beginUnsafe() - let newServer = transaction.create(Into()) + let newServer = transaction.create(Into()) newServer.uri = response.localAddress ?? "SfUri" newServer.name = response.serverName ?? "SfServerName" newServer.id = response.id ?? "" @@ -85,36 +83,39 @@ final class SessionManager { try? transaction.commitAndWait() }) .map({ (server, _) in - return server + return server.state }) .eraseToAnyPublisher() } // Logs in a user with an associated server, storing if successful - func loginUser(server: SwiftfinStore.Models.Server, username: String, password: String) -> AnyPublisher { + func loginUser(server: SwiftfinStore.State.Server, username: String, password: String) -> AnyPublisher { setAuthHeader(with: "") return UserAPI.authenticateUserByName(authenticateUserByName: AuthenticateUserByName(username: username, pw: password)) - .map({ response -> (SwiftfinStore.Models.User, UnsafeDataTransaction) in + .map({ response -> (SwiftfinStore.Models.StoredServer, SwiftfinStore.Models.StoredUser, UnsafeDataTransaction) in guard let accessToken = response.accessToken else { fatalError("Received successful user with no access token") } let transaction = SwiftfinStore.dataStack.beginUnsafe() - let newUser = transaction.create(Into()) + let newUser = transaction.create(Into()) newUser.username = response.user?.name ?? "SfUsername" newUser.id = response.user?.id ?? "SfID" newUser.appleTVID = "" - let newAccessToken = transaction.create(Into()) + let newAccessToken = transaction.create(Into()) newAccessToken.value = accessToken newUser.accessToken = newAccessToken - let userServer = transaction.edit(server) - userServer?.users.insert(newUser) + guard let userServer = try? SwiftfinStore.dataStack.fetchOne(From(), + [Where("id == %@", server.id)]) else { fatalError("No stored server associated with given state server?")} - return (newUser, transaction) + guard let editUserServer = transaction.edit(userServer) else { fatalError("Can't get proxy for existing object?") } + editUserServer.users.insert(newUser) + + return (editUserServer, newUser, transaction) }) - .handleEvents(receiveOutput: { [unowned self] (user, transaction) in + .handleEvents(receiveOutput: { [unowned self] (server, user, transaction) in setAuthHeader(with: user.accessToken?.value ?? "") try? transaction.commitAndWait() @@ -124,16 +125,17 @@ final class SessionManager { SwiftfinStore.Defaults.suite[.lastServerUserID] = user.id - currentLogin = (server: currentServer, user: currentUser) + currentLogin = (server: currentServer.state, user: currentUser.state) }) - .map({ (user, _) in + .map({ (_, user, _) in return user }) .eraseToAnyPublisher() } func logout() { - // TODO: todo + SwiftfinStore.Defaults.suite[.lastServerUserID] = nil + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) } private func setAuthHeader(with accessToken: String) { diff --git a/Shared/Singleton/NotificationCenter.swift b/Shared/Singleton/SwiftfinNotificationCenter.swift similarity index 100% rename from Shared/Singleton/NotificationCenter.swift rename to Shared/Singleton/SwiftfinNotificationCenter.swift diff --git a/Shared/SwiftfinStore/SwiftfinStore.swift b/Shared/SwiftfinStore/SwiftfinStore.swift index c30ca41b..f97ef347 100644 --- a/Shared/SwiftfinStore/SwiftfinStore.swift +++ b/Shared/SwiftfinStore/SwiftfinStore.swift @@ -13,9 +13,46 @@ import Defaults enum SwiftfinStore { + // Safe, copyable representations of their underlying CoreStoredObject's + // Relationships are represented by the related object's IDs or value + enum State { + + struct Server { + let uri: String + let name: String + let id: String + let os: String + let version: String + let userIDs: [String] + + fileprivate init(uri: String, name: String, id: String, os: String, version: String, usersIDs: [String]) { + self.uri = uri + self.name = name + self.id = id + self.os = os + self.version = version + self.userIDs = usersIDs + } + } + + struct User { + let username: String + let id: String + let serverID: String + let accessToken: String + + fileprivate init(username: String, id: String, serverID: String, accessToken: String) { + self.username = username + self.id = id + self.serverID = serverID + self.accessToken = accessToken + } + } + } + enum Models { - final class Server: CoreStoreObject { + final class StoredServer: CoreStoreObject { @Field.Stored("uri") var uri: String = "" @@ -32,11 +69,20 @@ enum SwiftfinStore { @Field.Stored("version") var version: String = "" - @Field.Relationship("users", inverse: \User.$server) - var users: Set + @Field.Relationship("users", inverse: \StoredUser.$server) + var users: Set + + var state: State.Server { + return State.Server(uri: uri, + name: name, + id: id, + os: os, + version: version, + usersIDs: users.map({ $0.id })) + } } - final class User: CoreStoreObject { + final class StoredUser: CoreStoreObject { @Field.Stored("username") var username: String = "" @@ -48,28 +94,37 @@ enum SwiftfinStore { var appleTVID: String = "" @Field.Relationship("server") - var server: Server? + var server: StoredServer? - @Field.Relationship("accessToken", inverse: \AccessToken.$user) - var accessToken: AccessToken? + @Field.Relationship("accessToken", inverse: \StoredAccessToken.$user) + var accessToken: StoredAccessToken? + + var state: State.User { + guard let server = server else { fatalError("No server associated with user") } + guard let accessToken = accessToken else { fatalError("No access token associated with user") } + return State.User(username: username, + id: id, + serverID: server.id, + accessToken: accessToken.value) + } } - final class AccessToken: CoreStoreObject { + final class StoredAccessToken: CoreStoreObject { @Field.Stored("value") var value: String = "" @Field.Relationship("user") - var user: User? + var user: StoredUser? } } static let dataStack: DataStack = { let schema = CoreStoreSchema(modelVersion: "V1", entities: [ - Entity("Server"), - Entity("User"), - Entity("AccessToken") + Entity("Server"), + Entity("User"), + Entity("AccessToken") ], versionLock: nil) // TODO: todo diff --git a/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift b/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift index 7d6d7d30..3907fdf2 100644 --- a/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift +++ b/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift @@ -17,10 +17,6 @@ extension SwiftfinStore { static let suite: UserDefaults = { return UserDefaults(suiteName: "swiftfinstore-defaults")! }() - -// enum Keys { -// static let lastUserID = Defaults.Key("lastUserID", suite: SwiftfinStore.Defaults.suite) -// } } } diff --git a/Shared/SwiftfinStore/SwiftfinStoreKeychain.swift b/Shared/SwiftfinStore/SwiftfinStoreKeychain.swift deleted file mode 100644 index 31368ccf..00000000 --- a/Shared/SwiftfinStore/SwiftfinStoreKeychain.swift +++ /dev/null @@ -1,33 +0,0 @@ -// - /* - * SwiftFin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import Foundation -import KeychainSwift - -extension SwiftfinStore { - - enum Keychain { - - private static let keychainAccessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" - - private static let keychain: KeychainSwift = { - let keychain = KeychainSwift() - keychain.accessGroup = keychainAccessGroup - return keychain - }() - - static func getAuthToken(serverUserID: String) -> String? { - return keychain.get("AccessToken_\(serverUserID)") - } - - static func delete(serverUserID: String) { - // TODO: todo - } - } -} diff --git a/Shared/ViewModels/ServerListViewModel.swift b/Shared/ViewModels/ServerListViewModel.swift index d77c7225..94293adf 100644 --- a/Shared/ViewModels/ServerListViewModel.swift +++ b/Shared/ViewModels/ServerListViewModel.swift @@ -12,9 +12,9 @@ import SwiftUI class ServerListViewModel: ObservableObject { - @Published var servers: [SwiftfinStore.Models.Server] = [] + @Published var servers: [SwiftfinStore.State.Server] = [] - init() { + func fetchServers() { self.servers = SessionManager.main.fetchServers() } } diff --git a/Shared/ViewModels/UserLoginViewModel.swift b/Shared/ViewModels/UserLoginViewModel.swift index c177bcfe..33e90dad 100644 --- a/Shared/ViewModels/UserLoginViewModel.swift +++ b/Shared/ViewModels/UserLoginViewModel.swift @@ -15,11 +15,10 @@ import Stinsen final class UserLoginViewModel: ViewModel { @RouterObject var router: UserLoginCoordinator.Router? - let server: SwiftfinStore.Models.Server + let server: SwiftfinStore.State.Server - init(server: SwiftfinStore.Models.Server) { - // Need to fetch for this context - self.server = SwiftfinStore.dataStack.fetchExisting(server)! + init(server: SwiftfinStore.State.Server) { + self.server = server } func login(username: String, password: String) { From c69df2c7c4ebbeba8d50348b051b1446d44a1edf Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Wed, 13 Oct 2021 22:26:53 -0600 Subject: [PATCH 06/88] User state map from login --- Shared/Singleton/SessionManager.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index db9ba4ec..c781775c 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -89,7 +89,7 @@ final class SessionManager { } // Logs in a user with an associated server, storing if successful - func loginUser(server: SwiftfinStore.State.Server, username: String, password: String) -> AnyPublisher { + func loginUser(server: SwiftfinStore.State.Server, username: String, password: String) -> AnyPublisher { setAuthHeader(with: "") return UserAPI.authenticateUserByName(authenticateUserByName: AuthenticateUserByName(username: username, pw: password)) @@ -128,7 +128,7 @@ final class SessionManager { currentLogin = (server: currentServer.state, user: currentUser.state) }) .map({ (_, user, _) in - return user + return user.state }) .eraseToAnyPublisher() } From 1d6047840fe7064d2c651cf6617af68848584770 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Wed, 13 Oct 2021 23:09:41 -0600 Subject: [PATCH 07/88] Add UserList for server --- JellyfinPlayer.xcodeproj/project.pbxproj | 20 +- .../Coordinators/ServerListCoordinator.swift | 5 + .../Coordinators/UserListCoordinator.swift | 33 ++++ .../Views/ConnectToServerView.swift | 1 - JellyfinPlayer/Views/ServerListView.swift | 7 +- JellyfinPlayer/Views/UserListView.swift | 49 +++++ Shared/Singleton/SessionManager.swift | 186 ++---------------- Shared/ViewModels/LatestMediaViewModel.swift | 2 +- Shared/ViewModels/UserListViewModel.swift | 32 +++ Shared/ViewModels/UserLoginViewModel.swift | 1 - 10 files changed, 161 insertions(+), 175 deletions(-) create mode 100644 JellyfinPlayer/Coordinators/UserListCoordinator.swift create mode 100644 JellyfinPlayer/Views/UserListView.swift create mode 100644 Shared/ViewModels/UserListViewModel.swift diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 17dd0180..5ea37e3e 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -277,6 +277,12 @@ E13DD3F5271793BB009D4DAF /* UserLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserLoginView.swift */; }; E13DD3F6271793BB009D4DAF /* UserLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserLoginView.swift */; }; E13DD3F72717E87D009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; + E13DD3F92717E961009D4DAF /* UserListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F82717E961009D4DAF /* UserListViewModel.swift */; }; + E13DD3FA2717E961009D4DAF /* UserListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F82717E961009D4DAF /* UserListViewModel.swift */; }; + E13DD3FC2717EAE8009D4DAF /* UserListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3FB2717EAE8009D4DAF /* UserListView.swift */; }; + E13DD3FD2717EAE8009D4DAF /* UserListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3FB2717EAE8009D4DAF /* UserListView.swift */; }; + E13DD4022717EE79009D4DAF /* UserListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */; }; + E13DD4032717EE79009D4DAF /* UserListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */; }; E14F7D0726DB36EF007C3AE6 /* ItemPortraitMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */; }; E14F7D0926DB36F7007C3AE6 /* ItemLandscapeMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */; }; E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */; }; @@ -519,6 +525,9 @@ E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinNotificationCenter.swift; sourceTree = ""; }; E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginCoordinator.swift; sourceTree = ""; }; E13DD3F4271793BB009D4DAF /* UserLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginView.swift; sourceTree = ""; }; + E13DD3F82717E961009D4DAF /* UserListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserListViewModel.swift; sourceTree = ""; }; + E13DD3FB2717EAE8009D4DAF /* UserListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserListView.swift; sourceTree = ""; }; + E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserListCoordinator.swift; sourceTree = ""; }; E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPortraitMainView.swift; sourceTree = ""; }; E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemLandscapeMainView.swift; sourceTree = ""; }; E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerDetailView.swift; sourceTree = ""; }; @@ -643,6 +652,7 @@ E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */, 5321753A2671BCFC005491E6 /* SettingsViewModel.swift */, 625CB5692678B71200530A6E /* SplashViewModel.swift */, + E13DD3F82717E961009D4DAF /* UserListViewModel.swift */, E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */, 09389CC626819B4500AE350E /* VideoPlayerModel.swift */, 625CB57B2678CE1000530A6E /* ViewModel.swift */, @@ -1031,8 +1041,9 @@ 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */, 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */, E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */, - E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */, 6220D0B026D5EC9900B8E046 /* SettingsCoordinator.swift */, + E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */, + E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */, 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */, ); path = Coordinators; @@ -1114,6 +1125,7 @@ E13DD3E427177D15009D4DAF /* ServerListView.swift */, 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, 625CB5672678B6FB00530A6E /* SplashView.swift */, + E13DD3FB2717EAE8009D4DAF /* UserListView.swift */, E13DD3F4271793BB009D4DAF /* UserLoginView.swift */, 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, ); @@ -1546,6 +1558,7 @@ 53116A17268B919A003024C9 /* SeriesItemView.swift in Sources */, E13DD3F027178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, 531690E7267ABD79005D8AB9 /* HomeView.swift in Sources */, + E13DD3FA2717E961009D4DAF /* UserListViewModel.swift in Sources */, 53ABFDDE267974E300886593 /* SplashView.swift in Sources */, 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */, 62E632DE267D2E170063E547 /* LatestMediaViewModel.swift in Sources */, @@ -1584,6 +1597,7 @@ 531690F0267ABF72005D8AB9 /* NextUpView.swift in Sources */, 535870A72669D8AE00D05A09 /* MultiSelectorView.swift in Sources */, E1AD104E26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */, + E13DD4032717EE79009D4DAF /* UserListCoordinator.swift in Sources */, 62E632DD267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */, 536D3D81267BDFC60004248C /* PortraitItemElement.swift in Sources */, 531690E5267ABD5C005D8AB9 /* MainTabView.swift in Sources */, @@ -1599,6 +1613,7 @@ 5358706C2669D21700D05A09 /* PersistenceController.swift in Sources */, 53649AB2269D019100A2D8B7 /* LogManager.swift in Sources */, E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, + E13DD3FD2717EAE8009D4DAF /* UserListView.swift in Sources */, 535870AA2669D8AE00D05A09 /* BlurHashDecode.swift in Sources */, 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */, C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, @@ -1693,6 +1708,7 @@ 62E632E9267D3FF50063E547 /* SeasonItemViewModel.swift in Sources */, 625CB56A2678B71200530A6E /* SplashViewModel.swift in Sources */, 62E632F3267D54030063E547 /* ItemViewModel.swift in Sources */, + E13DD3FC2717EAE8009D4DAF /* UserListView.swift in Sources */, 6220D0CC26D640C400B8E046 /* AppURLHandler.swift in Sources */, 62E632F3267D54030063E547 /* ItemViewModel.swift in Sources */, 53DE4BD2267098F300739748 /* SearchBarView.swift in Sources */, @@ -1725,12 +1741,14 @@ 6267B3DA2671138200A7371D /* ImageExtensions.swift in Sources */, 62EC353426766B03000E9F2D /* DeviceRotationViewModifier.swift in Sources */, 5389277C263CC3DB0035E14B /* BlurHashDecode.swift in Sources */, + E13DD3F92717E961009D4DAF /* UserListViewModel.swift in Sources */, 539B2DA5263BA5B8007FF1A4 /* SettingsView.swift in Sources */, 5338F74E263B61370014BF09 /* ConnectToServerView.swift in Sources */, 09389CC726819B4600AE350E /* VideoPlayerModel.swift in Sources */, 6220D0B726D5EE1100B8E046 /* SearchCoordinator.swift in Sources */, E13DD3EF27178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, 5377CBF5263B596A003A4E83 /* JellyfinPlayerApp.swift in Sources */, + E13DD4022717EE79009D4DAF /* UserListCoordinator.swift in Sources */, E1FCD09626C47118007C8DCF /* ErrorMessage.swift in Sources */, 53EE24E6265060780068F029 /* LibrarySearchView.swift in Sources */, 53892772263C8C6F0035E14B /* LoadingView.swift in Sources */, diff --git a/JellyfinPlayer/Coordinators/ServerListCoordinator.swift b/JellyfinPlayer/Coordinators/ServerListCoordinator.swift index 20ea321a..c4d75acf 100644 --- a/JellyfinPlayer/Coordinators/ServerListCoordinator.swift +++ b/JellyfinPlayer/Coordinators/ServerListCoordinator.swift @@ -16,11 +16,16 @@ final class ServerListCoordinator: NavigationCoordinatable { @Root var start = makeStart @Route(.push) var connectToServer = makeConnectToServer + @Route(.push) var userList = makeUserList func makeConnectToServer() -> ConnectToServerCoodinator { ConnectToServerCoodinator() } + func makeUserList(server: SwiftfinStore.State.Server) -> UserListCoordinator { + UserListCoordinator(viewModel: .init(server: server)) + } + @ViewBuilder func makeStart() -> some View { ServerListView(viewModel: ServerListViewModel()) } diff --git a/JellyfinPlayer/Coordinators/UserListCoordinator.swift b/JellyfinPlayer/Coordinators/UserListCoordinator.swift new file mode 100644 index 00000000..7b94eea8 --- /dev/null +++ b/JellyfinPlayer/Coordinators/UserListCoordinator.swift @@ -0,0 +1,33 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import Stinsen +import SwiftUI + +final class UserListCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \UserListCoordinator.start) + + @Root var start = makeStart + @Route(.push) var userLogin = makeUserLogin + + let viewModel: UserListViewModel + + init(viewModel: UserListViewModel) { + self.viewModel = viewModel + } + + func makeUserLogin(server: SwiftfinStore.State.Server) -> UserLoginCoordinator { + return UserLoginCoordinator(viewModel: .init(server: server)) + } + + @ViewBuilder func makeStart() -> some View { + UserListView(viewModel: viewModel) + } +} diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index 6792f388..51443ad1 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -10,7 +10,6 @@ import Stinsen struct ConnectToServerView: View { - @EnvironmentObject var mainRouter: MainCoordinator.Router @StateObject var viewModel = ConnectToServerViewModel() @State var uri = "" diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index 08167846..883f1c7f 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -18,12 +18,15 @@ struct ServerListView: View { var body: some View { List { ForEach(viewModel.servers, id: \.id) { server in - Text(server.name) + Button { + serverListRouter.route(to: \.userList, server) + } label: { + Text(server.name) + } } } .navigationTitle("Servers") .toolbar { - ToolbarItemGroup(placement: .navigation) { HStack { Button { diff --git a/JellyfinPlayer/Views/UserListView.swift b/JellyfinPlayer/Views/UserListView.swift new file mode 100644 index 00000000..0a5cf488 --- /dev/null +++ b/JellyfinPlayer/Views/UserListView.swift @@ -0,0 +1,49 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI + +struct UserListView: View { + + @EnvironmentObject var userListRouter: UserListCoordinator.Router + @ObservedObject var viewModel: UserListViewModel + + var body: some View { + List { + ForEach(viewModel.users, id: \.id) { user in + Button { + viewModel.login(user: user) + } label: { + HStack { + Text(user.username) + Spacer() + if viewModel.isLoading { + ProgressView() + } + } + } + } + } + .navigationTitle("Users") + .toolbar { + ToolbarItem(placement: .navigation) { + HStack { + Button { + userListRouter.route(to: \.userLogin, viewModel.server) + } label: { + Text("Connect") + } + } + } + } + .onAppear { + viewModel.fetchUsers() + } + } +} diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index c781775c..ea940b66 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -54,6 +54,13 @@ final class SessionManager { return servers.map({ $0.state }) } + func fetchUsers(for server: SwiftfinStore.State.Server) -> [SwiftfinStore.State.User] { + guard let storedServer = try? SwiftfinStore.dataStack.fetchOne(From(), + Where("id == %@", server.id)) + else { fatalError("No stored server associated with given state server?") } + return storedServer.users.map({ $0.state }).sorted(by: { $0.username < $1.username }) + } + // Connects to a server at the given uri, storing if successful func connectToServer(with uri: String) -> AnyPublisher { var uri = uri @@ -108,7 +115,8 @@ final class SessionManager { newUser.accessToken = newAccessToken guard let userServer = try? SwiftfinStore.dataStack.fetchOne(From(), - [Where("id == %@", server.id)]) else { fatalError("No stored server associated with given state server?")} + [Where("id == %@", server.id)]) + else { fatalError("No stored server associated with given state server?") } guard let editUserServer = transaction.edit(userServer) else { fatalError("Can't get proxy for existing object?") } editUserServer.users.insert(newUser) @@ -133,7 +141,15 @@ final class SessionManager { .eraseToAnyPublisher() } + func loginUser(server: SwiftfinStore.State.Server, user: SwiftfinStore.State.User) { + JellyfinAPI.basePath = server.uri + setAuthHeader(with: user.accessToken) + currentLogin = (server: server, user: user) + } + func logout() { + JellyfinAPI.basePath = "" + setAuthHeader(with: "") SwiftfinStore.Defaults.suite[.lastServerUserID] = nil SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) } @@ -161,171 +177,3 @@ final class SessionManager { JellyfinAPI.customHeaders["X-Emby-Authorization"] = header } } - -//final class SessionManager { -// static let current = SessionManager() -// fileprivate(set) var user: SignedInUser! -// fileprivate(set) var deviceID: String = "" -// fileprivate(set) var accessToken: String = "" -// -// #if os(tvOS) -// let tvUserManager = TVUserManager() -// #endif -// let userDefaults = UserDefaults() -// -// init() { -// let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() -// let lastUsedUserID = userDefaults.string(forKey: "lastUsedUserID") -// let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) -// -// #if os(tvOS) -// savedUsers?.forEach { savedUser in -// if savedUser.appletv_id == tvUserManager.currentUserIdentifier ?? "" { -// self.user = savedUser -// } -// } -// #else -// if lastUsedUserID != nil { -// savedUsers?.forEach { savedUser in -// if savedUser.user_id ?? "" == lastUsedUserID! { -// user = savedUser -// } -// } -// } else { -// user = savedUsers?.first -// } -// #endif -// -// if user != nil { -// let authToken = getAuthToken(userID: user.user_id!) -// generateAuthHeader(with: authToken, deviceID: user.device_uuid) -// } -// } -// -// fileprivate func generateAuthHeader(with authToken: String?, deviceID devID: String?) { -// let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String -// var deviceName = UIDevice.current.name -// deviceName = deviceName.folding(options: .diacriticInsensitive, locale: .current) -// deviceName = String(deviceName.unicodeScalars.filter {CharacterSet.urlQueryAllowed.contains($0) }) -// -// var header = "MediaBrowser " -// #if os(tvOS) -// header.append("Client=\"Jellyfin tvOS\", ") -// #else -// header.append("Client=\"SwiftFin iOS\", ") -// #endif -// -// header.append("Device=\"\(deviceName)\", ") -// -// if devID == nil { -// LogManager.shared.log.info("Generating device ID...") -// #if os(tvOS) -// header.append("DeviceId=\"tvOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))\", ") -// deviceID = "tvOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))" -// #else -// header.append("DeviceId=\"iOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))\", ") -// deviceID = "iOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))" -// #endif -// } else { -// LogManager.shared.log.info("Using stored device ID...") -// header.append("DeviceId=\"\(devID!)\", ") -// deviceID = devID! -// } -// -// header.append("Version=\"\(appVersion ?? "0.0.1")\", ") -// -// if authToken != nil { -// header.append("Token=\"\(authToken!)\"") -// accessToken = authToken! -// } -// -// JellyfinAPI.customHeaders["X-Emby-Authorization"] = header -// } -// -// fileprivate func getAuthToken(userID: String) -> String? { -// let keychain = KeychainSwift() -// keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" -// return keychain.get("AccessToken_\(userID)") -// } -// -// func doesUserHaveSavedSession(userID: String) -> Bool { -// let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() -// savedUserRequest.predicate = NSPredicate(format: "user_id == %@", userID) -// let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) -// -// if savedUsers!.isEmpty { -// return false -// } -// -// return true -// } -// -// func getSavedSession(userID: String) -> SignedInUser { -// let savedUserRequest: NSFetchRequest = SignedInUser.fetchRequest() -// savedUserRequest.predicate = NSPredicate(format: "user_id == %@", userID) -// let savedUsers = try? PersistenceController.shared.container.viewContext.fetch(savedUserRequest) -// return savedUsers!.first! -// } -// -// func loginWithSavedSession(user: SignedInUser) { -// let accessToken = getAuthToken(userID: user.user_id!) -// userDefaults.set(user.user_id!, forKey: "lastUsedUserID") -// self.user = user -// generateAuthHeader(with: accessToken, deviceID: user.device_uuid) -// print(JellyfinAPI.customHeaders) -// let nc = NotificationCenter.default -// nc.post(name: Notification.Name("didSignIn"), object: nil) -// } -// -// func login(username: String, password: String) -> AnyPublisher { -// generateAuthHeader(with: nil, deviceID: nil) -// -// return UserAPI.authenticateUserByName(authenticateUserByName: AuthenticateUserByName(username: username, pw: password)) -// .map { response -> (SignedInUser, String?) in -// let user = SignedInUser(context: PersistenceController.shared.container.viewContext) -// user.username = response.user?.name -// user.user_id = response.user?.id -// user.device_uuid = self.deviceID -// -// #if os(tvOS) -// let descriptor: TVAppProfileDescriptor = TVAppProfileDescriptor(name: user.username!) -// self.tvUserManager.shouldStorePreferenceForCurrentUser(to: descriptor) { should in -// if should { -// user.appletv_id = self.tvUserManager.currentUserIdentifier ?? "" -// } -// } -// #endif -// -// return (user, response.accessToken) -// } -// .handleEvents(receiveOutput: { [unowned self] response, accessToken in -// user = response -// _ = try? PersistenceController.shared.container.viewContext.save() -// -// let keychain = KeychainSwift() -// keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" -// keychain.set(accessToken!, forKey: "AccessToken_\(user.user_id!)") -// -// generateAuthHeader(with: accessToken, deviceID: user.device_uuid) -// -// let nc = NotificationCenter.default -// nc.post(name: Notification.Name("didSignIn"), object: nil) -// }) -// .map(\.0) -// .eraseToAnyPublisher() -// } -// -// func logout() { -// let nc = NotificationCenter.default -// nc.post(name: Notification.Name("didSignOut"), object: nil) -// let keychain = KeychainSwift() -// keychain.accessGroup = "9R8RREG67J.me.vigue.jellyfin.sharedKeychain" -// keychain.delete("AccessToken_\(user?.user_id ?? "")") -// generateAuthHeader(with: nil, deviceID: nil) -// if user != nil { -// let deleteRequest = NSBatchDeleteRequest(objectIDs: [user.objectID]) -// user = nil -// _ = try? PersistenceController.shared.container.viewContext.execute(deleteRequest) -// } -// } -//} diff --git a/Shared/ViewModels/LatestMediaViewModel.swift b/Shared/ViewModels/LatestMediaViewModel.swift index c70f156e..cca5b38e 100644 --- a/Shared/ViewModels/LatestMediaViewModel.swift +++ b/Shared/ViewModels/LatestMediaViewModel.swift @@ -25,7 +25,7 @@ final class LatestMediaViewModel: ViewModel { } func requestLatestMedia() { - LogManager.shared.log.debug("Requesting latest media for user id \(SessionManager.main.currentLogin.user.id ?? "NIL")") + LogManager.shared.log.debug("Requesting latest media for user id \(SessionManager.main.currentLogin.user.id)") UserLibraryAPI.getLatestMedia(userId: SessionManager.main.currentLogin.user.id, parentId: libraryID, fields: [ diff --git a/Shared/ViewModels/UserListViewModel.swift b/Shared/ViewModels/UserListViewModel.swift new file mode 100644 index 00000000..015517a0 --- /dev/null +++ b/Shared/ViewModels/UserListViewModel.swift @@ -0,0 +1,32 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import SwiftUI + +class UserListViewModel: ViewModel { + + @Published var users: [SwiftfinStore.State.User] = [] + + let server: SwiftfinStore.State.Server + + init(server: SwiftfinStore.State.Server) { + self.server = server + } + + func fetchUsers() { + self.users = SessionManager.main.fetchUsers(for: server) + } + + func login(user: SwiftfinStore.State.User) { + self.isLoading = true + SessionManager.main.loginUser(server: server, user: user) + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) + } +} diff --git a/Shared/ViewModels/UserLoginViewModel.swift b/Shared/ViewModels/UserLoginViewModel.swift index 33e90dad..ba37f10c 100644 --- a/Shared/ViewModels/UserLoginViewModel.swift +++ b/Shared/ViewModels/UserLoginViewModel.swift @@ -9,7 +9,6 @@ import CoreStore import Foundation -import JellyfinAPI import Stinsen final class UserLoginViewModel: ViewModel { From 069ed88a0b217debc9786830663c2bf1f8f94efb Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Wed, 13 Oct 2021 23:19:32 -0600 Subject: [PATCH 08/88] Start fixing tvOS --- JellyfinPlayer tvOS/ConnectToServerView.swift | 37 +------------------ JellyfinPlayer tvOS/SettingsView.swift | 15 +++----- .../VideoPlayerViewController.swift | 10 ++--- JellyfinPlayer/VideoPlayer.swift | 4 +- JellyfinPlayer/Views/SettingsView.swift | 7 ---- JellyfinPlayer/Views/UserLoginView.swift | 1 - 6 files changed, 11 insertions(+), 63 deletions(-) diff --git a/JellyfinPlayer tvOS/ConnectToServerView.swift b/JellyfinPlayer tvOS/ConnectToServerView.swift index 5044f6bc..9a5e8ec3 100644 --- a/JellyfinPlayer tvOS/ConnectToServerView.swift +++ b/JellyfinPlayer tvOS/ConnectToServerView.swift @@ -17,8 +17,7 @@ struct ConnectToServerView: View { var body: some View { VStack(alignment: .leading) { if viewModel.isConnectedServer { - if viewModel.publicUsers.isEmpty { - Section(header: Text(viewModel.lastPublicUsers.isEmpty || username == "" ? "Login to \(ServerEnvironment.current.server.name ?? "")": "")) { + Section(header: Text(viewModel.lastPublicUsers.isEmpty || username == "" ? "Login to \(SessionManager.main.currentLogin.server.name)": "")) { if viewModel.lastPublicUsers.isEmpty || username == "" { TextField(NSLocalizedString("Username", comment: ""), text: $username) .disableAutocorrection(true) @@ -68,40 +67,6 @@ struct ConnectToServerView: View { }.disabled(viewModel.isLoading || username.isEmpty) } } - } else { - VStack { - HStack { - ForEach(viewModel.publicUsers, id: \.id) { publicUser in - Button(action: { - if SessionManager.current.doesUserHaveSavedSession(userID: publicUser.id!) { - let user = SessionManager.current.getSavedSession(userID: publicUser.id!) - SessionManager.current.loginWithSavedSession(user: user) - } else { - username = publicUser.name ?? "" - viewModel.selectedPublicUser = publicUser - viewModel.hidePublicUsers() - if !(publicUser.hasPassword ?? true) { - password = "" - viewModel.login() - } - } - }) { - PublicUserButton(publicUser: publicUser) - } - .buttonStyle(PlainNavigationLinkButtonStyle()) - } - }.padding(.bottom, 20) - HStack { - Spacer() - Button { - viewModel.hidePublicUsers() - username = "" - } label: { - Text("Other User").font(.headline).fontWeight(.semibold) - } - Spacer() - }.padding(.top, 12) - } } } else { if !viewModel.isLoading { diff --git a/JellyfinPlayer tvOS/SettingsView.swift b/JellyfinPlayer tvOS/SettingsView.swift index e2e3ebea..19a25174 100644 --- a/JellyfinPlayer tvOS/SettingsView.swift +++ b/JellyfinPlayer tvOS/SettingsView.swift @@ -8,6 +8,7 @@ import CoreData import SwiftUI import Defaults +import JellyfinAPI struct SettingsView: View { @Environment(\.managedObjectContext) private var viewContext @@ -22,7 +23,7 @@ struct SettingsView: View { @State private var username: String = "" func onAppear() { - username = SessionManager.current.user?.username ?? "" + username = SessionManager.main.currentLogin.user.username } var body: some View { @@ -61,24 +62,18 @@ struct SettingsView: View { ) } - Section(header: Text(ServerEnvironment.current.server.name ?? "")) { + Section(header: Text(SessionManager.main.currentLogin.server.name)) { HStack { Text("Signed in as \(username)").foregroundColor(.primary) Spacer() Button { - DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) - } + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) } label: { Text("Switch user").font(.callout) } } Button { - // TODO: remove delay - DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - SessionManager.current.logout() - SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) - } + SessionManager.main.logout() } label: { Text("Sign out").font(.callout) } diff --git a/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift b/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift index dc996638..b906f4e9 100644 --- a/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift +++ b/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift @@ -138,15 +138,13 @@ class VideoPlayerViewController: UIViewController, VideoPlayerSettingsDelegate, let builder = DeviceProfileBuilder() builder.setMaxBitrate(bitrate: maxBitrate) let profile = builder.buildProfile() + + let currentUser = SessionManager.main.currentLogin.user - guard let currentUser = SessionManager.current.user else { - return - } - - let playbackInfo = PlaybackInfoDto(userId: currentUser.user_id ?? "", maxStreamingBitrate: Int(maxBitrate), startTimeTicks: manifest.userData?.playbackPositionTicks ?? 0, deviceProfile: profile, autoOpenLiveStream: true) + let playbackInfo = PlaybackInfoDto(userId: currentUser.id, maxStreamingBitrate: Int(maxBitrate), startTimeTicks: manifest.userData?.playbackPositionTicks ?? 0, deviceProfile: profile, autoOpenLiveStream: true) DispatchQueue.global(qos: .userInitiated).async { [self] in - MediaInfoAPI.getPostedPlaybackInfo(itemId: manifest.id!, userId: currentUser.user_id ?? "", maxStreamingBitrate: Int(maxBitrate), startTimeTicks: manifest.userData?.playbackPositionTicks ?? 0, autoOpenLiveStream: true, playbackInfoDto: playbackInfo) + MediaInfoAPI.getPostedPlaybackInfo(itemId: manifest.id!, userId: currentUser.id, maxStreamingBitrate: Int(maxBitrate), startTimeTicks: manifest.userData?.playbackPositionTicks ?? 0, autoOpenLiveStream: true, playbackInfoDto: playbackInfo) .sink(receiveCompletion: { result in print(result) }, receiveValue: { [self] response in diff --git a/JellyfinPlayer/VideoPlayer.swift b/JellyfinPlayer/VideoPlayer.swift index cddd460e..e0ddcb71 100644 --- a/JellyfinPlayer/VideoPlayer.swift +++ b/JellyfinPlayer/VideoPlayer.swift @@ -537,9 +537,7 @@ class PlayerViewController: UIViewController, GCKDiscoveryManagerListener, GCKRe switch err { case .error(401, _, _, _): self.delegate?.exitPlayer(self) - // TODO: todo -// SessionManager.current.logout() - main?.root(\.serverList) + SessionManager.main.logout() case .error: self.delegate?.exitPlayer(self) } diff --git a/JellyfinPlayer/Views/SettingsView.swift b/JellyfinPlayer/Views/SettingsView.swift index 60faeee8..12888901 100644 --- a/JellyfinPlayer/Views/SettingsView.swift +++ b/JellyfinPlayer/Views/SettingsView.swift @@ -50,13 +50,6 @@ struct SettingsView: View { Button { SessionManager.main.logout() - -// settingsRouter.dismissCoordinator() -// DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - // TODO: todo and move notification somewhere else -// SessionManager.current.logout() -// SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) -// } } label: { Text("Sign out") .font(.callout) diff --git a/JellyfinPlayer/Views/UserLoginView.swift b/JellyfinPlayer/Views/UserLoginView.swift index b2810ba0..99803ba1 100644 --- a/JellyfinPlayer/Views/UserLoginView.swift +++ b/JellyfinPlayer/Views/UserLoginView.swift @@ -42,7 +42,6 @@ struct UserLoginView: View { .disabled(viewModel.isLoading || username.isEmpty) } header: { - // TODO: Server Text("Login to \(viewModel.server.name)") } } From ce35bea299f42da2cabf0e355a307b0867e65999 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 00:30:24 -0600 Subject: [PATCH 09/88] Dismiss settings on logout --- JellyfinPlayer/Views/SettingsView.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/JellyfinPlayer/Views/SettingsView.swift b/JellyfinPlayer/Views/SettingsView.swift index 12888901..2d23c53a 100644 --- a/JellyfinPlayer/Views/SettingsView.swift +++ b/JellyfinPlayer/Views/SettingsView.swift @@ -49,7 +49,9 @@ struct SettingsView: View { } Button { - SessionManager.main.logout() + settingsRouter.dismissCoordinator { + SessionManager.main.logout() + } } label: { Text("Sign out") .font(.callout) From 03edfe7e7cd5b8e82029ef10a202ac8a3d6f1a16 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 00:52:45 -0600 Subject: [PATCH 10/88] Set server base path for existing login and user id in defaults for existing user login --- Shared/Singleton/SessionManager.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index ea940b66..8d776c80 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -40,6 +40,7 @@ final class SessionManager { guard let server = user.server, let accessToken = user.accessToken else { fatalError("No associated server or access token for last user?") } guard let existingServer = SwiftfinStore.dataStack.fetchExisting(server) else { return } + JellyfinAPI.basePath = server.uri setAuthHeader(with: accessToken.value) currentLogin = (server: existingServer.state, user: user.state) } @@ -143,6 +144,7 @@ final class SessionManager { func loginUser(server: SwiftfinStore.State.Server, user: SwiftfinStore.State.User) { JellyfinAPI.basePath = server.uri + SwiftfinStore.Defaults.suite[.lastServerUserID] = user.id setAuthHeader(with: user.accessToken) currentLogin = (server: server, user: user) } From a5e6cdf9988ffafa89fc09d8ef0f98b91bf6fe9f Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 14:17:50 -0600 Subject: [PATCH 11/88] Add better views and flow for no servers/users --- JellyfinPlayer/App/EmailHelper.swift | 6 +- JellyfinPlayer/App/JellyfinPlayerApp.swift | 31 ++--- JellyfinPlayer/Views/ServerListView.swift | 143 +++++++++++++++----- JellyfinPlayer/Views/UserListView.swift | 108 ++++++++++++--- Shared/ViewModels/ServerListViewModel.swift | 8 ++ 5 files changed, 217 insertions(+), 79 deletions(-) diff --git a/JellyfinPlayer/App/EmailHelper.swift b/JellyfinPlayer/App/EmailHelper.swift index c5025ac1..5c054d9f 100644 --- a/JellyfinPlayer/App/EmailHelper.swift +++ b/JellyfinPlayer/App/EmailHelper.swift @@ -11,10 +11,10 @@ import SwiftUI import MessageUI class EmailHelper: NSObject, MFMailComposeViewControllerDelegate { + public static let shared = EmailHelper() - override private init() { - // - } + + override private init() { } func sendLogs(logURL: URL) { if !MFMailComposeViewController.canSendMail() { diff --git a/JellyfinPlayer/App/JellyfinPlayerApp.swift b/JellyfinPlayer/App/JellyfinPlayerApp.swift index 2e05a2b3..99e0f929 100644 --- a/JellyfinPlayer/App/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/App/JellyfinPlayerApp.swift @@ -148,31 +148,20 @@ struct JellyfinPlayerApp: App { var body: some Scene { WindowGroup { - MainCoordinator().view() + EmptyView() .onAppear { setupAppearance() } + .withHostingWindow { window in + window?.rootViewController = PreferenceUIHostingController(wrappedView: MainCoordinator().view()) + } + .onShake { + EmailHelper.shared.sendLogs(logURL: LogManager.shared.logFileURL()) + } + .onOpenURL { url in + AppURLHandler.shared.processDeepLink(url: url) + } } - - -// WindowGroup { -// EmptyView() -// .environment(\.managedObjectContext, persistenceController.container.viewContext) -// .onAppear(perform: { -// setupAppearance() -// }) -// .withHostingWindow { window in -// window? -// .rootViewController = PreferenceUIHostingController(wrappedView: MainCoordinator().view() -// .environment(\.managedObjectContext, persistenceController.container.viewContext)) -// } -// .onShake { -// EmailHelper.shared.sendLogs(logURL: LogManager.shared.logFileURL()) -// } -// .onOpenURL { url in -// AppURLHandler.shared.processDeepLink(url: url) -// } -// } } private func setupAppearance() { diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index 883f1c7f..73fd01de 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -15,47 +15,120 @@ struct ServerListView: View { @EnvironmentObject var serverListRouter: ServerListCoordinator.Router @ObservedObject var viewModel: ServerListViewModel - var body: some View { - List { - ForEach(viewModel.servers, id: \.id) { server in - Button { - serverListRouter.route(to: \.userList, server) - } label: { - Text(server.name) + @ViewBuilder + private var listView: some View { + ScrollView { + VStack { + ForEach(viewModel.servers, id: \.id) { server in + Button { + serverListRouter.route(to: \.userList, server) + } label: { + ZStack(alignment: Alignment.leading) { + Rectangle() + .foregroundColor(Color(UIColor.secondarySystemFill)) + .frame(height: 100) + .cornerRadius(10) + + HStack { + Image(systemName: "server.rack") + .font(.system(size: 36)) + .foregroundColor(.primary) + + VStack(alignment: .leading, spacing: 5) { + Text(server.name) + .font(.title2) + .foregroundColor(.primary) + + Text(server.uri) + .font(.footnote) + .disabled(true) + .foregroundColor(.secondary) + + Text(viewModel.userTextFor(server: server)) + .font(.footnote) + .foregroundColor(.primary) + } + }.padding([.leading]) + } + .padding() + } } } } - .navigationTitle("Servers") - .toolbar { - ToolbarItemGroup(placement: .navigation) { - HStack { - Button { - serverListRouter.route(to: \.connectToServer) - } label: { - Text("Connect") - } + } + + @ViewBuilder + private var noServerView: some View { + VStack { + Text("Connect to a Jellyfin server to get started.") + .frame(minWidth: 50, maxWidth: 240) + .multilineTextAlignment(.center) + + Button { + serverListRouter.route(to: \.connectToServer) + } label: { + ZStack { + Rectangle() + .foregroundColor(Color.jellyfinPurple) + .frame(maxWidth: 500, maxHeight: 50) + .frame(height: 50) + .cornerRadius(10) + .padding([.leading, .trailing], 30) + .padding([.top, .bottom], 20) - Button { - SwiftfinStore.dataStack.perform(asynchronous: { transaction in - try! transaction.deleteAll(From()) - try! transaction.deleteAll(From()) - try! transaction.deleteAll(From()) - }) { _ in - SwiftfinStore.Defaults.suite[.lastServerUserID] = nil - viewModel.fetchServers() - } - } label: { - Text("Purge") - } + Text("Connect") + .foregroundColor(Color.white) + .bold() } } -// ToolbarItem(placement: .navigationBarTrailing) { -// Button { -// serverListRouter.route(to: \.connectToServer) -// } label: { -// Text("Connect") -// } -// } + } + } + + @ViewBuilder + private var innerBody: some View { + if viewModel.servers.isEmpty { + noServerView + .offset(y: -50) + } else { + listView + } + } + + @ViewBuilder + private var toolbarContent: some View { + if viewModel.servers.isEmpty { + EmptyView() + } else { + HStack { + Button { + SwiftfinStore.dataStack.perform(asynchronous: { transaction in + try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) + }) { _ in + SwiftfinStore.Defaults.suite[.lastServerUserID] = nil + viewModel.fetchServers() + } + } label: { + Text("Purge") + } + + Button { + serverListRouter.route(to: \.connectToServer) + } label: { + Image(systemName: "plus.circle.fill") + } + } + } + } + + var body: some View { + innerBody + .navigationTitle("Servers") + .toolbar { + ToolbarItemGroup(placement: .navigationBarTrailing) { + toolbarContent + } } .onAppear { viewModel.fetchServers() diff --git a/JellyfinPlayer/Views/UserListView.swift b/JellyfinPlayer/Views/UserListView.swift index 0a5cf488..e320768b 100644 --- a/JellyfinPlayer/Views/UserListView.swift +++ b/JellyfinPlayer/Views/UserListView.swift @@ -14,34 +14,102 @@ struct UserListView: View { @EnvironmentObject var userListRouter: UserListCoordinator.Router @ObservedObject var viewModel: UserListViewModel - var body: some View { - List { - ForEach(viewModel.users, id: \.id) { user in - Button { - viewModel.login(user: user) - } label: { - HStack { - Text(user.username) - Spacer() - if viewModel.isLoading { - ProgressView() + @ViewBuilder + private var listView: some View { + ScrollView { + VStack { + ForEach(viewModel.users, id: \.id) { user in + Button { + viewModel.login(user: user) + } label: { + ZStack(alignment: Alignment.leading) { + Rectangle() + .foregroundColor(Color(UIColor.secondarySystemFill)) + .frame(height: 70) + .cornerRadius(10) + + HStack { + Image(systemName: "person.crop.circle.fill") + .font(.system(size: 46)) + .foregroundColor(.primary) + + Text(user.username) + .font(.title2) + + Spacer() + + if viewModel.isLoading { + ProgressView() + } + }.padding(.leading) } + .padding() } } } } - .navigationTitle("Users") - .toolbar { - ToolbarItem(placement: .navigation) { - HStack { - Button { - userListRouter.route(to: \.userLogin, viewModel.server) - } label: { - Text("Connect") - } + } + + @ViewBuilder + private var noUserView: some View { + VStack { + Text("Login to a user to get started.") + .frame(minWidth: 50, maxWidth: 240) + .multilineTextAlignment(.center) + + Button { + userListRouter.route(to: \.userLogin, viewModel.server) + } label: { + ZStack { + Rectangle() + .foregroundColor(Color.jellyfinPurple) + .frame(maxWidth: 500, maxHeight: 50) + .frame(height: 50) + .cornerRadius(10) + .padding([.leading, .trailing], 30) + .padding([.top, .bottom], 20) + + Text("Login") + .foregroundColor(Color.white) + .bold() } } } + } + + @ViewBuilder + private var innerBody: some View { + if viewModel.users.isEmpty { + noUserView + .offset(y: -50) + } else { + listView + } + } + + @ViewBuilder + private var toolbarContent: some View { + if viewModel.users.isEmpty { + EmptyView() + } else { + HStack { + Button { + userListRouter.route(to: \.userLogin, viewModel.server) + } label: { + Image(systemName: "person.crop.circle.fill.badge.plus") + } + } + } + } + + var body: some View { + innerBody + .navigationTitle(viewModel.server.name) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + toolbarContent + } + } .onAppear { viewModel.fetchUsers() } diff --git a/Shared/ViewModels/ServerListViewModel.swift b/Shared/ViewModels/ServerListViewModel.swift index 94293adf..9df10683 100644 --- a/Shared/ViewModels/ServerListViewModel.swift +++ b/Shared/ViewModels/ServerListViewModel.swift @@ -17,4 +17,12 @@ class ServerListViewModel: ObservableObject { func fetchServers() { self.servers = SessionManager.main.fetchServers() } + + func userTextFor(server: SwiftfinStore.State.Server) -> String { + if server.userIDs.count == 1 { + return "1 user" + } else { + return "\(server.userIDs.count) users" + } + } } From f248767adfc7f818fb2f59565dd49d6f92336d2d Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 14:20:13 -0600 Subject: [PATCH 12/88] Login to Sign In --- JellyfinPlayer.xcodeproj/project.pbxproj | 36 +++++++++---------- .../ConnectToServerCoodinator.swift | 6 ++-- .../Coordinators/UserListCoordinator.swift | 6 ++-- ...ator.swift => UserSignInCoordinator.swift} | 10 +++--- JellyfinPlayer/Views/UserListView.swift | 4 +-- ...erLoginView.swift => UserSignInView.swift} | 8 ++--- .../ViewModels/ConnectToServerViewModel.swift | 2 +- ...wModel.swift => UserSignInViewModel.swift} | 4 +-- 8 files changed, 38 insertions(+), 38 deletions(-) rename JellyfinPlayer/Coordinators/{UserLoginCoordinator.swift => UserSignInCoordinator.swift} (64%) rename JellyfinPlayer/Views/{UserLoginView.swift => UserSignInView.swift} (87%) rename Shared/ViewModels/{UserLoginViewModel.swift => UserSignInViewModel.swift} (92%) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 5ea37e3e..b00b15a1 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -268,14 +268,14 @@ E13DD3E627177D15009D4DAF /* ServerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E427177D15009D4DAF /* ServerListView.swift */; }; E13DD3E927177ED6009D4DAF /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; - E13DD3EC27178A54009D4DAF /* UserLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */; }; - E13DD3ED27178A54009D4DAF /* UserLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */; }; + E13DD3EC27178A54009D4DAF /* UserSignInViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserSignInViewModel.swift */; }; + E13DD3ED27178A54009D4DAF /* UserSignInViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserSignInViewModel.swift */; }; E13DD3EF27178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; E13DD3F027178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; - E13DD3F227179378009D4DAF /* UserLoginCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */; }; - E13DD3F327179378009D4DAF /* UserLoginCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */; }; - E13DD3F5271793BB009D4DAF /* UserLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserLoginView.swift */; }; - E13DD3F6271793BB009D4DAF /* UserLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserLoginView.swift */; }; + E13DD3F227179378009D4DAF /* UserSignInCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */; }; + E13DD3F327179378009D4DAF /* UserSignInCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */; }; + E13DD3F5271793BB009D4DAF /* UserSignInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserSignInView.swift */; }; + E13DD3F6271793BB009D4DAF /* UserSignInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserSignInView.swift */; }; E13DD3F72717E87D009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; E13DD3F92717E961009D4DAF /* UserListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F82717E961009D4DAF /* UserListViewModel.swift */; }; E13DD3FA2717E961009D4DAF /* UserListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F82717E961009D4DAF /* UserListViewModel.swift */; }; @@ -521,10 +521,10 @@ E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListViewModel.swift; sourceTree = ""; }; E13DD3E427177D15009D4DAF /* ServerListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListView.swift; sourceTree = ""; }; E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListCoordinator.swift; sourceTree = ""; }; - E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginViewModel.swift; sourceTree = ""; }; + E13DD3EB27178A54009D4DAF /* UserSignInViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSignInViewModel.swift; sourceTree = ""; }; E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftfinNotificationCenter.swift; sourceTree = ""; }; - E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginCoordinator.swift; sourceTree = ""; }; - E13DD3F4271793BB009D4DAF /* UserLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserLoginView.swift; sourceTree = ""; }; + E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSignInCoordinator.swift; sourceTree = ""; }; + E13DD3F4271793BB009D4DAF /* UserSignInView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSignInView.swift; sourceTree = ""; }; E13DD3F82717E961009D4DAF /* UserListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserListViewModel.swift; sourceTree = ""; }; E13DD3FB2717EAE8009D4DAF /* UserListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserListView.swift; sourceTree = ""; }; E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserListCoordinator.swift; sourceTree = ""; }; @@ -653,7 +653,7 @@ 5321753A2671BCFC005491E6 /* SettingsViewModel.swift */, 625CB5692678B71200530A6E /* SplashViewModel.swift */, E13DD3F82717E961009D4DAF /* UserListViewModel.swift */, - E13DD3EB27178A54009D4DAF /* UserLoginViewModel.swift */, + E13DD3EB27178A54009D4DAF /* UserSignInViewModel.swift */, 09389CC626819B4500AE350E /* VideoPlayerModel.swift */, 625CB57B2678CE1000530A6E /* ViewModel.swift */, ); @@ -1043,7 +1043,7 @@ E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */, 6220D0B026D5EC9900B8E046 /* SettingsCoordinator.swift */, E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */, - E13DD3F127179378009D4DAF /* UserLoginCoordinator.swift */, + E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */, 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */, ); path = Coordinators; @@ -1126,7 +1126,7 @@ 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, 625CB5672678B6FB00530A6E /* SplashView.swift */, E13DD3FB2717EAE8009D4DAF /* UserListView.swift */, - E13DD3F4271793BB009D4DAF /* UserLoginView.swift */, + E13DD3F4271793BB009D4DAF /* UserSignInView.swift */, 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, ); path = Views; @@ -1562,7 +1562,7 @@ 53ABFDDE267974E300886593 /* SplashView.swift in Sources */, 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */, 62E632DE267D2E170063E547 /* LatestMediaViewModel.swift in Sources */, - E13DD3F327179378009D4DAF /* UserLoginCoordinator.swift in Sources */, + E13DD3F327179378009D4DAF /* UserSignInCoordinator.swift in Sources */, E1FCD09726C47118007C8DCF /* ErrorMessage.swift in Sources */, E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */, 53116A19268B947A003024C9 /* PlainLinkButton.swift in Sources */, @@ -1574,7 +1574,7 @@ 091B5A8E268315D400D78B61 /* UDPBroadCastConnection.swift in Sources */, E1FCD08926C35A0D007C8DCF /* NetworkError.swift in Sources */, 531690ED267ABF46005D8AB9 /* ContinueWatchingView.swift in Sources */, - E13DD3ED27178A54009D4DAF /* UserLoginViewModel.swift in Sources */, + E13DD3ED27178A54009D4DAF /* UserSignInViewModel.swift in Sources */, 62EC3530267666A5000E9F2D /* SessionManager.swift in Sources */, E1AD104B26D94822003E4A08 /* DetailItem.swift in Sources */, E13DD3E227176BD3009D4DAF /* ServerListViewModel.swift in Sources */, @@ -1628,7 +1628,7 @@ E1F0204F26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */, 53ABFDEB2679753200886593 /* ConnectToServerView.swift in Sources */, 536D3D76267BA9BB0004248C /* MainTabViewModel.swift in Sources */, - E13DD3F6271793BB009D4DAF /* UserLoginView.swift in Sources */, + E13DD3F6271793BB009D4DAF /* UserSignInView.swift in Sources */, 5310695C2684E7EE00CFFDBA /* VideoPlayerViewController.swift in Sources */, C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */, 536D3D74267BA8170004248C /* BackgroundManager.swift in Sources */, @@ -1654,7 +1654,7 @@ 5364F455266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 6220D0B426D5ED8000B8E046 /* LibraryCoordinator.swift in Sources */, 6220D0C026D61C5000B8E046 /* ItemCoordinator.swift in Sources */, - E13DD3F227179378009D4DAF /* UserLoginCoordinator.swift in Sources */, + E13DD3F227179378009D4DAF /* UserSignInCoordinator.swift in Sources */, 621338932660107500A81A2A /* StringExtensions.swift in Sources */, 53FF7F2A263CF3F500585C35 /* LatestMediaView.swift in Sources */, 62E632EC267D410B0063E547 /* SeriesItemViewModel.swift in Sources */, @@ -1669,7 +1669,7 @@ 535BAE9F2649E569005FA86D /* ItemView.swift in Sources */, 6225FCCB2663841E00E067F6 /* ParallaxHeader.swift in Sources */, 6220D0AD26D5EABB00B8E046 /* ViewExtensions.swift in Sources */, - E13DD3EC27178A54009D4DAF /* UserLoginViewModel.swift in Sources */, + E13DD3EC27178A54009D4DAF /* UserSignInViewModel.swift in Sources */, 625CB5772678C34300530A6E /* ConnectToServerViewModel.swift in Sources */, 536D3D78267BD5C30004248C /* ViewModel.swift in Sources */, 62CB3F4B2685BB77003D0A6F /* DefaultsExtension.swift in Sources */, @@ -1701,7 +1701,7 @@ E188460026DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift in Sources */, 091B5A8B2683142E00D78B61 /* UDPBroadCastConnection.swift in Sources */, 6267B3D626710B8900A7371D /* CollectionExtensions.swift in Sources */, - E13DD3F5271793BB009D4DAF /* UserLoginView.swift in Sources */, + E13DD3F5271793BB009D4DAF /* UserSignInView.swift in Sources */, E1F0204E26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */, 53649AB1269CFB1900A2D8B7 /* LogManager.swift in Sources */, E13DD3E127176BD3009D4DAF /* ServerListViewModel.swift in Sources */, diff --git a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift b/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift index a191313d..daf73b85 100644 --- a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift +++ b/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift @@ -15,10 +15,10 @@ final class ConnectToServerCoodinator: NavigationCoordinatable { let stack = NavigationStack(initial: \ConnectToServerCoodinator.start) @Root var start = makeStart - @Route(.push) var userLogin = makeUserLogin + @Route(.push) var userSignIn = makeUserSignIn - func makeUserLogin(server: SwiftfinStore.State.Server) -> UserLoginCoordinator { - return UserLoginCoordinator(viewModel: .init(server: server)) + func makeUserSignIn(server: SwiftfinStore.State.Server) -> UserSignInCoordinator { + return UserSignInCoordinator(viewModel: .init(server: server)) } @ViewBuilder func makeStart() -> some View { diff --git a/JellyfinPlayer/Coordinators/UserListCoordinator.swift b/JellyfinPlayer/Coordinators/UserListCoordinator.swift index 7b94eea8..5409f4af 100644 --- a/JellyfinPlayer/Coordinators/UserListCoordinator.swift +++ b/JellyfinPlayer/Coordinators/UserListCoordinator.swift @@ -15,7 +15,7 @@ final class UserListCoordinator: NavigationCoordinatable { let stack = NavigationStack(initial: \UserListCoordinator.start) @Root var start = makeStart - @Route(.push) var userLogin = makeUserLogin + @Route(.push) var userSignIn = makeUserSignIn let viewModel: UserListViewModel @@ -23,8 +23,8 @@ final class UserListCoordinator: NavigationCoordinatable { self.viewModel = viewModel } - func makeUserLogin(server: SwiftfinStore.State.Server) -> UserLoginCoordinator { - return UserLoginCoordinator(viewModel: .init(server: server)) + func makeUserSignIn(server: SwiftfinStore.State.Server) -> UserSignInCoordinator { + return UserSignInCoordinator(viewModel: .init(server: server)) } @ViewBuilder func makeStart() -> some View { diff --git a/JellyfinPlayer/Coordinators/UserLoginCoordinator.swift b/JellyfinPlayer/Coordinators/UserSignInCoordinator.swift similarity index 64% rename from JellyfinPlayer/Coordinators/UserLoginCoordinator.swift rename to JellyfinPlayer/Coordinators/UserSignInCoordinator.swift index f40522a0..83cf6cd7 100644 --- a/JellyfinPlayer/Coordinators/UserLoginCoordinator.swift +++ b/JellyfinPlayer/Coordinators/UserSignInCoordinator.swift @@ -11,18 +11,18 @@ import Foundation import Stinsen import SwiftUI -final class UserLoginCoordinator: NavigationCoordinatable { - let stack = NavigationStack(initial: \UserLoginCoordinator.start) +final class UserSignInCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \UserSignInCoordinator.start) @Root var start = makeStart - let viewModel: UserLoginViewModel + let viewModel: UserSignInViewModel - init(viewModel: UserLoginViewModel) { + init(viewModel: UserSignInViewModel) { self.viewModel = viewModel } @ViewBuilder func makeStart() -> some View { - UserLoginView(viewModel: viewModel) + UserSignInView(viewModel: viewModel) } } diff --git a/JellyfinPlayer/Views/UserListView.swift b/JellyfinPlayer/Views/UserListView.swift index e320768b..4d13e71a 100644 --- a/JellyfinPlayer/Views/UserListView.swift +++ b/JellyfinPlayer/Views/UserListView.swift @@ -58,7 +58,7 @@ struct UserListView: View { .multilineTextAlignment(.center) Button { - userListRouter.route(to: \.userLogin, viewModel.server) + userListRouter.route(to: \.userSignIn, viewModel.server) } label: { ZStack { Rectangle() @@ -94,7 +94,7 @@ struct UserListView: View { } else { HStack { Button { - userListRouter.route(to: \.userLogin, viewModel.server) + userListRouter.route(to: \.userSignIn, viewModel.server) } label: { Image(systemName: "person.crop.circle.fill.badge.plus") } diff --git a/JellyfinPlayer/Views/UserLoginView.swift b/JellyfinPlayer/Views/UserSignInView.swift similarity index 87% rename from JellyfinPlayer/Views/UserLoginView.swift rename to JellyfinPlayer/Views/UserSignInView.swift index 99803ba1..8afde7dd 100644 --- a/JellyfinPlayer/Views/UserLoginView.swift +++ b/JellyfinPlayer/Views/UserSignInView.swift @@ -10,9 +10,9 @@ import SwiftUI import Stinsen -struct UserLoginView: View { +struct UserSignInView: View { - @ObservedObject var viewModel: UserLoginViewModel + @ObservedObject var viewModel: UserSignInViewModel @State private var username: String = "" @State private var password: String = "" @@ -42,9 +42,9 @@ struct UserLoginView: View { .disabled(viewModel.isLoading || username.isEmpty) } header: { - Text("Login to \(viewModel.server.name)") + Text("Sign In to \(viewModel.server.name)") } } - .navigationTitle("Login") + .navigationTitle("Sign In") } } diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index 474018fe..c77297e1 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -35,7 +35,7 @@ final class ConnectToServerViewModel: ViewModel { completion: completion) }, receiveValue: { server in LogManager.shared.log.debug("Connected to server at \"\(uri)\"", tag: "connectToServer") - self.router?.route(to: \.userLogin, server) + self.router?.route(to: \.userSignIn, server) }) .store(in: &cancellables) } diff --git a/Shared/ViewModels/UserLoginViewModel.swift b/Shared/ViewModels/UserSignInViewModel.swift similarity index 92% rename from Shared/ViewModels/UserLoginViewModel.swift rename to Shared/ViewModels/UserSignInViewModel.swift index ba37f10c..f1da84b2 100644 --- a/Shared/ViewModels/UserLoginViewModel.swift +++ b/Shared/ViewModels/UserSignInViewModel.swift @@ -11,9 +11,9 @@ import CoreStore import Foundation import Stinsen -final class UserLoginViewModel: ViewModel { +final class UserSignInViewModel: ViewModel { - @RouterObject var router: UserLoginCoordinator.Router? + @RouterObject var router: UserSignInCoordinator.Router? let server: SwiftfinStore.State.Server init(server: SwiftfinStore.State.Server) { From a5a842e815db631cf7831063b856d2cbe7b6cb92 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 14:25:16 -0600 Subject: [PATCH 13/88] Text clarification --- JellyfinPlayer/Views/ConnectToServerView.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index 51443ad1..8039407e 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -32,9 +32,11 @@ struct ConnectToServerView: View { } } .disabled(viewModel.isLoading || uri.isEmpty) + } header: { + Text("Connect to a Jellyfin server") } - Section(header: Text("Discovered Servers")) { + Section(header: Text("Local Servers")) { if viewModel.searching { ProgressView() } From 3599df56e95d7806ba9dddb7120f75342c90a719 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 15:28:13 -0600 Subject: [PATCH 14/88] Prevent connecting/signing in if already exists --- JellyfinPlayer.xcodeproj/project.pbxproj | 12 +++- .../Views/ConnectToServerView.swift | 4 +- JellyfinPlayer/Views/UserSignInView.swift | 5 ++ Shared/Errors/ErrorMessage.swift | 4 ++ .../JellyfinAPIError.swift | 23 ++++++++ Shared/Singleton/SessionManager.swift | 54 ++++++++++++++---- Shared/SwiftfinStore/SwiftfinStore.swift | 28 +++++++++ .../ViewModels/ConnectToServerViewModel.swift | 9 +++ Shared/ViewModels/UserSignInViewModel.swift | 11 +++- Shared/ViewModels/ViewModel.swift | 57 +++++++++++++++++-- 10 files changed, 188 insertions(+), 19 deletions(-) create mode 100644 Shared/Extensions/JellyfinAPIExtensions/JellyfinAPIError.swift diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index b00b15a1..698dbdf8 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -242,6 +242,9 @@ C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E508172703E8190045C9AB /* LibraryListView.swift */; }; C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */; }; E100720726BDABC100CE3E31 /* MediaPlayButtonRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */; }; + E11B1B6C2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */; }; + E11B1B6D2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */; }; + E11B1B6E2718CDBA006DA3E8 /* JellyfinAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */; }; E131691726C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691926C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; @@ -512,6 +515,7 @@ D79953919FED0C4DF72BA578 /* Pods-JellyfinPlayer tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinPlayer tvOS.release.xcconfig"; path = "Target Support Files/Pods-JellyfinPlayer tvOS/Pods-JellyfinPlayer tvOS.release.xcconfig"; sourceTree = ""; }; DE5004F745B19E28744A7DE7 /* Pods-JellyfinPlayer tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinPlayer tvOS.debug.xcconfig"; path = "Target Support Files/Pods-JellyfinPlayer tvOS/Pods-JellyfinPlayer tvOS.debug.xcconfig"; sourceTree = ""; }; E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPlayButtonRowView.swift; sourceTree = ""; }; + E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinAPIError.swift; sourceTree = ""; }; E131691626C583BC0074BFEE /* LogConstructor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogConstructor.swift; sourceTree = ""; }; E13DD3BC27163C63009D4DAF /* EmailHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailHelper.swift; sourceTree = ""; }; E13DD3BE27163DD7009D4DAF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -1164,9 +1168,10 @@ E1AD105226D96D5F003E4A08 /* JellyfinAPIExtensions */ = { isa = PBXGroup; children = ( - 5364F454266CA0DC0026ECBA /* BaseItemPersonExtensions.swift */, - E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */, E18845F426DD631E00B0C5B7 /* BaseItemDto+Stackable.swift */, + E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */, + 5364F454266CA0DC0026ECBA /* BaseItemPersonExtensions.swift */, + E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */, E1AD105E26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift */, ); path = JellyfinAPIExtensions; @@ -1595,6 +1600,7 @@ 535870A52669D8AE00D05A09 /* ParallaxHeader.swift in Sources */, 53272532268BF09D0035FBF1 /* MediaViewActionButton.swift in Sources */, 531690F0267ABF72005D8AB9 /* NextUpView.swift in Sources */, + E11B1B6D2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */, 535870A72669D8AE00D05A09 /* MultiSelectorView.swift in Sources */, E1AD104E26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */, E13DD4032717EE79009D4DAF /* UserListCoordinator.swift in Sources */, @@ -1716,6 +1722,7 @@ E1AD106226D9B7CD003E4A08 /* ItemPortraitHeaderOverlayView.swift in Sources */, 53E4E649263F725B00F67C6B /* MultiSelectorView.swift in Sources */, 6220D0C626D62D8700B8E046 /* VideoPlayerCoordinator.swift in Sources */, + E11B1B6C2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */, 621338B32660A07800A81A2A /* LazyView.swift in Sources */, 6220D0B126D5EC9900B8E046 /* SettingsCoordinator.swift in Sources */, 62C29EA626D1036A00C1D2E7 /* HomeCoordinator.swift in Sources */, @@ -1766,6 +1773,7 @@ 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */, 6267B3DB2671139400A7371D /* ImageExtensions.swift in Sources */, E1AD105926D9A543003E4A08 /* LazyView.swift in Sources */, + E11B1B6E2718CDBA006DA3E8 /* JellyfinAPIError.swift in Sources */, 628B95372670CB800091AF3B /* JellyfinWidget.swift in Sources */, E1AD105426D97161003E4A08 /* BaseItemDtoExtensions.swift in Sources */, E1FCD09A26C4F35A007C8DCF /* ErrorMessage.swift in Sources */, diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index 8039407e..221feb48 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -63,8 +63,8 @@ struct ConnectToServerView: View { .headerProminence(.increased) } .alert(item: $viewModel.errorMessage) { _ in - Alert(title: Text("\(viewModel.errorMessage?.code ?? -1)\n\(viewModel.errorMessage?.title ?? "Error")"), - message: Text(viewModel.errorMessage?.displayMessage ?? "Error"), + Alert(title: Text(viewModel.alertTitle), + message: Text(viewModel.errorMessage?.displayMessage ?? "Unknown Error"), dismissButton: .cancel()) } .navigationTitle("Connect") diff --git a/JellyfinPlayer/Views/UserSignInView.swift b/JellyfinPlayer/Views/UserSignInView.swift index 8afde7dd..81110c28 100644 --- a/JellyfinPlayer/Views/UserSignInView.swift +++ b/JellyfinPlayer/Views/UserSignInView.swift @@ -45,6 +45,11 @@ struct UserSignInView: View { Text("Sign In to \(viewModel.server.name)") } } + .alert(item: $viewModel.errorMessage) { _ in + Alert(title: Text(viewModel.alertTitle), + message: Text(viewModel.errorMessage?.displayMessage ?? "Unknown Error"), + dismissButton: .cancel()) + } .navigationTitle("Sign In") } } diff --git a/Shared/Errors/ErrorMessage.swift b/Shared/Errors/ErrorMessage.swift index fab486f7..0f14fe59 100644 --- a/Shared/Errors/ErrorMessage.swift +++ b/Shared/Errors/ErrorMessage.swift @@ -16,6 +16,10 @@ struct ErrorMessage: Identifiable { let title: String let displayMessage: String let logConstructor: LogConstructor + + // Chosen value such that if an error has this code, don't show the code to the UI + // This was chosen because of its unlikelyhood to ever be used + static let noShowErrorCode = -69420 var id: String { return "\(code)\(title)\(logConstructor.message)" diff --git a/Shared/Extensions/JellyfinAPIExtensions/JellyfinAPIError.swift b/Shared/Extensions/JellyfinAPIExtensions/JellyfinAPIError.swift new file mode 100644 index 00000000..f74a5a3c --- /dev/null +++ b/Shared/Extensions/JellyfinAPIExtensions/JellyfinAPIError.swift @@ -0,0 +1,23 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation + +struct JellyfinAPIError: Error { + + private let message: String + + init(_ message: String) { + self.message = message + } + + var localizedDescription: String { + return message + } +} diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index 8d776c80..867cfac1 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -75,16 +75,30 @@ final class SessionManager { JellyfinAPI.basePath = uri return SystemAPI.getPublicSystemInfo() - .map({ response -> (SwiftfinStore.Models.StoredServer, UnsafeDataTransaction) in + .tryMap({ response -> (SwiftfinStore.Models.StoredServer, UnsafeDataTransaction) in + let transaction = SwiftfinStore.dataStack.beginUnsafe() let newServer = transaction.create(Into()) - newServer.uri = response.localAddress ?? "SfUri" - newServer.name = response.serverName ?? "SfServerName" - newServer.id = response.id ?? "" - newServer.os = response.operatingSystem ?? "SfOS" - newServer.version = response.version ?? "SfVersion" + + guard let uri = response.localAddress, + let name = response.serverName, + let id = response.id, + let os = response.operatingSystem, + let version = response.version else { throw JellyfinAPIError("Missing server data from network call") } + + newServer.uri = uri + newServer.name = name + newServer.id = id + newServer.os = os + newServer.version = version newServer.users = [] + // Check for existing server on device + if let existingServer = try? SwiftfinStore.dataStack.fetchOne(From(), + [Where("id == %@", newServer.id)]) { + throw SwiftfinStore.Errors.existingServer(existingServer.state) + } + return (newServer, transaction) }) .handleEvents(receiveOutput: { (_, transaction) in @@ -100,17 +114,29 @@ final class SessionManager { func loginUser(server: SwiftfinStore.State.Server, username: String, password: String) -> AnyPublisher { setAuthHeader(with: "") + JellyfinAPI.basePath = server.uri + return UserAPI.authenticateUserByName(authenticateUserByName: AuthenticateUserByName(username: username, pw: password)) - .map({ response -> (SwiftfinStore.Models.StoredServer, SwiftfinStore.Models.StoredUser, UnsafeDataTransaction) in + .tryMap({ response -> (SwiftfinStore.Models.StoredServer, SwiftfinStore.Models.StoredUser, UnsafeDataTransaction) in - guard let accessToken = response.accessToken else { fatalError("Received successful user with no access token") } + guard let accessToken = response.accessToken else { throw JellyfinAPIError("Access token missing from network call") } let transaction = SwiftfinStore.dataStack.beginUnsafe() let newUser = transaction.create(Into()) - newUser.username = response.user?.name ?? "SfUsername" - newUser.id = response.user?.id ?? "SfID" + + guard let username = response.user?.name, + let id = response.user?.id else { throw JellyfinAPIError("Missing user data from network call") } + + newUser.username = username + newUser.id = id newUser.appleTVID = "" + // Check for existing user on device + if let existingUser = try? SwiftfinStore.dataStack.fetchOne(From(), + [Where("id == %@", newUser.id)]) { + throw SwiftfinStore.Errors.existingUser(existingUser.state) + } + let newAccessToken = transaction.create(Into()) newAccessToken.value = accessToken newUser.accessToken = newAccessToken @@ -156,6 +182,14 @@ final class SessionManager { SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) } + func delete(user: SwiftfinStore.State.User) { + + } + + func delete(server: SwiftfinStore.State.Server) { + + } + private func setAuthHeader(with accessToken: String) { let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String var deviceName = UIDevice.current.name diff --git a/Shared/SwiftfinStore/SwiftfinStore.swift b/Shared/SwiftfinStore/SwiftfinStore.swift index f97ef347..1b6a4809 100644 --- a/Shared/SwiftfinStore/SwiftfinStore.swift +++ b/Shared/SwiftfinStore/SwiftfinStore.swift @@ -119,6 +119,13 @@ enum SwiftfinStore { } } + // MARK: Errors + enum Errors { + case existingServer(State.Server) + case existingUser(State.User) + } + + // MARK: dataStack static let dataStack: DataStack = { let schema = CoreStoreSchema(modelVersion: "V1", entities: [ @@ -138,3 +145,24 @@ enum SwiftfinStore { return _dataStack }() } + +extension SwiftfinStore.Errors: LocalizedError { + + var title: String { + switch self { + case .existingServer(_): + return "Existing Server" + case .existingUser(_): + return "Existing User" + } + } + + var errorDescription: String? { + switch self { + case .existingServer(let server): + return "Server \(server.name) already exists with same server ID" + case .existingUser(let user): + return "User \(user.username) already exists with same user ID" + } + } +} diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index c77297e1..e2c08c8b 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -18,6 +18,15 @@ final class ConnectToServerViewModel: ViewModel { @Published var discoveredServers: Set = [] @Published var searching = false private let discovery = ServerDiscovery() + + var alertTitle: String { + var message: String = "" + if errorMessage?.code != ErrorMessage.noShowErrorCode { + message.append(contentsOf: "\(errorMessage?.code ?? ErrorMessage.noShowErrorCode)\n") + } + message.append(contentsOf: "\(errorMessage?.title ?? "Unkown Error")") + return message + } func connectToServer(uri: String) { #if targetEnvironment(simulator) diff --git a/Shared/ViewModels/UserSignInViewModel.swift b/Shared/ViewModels/UserSignInViewModel.swift index f1da84b2..5310a267 100644 --- a/Shared/ViewModels/UserSignInViewModel.swift +++ b/Shared/ViewModels/UserSignInViewModel.swift @@ -20,9 +20,18 @@ final class UserSignInViewModel: ViewModel { self.server = server } + var alertTitle: String { + var message: String = "" + if errorMessage?.code != ErrorMessage.noShowErrorCode { + message.append(contentsOf: "\(errorMessage?.code ?? ErrorMessage.noShowErrorCode)\n") + } + message.append(contentsOf: "\(errorMessage?.title ?? "Unkown Error")") + return message + } + func login(username: String, password: String) { LogManager.shared.log.debug("Attempting to login to server at \"\(server.uri)\"", tag: "login") - LogManager.shared.log.debug("username == \"\": \(username), password == \"\": \(password)", tag: "login") + LogManager.shared.log.debug("username: \(username), password: \(password)", tag: "login") SessionManager.main.loginUser(server: server, username: username, password: password) .trackActivity(loading) diff --git a/Shared/ViewModels/ViewModel.swift b/Shared/ViewModels/ViewModel.swift index 984a53cb..001c6fed 100644 --- a/Shared/ViewModels/ViewModel.swift +++ b/Shared/ViewModels/ViewModel.swift @@ -29,11 +29,12 @@ class ViewModel: ObservableObject { case .finished: break case .failure(let error): - if let errorResponse = error as? ErrorResponse { - + let logConstructor = LogConstructor(message: "__NOTHING__", tag: tag, level: logLevel, function: function, file: file, line: line) + + switch error { + case is ErrorResponse: let networkError: NetworkError - let logConstructor = LogConstructor(message: "__NOTHING__", tag: tag, level: logLevel, function: function, file: file, line: line) - + let errorResponse = error as! ErrorResponse switch errorResponse { case .error(-1, _, _, _): networkError = .URLError(response: errorResponse, displayMessage: displayMessage, logConstructor: logConstructor) @@ -51,7 +52,55 @@ class ViewModel: ObservableObject { self.errorMessage = networkError.errorMessage networkError.logMessage() + + case is SwiftfinStore.Errors: + let swiftfinError = error as! SwiftfinStore.Errors + let errorMessage = ErrorMessage(code: ErrorMessage.noShowErrorCode, + title: swiftfinError.title, + displayMessage: swiftfinError.errorDescription ?? "", + logConstructor: logConstructor) + self.errorMessage = errorMessage + LogManager.shared.log.error("Request failed: \(swiftfinError.errorDescription ?? "")") + + default: + let genericErrorMessage = ErrorMessage(code: ErrorMessage.noShowErrorCode, + title: "Generic Error", + displayMessage: error.localizedDescription, + logConstructor: logConstructor) + self.errorMessage = genericErrorMessage + LogManager.shared.log.error("Request failed: Generic error - \(error.localizedDescription)") } + +// if let errorResponse = error as? ErrorResponse { +// +// let networkError: NetworkError +// +// switch errorResponse { +// case .error(-1, _, _, _): +// networkError = .URLError(response: errorResponse, displayMessage: displayMessage, logConstructor: logConstructor) +// // Use the errorResponse description for debugging, rather than the user-facing friendly description which may not be implemented +// LogManager.shared.log.error("Request failed: URL request failed with error \(networkError.errorMessage.code): \(errorResponse.localizedDescription)") +// case .error(-2, _, _, _): +// networkError = .HTTPURLError(response: errorResponse, displayMessage: displayMessage, logConstructor: logConstructor) +// LogManager.shared.log.error("Request failed: HTTP URL request failed with description: \(errorResponse.localizedDescription)") +// default: +// networkError = .JellyfinError(response: errorResponse, displayMessage: displayMessage, logConstructor: logConstructor) +// // Able to use user-facing friendly description here since just HTTP status codes +// LogManager.shared.log.error("Request failed: \(networkError.errorMessage.code) - \(networkError.errorMessage.title): \(networkError.errorMessage.logConstructor.message)\n\(error.localizedDescription)") +// } +// +// self.errorMessage = networkError.errorMessage +// +// networkError.logMessage() +// } else { +// let generalErrorMessage = ErrorMessage(code: 0, +// title: "Error", +// displayMessage: error.localizedDescription, +// logConstructor: logConstructor) +// +// self.errorMessage = generalErrorMessage +// LogManager.shared.log.error("Request failed: General error - \(error.localizedDescription)") +// } } } } From 1aa2716f42c6e9fe07db3ed87833453c189c28f1 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 15:32:55 -0600 Subject: [PATCH 15/88] Use uri instead of local address and login to sign in --- JellyfinPlayer/Views/UserListView.swift | 4 ++-- Shared/Singleton/SessionManager.swift | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/JellyfinPlayer/Views/UserListView.swift b/JellyfinPlayer/Views/UserListView.swift index 4d13e71a..56b9f485 100644 --- a/JellyfinPlayer/Views/UserListView.swift +++ b/JellyfinPlayer/Views/UserListView.swift @@ -53,7 +53,7 @@ struct UserListView: View { @ViewBuilder private var noUserView: some View { VStack { - Text("Login to a user to get started.") + Text("Sign in to get started.") .frame(minWidth: 50, maxWidth: 240) .multilineTextAlignment(.center) @@ -69,7 +69,7 @@ struct UserListView: View { .padding([.leading, .trailing], 30) .padding([.top, .bottom], 20) - Text("Login") + Text("Sign in") .foregroundColor(Color.white) .bold() } diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index 867cfac1..f3a0a016 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -80,8 +80,7 @@ final class SessionManager { let transaction = SwiftfinStore.dataStack.beginUnsafe() let newServer = transaction.create(Into()) - guard let uri = response.localAddress, - let name = response.serverName, + guard let name = response.serverName, let id = response.id, let os = response.operatingSystem, let version = response.version else { throw JellyfinAPIError("Missing server data from network call") } From b13877cdddc931aac389a316b250330ce0aa6792 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 16:50:08 -0600 Subject: [PATCH 16/88] Allow server/user deletion --- JellyfinPlayer/Views/ServerDetailView.swift | 2 +- JellyfinPlayer/Views/ServerListView.swift | 9 +++- JellyfinPlayer/Views/SettingsView.swift | 51 +++++++++++++++------ JellyfinPlayer/Views/UserListView.swift | 9 +++- Shared/Singleton/SessionManager.swift | 27 ++++++++++- Shared/ViewModels/ServerListViewModel.swift | 5 ++ Shared/ViewModels/UserListViewModel.swift | 5 ++ 7 files changed, 91 insertions(+), 17 deletions(-) diff --git a/JellyfinPlayer/Views/ServerDetailView.swift b/JellyfinPlayer/Views/ServerDetailView.swift index 98901a05..89fb08ab 100644 --- a/JellyfinPlayer/Views/ServerDetailView.swift +++ b/JellyfinPlayer/Views/ServerDetailView.swift @@ -15,7 +15,7 @@ struct ServerDetailView: View { var body: some View { Form { - Section(header: Text("")) { + Section(header: Text("Server Details")) { HStack { Text("Name") Spacer() diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index 73fd01de..7eb03c51 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -52,6 +52,13 @@ struct ServerListView: View { } .padding() } + .contextMenu { + Button(role: .destructive) { + viewModel.remove(server: server) + } label: { + Label("Remove", systemImage: "trash") + } + } } } } @@ -60,7 +67,7 @@ struct ServerListView: View { @ViewBuilder private var noServerView: some View { VStack { - Text("Connect to a Jellyfin server to get started.") + Text("Connect to a Jellyfin server to get started") .frame(minWidth: 50, maxWidth: 240) .multilineTextAlignment(.center) diff --git a/JellyfinPlayer/Views/SettingsView.swift b/JellyfinPlayer/Views/SettingsView.swift index 2d23c53a..9e353407 100644 --- a/JellyfinPlayer/Views/SettingsView.swift +++ b/JellyfinPlayer/Views/SettingsView.swift @@ -28,23 +28,48 @@ struct SettingsView: View { var body: some View { Form { Section(header: EmptyView()) { - HStack { - Text("User") - Spacer() - Text(SessionManager.main.currentLogin.user.username) - .foregroundColor(.jellyfinPurple) - } - - Button { - settingsRouter.route(to: \.serverDetail) - } label: { + + // There is a bug where the SettingsView attmempts to remake itself upon signing out + // so this check is made + if SessionManager.main.currentLogin == nil { HStack { - Text("Server") + Text("User") Spacer() - Text(SessionManager.main.currentLogin.server.name) + Text("") .foregroundColor(.jellyfinPurple) + } - Image(systemName: "chevron.right") + Button { + settingsRouter.route(to: \.serverDetail) + } label: { + HStack { + Text("Server") + Spacer() + Text("") + .foregroundColor(.jellyfinPurple) + + Image(systemName: "chevron.right") + } + } + } else { + HStack { + Text("User") + Spacer() + Text(SessionManager.main.currentLogin.user.username) + .foregroundColor(.jellyfinPurple) + } + + Button { + settingsRouter.route(to: \.serverDetail) + } label: { + HStack { + Text("Server") + Spacer() + Text(SessionManager.main.currentLogin.server.name) + .foregroundColor(.jellyfinPurple) + + Image(systemName: "chevron.right") + } } } diff --git a/JellyfinPlayer/Views/UserListView.swift b/JellyfinPlayer/Views/UserListView.swift index 56b9f485..8b37c8b1 100644 --- a/JellyfinPlayer/Views/UserListView.swift +++ b/JellyfinPlayer/Views/UserListView.swift @@ -45,6 +45,13 @@ struct UserListView: View { } .padding() } + .contextMenu { + Button(role: .destructive) { + viewModel.remove(user: user) + } label: { + Label("Remove", systemImage: "trash") + } + } } } } @@ -53,7 +60,7 @@ struct UserListView: View { @ViewBuilder private var noUserView: some View { VStack { - Text("Sign in to get started.") + Text("Sign in to get started") .frame(minWidth: 50, maxWidth: 240) .multilineTextAlignment(.center) diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index f3a0a016..db6259ee 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -175,6 +175,7 @@ final class SessionManager { } func logout() { + currentLogin = nil JellyfinAPI.basePath = "" setAuthHeader(with: "") SwiftfinStore.Defaults.suite[.lastServerUserID] = nil @@ -182,11 +183,35 @@ final class SessionManager { } func delete(user: SwiftfinStore.State.User) { - + guard let storedUser = try? SwiftfinStore.dataStack.fetchOne(From(), + [Where("id == %@", user.id)]) else { fatalError("No stored user for state user?")} + _delete(user: storedUser, transaction: nil) } func delete(server: SwiftfinStore.State.Server) { + guard let storedServer = try? SwiftfinStore.dataStack.fetchOne(From(), + [Where("id == %@", server.id)]) else { fatalError("No stored server for state server?")} + _delete(server: storedServer, transaction: nil) + } + + private func _delete(user: SwiftfinStore.Models.StoredUser, transaction: UnsafeDataTransaction?) { + guard let storedAccessToken = user.accessToken else { fatalError("No access token for stored user?")} + let transaction = transaction == nil ? SwiftfinStore.dataStack.beginUnsafe() : transaction! + transaction.delete(storedAccessToken) + transaction.delete(user) + try? transaction.commitAndWait() + } + + private func _delete(server: SwiftfinStore.Models.StoredServer, transaction: UnsafeDataTransaction?) { + let transaction = transaction == nil ? SwiftfinStore.dataStack.beginUnsafe() : transaction! + + for user in server.users { + _delete(user: user, transaction: transaction) + } + + transaction.delete(server) + try? transaction.commitAndWait() } private func setAuthHeader(with accessToken: String) { diff --git a/Shared/ViewModels/ServerListViewModel.swift b/Shared/ViewModels/ServerListViewModel.swift index 9df10683..ce79b8c4 100644 --- a/Shared/ViewModels/ServerListViewModel.swift +++ b/Shared/ViewModels/ServerListViewModel.swift @@ -25,4 +25,9 @@ class ServerListViewModel: ObservableObject { return "\(server.userIDs.count) users" } } + + func remove(server: SwiftfinStore.State.Server) { + SessionManager.main.delete(server: server) + fetchServers() + } } diff --git a/Shared/ViewModels/UserListViewModel.swift b/Shared/ViewModels/UserListViewModel.swift index 015517a0..f6fa38d0 100644 --- a/Shared/ViewModels/UserListViewModel.swift +++ b/Shared/ViewModels/UserListViewModel.swift @@ -29,4 +29,9 @@ class UserListViewModel: ViewModel { SessionManager.main.loginUser(server: server, user: user) SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) } + + func remove(user: SwiftfinStore.State.User) { + SessionManager.main.delete(user: user) + fetchUsers() + } } From 4153c4006762b3b98e9bc4de30d7aada4eb31ceb Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 17:03:52 -0600 Subject: [PATCH 17/88] Remove Keychain --- JellyfinPlayer.xcodeproj/project.pbxproj | 33 ------------------- .../xcshareddata/swiftpm/Package.resolved | 9 ----- JellyfinPlayer/JellyfinPlayer.entitlements | 4 --- 3 files changed, 46 deletions(-) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 698dbdf8..9d963016 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -44,7 +44,6 @@ 53313B90265EEA6D00947AA3 /* VideoPlayer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 53313B8F265EEA6D00947AA3 /* VideoPlayer.storyboard */; }; 53352571265EA0A0006CCA86 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 53352570265EA0A0006CCA86 /* Introspect */; }; 5338F74E263B61370014BF09 /* ConnectToServerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5338F74D263B61370014BF09 /* ConnectToServerView.swift */; }; - 5338F757263B7E2E0014BF09 /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 5338F756263B7E2E0014BF09 /* KeychainSwift */; }; 534D4FF026A7D7CC000A7A48 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 534D4FEE26A7D7CC000A7A48 /* Localizable.strings */; }; 534D4FF126A7D7CC000A7A48 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 534D4FEE26A7D7CC000A7A48 /* Localizable.strings */; }; 534D4FF226A7D7CC000A7A48 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 534D4FEE26A7D7CC000A7A48 /* Localizable.strings */; }; @@ -59,7 +58,6 @@ 5358706A2669D21700D05A09 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 535870692669D21700D05A09 /* Preview Assets.xcassets */; }; 5358706C2669D21700D05A09 /* PersistenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5358706B2669D21700D05A09 /* PersistenceController.swift */; }; 5358707E2669D64F00D05A09 /* bitrates.json in Resources */ = {isa = PBXBuildFile; fileRef = AE8C3158265D6F90008AA076 /* bitrates.json */; }; - 5358708D2669D7A800D05A09 /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 5358708C2669D7A800D05A09 /* KeychainSwift */; }; 535870912669D7A800D05A09 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 535870902669D7A800D05A09 /* Introspect */; }; 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5358709A2669D7A800D05A09 /* NukeUI */; }; 535870A52669D8AE00D05A09 /* ParallaxHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6225FCCA2663841E00E067F6 /* ParallaxHeader.swift */; }; @@ -203,7 +201,6 @@ 628B95332670CAEA0091AF3B /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 628B95322670CAEA0091AF3B /* NukeUI */; }; 628B95352670CAEA0091AF3B /* JellyfinAPI in Frameworks */ = {isa = PBXBuildFile; productRef = 628B95342670CAEA0091AF3B /* JellyfinAPI */; }; 628B95372670CB800091AF3B /* JellyfinWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 628B95362670CB800091AF3B /* JellyfinWidget.swift */; }; - 628B953A2670CE250091AF3B /* KeychainSwift in Frameworks */ = {isa = PBXBuildFile; productRef = 628B95392670CE250091AF3B /* KeychainSwift */; }; 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338922660107500A81A2A /* StringExtensions.swift */; }; 62C29E9C26D0FE4200C1D2E7 /* Stinsen in Frameworks */ = {isa = PBXBuildFile; productRef = 62C29E9B26D0FE4200C1D2E7 /* Stinsen */; }; 62C29E9F26D1016600C1D2E7 /* MainCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29E9E26D1016600C1D2E7 /* MainCoordinator.swift */; }; @@ -566,7 +563,6 @@ 6261A0E026A0AB710072EF1C /* CombineExt in Frameworks */, E13DD3DF27175CEA009D4DAF /* Defaults in Frameworks */, 53272535268BF9710035FBF1 /* SwiftUIFocusGuide in Frameworks */, - 5358708D2669D7A800D05A09 /* KeychainSwift in Frameworks */, 536D3D84267BEA550004248C /* ParallaxView in Frameworks */, 53ABFDDC267972BF00886593 /* TVServices.framework in Frameworks */, E13DD3CD27164CA7009D4DAF /* CoreStore in Frameworks */, @@ -582,7 +578,6 @@ E13DD3D327168E65009D4DAF /* Defaults in Frameworks */, 53649AAD269CFAEA00A2D8B7 /* Puppy in Frameworks */, 62C29E9C26D0FE4200C1D2E7 /* Stinsen in Frameworks */, - 5338F757263B7E2E0014BF09 /* KeychainSwift in Frameworks */, 53EC6E25267EB10F006DD26A /* SwiftyJSON in Frameworks */, 53EC6E21267E80B1006DD26A /* Pods_JellyfinPlayer_iOS.framework in Frameworks */, 53352571265EA0A0006CCA86 /* Introspect in Frameworks */, @@ -604,7 +599,6 @@ E13DD3DD27175CE3009D4DAF /* Defaults in Frameworks */, 53649AB5269D423A00A2D8B7 /* Puppy in Frameworks */, 536D3D7D267BD5F90004248C /* ActivityIndicator in Frameworks */, - 628B953A2670CE250091AF3B /* KeychainSwift in Frameworks */, E13DD3CF27164E1F009D4DAF /* CoreStore in Frameworks */, 628B95352670CAEA0091AF3B /* JellyfinAPI in Frameworks */, ); @@ -1219,7 +1213,6 @@ ); name = "JellyfinPlayer tvOS"; packageProductDependencies = ( - 5358708C2669D7A800D05A09 /* KeychainSwift */, 535870902669D7A800D05A09 /* Introspect */, 5358709A2669D7A800D05A09 /* NukeUI */, 53A431BE266B0FFE0016769F /* JellyfinAPI */, @@ -1256,7 +1249,6 @@ ); name = "JellyfinPlayer iOS"; packageProductDependencies = ( - 5338F756263B7E2E0014BF09 /* KeychainSwift */, 53352570265EA0A0006CCA86 /* Introspect */, 621C637F26672A30004216EA /* NukeUI */, 53A431BC266B0FF20016769F /* JellyfinAPI */, @@ -1288,7 +1280,6 @@ packageProductDependencies = ( 628B95322670CAEA0091AF3B /* NukeUI */, 628B95342670CAEA0091AF3B /* JellyfinAPI */, - 628B95392670CE250091AF3B /* KeychainSwift */, 536D3D7C267BD5F90004248C /* ActivityIndicator */, 53649AB4269D423A00A2D8B7 /* Puppy */, E13DD3CE27164E1F009D4DAF /* CoreStore */, @@ -1345,7 +1336,6 @@ ); mainGroup = 5377CBE8263B596A003A4E83; packageReferences = ( - 5338F755263B7E2E0014BF09 /* XCRemoteSwiftPackageReference "keychain-swift" */, 5335256F265EA0A0006CCA86 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */, 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */, 53A431BB266B0FF20016769F /* XCRemoteSwiftPackageReference "jellyfin-sdk-swift" */, @@ -2296,14 +2286,6 @@ minimumVersion = 0.1.3; }; }; - 5338F755263B7E2E0014BF09 /* XCRemoteSwiftPackageReference "keychain-swift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/evgenyneu/keychain-swift"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 19.0.0; - }; - }; 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/sushichop/Puppy"; @@ -2397,16 +2379,6 @@ package = 5335256F265EA0A0006CCA86 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */; productName = Introspect; }; - 5338F756263B7E2E0014BF09 /* KeychainSwift */ = { - isa = XCSwiftPackageProductDependency; - package = 5338F755263B7E2E0014BF09 /* XCRemoteSwiftPackageReference "keychain-swift" */; - productName = KeychainSwift; - }; - 5358708C2669D7A800D05A09 /* KeychainSwift */ = { - isa = XCSwiftPackageProductDependency; - package = 5338F755263B7E2E0014BF09 /* XCRemoteSwiftPackageReference "keychain-swift" */; - productName = KeychainSwift; - }; 535870902669D7A800D05A09 /* Introspect */ = { isa = XCSwiftPackageProductDependency; package = 5335256F265EA0A0006CCA86 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */; @@ -2497,11 +2469,6 @@ package = 53A431BB266B0FF20016769F /* XCRemoteSwiftPackageReference "jellyfin-sdk-swift" */; productName = JellyfinAPI; }; - 628B95392670CE250091AF3B /* KeychainSwift */ = { - isa = XCSwiftPackageProductDependency; - package = 5338F755263B7E2E0014BF09 /* XCRemoteSwiftPackageReference "keychain-swift" */; - productName = KeychainSwift; - }; 62C29E9B26D0FE4200C1D2E7 /* Stinsen */ = { isa = XCSwiftPackageProductDependency; package = 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */; diff --git a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved index d524c9b5..8893bce9 100644 --- a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -73,15 +73,6 @@ "version": null } }, - { - "package": "KeychainSwift", - "repositoryURL": "https://github.com/evgenyneu/keychain-swift", - "state": { - "branch": null, - "revision": "96fb84f45a96630e7583903bd7e08cf095c7a7ef", - "version": "19.0.0" - } - }, { "package": "Nuke", "repositoryURL": "https://github.com/kean/Nuke.git", diff --git a/JellyfinPlayer/JellyfinPlayer.entitlements b/JellyfinPlayer/JellyfinPlayer.entitlements index b6b038ce..77250fef 100644 --- a/JellyfinPlayer/JellyfinPlayer.entitlements +++ b/JellyfinPlayer/JellyfinPlayer.entitlements @@ -12,9 +12,5 @@ com.apple.security.network.client - keychain-access-groups - - $(AppIdentifierPrefix)me.vigue.jellyfin.sharedKeychain - From dbca71df7bc301ce34685b9d0d964386a5f97a70 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 17:08:01 -0600 Subject: [PATCH 18/88] Move back bar button item setup --- JellyfinPlayer/Coordinators/MainCoordinator.swift | 8 ++++++++ JellyfinPlayer/Views/HomeView.swift | 9 --------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/JellyfinPlayer/Coordinators/MainCoordinator.swift b/JellyfinPlayer/Coordinators/MainCoordinator.swift index 4f50e0cf..eb7ac771 100644 --- a/JellyfinPlayer/Coordinators/MainCoordinator.swift +++ b/JellyfinPlayer/Coordinators/MainCoordinator.swift @@ -36,7 +36,15 @@ import SwiftUI WidgetCenter.shared.reloadAllTimelines() UIScrollView.appearance().keyboardDismissMode = .onDrag #endif + + // Back bar button item setup + let backButtonBackgroundImage = UIImage(systemName: "chevron.backward.circle.fill") + let barAppearance = UINavigationBar.appearance() + barAppearance.backIndicatorImage = backButtonBackgroundImage + barAppearance.backIndicatorTransitionMaskImage = backButtonBackgroundImage + barAppearance.tintColor = UIColor(Color.jellyfinPurple) + // Notification setup for state let nc = SwiftfinNotificationCenter.main nc.addObserver(self, selector: #selector(didLogIn), name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) nc.addObserver(self, selector: #selector(didLogOut), name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) diff --git a/JellyfinPlayer/Views/HomeView.swift b/JellyfinPlayer/Views/HomeView.swift index d534f1af..fe0f1f46 100644 --- a/JellyfinPlayer/Views/HomeView.swift +++ b/JellyfinPlayer/Views/HomeView.swift @@ -14,15 +14,6 @@ struct HomeView: View { @EnvironmentObject var homeRouter: HomeCoordinator.Router @StateObject var viewModel = HomeViewModel() - // TODO: Move so that setup has same button - init() { - let backButtonBackgroundImage = UIImage(systemName: "chevron.backward.circle.fill") - let barAppearance = UINavigationBar.appearance() - barAppearance.backIndicatorImage = backButtonBackgroundImage - barAppearance.backIndicatorTransitionMaskImage = backButtonBackgroundImage - barAppearance.tintColor = UIColor(Color.jellyfinPurple) - } - @ViewBuilder var innerBody: some View { if viewModel.isLoading { From d84ff63edf210db0d41d61e0375279286dfef561 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 17:09:57 -0600 Subject: [PATCH 19/88] Fix header --- JellyfinPlayer/Views/ConnectToServerView.swift | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index 221feb48..4c0fc1ec 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -1,4 +1,5 @@ -/* JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public +/* + * JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public * License, v2.0. If a copy of the MPL was not distributed with this * file, you can obtain one at https://mozilla.org/MPL/2.0/. * From 76530a6d7a136b89fa78042625b8cb2173c29c1c Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 17:21:10 -0600 Subject: [PATCH 20/88] Move tvOS files and remove persistence controller --- .../{ => App}/JellyfinPlayer_tvOSApp.swift | 2 - .../PersistenceController.swift | 37 --------- .../{ => Views}/ConnectToServerView.swift | 0 .../{ => Views}/ContinueWatchingView.swift | 0 .../{ => Views}/EpisodeItemView.swift | 0 .../{ => Views}/HomeView.swift | 0 .../{ => Views}/ItemView.swift | 0 .../{ => Views}/LatestMediaView.swift | 0 .../{ => Views}/LibraryListView.swift | 0 .../{ => Views}/LibrarySearchView.swift | 0 .../{ => Views}/LibraryView.swift | 0 .../{ => Views}/MainTabView.swift | 0 .../{ => Views}/MovieItemView.swift | 0 .../{ => Views}/NextUpView.swift | 0 .../PlainNavigationLinkButton.swift | 0 .../{ => Views}/SeasonItemView.swift | 0 .../{ => Views}/SeriesItemView.swift | 0 .../{ => Views}/SettingsView.swift | 0 .../{ => Views}/SplashView.swift | 0 JellyfinPlayer.xcodeproj/project.pbxproj | 78 +++++++++++-------- .../ConnectToServerCoodinator.swift | 2 +- .../Views/ConnectToServerView.swift | 2 +- Shared/Singleton/SessionManager.swift | 1 - 23 files changed, 47 insertions(+), 75 deletions(-) rename JellyfinPlayer tvOS/{ => App}/JellyfinPlayer_tvOSApp.swift (75%) delete mode 100644 JellyfinPlayer tvOS/PersistenceController.swift rename JellyfinPlayer tvOS/{ => Views}/ConnectToServerView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/ContinueWatchingView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/EpisodeItemView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/HomeView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/ItemView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/LatestMediaView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/LibraryListView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/LibrarySearchView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/LibraryView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/MainTabView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/MovieItemView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/NextUpView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/PlainNavigationLinkButton.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/SeasonItemView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/SeriesItemView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/SettingsView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/SplashView.swift (100%) diff --git a/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift b/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift similarity index 75% rename from JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift rename to JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift index 86dcfd74..bf3356f1 100644 --- a/JellyfinPlayer tvOS/JellyfinPlayer_tvOSApp.swift +++ b/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift @@ -10,12 +10,10 @@ import UIKit @main struct JellyfinPlayer_tvOSApp: App { - let persistenceController = PersistenceController.shared var body: some Scene { WindowGroup { SplashView() - .environment(\.managedObjectContext, persistenceController.container.viewContext) .ignoresSafeArea(.all, edges: .all) } } diff --git a/JellyfinPlayer tvOS/PersistenceController.swift b/JellyfinPlayer tvOS/PersistenceController.swift deleted file mode 100644 index 056d1330..00000000 --- a/JellyfinPlayer tvOS/PersistenceController.swift +++ /dev/null @@ -1,37 +0,0 @@ -/* JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import CoreData - -struct PersistenceController { - static let shared = PersistenceController() - - let container: NSPersistentContainer - - init(inMemory: Bool = false) { - container = NSPersistentContainer(name: "Model") - if inMemory { - container.persistentStoreDescriptions.first!.url = URL(fileURLWithPath: "/dev/null") - } - container.loadPersistentStores(completionHandler: { (_, error) in - if let error = error as NSError? { - // Replace this implementation with code to handle the error appropriately. - // fatalError() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. - - /* - Typical reasons for an error here include: - * The parent directory does not exist, cannot be created, or disallows writing. - * The persistent store is not accessible, due to permissions or data protection when the device is locked. - * The device is out of space. - * The store could not be migrated to the current model version. - Check the error message to determine what the actual problem was. - */ - fatalError("Unresolved error \(error), \(error.userInfo)") - } - }) - } -} diff --git a/JellyfinPlayer tvOS/ConnectToServerView.swift b/JellyfinPlayer tvOS/Views/ConnectToServerView.swift similarity index 100% rename from JellyfinPlayer tvOS/ConnectToServerView.swift rename to JellyfinPlayer tvOS/Views/ConnectToServerView.swift diff --git a/JellyfinPlayer tvOS/ContinueWatchingView.swift b/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift similarity index 100% rename from JellyfinPlayer tvOS/ContinueWatchingView.swift rename to JellyfinPlayer tvOS/Views/ContinueWatchingView.swift diff --git a/JellyfinPlayer tvOS/EpisodeItemView.swift b/JellyfinPlayer tvOS/Views/EpisodeItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/EpisodeItemView.swift rename to JellyfinPlayer tvOS/Views/EpisodeItemView.swift diff --git a/JellyfinPlayer tvOS/HomeView.swift b/JellyfinPlayer tvOS/Views/HomeView.swift similarity index 100% rename from JellyfinPlayer tvOS/HomeView.swift rename to JellyfinPlayer tvOS/Views/HomeView.swift diff --git a/JellyfinPlayer tvOS/ItemView.swift b/JellyfinPlayer tvOS/Views/ItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/ItemView.swift rename to JellyfinPlayer tvOS/Views/ItemView.swift diff --git a/JellyfinPlayer tvOS/LatestMediaView.swift b/JellyfinPlayer tvOS/Views/LatestMediaView.swift similarity index 100% rename from JellyfinPlayer tvOS/LatestMediaView.swift rename to JellyfinPlayer tvOS/Views/LatestMediaView.swift diff --git a/JellyfinPlayer tvOS/LibraryListView.swift b/JellyfinPlayer tvOS/Views/LibraryListView.swift similarity index 100% rename from JellyfinPlayer tvOS/LibraryListView.swift rename to JellyfinPlayer tvOS/Views/LibraryListView.swift diff --git a/JellyfinPlayer tvOS/LibrarySearchView.swift b/JellyfinPlayer tvOS/Views/LibrarySearchView.swift similarity index 100% rename from JellyfinPlayer tvOS/LibrarySearchView.swift rename to JellyfinPlayer tvOS/Views/LibrarySearchView.swift diff --git a/JellyfinPlayer tvOS/LibraryView.swift b/JellyfinPlayer tvOS/Views/LibraryView.swift similarity index 100% rename from JellyfinPlayer tvOS/LibraryView.swift rename to JellyfinPlayer tvOS/Views/LibraryView.swift diff --git a/JellyfinPlayer tvOS/MainTabView.swift b/JellyfinPlayer tvOS/Views/MainTabView.swift similarity index 100% rename from JellyfinPlayer tvOS/MainTabView.swift rename to JellyfinPlayer tvOS/Views/MainTabView.swift diff --git a/JellyfinPlayer tvOS/MovieItemView.swift b/JellyfinPlayer tvOS/Views/MovieItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/MovieItemView.swift rename to JellyfinPlayer tvOS/Views/MovieItemView.swift diff --git a/JellyfinPlayer tvOS/NextUpView.swift b/JellyfinPlayer tvOS/Views/NextUpView.swift similarity index 100% rename from JellyfinPlayer tvOS/NextUpView.swift rename to JellyfinPlayer tvOS/Views/NextUpView.swift diff --git a/JellyfinPlayer tvOS/PlainNavigationLinkButton.swift b/JellyfinPlayer tvOS/Views/PlainNavigationLinkButton.swift similarity index 100% rename from JellyfinPlayer tvOS/PlainNavigationLinkButton.swift rename to JellyfinPlayer tvOS/Views/PlainNavigationLinkButton.swift diff --git a/JellyfinPlayer tvOS/SeasonItemView.swift b/JellyfinPlayer tvOS/Views/SeasonItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/SeasonItemView.swift rename to JellyfinPlayer tvOS/Views/SeasonItemView.swift diff --git a/JellyfinPlayer tvOS/SeriesItemView.swift b/JellyfinPlayer tvOS/Views/SeriesItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/SeriesItemView.swift rename to JellyfinPlayer tvOS/Views/SeriesItemView.swift diff --git a/JellyfinPlayer tvOS/SettingsView.swift b/JellyfinPlayer tvOS/Views/SettingsView.swift similarity index 100% rename from JellyfinPlayer tvOS/SettingsView.swift rename to JellyfinPlayer tvOS/Views/SettingsView.swift diff --git a/JellyfinPlayer tvOS/SplashView.swift b/JellyfinPlayer tvOS/Views/SplashView.swift similarity index 100% rename from JellyfinPlayer tvOS/SplashView.swift rename to JellyfinPlayer tvOS/Views/SplashView.swift diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 9d963016..187141fe 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -56,7 +56,6 @@ 535870632669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535870622669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift */; }; 535870672669D21700D05A09 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 535870662669D21700D05A09 /* Assets.xcassets */; }; 5358706A2669D21700D05A09 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 535870692669D21700D05A09 /* Preview Assets.xcassets */; }; - 5358706C2669D21700D05A09 /* PersistenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5358706B2669D21700D05A09 /* PersistenceController.swift */; }; 5358707E2669D64F00D05A09 /* bitrates.json in Resources */ = {isa = PBXBuildFile; fileRef = AE8C3158265D6F90008AA076 /* bitrates.json */; }; 535870912669D7A800D05A09 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 535870902669D7A800D05A09 /* Introspect */; }; 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5358709A2669D7A800D05A09 /* NukeUI */; }; @@ -242,6 +241,7 @@ E11B1B6C2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */; }; E11B1B6D2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */; }; E11B1B6E2718CDBA006DA3E8 /* JellyfinAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */; }; + E12186DE2718F1C50010884C /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E12186DD2718F1C50010884C /* Defaults */; }; E131691726C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691926C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; @@ -261,7 +261,6 @@ E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */; }; E13DD3D7271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3D4271693CD009D4DAF /* SwiftfinStoreDefaults.swift */; }; E13DD3DD27175CE3009D4DAF /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3DC27175CE3009D4DAF /* Defaults */; }; - E13DD3DF27175CEA009D4DAF /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E13DD3DE27175CEA009D4DAF /* Defaults */; }; E13DD3E127176BD3009D4DAF /* ServerListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */; }; E13DD3E227176BD3009D4DAF /* ServerListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */; }; E13DD3E527177D15009D4DAF /* ServerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E427177D15009D4DAF /* ServerListView.swift */; }; @@ -386,7 +385,6 @@ 535870622669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinPlayer_tvOSApp.swift; sourceTree = ""; }; 535870662669D21700D05A09 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 535870692669D21700D05A09 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = ""; }; - 5358706B2669D21700D05A09 /* PersistenceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceController.swift; sourceTree = ""; }; 535870702669D21700D05A09 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 535870AC2669D8DD00D05A09 /* Typings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Typings.swift; sourceTree = ""; }; 535BAE9E2649E569005FA86D /* ItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemView.swift; sourceTree = ""; }; @@ -561,12 +559,12 @@ 53A431BF266B0FFE0016769F /* JellyfinAPI in Frameworks */, 535870912669D7A800D05A09 /* Introspect in Frameworks */, 6261A0E026A0AB710072EF1C /* CombineExt in Frameworks */, - E13DD3DF27175CEA009D4DAF /* Defaults in Frameworks */, 53272535268BF9710035FBF1 /* SwiftUIFocusGuide in Frameworks */, 536D3D84267BEA550004248C /* ParallaxView in Frameworks */, 53ABFDDC267972BF00886593 /* TVServices.framework in Frameworks */, E13DD3CD27164CA7009D4DAF /* CoreStore in Frameworks */, 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */, + E12186DE2718F1C50010884C /* Defaults in Frameworks */, 53ABFDED26799D7700886593 /* ActivityIndicator in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -708,32 +706,15 @@ 535870612669D21600D05A09 /* JellyfinPlayer tvOS */ = { isa = PBXGroup; children = ( - 5310694F2684E7EE00CFFDBA /* VideoPlayer */, - 536D3D77267BB9650004248C /* Components */, - 53ABFDDA267972BF00886593 /* JellyfinPlayer tvOS.entitlements */, - 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */, - 535870622669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift */, + E12186DF2718F2030010884C /* App */, 535870662669D21700D05A09 /* Assets.xcassets */, - 5358706B2669D21700D05A09 /* PersistenceController.swift */, + 536D3D77267BB9650004248C /* Components */, 535870702669D21700D05A09 /* Info.plist */, + 53ABFDDA267972BF00886593 /* JellyfinPlayer tvOS.entitlements */, 535870682669D21700D05A09 /* Preview Content */, - 53ABFDDD267974E300886593 /* SplashView.swift */, - 531690EB267ABF46005D8AB9 /* ContinueWatchingView.swift */, - 531690EE267ABF72005D8AB9 /* NextUpView.swift */, - 53ABFDEA2679753200886593 /* ConnectToServerView.swift */, - 531690E4267ABD5C005D8AB9 /* MainTabView.swift */, - 531690E6267ABD79005D8AB9 /* HomeView.swift */, 531690F8267AD135005D8AB9 /* README.md */, - 536D3D7E267BDF100004248C /* LatestMediaView.swift */, - 53A83C32268A309300DF3D92 /* LibraryView.swift */, - C4E508172703E8190045C9AB /* LibraryListView.swift */, - C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */, - 53CD2A3F268A49C2002ABD4E /* ItemView.swift */, - 53CD2A41268A4B38002ABD4E /* MovieItemView.swift */, - 53116A16268B919A003024C9 /* SeriesItemView.swift */, - 53272536268C1DBB0035FBF1 /* SeasonItemView.swift */, - 53272538268C20100035FBF1 /* EpisodeItemView.swift */, - 5398514426B64DA100101B49 /* SettingsView.swift */, + 5310694F2684E7EE00CFFDBA /* VideoPlayer */, + E12186E02718F23B0010884C /* Views */, ); path = "JellyfinPlayer tvOS"; sourceTree = ""; @@ -1086,6 +1067,38 @@ path = Pods; sourceTree = ""; }; + E12186DF2718F2030010884C /* App */ = { + isa = PBXGroup; + children = ( + 535870622669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift */, + ); + path = App; + sourceTree = ""; + }; + E12186E02718F23B0010884C /* Views */ = { + isa = PBXGroup; + children = ( + 53ABFDEA2679753200886593 /* ConnectToServerView.swift */, + 531690EB267ABF46005D8AB9 /* ContinueWatchingView.swift */, + 53272538268C20100035FBF1 /* EpisodeItemView.swift */, + 531690E6267ABD79005D8AB9 /* HomeView.swift */, + 53CD2A3F268A49C2002ABD4E /* ItemView.swift */, + 536D3D7E267BDF100004248C /* LatestMediaView.swift */, + C4E508172703E8190045C9AB /* LibraryListView.swift */, + C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */, + 53A83C32268A309300DF3D92 /* LibraryView.swift */, + 531690E4267ABD5C005D8AB9 /* MainTabView.swift */, + 53CD2A41268A4B38002ABD4E /* MovieItemView.swift */, + 531690EE267ABF72005D8AB9 /* NextUpView.swift */, + 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */, + 53272536268C1DBB0035FBF1 /* SeasonItemView.swift */, + 53116A16268B919A003024C9 /* SeriesItemView.swift */, + 5398514426B64DA100101B49 /* SettingsView.swift */, + 53ABFDDD267974E300886593 /* SplashView.swift */, + ); + path = Views; + sourceTree = ""; + }; E13DD3BB27163C3E009D4DAF /* App */ = { isa = PBXGroup; children = ( @@ -1223,7 +1236,7 @@ 6261A0DF26A0AB710072EF1C /* CombineExt */, 6220D0C826D63F3700B8E046 /* Stinsen */, E13DD3CC27164CA7009D4DAF /* CoreStore */, - E13DD3DE27175CEA009D4DAF /* Defaults */, + E12186DD2718F1C50010884C /* Defaults */, ); productName = "JellyfinPlayer tvOS"; productReference = 535870602669D21600D05A09 /* JellyfinPlayer tvOS.app */; @@ -1606,7 +1619,6 @@ 62CB3F4C2685BB77003D0A6F /* DefaultsExtension.swift in Sources */, 62D8535B26FC631300FDFC59 /* MainCoordinator.swift in Sources */, 62E632E4267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, - 5358706C2669D21700D05A09 /* PersistenceController.swift in Sources */, 53649AB2269D019100A2D8B7 /* LogManager.swift in Sources */, E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, E13DD3FD2717EAE8009D4DAF /* UserListView.swift in Sources */, @@ -2474,6 +2486,11 @@ package = 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */; productName = Stinsen; }; + E12186DD2718F1C50010884C /* Defaults */ = { + isa = XCSwiftPackageProductDependency; + package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; + productName = Defaults; + }; E13DD3C52716499E009D4DAF /* CoreStore */ = { isa = XCSwiftPackageProductDependency; package = E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */; @@ -2499,11 +2516,6 @@ package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; productName = Defaults; }; - E13DD3DE27175CEA009D4DAF /* Defaults */ = { - isa = XCSwiftPackageProductDependency; - package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; - productName = Defaults; - }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 5377CBE9263B596A003A4E83 /* Project object */; diff --git a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift b/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift index daf73b85..20c4a862 100644 --- a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift +++ b/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift @@ -22,6 +22,6 @@ final class ConnectToServerCoodinator: NavigationCoordinatable { } @ViewBuilder func makeStart() -> some View { - ConnectToServerView() + ConnectToServerView(viewModel: ConnectToServerViewModel()) } } diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index 4c0fc1ec..af47c549 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -11,7 +11,7 @@ import Stinsen struct ConnectToServerView: View { - @StateObject var viewModel = ConnectToServerViewModel() + @StateObject var viewModel: ConnectToServerViewModel @State var uri = "" var body: some View { diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index db6259ee..ab19967d 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -13,7 +13,6 @@ import CoreStore import Defaults import Foundation import JellyfinAPI -import KeychainSwift import UIKit #if os(tvOS) From 5f4d42d6c8e3714e6aa845f3bddc53efe24aa31b Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 22:50:30 -0600 Subject: [PATCH 21/88] Move coordinators to shared --- .../Views/ConnectToServerView.swift | 168 ++++++------------ JellyfinPlayer tvOS/Views/SplashView.swift | 14 +- JellyfinPlayer.xcodeproj/project.pbxproj | 84 ++++++--- .../Components/PillHStackView.swift | 4 - .../Components/PortraitHStackView.swift | 8 - .../Coordinators/MainCoordinator.swift | 97 ---------- .../Coordinators/iOSMainCoordinator.swift | 83 +++++++++ .../ConnectToServerCoodinator.swift | 0 .../Coordinators/FilterCoordinator.swift | 0 .../Coordinators/HomeCoordinator.swift | 0 .../Coordinators/ItemCoordinator.swift | 0 .../Coordinators/LibraryCoordinator.swift | 0 .../Coordinators/LibraryListCoordinator.swift | 0 .../Coordinators/MainTabCoordinator.swift | 0 .../Coordinators/SearchCoordinator.swift | 0 .../Coordinators/ServerListCoordinator.swift | 0 .../Coordinators/SettingsCoordinator.swift | 0 .../Coordinators/UserListCoordinator.swift | 0 .../Coordinators/UserSignInCoordinator.swift | 0 .../Coordinators/VideoPlayerCoordinator.swift | 0 Shared/Objects/PillStackable.swift | 14 ++ Shared/Objects/PortraitImageStackable.swift | 18 ++ 22 files changed, 233 insertions(+), 257 deletions(-) delete mode 100644 JellyfinPlayer/Coordinators/MainCoordinator.swift create mode 100644 JellyfinPlayer/Coordinators/iOSMainCoordinator.swift rename {JellyfinPlayer => Shared}/Coordinators/ConnectToServerCoodinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/FilterCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/HomeCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/ItemCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/LibraryCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/LibraryListCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/MainTabCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/SearchCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/ServerListCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/SettingsCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/UserListCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/UserSignInCoordinator.swift (100%) rename {JellyfinPlayer => Shared}/Coordinators/VideoPlayerCoordinator.swift (100%) create mode 100644 Shared/Objects/PillStackable.swift create mode 100644 Shared/Objects/PortraitImageStackable.swift diff --git a/JellyfinPlayer tvOS/Views/ConnectToServerView.swift b/JellyfinPlayer tvOS/Views/ConnectToServerView.swift index 9a5e8ec3..ce981f88 100644 --- a/JellyfinPlayer tvOS/Views/ConnectToServerView.swift +++ b/JellyfinPlayer tvOS/Views/ConnectToServerView.swift @@ -1,141 +1,73 @@ -/* JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public +/* + * JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public * License, v2.0. If a copy of the MPL was not distributed with this * file, you can obtain one at https://mozilla.org/MPL/2.0/. * * Copyright 2021 Aiden Vigue & Jellyfin Contributors */ -import JellyfinAPI import SwiftUI +import Stinsen struct ConnectToServerView: View { + @StateObject var viewModel = ConnectToServerViewModel() - @State var username = "" - @State var password = "" @State var uri = "" - + var body: some View { - VStack(alignment: .leading) { - if viewModel.isConnectedServer { - Section(header: Text(viewModel.lastPublicUsers.isEmpty || username == "" ? "Login to \(SessionManager.main.currentLogin.server.name)": "")) { - if viewModel.lastPublicUsers.isEmpty || username == "" { - TextField(NSLocalizedString("Username", comment: ""), text: $username) - .disableAutocorrection(true) - .autocapitalization(.none) - } else { - HStack { - Spacer() - ImageView(src: URL(string: "\(SessionManager.main.currentLogin.server.uri)/Users/\(viewModel.selectedPublicUser.id ?? "")/Images/Primary?width=500&quality=80&tag=\(viewModel.selectedPublicUser.primaryImageTag ?? "")")!) - .frame(width: 250, height: 250) - .cornerRadius(125.0) - Spacer() - } - } - - SecureField(NSLocalizedString("Password", comment: ""), text: $password) - .disableAutocorrection(true) - .autocapitalization(.none) - } - - Section { - HStack { - Button { - if !viewModel.lastPublicUsers.isEmpty { - username = "" - viewModel.showPublicUsers() - } else { - viewModel.isConnectedServer = false - } - } label: { - Spacer() - HStack { - Text("Back") - } - Spacer() - } - - Button { - viewModel.login() - } label: { - Spacer() - if viewModel.isLoading { - ProgressView() - } else { - Text("Login") - } - Spacer() - }.disabled(viewModel.isLoading || username.isEmpty) + List { + Section { + TextField(NSLocalizedString("Server URL", comment: ""), text: $uri) + .disableAutocorrection(true) + .autocapitalization(.none) + .keyboardType(.URL) + Button { + viewModel.connectToServer(uri: uri) + } label: { + HStack { + Text("Connect") + Spacer() + if viewModel.isLoading { + ProgressView() } } } - } else { - if !viewModel.isLoading { - - Form { - Section(header: Text("Server Information")) { - TextField(NSLocalizedString("Server URL", comment: ""), text: $uri) - .disableAutocorrection(true) - .autocapitalization(.none) - .keyboardType(.URL) - Button { - viewModel.connectToServer() - } label: { - HStack { - Text("Connect") - Spacer() - } - if viewModel.isLoading { - ProgressView() - } - } - .disabled(viewModel.isLoading || uri.isEmpty) - } - Section(header: Text("Local Servers")) { - if self.viewModel.searching { - ProgressView() - } - ForEach(self.viewModel.servers, id: \.id) { server in - Button(action: { - print(server.url) - viewModel.connectToServer(at: server.url) - }, label: { - HStack { - VStack(alignment: .leading) { - Text(server.name) - .font(.headline) - Text(server.host) - .font(.subheadline) - } - Spacer() - Image(systemName: "chevron.forward") - .padding() - } - - }) - .disabled(viewModel.isLoading) - } - } - .onAppear(perform: self.viewModel.discoverServers) - } - } else { + .disabled(viewModel.isLoading || uri.isEmpty) + } header: { + Text("Connect to a Jellyfin server") + } + + Section(header: Text("Local Servers")) { + if viewModel.searching { ProgressView() } + ForEach(viewModel.discoveredServers.sorted(by: { $0.name < $1.name }), id: \.id) { discoveredServer in + Button(action: { + viewModel.connectToServer(uri: discoveredServer.url.absoluteString) + }, label: { + HStack { + Text(discoveredServer.name) + .font(.headline) + Text("• \(discoveredServer.host)") + .font(.subheadline) + .foregroundColor(.secondary) + Spacer() + if viewModel.isLoading { + ProgressView() + } + } + + }) + } } + .onAppear(perform: self.viewModel.discoverServers) + .headerProminence(.increased) } - .padding(.leading, 90) - .padding(.trailing, 90) .alert(item: $viewModel.errorMessage) { _ in - Alert(title: Text("Error"), message: Text(viewModel.errorMessage as? String ?? ""), dismissButton: .default(Text("Ok"))) + Alert(title: Text(viewModel.alertTitle), + message: Text(viewModel.errorMessage?.displayMessage ?? "Unknown Error"), + dismissButton: .cancel()) } - .onChange(of: uri) { uri in - viewModel.uriSubject.send(uri) - } - .onChange(of: username) { username in - viewModel.usernameSubject.send(username) - } - .onChange(of: password) { password in - viewModel.passwordSubject.send(password) - } - .navigationTitle(viewModel.isConnectedServer ? NSLocalizedString("Who's watching?", comment: "") : NSLocalizedString("Connect to Jellyfin", comment: "")) + .navigationTitle("Connect") } } diff --git a/JellyfinPlayer tvOS/Views/SplashView.swift b/JellyfinPlayer tvOS/Views/SplashView.swift index 3756ecd9..234da126 100644 --- a/JellyfinPlayer tvOS/Views/SplashView.swift +++ b/JellyfinPlayer tvOS/Views/SplashView.swift @@ -10,19 +10,21 @@ import SwiftUI struct SplashView: View { + @StateObject var viewModel = SplashViewModel() - + var body: some View { Group { - if viewModel.isLoggedIn { - NavigationView { - MainTabView() - }.padding(.all, -1) - } else { + if SessionManager.main.currentLogin == nil { NavigationView { ConnectToServerView() } .navigationViewStyle(StackNavigationViewStyle()) + } else { + NavigationView { + MainTabView() + } + .ignoresSafeArea() } } } diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 187141fe..edfd69d6 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -173,7 +173,6 @@ 6220D0BA26D6092100B8E046 /* FilterCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B926D6092100B8E046 /* FilterCoordinator.swift */; }; 6220D0C026D61C5000B8E046 /* ItemCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */; }; 6220D0C626D62D8700B8E046 /* VideoPlayerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */; }; - 6220D0C726D62D8700B8E046 /* VideoPlayerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */; }; 6220D0C926D63F3700B8E046 /* Stinsen in Frameworks */ = {isa = PBXBuildFile; productRef = 6220D0C826D63F3700B8E046 /* Stinsen */; }; 6220D0CC26D640C400B8E046 /* AppURLHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0CB26D640C400B8E046 /* AppURLHandler.swift */; }; 6225FCCB2663841E00E067F6 /* ParallaxHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6225FCCA2663841E00E067F6 /* ParallaxHeader.swift */; }; @@ -202,14 +201,13 @@ 628B95372670CB800091AF3B /* JellyfinWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 628B95362670CB800091AF3B /* JellyfinWidget.swift */; }; 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338922660107500A81A2A /* StringExtensions.swift */; }; 62C29E9C26D0FE4200C1D2E7 /* Stinsen in Frameworks */ = {isa = PBXBuildFile; productRef = 62C29E9B26D0FE4200C1D2E7 /* Stinsen */; }; - 62C29E9F26D1016600C1D2E7 /* MainCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29E9E26D1016600C1D2E7 /* MainCoordinator.swift */; }; + 62C29E9F26D1016600C1D2E7 /* iOSMainCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */; }; 62C29EA126D102A500C1D2E7 /* MainTabCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */; }; 62C29EA326D1030F00C1D2E7 /* ConnectToServerCoodinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */; }; 62C29EA626D1036A00C1D2E7 /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */; }; 62C29EA826D103D500C1D2E7 /* LibraryListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */; }; 62CB3F4B2685BB77003D0A6F /* DefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */; }; 62CB3F4C2685BB77003D0A6F /* DefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */; }; - 62D8535B26FC631300FDFC59 /* MainCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29E9E26D1016600C1D2E7 /* MainCoordinator.swift */; }; 62E632DA267D2BC40063E547 /* LatestMediaViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632D9267D2BC40063E547 /* LatestMediaViewModel.swift */; }; 62E632DC267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632DB267D2E130063E547 /* LibrarySearchViewModel.swift */; }; 62E632DD267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632DB267D2E130063E547 /* LibrarySearchViewModel.swift */; }; @@ -264,24 +262,18 @@ E13DD3E127176BD3009D4DAF /* ServerListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */; }; E13DD3E227176BD3009D4DAF /* ServerListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */; }; E13DD3E527177D15009D4DAF /* ServerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E427177D15009D4DAF /* ServerListView.swift */; }; - E13DD3E627177D15009D4DAF /* ServerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E427177D15009D4DAF /* ServerListView.swift */; }; E13DD3E927177ED6009D4DAF /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; - E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; E13DD3EC27178A54009D4DAF /* UserSignInViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserSignInViewModel.swift */; }; E13DD3ED27178A54009D4DAF /* UserSignInViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EB27178A54009D4DAF /* UserSignInViewModel.swift */; }; E13DD3EF27178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; E13DD3F027178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; E13DD3F227179378009D4DAF /* UserSignInCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */; }; - E13DD3F327179378009D4DAF /* UserSignInCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */; }; E13DD3F5271793BB009D4DAF /* UserSignInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserSignInView.swift */; }; - E13DD3F6271793BB009D4DAF /* UserSignInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F4271793BB009D4DAF /* UserSignInView.swift */; }; E13DD3F72717E87D009D4DAF /* SwiftfinNotificationCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3EE27178F87009D4DAF /* SwiftfinNotificationCenter.swift */; }; E13DD3F92717E961009D4DAF /* UserListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F82717E961009D4DAF /* UserListViewModel.swift */; }; E13DD3FA2717E961009D4DAF /* UserListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F82717E961009D4DAF /* UserListViewModel.swift */; }; E13DD3FC2717EAE8009D4DAF /* UserListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3FB2717EAE8009D4DAF /* UserListView.swift */; }; - E13DD3FD2717EAE8009D4DAF /* UserListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3FB2717EAE8009D4DAF /* UserListView.swift */; }; E13DD4022717EE79009D4DAF /* UserListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */; }; - E13DD4032717EE79009D4DAF /* UserListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */; }; E14F7D0726DB36EF007C3AE6 /* ItemPortraitMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0626DB36EF007C3AE6 /* ItemPortraitMainView.swift */; }; E14F7D0926DB36F7007C3AE6 /* ItemLandscapeMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E14F7D0826DB36F7007C3AE6 /* ItemLandscapeMainView.swift */; }; E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */; }; @@ -292,13 +284,29 @@ E18845F826DEA9C900B0C5B7 /* ItemViewBody.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18845F726DEA9C900B0C5B7 /* ItemViewBody.swift */; }; E188460026DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18845FF26DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift */; }; E188460426DEF04800B0C5B7 /* EpisodeCardVStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E188460326DEF04800B0C5B7 /* EpisodeCardVStackView.swift */; }; + E193D4D827193CAC00900D82 /* PortraitImageStackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */; }; + E193D4D927193CAC00900D82 /* PortraitImageStackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */; }; + E193D4DB27193CCA00900D82 /* PillStackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D4DA27193CCA00900D82 /* PillStackable.swift */; }; + E193D4DC27193CCA00900D82 /* PillStackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D4DA27193CCA00900D82 /* PillStackable.swift */; }; + E193D53227193F7B00900D82 /* ConnectToServerCoodinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */; }; + E193D53327193F7D00900D82 /* FilterCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B926D6092100B8E046 /* FilterCoordinator.swift */; }; + E193D53427193F7F00900D82 /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */; }; + E193D53527193F8100900D82 /* ItemCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */; }; + E193D53627193F8500900D82 /* LibraryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B326D5ED8000B8E046 /* LibraryCoordinator.swift */; }; + E193D53727193F8700900D82 /* LibraryListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */; }; + E193D53827193F8C00900D82 /* MainTabCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */; }; + E193D53927193F8E00900D82 /* SearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */; }; + E193D53A27193F9000900D82 /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; + E193D53B27193F9200900D82 /* SettingsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B026D5EC9900B8E046 /* SettingsCoordinator.swift */; }; + E193D53C27193F9500900D82 /* UserListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */; }; + E193D53D27193F9700900D82 /* UserSignInCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */; }; + E193D53E27193F9A00900D82 /* VideoPlayerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */; }; E1AD104A26D94822003E4A08 /* DetailItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104926D94822003E4A08 /* DetailItem.swift */; }; E1AD104B26D94822003E4A08 /* DetailItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104926D94822003E4A08 /* DetailItem.swift */; }; E1AD104D26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */; }; E1AD104E26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */; }; E1AD105426D97161003E4A08 /* BaseItemDtoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */; }; E1AD105626D981CE003E4A08 /* PortraitHStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD105526D981CE003E4A08 /* PortraitHStackView.swift */; }; - E1AD105726D981CE003E4A08 /* PortraitHStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD105526D981CE003E4A08 /* PortraitHStackView.swift */; }; E1AD105926D9A543003E4A08 /* LazyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338B22660A07800A81A2A /* LazyView.swift */; }; E1AD105C26D9ABDD003E4A08 /* PillHStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD105B26D9ABDD003E4A08 /* PillHStackView.swift */; }; E1AD105F26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD105E26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift */; }; @@ -485,7 +493,7 @@ 628B952A2670CABE0091AF3B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 628B95362670CB800091AF3B /* JellyfinWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinWidget.swift; sourceTree = ""; }; 628B953B2670D1FC0091AF3B /* WidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = WidgetExtension.entitlements; sourceTree = ""; }; - 62C29E9E26D1016600C1D2E7 /* MainCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainCoordinator.swift; sourceTree = ""; }; + 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSMainCoordinator.swift; sourceTree = ""; }; 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabCoordinator.swift; sourceTree = ""; }; 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectToServerCoodinator.swift; sourceTree = ""; }; 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCoordinator.swift; sourceTree = ""; }; @@ -536,6 +544,8 @@ E18845F726DEA9C900B0C5B7 /* ItemViewBody.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemViewBody.swift; sourceTree = ""; }; E18845FF26DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemLandscapeTopBarView.swift; sourceTree = ""; }; E188460326DEF04800B0C5B7 /* EpisodeCardVStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeCardVStackView.swift; sourceTree = ""; }; + E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortraitImageStackable.swift; sourceTree = ""; }; + E193D4DA27193CCA00900D82 /* PillStackable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PillStackable.swift; sourceTree = ""; }; E1AD104926D94822003E4A08 /* DetailItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailItem.swift; sourceTree = ""; }; E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseItemDtoExtensions.swift; sourceTree = ""; }; E1AD105526D981CE003E4A08 /* PortraitHStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortraitHStackView.swift; sourceTree = ""; }; @@ -708,6 +718,7 @@ children = ( E12186DF2718F2030010884C /* App */, 535870662669D21700D05A09 /* Assets.xcassets */, + E193D4DD27193DC400900D82 /* Coordinators */, 536D3D77267BB9650004248C /* Components */, 535870702669D21700D05A09 /* Info.plist */, 53ABFDDA267972BF00886593 /* JellyfinPlayer tvOS.entitlements */, @@ -730,13 +741,14 @@ 535870752669D60C00D05A09 /* Shared */ = { isa = PBXGroup; children = ( - E13DD3C0271648EC009D4DAF /* SwiftfinStore */, + 62C29E9D26D0FE5900C1D2E7 /* Coordinators */, E1FCD08E26C466F3007C8DCF /* Errors */, 621338912660106C00A81A2A /* Extensions */, 535870AB2669D8D300D05A09 /* Objects */, AE8C3157265D6F5E008AA076 /* Resources */, 091B5A852683142E00D78B61 /* ServerDiscovery */, 62EC352A26766657000E9F2D /* Singleton */, + E13DD3C0271648EC009D4DAF /* SwiftfinStore */, 532175392671BCED005491E6 /* ViewModels */, E1AD105326D96F5A003E4A08 /* Views */, ); @@ -749,6 +761,8 @@ E1AD104926D94822003E4A08 /* DetailItem.swift */, 53192D5C265AA78A008A4215 /* DeviceProfileBuilder.swift */, 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */, + E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */, + E193D4DA27193CCA00900D82 /* PillStackable.swift */, 535870AC2669D8DD00D05A09 /* Typings.swift */, E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */, ); @@ -799,7 +813,7 @@ 62ECA01926FA6D6900E8EBB7 /* AppURLHandler */, 5377CBF8263B596B003A4E83 /* Assets.xcassets */, 53F866422687A45400DCD1D7 /* Components */, - 62C29E9D26D0FE5900C1D2E7 /* Coordinators */, + E193D53F27193FA800900D82 /* Coordinators */, 5377CC02263B596B003A4E83 /* Info.plist */, 53AD124C2670278D0094A276 /* JellyfinPlayer.entitlements */, 5377CBFA263B596B003A4E83 /* Preview Content */, @@ -1016,7 +1030,6 @@ 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */, 6220D0B326D5ED8000B8E046 /* LibraryCoordinator.swift */, 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */, - 62C29E9E26D1016600C1D2E7 /* MainCoordinator.swift */, 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */, 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */, E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */, @@ -1172,6 +1185,21 @@ path = Landscape; sourceTree = ""; }; + E193D4DD27193DC400900D82 /* Coordinators */ = { + isa = PBXGroup; + children = ( + ); + path = Coordinators; + sourceTree = ""; + }; + E193D53F27193FA800900D82 /* Coordinators */ = { + isa = PBXGroup; + children = ( + 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */, + ); + path = Coordinators; + sourceTree = ""; + }; E1AD105226D96D5F003E4A08 /* JellyfinAPIExtensions */ = { isa = PBXGroup; children = ( @@ -1557,8 +1585,11 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + E193D53627193F8500900D82 /* LibraryCoordinator.swift in Sources */, 531069572684E7EE00CFFDBA /* InfoTabBarViewController.swift in Sources */, E18845F626DD631E00B0C5B7 /* BaseItemDto+Stackable.swift in Sources */, + E193D4DC27193CCA00900D82 /* PillStackable.swift in Sources */, + E193D53327193F7D00900D82 /* FilterCoordinator.swift in Sources */, 6267B3DC2671139500A7371D /* ImageExtensions.swift in Sources */, 531069592684E7EE00CFFDBA /* SubtitlesView.swift in Sources */, C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */, @@ -1570,10 +1601,10 @@ 53ABFDDE267974E300886593 /* SplashView.swift in Sources */, 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */, 62E632DE267D2E170063E547 /* LatestMediaViewModel.swift in Sources */, - E13DD3F327179378009D4DAF /* UserSignInCoordinator.swift in Sources */, E1FCD09726C47118007C8DCF /* ErrorMessage.swift in Sources */, - E13DD3EA27177ED6009D4DAF /* ServerListCoordinator.swift in Sources */, + E193D53527193F8100900D82 /* ItemCoordinator.swift in Sources */, 53116A19268B947A003024C9 /* PlainLinkButton.swift in Sources */, + E193D53E27193F9A00900D82 /* VideoPlayerCoordinator.swift in Sources */, 536D3D88267C17350004248C /* PublicUserButton.swift in Sources */, 62E632EA267D3FF50063E547 /* SeasonItemViewModel.swift in Sources */, 53CD2A40268A49C2002ABD4E /* ItemView.swift in Sources */, @@ -1599,14 +1630,18 @@ 62E632F4267D54030063E547 /* ItemViewModel.swift in Sources */, 6267B3D826710B9800A7371D /* CollectionExtensions.swift in Sources */, 62E632E7267D3F5B0063E547 /* EpisodeItemViewModel.swift in Sources */, + E193D53727193F8700900D82 /* LibraryListCoordinator.swift in Sources */, E100720726BDABC100CE3E31 /* MediaPlayButtonRowView.swift in Sources */, + E193D53927193F8E00900D82 /* SearchCoordinator.swift in Sources */, + E193D4D927193CAC00900D82 /* PortraitImageStackable.swift in Sources */, 535870A52669D8AE00D05A09 /* ParallaxHeader.swift in Sources */, 53272532268BF09D0035FBF1 /* MediaViewActionButton.swift in Sources */, 531690F0267ABF72005D8AB9 /* NextUpView.swift in Sources */, + E193D53427193F7F00900D82 /* HomeCoordinator.swift in Sources */, E11B1B6D2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */, + E193D53D27193F9700900D82 /* UserSignInCoordinator.swift in Sources */, 535870A72669D8AE00D05A09 /* MultiSelectorView.swift in Sources */, E1AD104E26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */, - E13DD4032717EE79009D4DAF /* UserListCoordinator.swift in Sources */, 62E632DD267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */, 536D3D81267BDFC60004248C /* PortraitItemElement.swift in Sources */, 531690E5267ABD5C005D8AB9 /* MainTabView.swift in Sources */, @@ -1617,37 +1652,36 @@ 5398514626B64DBB00101B49 /* SearchablePickerView.swift in Sources */, 53ABFDEE26799DCD00886593 /* ImageView.swift in Sources */, 62CB3F4C2685BB77003D0A6F /* DefaultsExtension.swift in Sources */, - 62D8535B26FC631300FDFC59 /* MainCoordinator.swift in Sources */, 62E632E4267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, 53649AB2269D019100A2D8B7 /* LogManager.swift in Sources */, E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, - E13DD3FD2717EAE8009D4DAF /* UserListView.swift in Sources */, 535870AA2669D8AE00D05A09 /* BlurHashDecode.swift in Sources */, 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */, C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, 531069582684E7EE00CFFDBA /* MediaInfoView.swift in Sources */, - 6220D0C726D62D8700B8E046 /* VideoPlayerCoordinator.swift in Sources */, 53272537268C1DBB0035FBF1 /* SeasonItemView.swift in Sources */, 09389CC526814E4500AE350E /* DeviceProfileBuilder.swift in Sources */, + E193D53C27193F9500900D82 /* UserListCoordinator.swift in Sources */, E13DD3C927164B1E009D4DAF /* UIDeviceExtensions.swift in Sources */, 535870A62669D8AE00D05A09 /* LazyView.swift in Sources */, + E193D53A27193F9000900D82 /* ServerListCoordinator.swift in Sources */, 6220D0AE26D5EABB00B8E046 /* ViewExtensions.swift in Sources */, 5321753E2671DE9C005491E6 /* Typings.swift in Sources */, E1F0204F26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */, 53ABFDEB2679753200886593 /* ConnectToServerView.swift in Sources */, 536D3D76267BA9BB0004248C /* MainTabViewModel.swift in Sources */, - E13DD3F6271793BB009D4DAF /* UserSignInView.swift in Sources */, 5310695C2684E7EE00CFFDBA /* VideoPlayerViewController.swift in Sources */, C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */, + E193D53B27193F9200900D82 /* SettingsCoordinator.swift in Sources */, 536D3D74267BA8170004248C /* BackgroundManager.swift in Sources */, 535870632669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift in Sources */, - E13DD3E627177D15009D4DAF /* ServerListView.swift in Sources */, + E193D53227193F7B00900D82 /* ConnectToServerCoodinator.swift in Sources */, 53ABFDE4267974EF00886593 /* LibraryListViewModel.swift in Sources */, 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 531690FA267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift in Sources */, E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */, - E1AD105726D981CE003E4A08 /* PortraitHStackView.swift in Sources */, + E193D53827193F8C00900D82 /* MainTabCoordinator.swift in Sources */, E13DD3C327164941009D4DAF /* SwiftfinStore.swift in Sources */, 09389CC826819B4600AE350E /* VideoPlayerModel.swift in Sources */, ); @@ -1669,7 +1703,7 @@ 625CB5732678C32A00530A6E /* HomeViewModel.swift in Sources */, 62C29EA826D103D500C1D2E7 /* LibraryListCoordinator.swift in Sources */, 62E632DC267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */, - 62C29E9F26D1016600C1D2E7 /* MainCoordinator.swift in Sources */, + 62C29E9F26D1016600C1D2E7 /* iOSMainCoordinator.swift in Sources */, 5389276E263C25100035E14B /* ContinueWatchingView.swift in Sources */, 53F866442687A45F00DCD1D7 /* PortraitItemView.swift in Sources */, E1AD105626D981CE003E4A08 /* PortraitHStackView.swift in Sources */, @@ -1734,6 +1768,8 @@ E13DD3C227164941009D4DAF /* SwiftfinStore.swift in Sources */, E1AD104A26D94822003E4A08 /* DetailItem.swift in Sources */, 62E632E0267D30CA0063E547 /* LibraryViewModel.swift in Sources */, + E193D4DB27193CCA00900D82 /* PillStackable.swift in Sources */, + E193D4D827193CAC00900D82 /* PortraitImageStackable.swift in Sources */, 624C21752685CF60007F1390 /* SearchablePickerView.swift in Sources */, E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */, 62EC352F267666A5000E9F2D /* SessionManager.swift in Sources */, diff --git a/JellyfinPlayer/Components/PillHStackView.swift b/JellyfinPlayer/Components/PillHStackView.swift index e0b5d0fc..d9ce7769 100644 --- a/JellyfinPlayer/Components/PillHStackView.swift +++ b/JellyfinPlayer/Components/PillHStackView.swift @@ -9,10 +9,6 @@ import SwiftUI -protocol PillStackable { - var title: String { get } -} - struct PillHStackView: View { let title: String diff --git a/JellyfinPlayer/Components/PortraitHStackView.swift b/JellyfinPlayer/Components/PortraitHStackView.swift index 4d97d34a..db9febec 100644 --- a/JellyfinPlayer/Components/PortraitHStackView.swift +++ b/JellyfinPlayer/Components/PortraitHStackView.swift @@ -9,14 +9,6 @@ import SwiftUI -public protocol PortraitImageStackable { - func imageURLContsructor(maxWidth: Int) -> URL - var title: String { get } - var description: String? { get } - var blurHash: String { get } - var failureInitials: String { get } -} - struct PortraitImageHStackView: View { let items: [ItemType] diff --git a/JellyfinPlayer/Coordinators/MainCoordinator.swift b/JellyfinPlayer/Coordinators/MainCoordinator.swift deleted file mode 100644 index eb7ac771..00000000 --- a/JellyfinPlayer/Coordinators/MainCoordinator.swift +++ /dev/null @@ -1,97 +0,0 @@ -// -/* - * SwiftFin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import Foundation -import Nuke -import Stinsen -import SwiftUI -#if !os(tvOS) - import WidgetKit -#endif - -#if os(iOS) - final class MainCoordinator: NavigationCoordinatable { - var stack: NavigationStack - - @Root var mainTab = makeMainTab - @Root var serverList = makeServerList - - init() { - if SessionManager.main.currentLogin != nil { - self.stack = NavigationStack(initial: \MainCoordinator.mainTab) - } else { - self.stack = NavigationStack(initial: \MainCoordinator.serverList) - } - - ImageCache.shared.costLimit = 125 * 1024 * 1024 // 125MB memory - DataLoader.sharedUrlCache.diskCapacity = 1000 * 1024 * 1024 // 1000MB disk - - #if !os(tvOS) - WidgetCenter.shared.reloadAllTimelines() - UIScrollView.appearance().keyboardDismissMode = .onDrag - #endif - - // Back bar button item setup - let backButtonBackgroundImage = UIImage(systemName: "chevron.backward.circle.fill") - let barAppearance = UINavigationBar.appearance() - barAppearance.backIndicatorImage = backButtonBackgroundImage - barAppearance.backIndicatorTransitionMaskImage = backButtonBackgroundImage - barAppearance.tintColor = UIColor(Color.jellyfinPurple) - - // Notification setup for state - let nc = SwiftfinNotificationCenter.main - nc.addObserver(self, selector: #selector(didLogIn), name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) - nc.addObserver(self, selector: #selector(didLogOut), name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) - nc.addObserver(self, selector: #selector(processDeepLink), name: SwiftfinNotificationCenter.Keys.processDeepLink, object: nil) - } - - @objc func didLogIn() { - LogManager.shared.log.info("Received `didSignIn` from NSNotificationCenter.") - root(\.mainTab) - } - - @objc func didLogOut() { - LogManager.shared.log.info("Received `didSignOut` from NSNotificationCenter.") - root(\.serverList) - } - - @objc func processDeepLink(_ notification: Notification) { - guard let deepLink = notification.object as? DeepLink else { return } - if let coordinator = hasRoot(\.mainTab) { - switch deepLink { - case let .item(item): - coordinator.focusFirst(\.home) - .child - .popToRoot() - .route(to: \.item, item) - } - } - } - - func makeMainTab() -> MainTabCoordinator { - MainTabCoordinator() - } - - func makeServerList() -> NavigationViewCoordinator { - NavigationViewCoordinator(ServerListCoordinator()) - } - } - -#elseif os(tvOS) - // temp for fixing build error - final class MainCoordinator: NavigationCoordinatable { - var stack = NavigationStack(initial: \MainCoordinator.mainTab) - - @Root var mainTab = makeEmpty - - @ViewBuilder func makeEmpty() -> some View { - EmptyView() - } - } -#endif diff --git a/JellyfinPlayer/Coordinators/iOSMainCoordinator.swift b/JellyfinPlayer/Coordinators/iOSMainCoordinator.swift new file mode 100644 index 00000000..e49d433a --- /dev/null +++ b/JellyfinPlayer/Coordinators/iOSMainCoordinator.swift @@ -0,0 +1,83 @@ +// +/* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import Nuke +import Stinsen +import SwiftUI +#if !os(tvOS) + import WidgetKit +#endif + +final class MainCoordinator: NavigationCoordinatable { + var stack: NavigationStack + + @Root var mainTab = makeMainTab + @Root var serverList = makeServerList + + init() { + if SessionManager.main.currentLogin != nil { + self.stack = NavigationStack(initial: \MainCoordinator.mainTab) + } else { + self.stack = NavigationStack(initial: \MainCoordinator.serverList) + } + + ImageCache.shared.costLimit = 125 * 1024 * 1024 // 125MB memory + DataLoader.sharedUrlCache.diskCapacity = 1000 * 1024 * 1024 // 1000MB disk + + #if !os(tvOS) + WidgetCenter.shared.reloadAllTimelines() + UIScrollView.appearance().keyboardDismissMode = .onDrag + #endif + + // Back bar button item setup + let backButtonBackgroundImage = UIImage(systemName: "chevron.backward.circle.fill") + let barAppearance = UINavigationBar.appearance() + barAppearance.backIndicatorImage = backButtonBackgroundImage + barAppearance.backIndicatorTransitionMaskImage = backButtonBackgroundImage + barAppearance.tintColor = UIColor(Color.jellyfinPurple) + + // Notification setup for state + let nc = SwiftfinNotificationCenter.main + nc.addObserver(self, selector: #selector(didLogIn), name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) + nc.addObserver(self, selector: #selector(didLogOut), name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) + nc.addObserver(self, selector: #selector(processDeepLink), name: SwiftfinNotificationCenter.Keys.processDeepLink, object: nil) + } + + @objc func didLogIn() { + LogManager.shared.log.info("Received `didSignIn` from NSNotificationCenter.") + root(\.mainTab) + } + + @objc func didLogOut() { + LogManager.shared.log.info("Received `didSignOut` from NSNotificationCenter.") + root(\.serverList) + } + + @objc func processDeepLink(_ notification: Notification) { + guard let deepLink = notification.object as? DeepLink else { return } + if let coordinator = hasRoot(\.mainTab) { + switch deepLink { + case let .item(item): + coordinator.focusFirst(\.home) + .child + .popToRoot() + .route(to: \.item, item) + } + } + } + + func makeMainTab() -> MainTabCoordinator { + MainTabCoordinator() + } + + func makeServerList() -> NavigationViewCoordinator { + NavigationViewCoordinator(ServerListCoordinator()) + } +} diff --git a/JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift b/Shared/Coordinators/ConnectToServerCoodinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/ConnectToServerCoodinator.swift rename to Shared/Coordinators/ConnectToServerCoodinator.swift diff --git a/JellyfinPlayer/Coordinators/FilterCoordinator.swift b/Shared/Coordinators/FilterCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/FilterCoordinator.swift rename to Shared/Coordinators/FilterCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/HomeCoordinator.swift b/Shared/Coordinators/HomeCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/HomeCoordinator.swift rename to Shared/Coordinators/HomeCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/ItemCoordinator.swift b/Shared/Coordinators/ItemCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/ItemCoordinator.swift rename to Shared/Coordinators/ItemCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/LibraryCoordinator.swift b/Shared/Coordinators/LibraryCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/LibraryCoordinator.swift rename to Shared/Coordinators/LibraryCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/LibraryListCoordinator.swift b/Shared/Coordinators/LibraryListCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/LibraryListCoordinator.swift rename to Shared/Coordinators/LibraryListCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/MainTabCoordinator.swift b/Shared/Coordinators/MainTabCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/MainTabCoordinator.swift rename to Shared/Coordinators/MainTabCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/SearchCoordinator.swift b/Shared/Coordinators/SearchCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/SearchCoordinator.swift rename to Shared/Coordinators/SearchCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/ServerListCoordinator.swift b/Shared/Coordinators/ServerListCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/ServerListCoordinator.swift rename to Shared/Coordinators/ServerListCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/SettingsCoordinator.swift b/Shared/Coordinators/SettingsCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/SettingsCoordinator.swift rename to Shared/Coordinators/SettingsCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/UserListCoordinator.swift b/Shared/Coordinators/UserListCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/UserListCoordinator.swift rename to Shared/Coordinators/UserListCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/UserSignInCoordinator.swift b/Shared/Coordinators/UserSignInCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/UserSignInCoordinator.swift rename to Shared/Coordinators/UserSignInCoordinator.swift diff --git a/JellyfinPlayer/Coordinators/VideoPlayerCoordinator.swift b/Shared/Coordinators/VideoPlayerCoordinator.swift similarity index 100% rename from JellyfinPlayer/Coordinators/VideoPlayerCoordinator.swift rename to Shared/Coordinators/VideoPlayerCoordinator.swift diff --git a/Shared/Objects/PillStackable.swift b/Shared/Objects/PillStackable.swift new file mode 100644 index 00000000..4d0296eb --- /dev/null +++ b/Shared/Objects/PillStackable.swift @@ -0,0 +1,14 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation + +protocol PillStackable { + var title: String { get } +} diff --git a/Shared/Objects/PortraitImageStackable.swift b/Shared/Objects/PortraitImageStackable.swift new file mode 100644 index 00000000..e866de31 --- /dev/null +++ b/Shared/Objects/PortraitImageStackable.swift @@ -0,0 +1,18 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation + +public protocol PortraitImageStackable { + func imageURLContsructor(maxWidth: Int) -> URL + var title: String { get } + var description: String? { get } + var blurHash: String { get } + var failureInitials: String { get } +} From f3dff2f2165726c13f7b7687cb402e7be5e161da Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 22:55:20 -0600 Subject: [PATCH 22/88] Add respective coordinators --- JellyfinPlayer.xcodeproj/project.pbxproj | 14 ++++++++++- .../MainCoordinator}/iOSMainCoordinator.swift | 10 +++----- .../MainCoordinator/tvOSMainCoordinator.swift | 23 +++++++++++++++++++ 3 files changed, 39 insertions(+), 8 deletions(-) rename {JellyfinPlayer/Coordinators => Shared/Coordinators/MainCoordinator}/iOSMainCoordinator.swift (93%) create mode 100644 Shared/Coordinators/MainCoordinator/tvOSMainCoordinator.swift diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index edfd69d6..5107069a 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -301,6 +301,7 @@ E193D53C27193F9500900D82 /* UserListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD4012717EE79009D4DAF /* UserListCoordinator.swift */; }; E193D53D27193F9700900D82 /* UserSignInCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */; }; E193D53E27193F9A00900D82 /* VideoPlayerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */; }; + E193D5432719407E00900D82 /* tvOSMainCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D5422719407E00900D82 /* tvOSMainCoordinator.swift */; }; E1AD104A26D94822003E4A08 /* DetailItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104926D94822003E4A08 /* DetailItem.swift */; }; E1AD104B26D94822003E4A08 /* DetailItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104926D94822003E4A08 /* DetailItem.swift */; }; E1AD104D26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */; }; @@ -546,6 +547,7 @@ E188460326DEF04800B0C5B7 /* EpisodeCardVStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeCardVStackView.swift; sourceTree = ""; }; E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortraitImageStackable.swift; sourceTree = ""; }; E193D4DA27193CCA00900D82 /* PillStackable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PillStackable.swift; sourceTree = ""; }; + E193D5422719407E00900D82 /* tvOSMainCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = tvOSMainCoordinator.swift; sourceTree = ""; }; E1AD104926D94822003E4A08 /* DetailItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailItem.swift; sourceTree = ""; }; E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseItemDtoExtensions.swift; sourceTree = ""; }; E1AD105526D981CE003E4A08 /* PortraitHStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortraitHStackView.swift; sourceTree = ""; }; @@ -1027,6 +1029,7 @@ 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */, 6220D0B926D6092100B8E046 /* FilterCoordinator.swift */, 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */, + E193D5412719404B00900D82 /* MainCoordinator */, 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */, 6220D0B326D5ED8000B8E046 /* LibraryCoordinator.swift */, 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */, @@ -1195,11 +1198,19 @@ E193D53F27193FA800900D82 /* Coordinators */ = { isa = PBXGroup; children = ( - 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */, ); path = Coordinators; sourceTree = ""; }; + E193D5412719404B00900D82 /* MainCoordinator */ = { + isa = PBXGroup; + children = ( + 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */, + E193D5422719407E00900D82 /* tvOSMainCoordinator.swift */, + ); + path = MainCoordinator; + sourceTree = ""; + }; E1AD105226D96D5F003E4A08 /* JellyfinAPIExtensions */ = { isa = PBXGroup; children = ( @@ -1648,6 +1659,7 @@ 5310695B2684E7EE00CFFDBA /* AudioView.swift in Sources */, 5398514726B64E4100101B49 /* SearchBarView.swift in Sources */, 091B5A8D268315D400D78B61 /* ServerDiscovery.swift in Sources */, + E193D5432719407E00900D82 /* tvOSMainCoordinator.swift in Sources */, 53ABFDE7267974EF00886593 /* ConnectToServerViewModel.swift in Sources */, 5398514626B64DBB00101B49 /* SearchablePickerView.swift in Sources */, 53ABFDEE26799DCD00886593 /* ImageView.swift in Sources */, diff --git a/JellyfinPlayer/Coordinators/iOSMainCoordinator.swift b/Shared/Coordinators/MainCoordinator/iOSMainCoordinator.swift similarity index 93% rename from JellyfinPlayer/Coordinators/iOSMainCoordinator.swift rename to Shared/Coordinators/MainCoordinator/iOSMainCoordinator.swift index e49d433a..28ca344a 100644 --- a/JellyfinPlayer/Coordinators/iOSMainCoordinator.swift +++ b/Shared/Coordinators/MainCoordinator/iOSMainCoordinator.swift @@ -11,9 +11,7 @@ import Foundation import Nuke import Stinsen import SwiftUI -#if !os(tvOS) - import WidgetKit -#endif +import WidgetKit final class MainCoordinator: NavigationCoordinatable { var stack: NavigationStack @@ -31,10 +29,8 @@ final class MainCoordinator: NavigationCoordinatable { ImageCache.shared.costLimit = 125 * 1024 * 1024 // 125MB memory DataLoader.sharedUrlCache.diskCapacity = 1000 * 1024 * 1024 // 1000MB disk - #if !os(tvOS) - WidgetCenter.shared.reloadAllTimelines() - UIScrollView.appearance().keyboardDismissMode = .onDrag - #endif + WidgetCenter.shared.reloadAllTimelines() + UIScrollView.appearance().keyboardDismissMode = .onDrag // Back bar button item setup let backButtonBackgroundImage = UIImage(systemName: "chevron.backward.circle.fill") diff --git a/Shared/Coordinators/MainCoordinator/tvOSMainCoordinator.swift b/Shared/Coordinators/MainCoordinator/tvOSMainCoordinator.swift new file mode 100644 index 00000000..8fc9ddfe --- /dev/null +++ b/Shared/Coordinators/MainCoordinator/tvOSMainCoordinator.swift @@ -0,0 +1,23 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import Nuke +import Stinsen +import SwiftUI + +final class MainCoordinator: NavigationCoordinatable { + var stack = NavigationStack(initial: \MainCoordinator.mainTab) + + @Root var mainTab = makeEmpty + + @ViewBuilder func makeEmpty() -> some View { + EmptyView() + } +} From 08da87490960f6f48eda594cf88f42ca2fa4ae13 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 22:57:19 -0600 Subject: [PATCH 23/88] Organize VideoPlayer folders --- .../{ => Views}/VideoPlayer/AudioView.swift | 0 .../VideoPlayer/InfoTabBarViewController.swift | 0 .../VideoPlayer/MediaInfoView.swift | 0 .../VideoPlayer/SubtitlesView.swift | 0 .../VideoPlayer/VideoPlayer.storyboard | 0 .../{ => Views}/VideoPlayer/VideoPlayer.swift | 0 .../VideoPlayerViewController.swift | 0 JellyfinPlayer.xcodeproj/project.pbxproj | 18 +++++++++++++----- .../VideoPlayer}/VideoPlayer.storyboard | 0 .../{ => Views/VideoPlayer}/VideoPlayer.swift | 0 .../VideoPlayerCastDeviceSelector.swift | 0 .../VideoPlayer}/VideoUpNextView.swift | 0 12 files changed, 13 insertions(+), 5 deletions(-) rename JellyfinPlayer tvOS/{ => Views}/VideoPlayer/AudioView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/VideoPlayer/InfoTabBarViewController.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/VideoPlayer/MediaInfoView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/VideoPlayer/SubtitlesView.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/VideoPlayer/VideoPlayer.storyboard (100%) rename JellyfinPlayer tvOS/{ => Views}/VideoPlayer/VideoPlayer.swift (100%) rename JellyfinPlayer tvOS/{ => Views}/VideoPlayer/VideoPlayerViewController.swift (100%) rename JellyfinPlayer/{ => Views/VideoPlayer}/VideoPlayer.storyboard (100%) rename JellyfinPlayer/{ => Views/VideoPlayer}/VideoPlayer.swift (100%) rename JellyfinPlayer/{ => Views/VideoPlayer}/VideoPlayerCastDeviceSelector.swift (100%) rename JellyfinPlayer/{ => Views/VideoPlayer}/VideoUpNextView.swift (100%) diff --git a/JellyfinPlayer tvOS/VideoPlayer/AudioView.swift b/JellyfinPlayer tvOS/Views/VideoPlayer/AudioView.swift similarity index 100% rename from JellyfinPlayer tvOS/VideoPlayer/AudioView.swift rename to JellyfinPlayer tvOS/Views/VideoPlayer/AudioView.swift diff --git a/JellyfinPlayer tvOS/VideoPlayer/InfoTabBarViewController.swift b/JellyfinPlayer tvOS/Views/VideoPlayer/InfoTabBarViewController.swift similarity index 100% rename from JellyfinPlayer tvOS/VideoPlayer/InfoTabBarViewController.swift rename to JellyfinPlayer tvOS/Views/VideoPlayer/InfoTabBarViewController.swift diff --git a/JellyfinPlayer tvOS/VideoPlayer/MediaInfoView.swift b/JellyfinPlayer tvOS/Views/VideoPlayer/MediaInfoView.swift similarity index 100% rename from JellyfinPlayer tvOS/VideoPlayer/MediaInfoView.swift rename to JellyfinPlayer tvOS/Views/VideoPlayer/MediaInfoView.swift diff --git a/JellyfinPlayer tvOS/VideoPlayer/SubtitlesView.swift b/JellyfinPlayer tvOS/Views/VideoPlayer/SubtitlesView.swift similarity index 100% rename from JellyfinPlayer tvOS/VideoPlayer/SubtitlesView.swift rename to JellyfinPlayer tvOS/Views/VideoPlayer/SubtitlesView.swift diff --git a/JellyfinPlayer tvOS/VideoPlayer/VideoPlayer.storyboard b/JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayer.storyboard similarity index 100% rename from JellyfinPlayer tvOS/VideoPlayer/VideoPlayer.storyboard rename to JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayer.storyboard diff --git a/JellyfinPlayer tvOS/VideoPlayer/VideoPlayer.swift b/JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayer.swift similarity index 100% rename from JellyfinPlayer tvOS/VideoPlayer/VideoPlayer.swift rename to JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayer.swift diff --git a/JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift b/JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayerViewController.swift similarity index 100% rename from JellyfinPlayer tvOS/VideoPlayer/VideoPlayerViewController.swift rename to JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayerViewController.swift diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 5107069a..03015608 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -726,7 +726,6 @@ 53ABFDDA267972BF00886593 /* JellyfinPlayer tvOS.entitlements */, 535870682669D21700D05A09 /* Preview Content */, 531690F8267AD135005D8AB9 /* README.md */, - 5310694F2684E7EE00CFFDBA /* VideoPlayer */, E12186E02718F23B0010884C /* Views */, ); path = "JellyfinPlayer tvOS"; @@ -819,10 +818,6 @@ 5377CC02263B596B003A4E83 /* Info.plist */, 53AD124C2670278D0094A276 /* JellyfinPlayer.entitlements */, 5377CBFA263B596B003A4E83 /* Preview Content */, - 53313B8F265EEA6D00947AA3 /* VideoPlayer.storyboard */, - 535BAEA4264A151C005FA86D /* VideoPlayer.swift */, - 532E68CE267D9F6B007B9F13 /* VideoPlayerCastDeviceSelector.swift */, - 0959A5FC2686D29800C7C9A9 /* VideoUpNextView.swift */, E13DD3D027165886009D4DAF /* Views */, ); path = JellyfinPlayer; @@ -1111,6 +1106,7 @@ 53116A16268B919A003024C9 /* SeriesItemView.swift */, 5398514426B64DA100101B49 /* SettingsView.swift */, 53ABFDDD267974E300886593 /* SplashView.swift */, + 5310694F2684E7EE00CFFDBA /* VideoPlayer */, ); path = Views; sourceTree = ""; @@ -1154,6 +1150,7 @@ 625CB5672678B6FB00530A6E /* SplashView.swift */, E13DD3FB2717EAE8009D4DAF /* UserListView.swift */, E13DD3F4271793BB009D4DAF /* UserSignInView.swift */, + E193D5452719418B00900D82 /* VideoPlayer */, 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, ); path = Views; @@ -1211,6 +1208,17 @@ path = MainCoordinator; sourceTree = ""; }; + E193D5452719418B00900D82 /* VideoPlayer */ = { + isa = PBXGroup; + children = ( + 53313B8F265EEA6D00947AA3 /* VideoPlayer.storyboard */, + 535BAEA4264A151C005FA86D /* VideoPlayer.swift */, + 532E68CE267D9F6B007B9F13 /* VideoPlayerCastDeviceSelector.swift */, + 0959A5FC2686D29800C7C9A9 /* VideoUpNextView.swift */, + ); + path = VideoPlayer; + sourceTree = ""; + }; E1AD105226D96D5F003E4A08 /* JellyfinAPIExtensions */ = { isa = PBXGroup; children = ( diff --git a/JellyfinPlayer/VideoPlayer.storyboard b/JellyfinPlayer/Views/VideoPlayer/VideoPlayer.storyboard similarity index 100% rename from JellyfinPlayer/VideoPlayer.storyboard rename to JellyfinPlayer/Views/VideoPlayer/VideoPlayer.storyboard diff --git a/JellyfinPlayer/VideoPlayer.swift b/JellyfinPlayer/Views/VideoPlayer/VideoPlayer.swift similarity index 100% rename from JellyfinPlayer/VideoPlayer.swift rename to JellyfinPlayer/Views/VideoPlayer/VideoPlayer.swift diff --git a/JellyfinPlayer/VideoPlayerCastDeviceSelector.swift b/JellyfinPlayer/Views/VideoPlayer/VideoPlayerCastDeviceSelector.swift similarity index 100% rename from JellyfinPlayer/VideoPlayerCastDeviceSelector.swift rename to JellyfinPlayer/Views/VideoPlayer/VideoPlayerCastDeviceSelector.swift diff --git a/JellyfinPlayer/VideoUpNextView.swift b/JellyfinPlayer/Views/VideoPlayer/VideoUpNextView.swift similarity index 100% rename from JellyfinPlayer/VideoUpNextView.swift rename to JellyfinPlayer/Views/VideoPlayer/VideoUpNextView.swift From 64f50be2aa8853e300c035419fcf15dd6398937e Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Thu, 14 Oct 2021 23:28:52 -0600 Subject: [PATCH 24/88] tvOSMainCoordinator --- .../App/JellyfinPlayer_tvOSApp.swift | 2 +- .../{ => ItemView}/EpisodeItemView.swift | 0 .../Views/{ => ItemView}/ItemView.swift | 13 ++ .../Views/{ => ItemView}/MovieItemView.swift | 0 .../Views/{ => ItemView}/SeasonItemView.swift | 0 .../Views/{ => ItemView}/SeriesItemView.swift | 0 .../Views/LibraryFilterView.swift | 94 ++++++++++++ .../Views/LibraryListView.swift | 10 -- JellyfinPlayer tvOS/Views/MainTabView.swift | 2 - .../Views/ServerDetailView.swift | 62 ++++++++ .../Views/ServerListView.swift | 144 ++++++++++++++++++ JellyfinPlayer tvOS/Views/UserListView.swift | 124 +++++++++++++++ .../Views/UserSignInView.swift | 55 +++++++ .../VideoPlayerViewController.swift | 3 +- JellyfinPlayer.xcodeproj/project.pbxproj | 56 +++++-- JellyfinPlayer/Views/ItemView/ItemView.swift | 2 +- JellyfinPlayer/Views/LibraryFilterView.swift | 2 +- .../VideoPlayerSettingsView.swift | 0 .../iOSMainTabCoordinator.swift} | 9 +- .../MainCoordinator/tvOSMainCoordinator.swift | 37 ++++- .../tvOSMainTabCoordinator.swift | 57 +++++++ 21 files changed, 637 insertions(+), 35 deletions(-) rename JellyfinPlayer tvOS/Views/{ => ItemView}/EpisodeItemView.swift (100%) rename JellyfinPlayer tvOS/Views/{ => ItemView}/ItemView.swift (79%) rename JellyfinPlayer tvOS/Views/{ => ItemView}/MovieItemView.swift (100%) rename JellyfinPlayer tvOS/Views/{ => ItemView}/SeasonItemView.swift (100%) rename JellyfinPlayer tvOS/Views/{ => ItemView}/SeriesItemView.swift (100%) create mode 100644 JellyfinPlayer tvOS/Views/LibraryFilterView.swift create mode 100644 JellyfinPlayer tvOS/Views/ServerDetailView.swift create mode 100644 JellyfinPlayer tvOS/Views/ServerListView.swift create mode 100644 JellyfinPlayer tvOS/Views/UserListView.swift create mode 100644 JellyfinPlayer tvOS/Views/UserSignInView.swift rename JellyfinPlayer/Views/{ => VideoPlayer}/VideoPlayerSettingsView.swift (100%) rename Shared/Coordinators/{MainTabCoordinator.swift => MainCoordinator/iOSMainTabCoordinator.swift} (81%) create mode 100644 Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift diff --git a/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift b/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift index bf3356f1..db58374a 100644 --- a/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift +++ b/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift @@ -13,7 +13,7 @@ struct JellyfinPlayer_tvOSApp: App { var body: some Scene { WindowGroup { - SplashView() + MainCoordinator().view() .ignoresSafeArea(.all, edges: .all) } } diff --git a/JellyfinPlayer tvOS/Views/EpisodeItemView.swift b/JellyfinPlayer tvOS/Views/ItemView/EpisodeItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/Views/EpisodeItemView.swift rename to JellyfinPlayer tvOS/Views/ItemView/EpisodeItemView.swift diff --git a/JellyfinPlayer tvOS/Views/ItemView.swift b/JellyfinPlayer tvOS/Views/ItemView/ItemView.swift similarity index 79% rename from JellyfinPlayer tvOS/Views/ItemView.swift rename to JellyfinPlayer tvOS/Views/ItemView/ItemView.swift index 62692415..b62d0702 100644 --- a/JellyfinPlayer tvOS/Views/ItemView.swift +++ b/JellyfinPlayer tvOS/Views/ItemView/ItemView.swift @@ -9,6 +9,19 @@ import SwiftUI import Introspect import JellyfinAPI +// Useless view necessary in tvOS because of iOS's implementation +struct ItemNavigationView: View { + private let item: BaseItemDto + + init(item: BaseItemDto) { + self.item = item + } + + var body: some View { + ItemView(item: item) + } +} + struct ItemView: View { private var item: BaseItemDto diff --git a/JellyfinPlayer tvOS/Views/MovieItemView.swift b/JellyfinPlayer tvOS/Views/ItemView/MovieItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/Views/MovieItemView.swift rename to JellyfinPlayer tvOS/Views/ItemView/MovieItemView.swift diff --git a/JellyfinPlayer tvOS/Views/SeasonItemView.swift b/JellyfinPlayer tvOS/Views/ItemView/SeasonItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/Views/SeasonItemView.swift rename to JellyfinPlayer tvOS/Views/ItemView/SeasonItemView.swift diff --git a/JellyfinPlayer tvOS/Views/SeriesItemView.swift b/JellyfinPlayer tvOS/Views/ItemView/SeriesItemView.swift similarity index 100% rename from JellyfinPlayer tvOS/Views/SeriesItemView.swift rename to JellyfinPlayer tvOS/Views/ItemView/SeriesItemView.swift diff --git a/JellyfinPlayer tvOS/Views/LibraryFilterView.swift b/JellyfinPlayer tvOS/Views/LibraryFilterView.swift new file mode 100644 index 00000000..daf9c75c --- /dev/null +++ b/JellyfinPlayer tvOS/Views/LibraryFilterView.swift @@ -0,0 +1,94 @@ +/* JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import JellyfinAPI +import Stinsen +import SwiftUI + +struct LibraryFilterView: View { + + @EnvironmentObject var filterRouter: FilterCoordinator.Router + @Binding var filters: LibraryFilters + var parentId: String = "" + + @StateObject var viewModel: LibraryFilterViewModel + + init(filters: Binding, enabledFilterType: [FilterType], parentId: String) { + _filters = filters + self.parentId = parentId + _viewModel = + StateObject(wrappedValue: .init(filters: filters.wrappedValue, enabledFilterType: enabledFilterType, parentId: parentId)) + } + + var body: some View { + VStack { + if viewModel.isLoading { + ProgressView() + } else { + Form { + if viewModel.enabledFilterType.contains(.genre) { + MultiSelector(label: NSLocalizedString("Genres", comment: ""), + options: viewModel.possibleGenres, + optionToString: { $0.name ?? "" }, + selected: $viewModel.modifiedFilters.withGenres) + } + if viewModel.enabledFilterType.contains(.filter) { + MultiSelector(label: NSLocalizedString("Filters", comment: ""), + options: viewModel.possibleItemFilters, + optionToString: { $0.localized }, + selected: $viewModel.modifiedFilters.filters) + } + if viewModel.enabledFilterType.contains(.tag) { + MultiSelector(label: NSLocalizedString("Tags", comment: ""), + options: viewModel.possibleTags, + optionToString: { $0 }, + selected: $viewModel.modifiedFilters.tags) + } + if viewModel.enabledFilterType.contains(.sortBy) { + Picker(selection: $viewModel.selectedSortBy, label: Text("Sort by")) { + ForEach(viewModel.possibleSortBys, id: \.self) { so in + Text(so.localized).tag(so) + } + } + } + if viewModel.enabledFilterType.contains(.sortOrder) { + Picker(selection: $viewModel.selectedSortOrder, label: Text("Display order")) { + ForEach(viewModel.possibleSortOrders, id: \.self) { so in + Text(so.rawValue).tag(so) + } + } + } + } + Button { + viewModel.resetFilters() + self.filters = viewModel.modifiedFilters + filterRouter.dismissCoordinator() + } label: { + Text("Reset") + } + } + } + .toolbar { + ToolbarItemGroup(placement: .navigationBarLeading) { + Button { + filterRouter.dismissCoordinator() + } label: { + Image(systemName: "xmark") + } + } + ToolbarItemGroup(placement: .navigationBarTrailing) { + Button { + viewModel.updateModifiedFilter() + self.filters = viewModel.modifiedFilters + filterRouter.dismissCoordinator() + } label: { + Text("Apply") + } + } + } + } +} diff --git a/JellyfinPlayer tvOS/Views/LibraryListView.swift b/JellyfinPlayer tvOS/Views/LibraryListView.swift index 2495888a..7096ba08 100644 --- a/JellyfinPlayer tvOS/Views/LibraryListView.swift +++ b/JellyfinPlayer tvOS/Views/LibraryListView.swift @@ -91,15 +91,5 @@ struct LibraryListView: View { .padding(.trailing, 16) .padding(.top, 8) } - .navigationTitle(NSLocalizedString("All Media", comment: "")) - .toolbar { - ToolbarItemGroup(placement: .navigationBarTrailing) { - NavigationLink(destination: LazyView { - LibrarySearchView(viewModel: .init(parentID: nil)) - }) { - Image(systemName: "magnifyingglass") - } - } - } } } diff --git a/JellyfinPlayer tvOS/Views/MainTabView.swift b/JellyfinPlayer tvOS/Views/MainTabView.swift index dbad06b5..77dc3cfc 100644 --- a/JellyfinPlayer tvOS/Views/MainTabView.swift +++ b/JellyfinPlayer tvOS/Views/MainTabView.swift @@ -75,5 +75,3 @@ extension MainTabView { case settings } } - -// stream ancient dreams in a modern land by MARINA! diff --git a/JellyfinPlayer tvOS/Views/ServerDetailView.swift b/JellyfinPlayer tvOS/Views/ServerDetailView.swift new file mode 100644 index 00000000..74c88ce6 --- /dev/null +++ b/JellyfinPlayer tvOS/Views/ServerDetailView.swift @@ -0,0 +1,62 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI + +struct ServerDetailView: View { + + @ObservedObject var viewModel = ServerDetailViewModel() + + var body: some View { + Form { + Section(header: Text("Server Details")) { + HStack { + Text("Name") + Spacer() + Text(SessionManager.main.currentLogin.server.name) + .foregroundColor(.secondary) + } + + HStack { + Text("URI") + Spacer() + Text(SessionManager.main.currentLogin.server.uri) + .foregroundColor(.secondary) + } + + HStack { + Text("Version") + Spacer() + Text(SessionManager.main.currentLogin.server.version) + .foregroundColor(.secondary) + } + + HStack { + Text("Operating System") + Spacer() + Text(SessionManager.main.currentLogin.server.os) + .foregroundColor(.secondary) + } + } + + Button(action: { + viewModel.refreshServerLibrary() + }, label: { + HStack { + Text("Refresh Library") + .font(.callout) + Spacer() + if viewModel.isLoading { + ProgressView() + } + } + }).disabled(viewModel.isLoading) + } + } +} diff --git a/JellyfinPlayer tvOS/Views/ServerListView.swift b/JellyfinPlayer tvOS/Views/ServerListView.swift new file mode 100644 index 00000000..f98734ef --- /dev/null +++ b/JellyfinPlayer tvOS/Views/ServerListView.swift @@ -0,0 +1,144 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import CoreStore +import SwiftUI + +struct ServerListView: View { + + @EnvironmentObject var serverListRouter: ServerListCoordinator.Router + @ObservedObject var viewModel: ServerListViewModel + + @ViewBuilder + private var listView: some View { + ScrollView { + VStack { + ForEach(viewModel.servers, id: \.id) { server in + Button { + serverListRouter.route(to: \.userList, server) + } label: { + ZStack(alignment: Alignment.leading) { + Rectangle() + .foregroundColor(Color.secondarySystemFill) + .frame(height: 100) + .cornerRadius(10) + + HStack { + Image(systemName: "server.rack") + .font(.system(size: 36)) + .foregroundColor(.primary) + + VStack(alignment: .leading, spacing: 5) { + Text(server.name) + .font(.title2) + .foregroundColor(.primary) + + Text(server.uri) + .font(.footnote) + .disabled(true) + .foregroundColor(.secondary) + + Text(viewModel.userTextFor(server: server)) + .font(.footnote) + .foregroundColor(.primary) + } + }.padding([.leading]) + } + .padding() + } + .contextMenu { + Button(role: .destructive) { + viewModel.remove(server: server) + } label: { + Label("Remove", systemImage: "trash") + } + } + } + } + } + } + + @ViewBuilder + private var noServerView: some View { + VStack { + Text("Connect to a Jellyfin server to get started") + .frame(minWidth: 50, maxWidth: 240) + .multilineTextAlignment(.center) + + Button { + serverListRouter.route(to: \.connectToServer) + } label: { + ZStack { + Rectangle() + .foregroundColor(Color.jellyfinPurple) + .frame(maxWidth: 500, maxHeight: 50) + .frame(height: 50) + .cornerRadius(10) + .padding([.leading, .trailing], 30) + .padding([.top, .bottom], 20) + + Text("Connect") + .foregroundColor(Color.white) + .bold() + } + } + } + } + + @ViewBuilder + private var innerBody: some View { + if viewModel.servers.isEmpty { + noServerView + .offset(y: -50) + } else { + listView + } + } + + @ViewBuilder + private var toolbarContent: some View { + if viewModel.servers.isEmpty { + EmptyView() + } else { + HStack { + Button { + SwiftfinStore.dataStack.perform(asynchronous: { transaction in + try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) + try! transaction.deleteAll(From()) + }) { _ in + SwiftfinStore.Defaults.suite[.lastServerUserID] = nil + viewModel.fetchServers() + } + } label: { + Text("Purge") + } + + Button { + serverListRouter.route(to: \.connectToServer) + } label: { + Image(systemName: "plus.circle.fill") + } + } + } + } + + var body: some View { + innerBody + .navigationTitle("Servers") + .toolbar { + ToolbarItemGroup(placement: .navigationBarTrailing) { + toolbarContent + } + } + .onAppear { + viewModel.fetchServers() + } + } +} diff --git a/JellyfinPlayer tvOS/Views/UserListView.swift b/JellyfinPlayer tvOS/Views/UserListView.swift new file mode 100644 index 00000000..9937feb4 --- /dev/null +++ b/JellyfinPlayer tvOS/Views/UserListView.swift @@ -0,0 +1,124 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI + +struct UserListView: View { + + @EnvironmentObject var userListRouter: UserListCoordinator.Router + @ObservedObject var viewModel: UserListViewModel + + @ViewBuilder + private var listView: some View { + ScrollView { + VStack { + ForEach(viewModel.users, id: \.id) { user in + Button { + viewModel.login(user: user) + } label: { + ZStack(alignment: Alignment.leading) { + Rectangle() + .foregroundColor(Color.secondarySystemFill) + .frame(height: 70) + .cornerRadius(10) + + HStack { + Image(systemName: "person.crop.circle.fill") + .font(.system(size: 46)) + .foregroundColor(.primary) + + Text(user.username) + .font(.title2) + + Spacer() + + if viewModel.isLoading { + ProgressView() + } + }.padding(.leading) + } + .padding() + } + .contextMenu { + Button(role: .destructive) { + viewModel.remove(user: user) + } label: { + Label("Remove", systemImage: "trash") + } + } + } + } + } + } + + @ViewBuilder + private var noUserView: some View { + VStack { + Text("Sign in to get started") + .frame(minWidth: 50, maxWidth: 240) + .multilineTextAlignment(.center) + + Button { + userListRouter.route(to: \.userSignIn, viewModel.server) + } label: { + ZStack { + Rectangle() + .foregroundColor(Color.jellyfinPurple) + .frame(maxWidth: 500, maxHeight: 50) + .frame(height: 50) + .cornerRadius(10) + .padding([.leading, .trailing], 30) + .padding([.top, .bottom], 20) + + Text("Sign in") + .foregroundColor(Color.white) + .bold() + } + } + } + } + + @ViewBuilder + private var innerBody: some View { + if viewModel.users.isEmpty { + noUserView + .offset(y: -50) + } else { + listView + } + } + + @ViewBuilder + private var toolbarContent: some View { + if viewModel.users.isEmpty { + EmptyView() + } else { + HStack { + Button { + userListRouter.route(to: \.userSignIn, viewModel.server) + } label: { + Image(systemName: "person.crop.circle.fill.badge.plus") + } + } + } + } + + var body: some View { + innerBody + .navigationTitle(viewModel.server.name) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + toolbarContent + } + } + .onAppear { + viewModel.fetchUsers() + } + } +} diff --git a/JellyfinPlayer tvOS/Views/UserSignInView.swift b/JellyfinPlayer tvOS/Views/UserSignInView.swift new file mode 100644 index 00000000..f9b59ba6 --- /dev/null +++ b/JellyfinPlayer tvOS/Views/UserSignInView.swift @@ -0,0 +1,55 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI +import Stinsen + +struct UserSignInView: View { + + @ObservedObject var viewModel: UserSignInViewModel + @State private var username: String = "" + @State private var password: String = "" + + var body: some View { + Form { + + Section { + TextField("Username", text: $username) + .disableAutocorrection(true) + .autocapitalization(.none) + + SecureField("Password", text: $password) + .disableAutocorrection(true) + .autocapitalization(.none) + + Button { + viewModel.login(username: username, password: password) + } label: { + HStack { + Text("Connect") + Spacer() + if viewModel.isLoading { + ProgressView() + } + } + } + .disabled(viewModel.isLoading || username.isEmpty) + + } header: { + Text("Sign In to \(viewModel.server.name)") + } + } + .alert(item: $viewModel.errorMessage) { _ in + Alert(title: Text(viewModel.alertTitle), + message: Text(viewModel.errorMessage?.displayMessage ?? "Unknown Error"), + dismissButton: .cancel()) + } + .navigationTitle("Sign In") + } +} diff --git a/JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayerViewController.swift b/JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayerViewController.swift index b906f4e9..0c4c5bae 100644 --- a/JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayerViewController.swift +++ b/JellyfinPlayer tvOS/Views/VideoPlayer/VideoPlayerViewController.swift @@ -169,7 +169,8 @@ class VideoPlayerViewController: UIViewController, VideoPlayerSettingsDelegate, // Item will be directly played by the client else { item.videoType = .directPlay - streamURL = URL(string: "\(SessionManager.main.currentLogin.server.uri)/Videos/\(manifest.id!)/stream?Static=true&mediaSourceId=\(manifest.id!)&deviceId=\(SessionManager.current.deviceID)&api_key=\(SessionManager.current.accessToken)&Tag=\(mediaSource.eTag!)")! +// streamURL = URL(string: "\(SessionManager.main.currentLogin.server.uri)/Videos/\(manifest.id!)/stream?Static=true&mediaSourceId=\(manifest.id!)&deviceId=\(SessionManager.current.deviceID)&api_key=\(SessionManager.current.accessToken)&Tag=\(mediaSource.eTag!)")! + streamURL = URL(string: "\(SessionManager.main.currentLogin.server.uri)/Videos/\(manifest.id!)/stream?Static=true&mediaSourceId=\(manifest.id!)&Tag=\(mediaSource.eTag ?? "")")! } item.videoUrl = streamURL diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 03015608..dd88b7f9 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -202,7 +202,7 @@ 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338922660107500A81A2A /* StringExtensions.swift */; }; 62C29E9C26D0FE4200C1D2E7 /* Stinsen in Frameworks */ = {isa = PBXBuildFile; productRef = 62C29E9B26D0FE4200C1D2E7 /* Stinsen */; }; 62C29E9F26D1016600C1D2E7 /* iOSMainCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */; }; - 62C29EA126D102A500C1D2E7 /* MainTabCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */; }; + 62C29EA126D102A500C1D2E7 /* iOSMainTabCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA026D102A500C1D2E7 /* iOSMainTabCoordinator.swift */; }; 62C29EA326D1030F00C1D2E7 /* ConnectToServerCoodinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */; }; 62C29EA626D1036A00C1D2E7 /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */; }; 62C29EA826D103D500C1D2E7 /* LibraryListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */; }; @@ -294,7 +294,6 @@ E193D53527193F8100900D82 /* ItemCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */; }; E193D53627193F8500900D82 /* LibraryCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B326D5ED8000B8E046 /* LibraryCoordinator.swift */; }; E193D53727193F8700900D82 /* LibraryListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */; }; - E193D53827193F8C00900D82 /* MainTabCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */; }; E193D53927193F8E00900D82 /* SearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */; }; E193D53A27193F9000900D82 /* ServerListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */; }; E193D53B27193F9200900D82 /* SettingsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0B026D5EC9900B8E046 /* SettingsCoordinator.swift */; }; @@ -302,6 +301,13 @@ E193D53D27193F9700900D82 /* UserSignInCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E13DD3F127179378009D4DAF /* UserSignInCoordinator.swift */; }; E193D53E27193F9A00900D82 /* VideoPlayerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0C526D62D8700B8E046 /* VideoPlayerCoordinator.swift */; }; E193D5432719407E00900D82 /* tvOSMainCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D5422719407E00900D82 /* tvOSMainCoordinator.swift */; }; + E193D547271941C500900D82 /* UserListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D546271941C500900D82 /* UserListView.swift */; }; + E193D549271941CC00900D82 /* UserSignInView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D548271941CC00900D82 /* UserSignInView.swift */; }; + E193D54B271941D300900D82 /* ServerListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D54A271941D300900D82 /* ServerListView.swift */; }; + E193D54D2719426600900D82 /* LibraryFilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D54C2719426600900D82 /* LibraryFilterView.swift */; }; + E193D5502719430400900D82 /* ServerDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D54F2719430400900D82 /* ServerDetailView.swift */; }; + E193D5512719432400900D82 /* ServerDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA5326D050F500CC4EB7 /* ServerDetailViewModel.swift */; }; + E193D553271943D500900D82 /* tvOSMainTabCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D552271943D500900D82 /* tvOSMainTabCoordinator.swift */; }; E1AD104A26D94822003E4A08 /* DetailItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104926D94822003E4A08 /* DetailItem.swift */; }; E1AD104B26D94822003E4A08 /* DetailItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104926D94822003E4A08 /* DetailItem.swift */; }; E1AD104D26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */; }; @@ -495,7 +501,7 @@ 628B95362670CB800091AF3B /* JellyfinWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinWidget.swift; sourceTree = ""; }; 628B953B2670D1FC0091AF3B /* WidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = WidgetExtension.entitlements; sourceTree = ""; }; 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSMainCoordinator.swift; sourceTree = ""; }; - 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabCoordinator.swift; sourceTree = ""; }; + 62C29EA026D102A500C1D2E7 /* iOSMainTabCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSMainTabCoordinator.swift; sourceTree = ""; }; 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectToServerCoodinator.swift; sourceTree = ""; }; 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCoordinator.swift; sourceTree = ""; }; 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryListCoordinator.swift; sourceTree = ""; }; @@ -548,6 +554,12 @@ E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortraitImageStackable.swift; sourceTree = ""; }; E193D4DA27193CCA00900D82 /* PillStackable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PillStackable.swift; sourceTree = ""; }; E193D5422719407E00900D82 /* tvOSMainCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = tvOSMainCoordinator.swift; sourceTree = ""; }; + E193D546271941C500900D82 /* UserListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserListView.swift; sourceTree = ""; }; + E193D548271941CC00900D82 /* UserSignInView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UserSignInView.swift; sourceTree = ""; }; + E193D54A271941D300900D82 /* ServerListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerListView.swift; sourceTree = ""; }; + E193D54C2719426600900D82 /* LibraryFilterView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryFilterView.swift; sourceTree = ""; }; + E193D54F2719430400900D82 /* ServerDetailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ServerDetailView.swift; sourceTree = ""; }; + E193D552271943D500900D82 /* tvOSMainTabCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = tvOSMainTabCoordinator.swift; sourceTree = ""; }; E1AD104926D94822003E4A08 /* DetailItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailItem.swift; sourceTree = ""; }; E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseItemDtoExtensions.swift; sourceTree = ""; }; E1AD105526D981CE003E4A08 /* PortraitHStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortraitHStackView.swift; sourceTree = ""; }; @@ -1028,7 +1040,6 @@ 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */, 6220D0B326D5ED8000B8E046 /* LibraryCoordinator.swift */, 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */, - 62C29EA026D102A500C1D2E7 /* MainTabCoordinator.swift */, 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */, E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */, 6220D0B026D5EC9900B8E046 /* SettingsCoordinator.swift */, @@ -1091,21 +1102,22 @@ children = ( 53ABFDEA2679753200886593 /* ConnectToServerView.swift */, 531690EB267ABF46005D8AB9 /* ContinueWatchingView.swift */, - 53272538268C20100035FBF1 /* EpisodeItemView.swift */, 531690E6267ABD79005D8AB9 /* HomeView.swift */, - 53CD2A3F268A49C2002ABD4E /* ItemView.swift */, + E193D54E271942C000900D82 /* ItemView */, 536D3D7E267BDF100004248C /* LatestMediaView.swift */, + E193D54C2719426600900D82 /* LibraryFilterView.swift */, C4E508172703E8190045C9AB /* LibraryListView.swift */, C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */, 53A83C32268A309300DF3D92 /* LibraryView.swift */, 531690E4267ABD5C005D8AB9 /* MainTabView.swift */, - 53CD2A41268A4B38002ABD4E /* MovieItemView.swift */, 531690EE267ABF72005D8AB9 /* NextUpView.swift */, 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */, - 53272536268C1DBB0035FBF1 /* SeasonItemView.swift */, - 53116A16268B919A003024C9 /* SeriesItemView.swift */, + E193D54F2719430400900D82 /* ServerDetailView.swift */, + E193D54A271941D300900D82 /* ServerListView.swift */, 5398514426B64DA100101B49 /* SettingsView.swift */, 53ABFDDD267974E300886593 /* SplashView.swift */, + E193D546271941C500900D82 /* UserListView.swift */, + E193D548271941CC00900D82 /* UserSignInView.swift */, 5310694F2684E7EE00CFFDBA /* VideoPlayer */, ); path = Views; @@ -1151,7 +1163,6 @@ E13DD3FB2717EAE8009D4DAF /* UserListView.swift */, E13DD3F4271793BB009D4DAF /* UserSignInView.swift */, E193D5452719418B00900D82 /* VideoPlayer */, - 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, ); path = Views; sourceTree = ""; @@ -1203,7 +1214,9 @@ isa = PBXGroup; children = ( 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */, + 62C29EA026D102A500C1D2E7 /* iOSMainTabCoordinator.swift */, E193D5422719407E00900D82 /* tvOSMainCoordinator.swift */, + E193D552271943D500900D82 /* tvOSMainTabCoordinator.swift */, ); path = MainCoordinator; sourceTree = ""; @@ -1214,11 +1227,24 @@ 53313B8F265EEA6D00947AA3 /* VideoPlayer.storyboard */, 535BAEA4264A151C005FA86D /* VideoPlayer.swift */, 532E68CE267D9F6B007B9F13 /* VideoPlayerCastDeviceSelector.swift */, + 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */, 0959A5FC2686D29800C7C9A9 /* VideoUpNextView.swift */, ); path = VideoPlayer; sourceTree = ""; }; + E193D54E271942C000900D82 /* ItemView */ = { + isa = PBXGroup; + children = ( + 53272538268C20100035FBF1 /* EpisodeItemView.swift */, + 53CD2A3F268A49C2002ABD4E /* ItemView.swift */, + 53CD2A41268A4B38002ABD4E /* MovieItemView.swift */, + 53272536268C1DBB0035FBF1 /* SeasonItemView.swift */, + 53116A16268B919A003024C9 /* SeriesItemView.swift */, + ); + path = ItemView; + sourceTree = ""; + }; E1AD105226D96D5F003E4A08 /* JellyfinAPIExtensions */ = { isa = PBXGroup; children = ( @@ -1645,18 +1671,21 @@ 5398514526B64DA100101B49 /* SettingsView.swift in Sources */, 62E632F0267D43320063E547 /* LibraryFilterViewModel.swift in Sources */, 5310695A2684E7EE00CFFDBA /* VideoPlayer.swift in Sources */, + E193D54B271941D300900D82 /* ServerListView.swift in Sources */, 53ABFDE6267974EF00886593 /* SettingsViewModel.swift in Sources */, 62E632F4267D54030063E547 /* ItemViewModel.swift in Sources */, 6267B3D826710B9800A7371D /* CollectionExtensions.swift in Sources */, 62E632E7267D3F5B0063E547 /* EpisodeItemViewModel.swift in Sources */, E193D53727193F8700900D82 /* LibraryListCoordinator.swift in Sources */, E100720726BDABC100CE3E31 /* MediaPlayButtonRowView.swift in Sources */, + E193D54D2719426600900D82 /* LibraryFilterView.swift in Sources */, E193D53927193F8E00900D82 /* SearchCoordinator.swift in Sources */, E193D4D927193CAC00900D82 /* PortraitImageStackable.swift in Sources */, 535870A52669D8AE00D05A09 /* ParallaxHeader.swift in Sources */, 53272532268BF09D0035FBF1 /* MediaViewActionButton.swift in Sources */, 531690F0267ABF72005D8AB9 /* NextUpView.swift in Sources */, E193D53427193F7F00900D82 /* HomeCoordinator.swift in Sources */, + E193D5502719430400900D82 /* ServerDetailView.swift in Sources */, E11B1B6D2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */, E193D53D27193F9700900D82 /* UserSignInCoordinator.swift in Sources */, 535870A72669D8AE00D05A09 /* MultiSelectorView.swift in Sources */, @@ -1675,6 +1704,7 @@ 62E632E4267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, 53649AB2269D019100A2D8B7 /* LogManager.swift in Sources */, E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, + E193D549271941CC00900D82 /* UserSignInView.swift in Sources */, 535870AA2669D8AE00D05A09 /* BlurHashDecode.swift in Sources */, 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */, C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, @@ -1690,20 +1720,22 @@ E1F0204F26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */, 53ABFDEB2679753200886593 /* ConnectToServerView.swift in Sources */, 536D3D76267BA9BB0004248C /* MainTabViewModel.swift in Sources */, + E193D5512719432400900D82 /* ServerDetailViewModel.swift in Sources */, 5310695C2684E7EE00CFFDBA /* VideoPlayerViewController.swift in Sources */, C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */, E193D53B27193F9200900D82 /* SettingsCoordinator.swift in Sources */, 536D3D74267BA8170004248C /* BackgroundManager.swift in Sources */, 535870632669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift in Sources */, + E193D547271941C500900D82 /* UserListView.swift in Sources */, E193D53227193F7B00900D82 /* ConnectToServerCoodinator.swift in Sources */, 53ABFDE4267974EF00886593 /* LibraryListViewModel.swift in Sources */, 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 531690FA267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift in Sources */, E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */, - E193D53827193F8C00900D82 /* MainTabCoordinator.swift in Sources */, E13DD3C327164941009D4DAF /* SwiftfinStore.swift in Sources */, 09389CC826819B4600AE350E /* VideoPlayerModel.swift in Sources */, + E193D553271943D500900D82 /* tvOSMainTabCoordinator.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1727,7 +1759,7 @@ 5389276E263C25100035E14B /* ContinueWatchingView.swift in Sources */, 53F866442687A45F00DCD1D7 /* PortraitItemView.swift in Sources */, E1AD105626D981CE003E4A08 /* PortraitHStackView.swift in Sources */, - 62C29EA126D102A500C1D2E7 /* MainTabCoordinator.swift in Sources */, + 62C29EA126D102A500C1D2E7 /* iOSMainTabCoordinator.swift in Sources */, 535BAE9F2649E569005FA86D /* ItemView.swift in Sources */, 6225FCCB2663841E00E067F6 /* ParallaxHeader.swift in Sources */, 6220D0AD26D5EABB00B8E046 /* ViewExtensions.swift in Sources */, diff --git a/JellyfinPlayer/Views/ItemView/ItemView.swift b/JellyfinPlayer/Views/ItemView/ItemView.swift index 445d4098..859fa6ec 100644 --- a/JellyfinPlayer/Views/ItemView/ItemView.swift +++ b/JellyfinPlayer/Views/ItemView/ItemView.swift @@ -28,7 +28,7 @@ struct ItemNavigationView: View { } } -private struct ItemView: View { +fileprivate struct ItemView: View { @EnvironmentObject var itemRouter: ItemCoordinator.Router @State private var videoIsLoading: Bool = false // This variable is only changed by the underlying VLC view. diff --git a/JellyfinPlayer/Views/LibraryFilterView.swift b/JellyfinPlayer/Views/LibraryFilterView.swift index 0a96a459..1b1ffb00 100644 --- a/JellyfinPlayer/Views/LibraryFilterView.swift +++ b/JellyfinPlayer/Views/LibraryFilterView.swift @@ -10,8 +10,8 @@ import Stinsen import SwiftUI struct LibraryFilterView: View { + @EnvironmentObject var filterRouter: FilterCoordinator.Router - @Environment(\.presentationMode) var presentationMode @Binding var filters: LibraryFilters var parentId: String = "" diff --git a/JellyfinPlayer/Views/VideoPlayerSettingsView.swift b/JellyfinPlayer/Views/VideoPlayer/VideoPlayerSettingsView.swift similarity index 100% rename from JellyfinPlayer/Views/VideoPlayerSettingsView.swift rename to JellyfinPlayer/Views/VideoPlayer/VideoPlayerSettingsView.swift diff --git a/Shared/Coordinators/MainTabCoordinator.swift b/Shared/Coordinators/MainCoordinator/iOSMainTabCoordinator.swift similarity index 81% rename from Shared/Coordinators/MainTabCoordinator.swift rename to Shared/Coordinators/MainCoordinator/iOSMainTabCoordinator.swift index 52bcbca7..3be7131b 100644 --- a/Shared/Coordinators/MainTabCoordinator.swift +++ b/Shared/Coordinators/MainCoordinator/iOSMainTabCoordinator.swift @@ -14,11 +14,11 @@ import Stinsen final class MainTabCoordinator: TabCoordinatable { var child = TabChild(startingItems: [ \MainTabCoordinator.home, - \MainTabCoordinator.allMedia, + \MainTabCoordinator.allMedia ]) @Route(tabItem: makeHomeTab) var home = makeHome - @Route(tabItem: makeTodosTab) var allMedia = makeTodos + @Route(tabItem: makeAllMediaTab) var allMedia = makeAllMedia func makeHome() -> NavigationViewCoordinator { return NavigationViewCoordinator(HomeCoordinator()) @@ -29,11 +29,11 @@ final class MainTabCoordinator: TabCoordinatable { Text("Home") } - func makeTodos() -> NavigationViewCoordinator { + func makeAllMedia() -> NavigationViewCoordinator { return NavigationViewCoordinator(LibraryListCoordinator()) } - @ViewBuilder func makeTodosTab(isActive: Bool) -> some View { + @ViewBuilder func makeAllMediaTab(isActive: Bool) -> some View { Image(systemName: "folder") Text("All Media") } @@ -41,6 +41,7 @@ final class MainTabCoordinator: TabCoordinatable { @ViewBuilder func customize(_ view: AnyView) -> some View { view.onAppear { AppURLHandler.shared.appURLState = .allowed + // TODO: todo DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) { AppURLHandler.shared.processLaunchedURLIfNeeded() } diff --git a/Shared/Coordinators/MainCoordinator/tvOSMainCoordinator.swift b/Shared/Coordinators/MainCoordinator/tvOSMainCoordinator.swift index 8fc9ddfe..05d77b94 100644 --- a/Shared/Coordinators/MainCoordinator/tvOSMainCoordinator.swift +++ b/Shared/Coordinators/MainCoordinator/tvOSMainCoordinator.swift @@ -15,9 +15,40 @@ import SwiftUI final class MainCoordinator: NavigationCoordinatable { var stack = NavigationStack(initial: \MainCoordinator.mainTab) - @Root var mainTab = makeEmpty + @Root var mainTab = makeMainTab + @Root var serverList = makeServerList + + init() { + if SessionManager.main.currentLogin != nil { + self.stack = NavigationStack(initial: \MainCoordinator.mainTab) + } else { + self.stack = NavigationStack(initial: \MainCoordinator.serverList) + } + + ImageCache.shared.costLimit = 125 * 1024 * 1024 // 125MB memory + DataLoader.sharedUrlCache.diskCapacity = 1000 * 1024 * 1024 // 1000MB disk - @ViewBuilder func makeEmpty() -> some View { - EmptyView() + // Notification setup for state + let nc = SwiftfinNotificationCenter.main + nc.addObserver(self, selector: #selector(didLogIn), name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) + nc.addObserver(self, selector: #selector(didLogOut), name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) + } + + @objc func didLogIn() { + LogManager.shared.log.info("Received `didSignIn` from NSNotificationCenter.") + root(\.mainTab) + } + + @objc func didLogOut() { + LogManager.shared.log.info("Received `didSignOut` from NSNotificationCenter.") + root(\.serverList) + } + + func makeMainTab() -> MainTabCoordinator { + MainTabCoordinator() + } + + func makeServerList() -> NavigationViewCoordinator { + NavigationViewCoordinator(ServerListCoordinator()) } } diff --git a/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift b/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift new file mode 100644 index 00000000..fb9bec12 --- /dev/null +++ b/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift @@ -0,0 +1,57 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import SwiftUI +import Stinsen + +final class MainTabCoordinator: TabCoordinatable { + var child = TabChild(startingItems: [ + \MainTabCoordinator.home, + \MainTabCoordinator.allMedia, + \MainTabCoordinator.settings + ]) + + @Route(tabItem: makeHomeTab) var home = makeHome + @Route(tabItem: makeAllMediaTab) var allMedia = makeAllMedia + @Route(tabItem: makeSettingsTab) var settings = makeSettings + + func makeHome() -> NavigationViewCoordinator { + return NavigationViewCoordinator(HomeCoordinator()) + } + + @ViewBuilder func makeHomeTab(isActive: Bool) -> some View { + HStack { + Image(systemName: "house") + Text("Home") + } + } + + func makeAllMedia() -> NavigationViewCoordinator { + return NavigationViewCoordinator(LibraryListCoordinator()) + } + + @ViewBuilder func makeAllMediaTab(isActive: Bool) -> some View { + HStack { + Image(systemName: "folder") + Text("All Media") + } + } + + func makeSettings() -> NavigationViewCoordinator { + return NavigationViewCoordinator(SettingsCoordinator()) + } + + @ViewBuilder func makeSettingsTab(isActive: Bool) -> some View { + HStack { + Image(systemName: "gear") + Text("Settings") + } + } +} From 8f79ecbc771d88dbd2e462a88c994cfbacff2087 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 00:14:53 -0600 Subject: [PATCH 25/88] Start on ServerListView --- .../Views/ServerListView.swift | 71 +++++++++---------- JellyfinPlayer.xcodeproj/project.pbxproj | 17 ----- .../xcshareddata/swiftpm/Package.resolved | 9 --- Shared/Singleton/SessionManager.swift | 5 -- Shared/SwiftfinStore/SwiftfinStore.swift | 10 +++ 5 files changed, 43 insertions(+), 69 deletions(-) diff --git a/JellyfinPlayer tvOS/Views/ServerListView.swift b/JellyfinPlayer tvOS/Views/ServerListView.swift index f98734ef..b6be5412 100644 --- a/JellyfinPlayer tvOS/Views/ServerListView.swift +++ b/JellyfinPlayer tvOS/Views/ServerListView.swift @@ -23,34 +23,26 @@ struct ServerListView: View { Button { serverListRouter.route(to: \.userList, server) } label: { - ZStack(alignment: Alignment.leading) { - Rectangle() - .foregroundColor(Color.secondarySystemFill) - .frame(height: 100) - .cornerRadius(10) + HStack { + Image(systemName: "server.rack") + .font(.system(size: 72)) + .foregroundColor(.primary) - HStack { - Image(systemName: "server.rack") - .font(.system(size: 36)) + VStack(alignment: .leading, spacing: 5) { + Text(server.name) + .font(.title2) .foregroundColor(.primary) - VStack(alignment: .leading, spacing: 5) { - Text(server.name) - .font(.title2) - .foregroundColor(.primary) - - Text(server.uri) - .font(.footnote) - .disabled(true) - .foregroundColor(.secondary) - - Text(viewModel.userTextFor(server: server)) - .font(.footnote) - .foregroundColor(.primary) - } - }.padding([.leading]) + Text(server.uri) + .font(.footnote) + .disabled(true) + .foregroundColor(.secondary) + + Text(viewModel.userTextFor(server: server)) + .font(.footnote) + .foregroundColor(.primary) + } } - .padding() } .contextMenu { Button(role: .destructive) { @@ -62,32 +54,25 @@ struct ServerListView: View { } } } + .padding(.top, 100) } @ViewBuilder private var noServerView: some View { VStack { Text("Connect to a Jellyfin server to get started") - .frame(minWidth: 50, maxWidth: 240) + .frame(minWidth: 50, maxWidth: 500) .multilineTextAlignment(.center) + .font(.callout) Button { serverListRouter.route(to: \.connectToServer) } label: { - ZStack { - Rectangle() - .foregroundColor(Color.jellyfinPurple) - .frame(maxWidth: 500, maxHeight: 50) - .frame(height: 50) - .cornerRadius(10) - .padding([.leading, .trailing], 30) - .padding([.top, .bottom], 20) - - Text("Connect") - .foregroundColor(Color.white) - .bold() - } + Text("Connect") + .bold() + .font(.callout) } + .padding(.top, 40) } } @@ -98,6 +83,7 @@ struct ServerListView: View { .offset(y: -50) } else { listView + .frame(width: 3000) } } @@ -131,6 +117,7 @@ struct ServerListView: View { var body: some View { innerBody + .frame(width: 1500) .navigationTitle("Servers") .toolbar { ToolbarItemGroup(placement: .navigationBarTrailing) { @@ -142,3 +129,11 @@ struct ServerListView: View { } } } + +struct ContentView_Previews: PreviewProvider { + static var previews: some View { + NavigationView { + ServerListView(viewModel: ServerListViewModel()) + } + } +} diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index dd88b7f9..aefe7266 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -37,7 +37,6 @@ 5321753E2671DE9C005491E6 /* Typings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 535870AC2669D8DD00D05A09 /* Typings.swift */; }; 532175402671EE4F005491E6 /* LibraryFilterView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E4E646263F6CF100F67C6B /* LibraryFilterView.swift */; }; 53272532268BF09D0035FBF1 /* MediaViewActionButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53272531268BF09D0035FBF1 /* MediaViewActionButton.swift */; }; - 53272535268BF9710035FBF1 /* SwiftUIFocusGuide in Frameworks */ = {isa = PBXBuildFile; productRef = 53272534268BF9710035FBF1 /* SwiftUIFocusGuide */; }; 53272537268C1DBB0035FBF1 /* SeasonItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53272536268C1DBB0035FBF1 /* SeasonItemView.swift */; }; 53272539268C20100035FBF1 /* EpisodeItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53272538268C20100035FBF1 /* EpisodeItemView.swift */; }; 532E68CF267D9F6B007B9F13 /* VideoPlayerCastDeviceSelector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 532E68CE267D9F6B007B9F13 /* VideoPlayerCastDeviceSelector.swift */; }; @@ -583,7 +582,6 @@ 53A431BF266B0FFE0016769F /* JellyfinAPI in Frameworks */, 535870912669D7A800D05A09 /* Introspect in Frameworks */, 6261A0E026A0AB710072EF1C /* CombineExt in Frameworks */, - 53272535268BF9710035FBF1 /* SwiftUIFocusGuide in Frameworks */, 536D3D84267BEA550004248C /* ParallaxView in Frameworks */, 53ABFDDC267972BF00886593 /* TVServices.framework in Frameworks */, E13DD3CD27164CA7009D4DAF /* CoreStore in Frameworks */, @@ -1304,7 +1302,6 @@ 53A431BE266B0FFE0016769F /* JellyfinAPI */, 53ABFDEC26799D7700886593 /* ActivityIndicator */, 536D3D83267BEA550004248C /* ParallaxView */, - 53272534268BF9710035FBF1 /* SwiftUIFocusGuide */, 53649AAE269CFAF600A2D8B7 /* Puppy */, 6261A0DF26A0AB710072EF1C /* CombineExt */, 6220D0C826D63F3700B8E046 /* Stinsen */, @@ -1428,7 +1425,6 @@ 625CB5782678C4A400530A6E /* XCRemoteSwiftPackageReference "ActivityIndicator" */, 536D3D82267BEA550004248C /* XCRemoteSwiftPackageReference "ParallaxView" */, 53EC6E23267EB10F006DD26A /* XCRemoteSwiftPackageReference "SwiftyJSON" */, - 53272533268BF9710035FBF1 /* XCRemoteSwiftPackageReference "SwiftUIFocusGuide" */, 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */, 6260FFF726A09754003FA968 /* XCRemoteSwiftPackageReference "CombineExt" */, 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */, @@ -2370,14 +2366,6 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 53272533268BF9710035FBF1 /* XCRemoteSwiftPackageReference "SwiftUIFocusGuide" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/rmnblm/SwiftUIFocusGuide"; - requirement = { - kind = upToNextMajorVersion; - minimumVersion = 0.1.0; - }; - }; 5335256F265EA0A0006CCA86 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/siteline/SwiftUI-Introspect"; @@ -2469,11 +2457,6 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 53272534268BF9710035FBF1 /* SwiftUIFocusGuide */ = { - isa = XCSwiftPackageProductDependency; - package = 53272533268BF9710035FBF1 /* XCRemoteSwiftPackageReference "SwiftUIFocusGuide" */; - productName = SwiftUIFocusGuide; - }; 53352570265EA0A0006CCA86 /* Introspect */ = { isa = XCSwiftPackageProductDependency; package = 5335256F265EA0A0006CCA86 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */; diff --git a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved index 8893bce9..bfb7d2f1 100644 --- a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -136,15 +136,6 @@ "version": "0.1.3" } }, - { - "package": "SwiftUIFocusGuide", - "repositoryURL": "https://github.com/rmnblm/SwiftUIFocusGuide", - "state": { - "branch": null, - "revision": "fb8eefaccb2954efedc19a5539241f370baa4a10", - "version": "0.1.0" - } - }, { "package": "SwiftyJSON", "repositoryURL": "https://github.com/SwiftyJSON/SwiftyJSON", diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index ab19967d..95039408 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -15,11 +15,6 @@ import Foundation import JellyfinAPI import UIKit -#if os(tvOS) -import TVServices -import SwiftUIFocusGuide -#endif - typealias CurrentLogin = (server: SwiftfinStore.State.Server, user: SwiftfinStore.State.User) // MARK: NewSessionManager diff --git a/Shared/SwiftfinStore/SwiftfinStore.swift b/Shared/SwiftfinStore/SwiftfinStore.swift index 1b6a4809..66967aac 100644 --- a/Shared/SwiftfinStore/SwiftfinStore.swift +++ b/Shared/SwiftfinStore/SwiftfinStore.swift @@ -13,6 +13,7 @@ import Defaults enum SwiftfinStore { + // MARK: State // Safe, copyable representations of their underlying CoreStoredObject's // Relationships are represented by the related object's IDs or value enum State { @@ -33,6 +34,10 @@ enum SwiftfinStore { self.version = version self.userIDs = usersIDs } + + static var sample: Server { + return Server(uri: "https://www.notaurl.com", name: "Johnny's Tree", id: "123abc", os: "macOS", version: "1.1.1", usersIDs: ["1", "2"]) + } } struct User { @@ -47,9 +52,14 @@ enum SwiftfinStore { self.serverID = serverID self.accessToken = accessToken } + + static var sample: User { + return User(username: "JohnnyAppleseed", id: "123abc", serverID: "123abc", accessToken: "open-sesame") + } } } + // MARK: Models enum Models { final class StoredServer: CoreStoreObject { From 2d56c01bb952a7beb3a5e7e5614356fd86607d21 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 00:43:14 -0600 Subject: [PATCH 26/88] Finish ServerListView and UserListView --- .../Views/ServerListView.swift | 16 ++---- JellyfinPlayer tvOS/Views/UserListView.swift | 51 +++++++------------ Shared/ViewModels/LibraryListViewModel.swift | 2 +- 3 files changed, 23 insertions(+), 46 deletions(-) diff --git a/JellyfinPlayer tvOS/Views/ServerListView.swift b/JellyfinPlayer tvOS/Views/ServerListView.swift index b6be5412..8b466bcf 100644 --- a/JellyfinPlayer tvOS/Views/ServerListView.swift +++ b/JellyfinPlayer tvOS/Views/ServerListView.swift @@ -42,8 +42,11 @@ struct ServerListView: View { .font(.footnote) .foregroundColor(.primary) } + + Spacer() } } + .padding([.leading, .trailing], 100) .contextMenu { Button(role: .destructive) { viewModel.remove(server: server) @@ -53,8 +56,9 @@ struct ServerListView: View { } } } + .padding(.top, 50) } - .padding(.top, 100) + .padding(.top, 50) } @ViewBuilder @@ -83,7 +87,6 @@ struct ServerListView: View { .offset(y: -50) } else { listView - .frame(width: 3000) } } @@ -117,7 +120,6 @@ struct ServerListView: View { var body: some View { innerBody - .frame(width: 1500) .navigationTitle("Servers") .toolbar { ToolbarItemGroup(placement: .navigationBarTrailing) { @@ -129,11 +131,3 @@ struct ServerListView: View { } } } - -struct ContentView_Previews: PreviewProvider { - static var previews: some View { - NavigationView { - ServerListView(viewModel: ServerListViewModel()) - } - } -} diff --git a/JellyfinPlayer tvOS/Views/UserListView.swift b/JellyfinPlayer tvOS/Views/UserListView.swift index 9937feb4..a35a21e2 100644 --- a/JellyfinPlayer tvOS/Views/UserListView.swift +++ b/JellyfinPlayer tvOS/Views/UserListView.swift @@ -22,29 +22,18 @@ struct UserListView: View { Button { viewModel.login(user: user) } label: { - ZStack(alignment: Alignment.leading) { - Rectangle() - .foregroundColor(Color.secondarySystemFill) - .frame(height: 70) - .cornerRadius(10) + HStack { + Text(user.username) + .font(.title2) - HStack { - Image(systemName: "person.crop.circle.fill") - .font(.system(size: 46)) - .foregroundColor(.primary) - - Text(user.username) - .font(.title2) - - Spacer() - - if viewModel.isLoading { - ProgressView() - } - }.padding(.leading) + Spacer() + + if viewModel.isLoading { + ProgressView() + } } - .padding() } + .padding([.leading, .trailing], 100) .contextMenu { Button(role: .destructive) { viewModel.remove(user: user) @@ -54,33 +43,27 @@ struct UserListView: View { } } } + .padding(.top, 50) } + .padding(.top, 50) } @ViewBuilder private var noUserView: some View { VStack { Text("Sign in to get started") - .frame(minWidth: 50, maxWidth: 240) + .frame(minWidth: 50, maxWidth: 500) .multilineTextAlignment(.center) + .font(.callout) Button { userListRouter.route(to: \.userSignIn, viewModel.server) } label: { - ZStack { - Rectangle() - .foregroundColor(Color.jellyfinPurple) - .frame(maxWidth: 500, maxHeight: 50) - .frame(height: 50) - .cornerRadius(10) - .padding([.leading, .trailing], 30) - .padding([.top, .bottom], 20) - - Text("Sign in") - .foregroundColor(Color.white) - .bold() - } + Text("Sign in") + .bold() + .font(.callout) } + .padding(.top, 40) } } diff --git a/Shared/ViewModels/LibraryListViewModel.swift b/Shared/ViewModels/LibraryListViewModel.swift index f352f686..a95c429f 100644 --- a/Shared/ViewModels/LibraryListViewModel.swift +++ b/Shared/ViewModels/LibraryListViewModel.swift @@ -24,7 +24,7 @@ final class LibraryListViewModel: ViewModel { } func requestLibraries() { - UserViewsAPI.getUserViews(userId: SessionManager.main.currentLogin.user.id ?? "val was nil") + UserViewsAPI.getUserViews(userId: SessionManager.main.currentLogin.user.id) .trackActivity(loading) .sink(receiveCompletion: { completion in self.handleAPIRequestError(completion: completion) From 0a5704923618ec68e59fe241e68063a495550db6 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 00:49:40 -0600 Subject: [PATCH 27/88] Fix ItemCoordinator for tvOS --- JellyfinPlayer.xcodeproj/project.pbxproj | 8 --- Shared/Coordinators/ItemCoordinator.swift | 77 +++++++---------------- 2 files changed, 24 insertions(+), 61 deletions(-) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 84fa091b..0785991d 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -825,7 +825,6 @@ 62ECA01926FA6D6900E8EBB7 /* AppURLHandler */, 5377CBF8263B596B003A4E83 /* Assets.xcassets */, 53F866422687A45400DCD1D7 /* Components */, - E193D53F27193FA800900D82 /* Coordinators */, 5377CC02263B596B003A4E83 /* Info.plist */, 53AD124C2670278D0094A276 /* JellyfinPlayer.entitlements */, 5377CBFA263B596B003A4E83 /* Preview Content */, @@ -1202,13 +1201,6 @@ path = Coordinators; sourceTree = ""; }; - E193D53F27193FA800900D82 /* Coordinators */ = { - isa = PBXGroup; - children = ( - ); - path = Coordinators; - sourceTree = ""; - }; E193D5412719404B00900D82 /* MainCoordinator */ = { isa = PBXGroup; children = ( diff --git a/Shared/Coordinators/ItemCoordinator.swift b/Shared/Coordinators/ItemCoordinator.swift index 12781b52..d8f4588f 100644 --- a/Shared/Coordinators/ItemCoordinator.swift +++ b/Shared/Coordinators/ItemCoordinator.swift @@ -12,62 +12,33 @@ import JellyfinAPI import Stinsen import SwiftUI -#if os(iOS) - final class ItemCoordinator: NavigationCoordinatable { - let stack = NavigationStack(initial: \ItemCoordinator.start) +final class ItemCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \ItemCoordinator.start) - @Root var start = makeStart - @Route(.push) var item = makeItem - @Route(.push) var library = makeLibrary - @Route(.fullScreen) var videoPlayer = makeVideoPlayer + @Root var start = makeStart + @Route(.push) var item = makeItem + @Route(.push) var library = makeLibrary + @Route(.fullScreen) var videoPlayer = makeVideoPlayer - let itemDto: BaseItemDto + let itemDto: BaseItemDto - init(item: BaseItemDto) { - self.itemDto = item - } - - func makeLibrary(params: LibraryCoordinatorParams) -> LibraryCoordinator { - LibraryCoordinator(viewModel: params.viewModel, title: params.title) - } - - func makeItem(item: BaseItemDto) -> ItemCoordinator { - ItemCoordinator(item: item) - } - - func makeVideoPlayer(item: BaseItemDto) -> NavigationViewCoordinator { - NavigationViewCoordinator(VideoPlayerCoordinator(item: item)) - } - - @ViewBuilder func makeStart() -> some View { - ItemNavigationView(item: itemDto) - } + init(item: BaseItemDto) { + self.itemDto = item } -#elseif os(tvOS) - // temp for fixing build error - final class ItemCoordinator: NavigationCoordinatable { - let stack = NavigationStack(initial: \ItemCoordinator.start) - - @Root var start = makeStart - @Route(.push) var item = makeItem - @Route(.push) var library = makeLibrary - @Route(.fullScreen) var videoPlayer = makeVideoPlayer - - @ViewBuilder func makeStart() -> some View { - EmptyView() - } - - @ViewBuilder func makeLibrary(params: (viewModel: LibraryViewModel, title: String)) -> some View { - EmptyView() - } - - @ViewBuilder func makeItem(item: BaseItemDto) -> some View { - EmptyView() - } - - @ViewBuilder func makeVideoPlayer(item: BaseItemDto) -> some View { - EmptyView() - } + func makeLibrary(params: LibraryCoordinatorParams) -> LibraryCoordinator { + LibraryCoordinator(viewModel: params.viewModel, title: params.title) } -#endif + + func makeItem(item: BaseItemDto) -> ItemCoordinator { + ItemCoordinator(item: item) + } + + func makeVideoPlayer(item: BaseItemDto) -> NavigationViewCoordinator { + NavigationViewCoordinator(VideoPlayerCoordinator(item: item)) + } + + @ViewBuilder func makeStart() -> some View { + ItemNavigationView(item: itemDto) + } +} From 804ddd1d5d38bf6c72cee3b4ea792f1f85d1a151 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 00:58:25 -0600 Subject: [PATCH 28/88] Remove KeychainSwift from widget --- WidgetExtension/JellyfinWidget.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/WidgetExtension/JellyfinWidget.swift b/WidgetExtension/JellyfinWidget.swift index 74b885d5..e9eaca38 100644 --- a/WidgetExtension/JellyfinWidget.swift +++ b/WidgetExtension/JellyfinWidget.swift @@ -7,7 +7,6 @@ import SwiftUI import WidgetKit -import KeychainSwift @main struct JellyfinWidgetBundle: WidgetBundle { From 3c26b55fc4b2c812e22a5dbeb051c9baabd2e4a4 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 01:00:31 -0600 Subject: [PATCH 29/88] Remove person crop --- JellyfinPlayer/Views/UserListView.swift | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/JellyfinPlayer/Views/UserListView.swift b/JellyfinPlayer/Views/UserListView.swift index 8b37c8b1..e064e209 100644 --- a/JellyfinPlayer/Views/UserListView.swift +++ b/JellyfinPlayer/Views/UserListView.swift @@ -25,14 +25,10 @@ struct UserListView: View { ZStack(alignment: Alignment.leading) { Rectangle() .foregroundColor(Color(UIColor.secondarySystemFill)) - .frame(height: 70) + .frame(height: 50) .cornerRadius(10) HStack { - Image(systemName: "person.crop.circle.fill") - .font(.system(size: 46)) - .foregroundColor(.primary) - Text(user.username) .font(.title2) From b0463319365f773e4e91020fe020ed1355ca493e Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 01:06:15 -0600 Subject: [PATCH 30/88] Remove purge button --- .../Views/ServerListView.swift | 23 +++-------------- JellyfinPlayer/Views/ServerListView.swift | 25 ++++--------------- 2 files changed, 9 insertions(+), 39 deletions(-) diff --git a/JellyfinPlayer tvOS/Views/ServerListView.swift b/JellyfinPlayer tvOS/Views/ServerListView.swift index 8b466bcf..c1a5fd05 100644 --- a/JellyfinPlayer tvOS/Views/ServerListView.swift +++ b/JellyfinPlayer tvOS/Views/ServerListView.swift @@ -95,25 +95,10 @@ struct ServerListView: View { if viewModel.servers.isEmpty { EmptyView() } else { - HStack { - Button { - SwiftfinStore.dataStack.perform(asynchronous: { transaction in - try! transaction.deleteAll(From()) - try! transaction.deleteAll(From()) - try! transaction.deleteAll(From()) - }) { _ in - SwiftfinStore.Defaults.suite[.lastServerUserID] = nil - viewModel.fetchServers() - } - } label: { - Text("Purge") - } - - Button { - serverListRouter.route(to: \.connectToServer) - } label: { - Image(systemName: "plus.circle.fill") - } + Button { + serverListRouter.route(to: \.connectToServer) + } label: { + Image(systemName: "plus.circle.fill") } } } diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index 7eb03c51..06eca182 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -29,7 +29,7 @@ struct ServerListView: View { .frame(height: 100) .cornerRadius(10) - HStack { + HStack(spacing: 10) { Image(systemName: "server.rack") .font(.system(size: 36)) .foregroundColor(.primary) @@ -106,25 +106,10 @@ struct ServerListView: View { if viewModel.servers.isEmpty { EmptyView() } else { - HStack { - Button { - SwiftfinStore.dataStack.perform(asynchronous: { transaction in - try! transaction.deleteAll(From()) - try! transaction.deleteAll(From()) - try! transaction.deleteAll(From()) - }) { _ in - SwiftfinStore.Defaults.suite[.lastServerUserID] = nil - viewModel.fetchServers() - } - } label: { - Text("Purge") - } - - Button { - serverListRouter.route(to: \.connectToServer) - } label: { - Image(systemName: "plus.circle.fill") - } + Button { + serverListRouter.route(to: \.connectToServer) + } label: { + Image(systemName: "plus.circle.fill") } } } From 9e2089198e1fefc1c33e76834a3b70f46e73afd9 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 01:13:09 -0600 Subject: [PATCH 31/88] Adjust maxwidth --- JellyfinPlayer/Views/ServerListView.swift | 2 +- JellyfinPlayer/Views/UserListView.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index 06eca182..7460dfd6 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -77,7 +77,7 @@ struct ServerListView: View { ZStack { Rectangle() .foregroundColor(Color.jellyfinPurple) - .frame(maxWidth: 500, maxHeight: 50) + .frame(maxWidth: 400, maxHeight: 50) .frame(height: 50) .cornerRadius(10) .padding([.leading, .trailing], 30) diff --git a/JellyfinPlayer/Views/UserListView.swift b/JellyfinPlayer/Views/UserListView.swift index e064e209..55ffb975 100644 --- a/JellyfinPlayer/Views/UserListView.swift +++ b/JellyfinPlayer/Views/UserListView.swift @@ -66,7 +66,7 @@ struct UserListView: View { ZStack { Rectangle() .foregroundColor(Color.jellyfinPurple) - .frame(maxWidth: 500, maxHeight: 50) + .frame(maxWidth: 400, maxHeight: 50) .frame(height: 50) .cornerRadius(10) .padding([.leading, .trailing], 30) From b2fb9fbe2b05dcf2f263191625fea30889528ae3 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 09:35:32 -0600 Subject: [PATCH 32/88] Add BasicAppSettingsView, refactor, and organize --- JellyfinPlayer.xcodeproj/project.pbxproj | 46 +++++++++++++++--- JellyfinPlayer/JellyfinPlayer.entitlements | 8 ---- .../Views/BasicAppSettingsView.swift | 47 +++++++++++++++++++ JellyfinPlayer/Views/ServerListView.swift | 18 ++++++- JellyfinPlayer/Views/SettingsView.swift | 6 +-- .../BasicAppSettingsCoordinator.swift | 23 +++++++++ .../ConnectToServerCoodinator.swift | 1 + Shared/Coordinators/FilterCoordinator.swift | 2 + Shared/Coordinators/HomeCoordinator.swift | 1 + Shared/Coordinators/ItemCoordinator.swift | 1 + Shared/Coordinators/LibraryCoordinator.swift | 5 +- .../Coordinators/LibraryListCoordinator.swift | 1 + Shared/Coordinators/SearchCoordinator.swift | 3 +- .../Coordinators/ServerListCoordinator.swift | 6 +++ Shared/Coordinators/SettingsCoordinator.swift | 1 + Shared/Coordinators/UserListCoordinator.swift | 1 + .../Coordinators/UserSignInCoordinator.swift | 1 + .../Coordinators/VideoPlayerCoordinator.swift | 4 +- Shared/Objects/AppAppearance.swift | 32 +++++++++++++ Shared/Objects/Bitrates.swift | 15 ++++++ Shared/Objects/TrackLanguage.swift | 17 +++++++ .../BasicAppSettingsViewModel.swift | 16 +++++++ Shared/ViewModels/SettingsViewModel.swift | 42 ----------------- WidgetExtension/WidgetExtension.entitlements | 8 +--- 24 files changed, 232 insertions(+), 73 deletions(-) create mode 100644 JellyfinPlayer/Views/BasicAppSettingsView.swift create mode 100644 Shared/Coordinators/BasicAppSettingsCoordinator.swift create mode 100644 Shared/Objects/AppAppearance.swift create mode 100644 Shared/Objects/Bitrates.swift create mode 100644 Shared/Objects/TrackLanguage.swift create mode 100644 Shared/ViewModels/BasicAppSettingsViewModel.swift diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 0785991d..798012e5 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -318,6 +318,17 @@ E1AD105C26D9ABDD003E4A08 /* PillHStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD105B26D9ABDD003E4A08 /* PillHStackView.swift */; }; E1AD105F26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD105E26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift */; }; E1AD106226D9B7CD003E4A08 /* ItemPortraitHeaderOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD106126D9B7CD003E4A08 /* ItemPortraitHeaderOverlayView.swift */; }; + E1D4BF7C2719D05000A11E64 /* BasicAppSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF7B2719D05000A11E64 /* BasicAppSettingsView.swift */; }; + E1D4BF7E2719D1DD00A11E64 /* BasicAppSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF7D2719D1DC00A11E64 /* BasicAppSettingsViewModel.swift */; }; + E1D4BF7F2719D1DD00A11E64 /* BasicAppSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF7D2719D1DC00A11E64 /* BasicAppSettingsViewModel.swift */; }; + E1D4BF812719D22800A11E64 /* AppAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF802719D22800A11E64 /* AppAppearance.swift */; }; + E1D4BF822719D22800A11E64 /* AppAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF802719D22800A11E64 /* AppAppearance.swift */; }; + E1D4BF842719D25A00A11E64 /* TrackLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF832719D25A00A11E64 /* TrackLanguage.swift */; }; + E1D4BF852719D25A00A11E64 /* TrackLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF832719D25A00A11E64 /* TrackLanguage.swift */; }; + E1D4BF872719D27100A11E64 /* Bitrates.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF862719D27100A11E64 /* Bitrates.swift */; }; + E1D4BF882719D27100A11E64 /* Bitrates.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF862719D27100A11E64 /* Bitrates.swift */; }; + E1D4BF8A2719D3D000A11E64 /* BasicAppSettingsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF892719D3D000A11E64 /* BasicAppSettingsCoordinator.swift */; }; + E1D4BF8B2719D3D000A11E64 /* BasicAppSettingsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF892719D3D000A11E64 /* BasicAppSettingsCoordinator.swift */; }; E1F0204E26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1F0204F26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1FCD08826C35A0D007C8DCF /* NetworkError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FCD08726C35A0D007C8DCF /* NetworkError.swift */; }; @@ -499,7 +510,6 @@ 628B95282670CABE0091AF3B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 628B952A2670CABE0091AF3B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 628B95362670CB800091AF3B /* JellyfinWidget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinWidget.swift; sourceTree = ""; }; - 628B953B2670D1FC0091AF3B /* WidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = WidgetExtension.entitlements; sourceTree = ""; }; 62C29E9E26D1016600C1D2E7 /* iOSMainCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSMainCoordinator.swift; sourceTree = ""; }; 62C29EA026D102A500C1D2E7 /* iOSMainTabCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iOSMainTabCoordinator.swift; sourceTree = ""; }; 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectToServerCoodinator.swift; sourceTree = ""; }; @@ -566,6 +576,12 @@ E1AD105B26D9ABDD003E4A08 /* PillHStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PillHStackView.swift; sourceTree = ""; }; E1AD105E26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NameGUIDPairExtensions.swift; sourceTree = ""; }; E1AD106126D9B7CD003E4A08 /* ItemPortraitHeaderOverlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemPortraitHeaderOverlayView.swift; sourceTree = ""; }; + E1D4BF7B2719D05000A11E64 /* BasicAppSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicAppSettingsView.swift; sourceTree = ""; }; + E1D4BF7D2719D1DC00A11E64 /* BasicAppSettingsViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicAppSettingsViewModel.swift; sourceTree = ""; }; + E1D4BF802719D22800A11E64 /* AppAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppAppearance.swift; sourceTree = ""; }; + E1D4BF832719D25A00A11E64 /* TrackLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackLanguage.swift; sourceTree = ""; }; + E1D4BF862719D27100A11E64 /* Bitrates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bitrates.swift; sourceTree = ""; }; + E1D4BF892719D3D000A11E64 /* BasicAppSettingsCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicAppSettingsCoordinator.swift; sourceTree = ""; }; E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayerJumpLength.swift; sourceTree = ""; }; E1FCD08726C35A0D007C8DCF /* NetworkError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkError.swift; sourceTree = ""; }; E1FCD09526C47118007C8DCF /* ErrorMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorMessage.swift; sourceTree = ""; }; @@ -654,6 +670,7 @@ 532175392671BCED005491E6 /* ViewModels */ = { isa = PBXGroup; children = ( + E1D4BF7D2719D1DC00A11E64 /* BasicAppSettingsViewModel.swift */, 625CB5762678C34300530A6E /* ConnectToServerViewModel.swift */, 62E632E5267D3F5B0063E547 /* EpisodeItemViewModel.swift */, 625CB5722678C32A00530A6E /* HomeViewModel.swift */, @@ -770,11 +787,14 @@ 535870AB2669D8D300D05A09 /* Objects */ = { isa = PBXGroup; children = ( + E1D4BF802719D22800A11E64 /* AppAppearance.swift */, + E1D4BF862719D27100A11E64 /* Bitrates.swift */, E1AD104926D94822003E4A08 /* DetailItem.swift */, 53192D5C265AA78A008A4215 /* DeviceProfileBuilder.swift */, 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */, - E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */, E193D4DA27193CCA00900D82 /* PillStackable.swift */, + E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */, + E1D4BF832719D25A00A11E64 /* TrackLanguage.swift */, 535870AC2669D8DD00D05A09 /* Typings.swift */, E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */, ); @@ -1019,7 +1039,6 @@ 628B95252670CABD0091AF3B /* WidgetExtension */ = { isa = PBXGroup; children = ( - 628B953B2670D1FC0091AF3B /* WidgetExtension.entitlements */, 628B95362670CB800091AF3B /* JellyfinWidget.swift */, 628B95262670CABD0091AF3B /* NextUpWidget.swift */, 628B95282670CABE0091AF3B /* Assets.xcassets */, @@ -1032,6 +1051,7 @@ isa = PBXGroup; children = ( 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */, + E1D4BF892719D3D000A11E64 /* BasicAppSettingsCoordinator.swift */, 6220D0B926D6092100B8E046 /* FilterCoordinator.swift */, 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */, E193D5412719404B00900D82 /* MainCoordinator */, @@ -1143,6 +1163,7 @@ E13DD3D027165886009D4DAF /* Views */ = { isa = PBXGroup; children = ( + E1D4BF7B2719D05000A11E64 /* BasicAppSettingsView.swift */, 5338F74D263B61370014BF09 /* ConnectToServerView.swift */, 5389276D263C25100035E14B /* ContinueWatchingView.swift */, 625CB56E2678C23300530A6E /* HomeView.swift */, @@ -1631,6 +1652,7 @@ 53116A17268B919A003024C9 /* SeriesItemView.swift in Sources */, E13DD3F027178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, 531690E7267ABD79005D8AB9 /* HomeView.swift in Sources */, + E1D4BF8B2719D3D000A11E64 /* BasicAppSettingsCoordinator.swift in Sources */, E13DD3FA2717E961009D4DAF /* UserListViewModel.swift in Sources */, 53ABFDDE267974E300886593 /* SplashView.swift in Sources */, 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */, @@ -1672,6 +1694,7 @@ E193D53927193F8E00900D82 /* SearchCoordinator.swift in Sources */, E193D4D927193CAC00900D82 /* PortraitImageStackable.swift in Sources */, 535870A52669D8AE00D05A09 /* ParallaxHeader.swift in Sources */, + E1D4BF852719D25A00A11E64 /* TrackLanguage.swift in Sources */, 53272532268BF09D0035FBF1 /* MediaViewActionButton.swift in Sources */, 531690F0267ABF72005D8AB9 /* NextUpView.swift in Sources */, E193D53427193F7F00900D82 /* HomeCoordinator.swift in Sources */, @@ -1686,6 +1709,7 @@ 5310695B2684E7EE00CFFDBA /* AudioView.swift in Sources */, 5398514726B64E4100101B49 /* SearchBarView.swift in Sources */, 091B5A8D268315D400D78B61 /* ServerDiscovery.swift in Sources */, + E1D4BF882719D27100A11E64 /* Bitrates.swift in Sources */, E193D5432719407E00900D82 /* tvOSMainCoordinator.swift in Sources */, 53ABFDE7267974EF00886593 /* ConnectToServerViewModel.swift in Sources */, 5398514626B64DBB00101B49 /* SearchablePickerView.swift in Sources */, @@ -1699,6 +1723,7 @@ 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */, C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, 531069582684E7EE00CFFDBA /* MediaInfoView.swift in Sources */, + E1D4BF822719D22800A11E64 /* AppAppearance.swift in Sources */, 53272537268C1DBB0035FBF1 /* SeasonItemView.swift in Sources */, 09389CC526814E4500AE350E /* DeviceProfileBuilder.swift in Sources */, E193D53C27193F9500900D82 /* UserListCoordinator.swift in Sources */, @@ -1717,6 +1742,7 @@ 536D3D74267BA8170004248C /* BackgroundManager.swift in Sources */, 535870632669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift in Sources */, E193D547271941C500900D82 /* UserListView.swift in Sources */, + E1D4BF7F2719D1DD00A11E64 /* BasicAppSettingsViewModel.swift in Sources */, E193D53227193F7B00900D82 /* ConnectToServerCoodinator.swift in Sources */, 53ABFDE4267974EF00886593 /* LibraryListViewModel.swift in Sources */, 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, @@ -1736,6 +1762,7 @@ 5364F455266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, E18845F526DD631E00B0C5B7 /* BaseItemDto+Stackable.swift in Sources */, 5364F455266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, + E1D4BF7E2719D1DD00A11E64 /* BasicAppSettingsViewModel.swift in Sources */, 6220D0B426D5ED8000B8E046 /* LibraryCoordinator.swift in Sources */, 6220D0C026D61C5000B8E046 /* ItemCoordinator.swift in Sources */, E13DD3F227179378009D4DAF /* UserSignInCoordinator.swift in Sources */, @@ -1796,11 +1823,13 @@ 6220D0CC26D640C400B8E046 /* AppURLHandler.swift in Sources */, 62E632F3267D54030063E547 /* ItemViewModel.swift in Sources */, 53DE4BD2267098F300739748 /* SearchBarView.swift in Sources */, + E1D4BF842719D25A00A11E64 /* TrackLanguage.swift in Sources */, E14F7D0726DB36EF007C3AE6 /* ItemPortraitMainView.swift in Sources */, E1AD106226D9B7CD003E4A08 /* ItemPortraitHeaderOverlayView.swift in Sources */, 53E4E649263F725B00F67C6B /* MultiSelectorView.swift in Sources */, 6220D0C626D62D8700B8E046 /* VideoPlayerCoordinator.swift in Sources */, E11B1B6C2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */, + E1D4BF812719D22800A11E64 /* AppAppearance.swift in Sources */, 621338B32660A07800A81A2A /* LazyView.swift in Sources */, 6220D0B126D5EC9900B8E046 /* SettingsCoordinator.swift in Sources */, 62C29EA626D1036A00C1D2E7 /* HomeCoordinator.swift in Sources */, @@ -1813,6 +1842,7 @@ E193D4DB27193CCA00900D82 /* PillStackable.swift in Sources */, E193D4D827193CAC00900D82 /* PortraitImageStackable.swift in Sources */, 624C21752685CF60007F1390 /* SearchablePickerView.swift in Sources */, + E1D4BF7C2719D05000A11E64 /* BasicAppSettingsView.swift in Sources */, E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */, 62EC352F267666A5000E9F2D /* SessionManager.swift in Sources */, 62E632E3267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, @@ -1828,10 +1858,12 @@ 6267B3DA2671138200A7371D /* ImageExtensions.swift in Sources */, 62EC353426766B03000E9F2D /* DeviceRotationViewModifier.swift in Sources */, 5389277C263CC3DB0035E14B /* BlurHashDecode.swift in Sources */, + E1D4BF8A2719D3D000A11E64 /* BasicAppSettingsCoordinator.swift in Sources */, E13DD3F92717E961009D4DAF /* UserListViewModel.swift in Sources */, 539B2DA5263BA5B8007FF1A4 /* SettingsView.swift in Sources */, 5338F74E263B61370014BF09 /* ConnectToServerView.swift in Sources */, 09389CC726819B4600AE350E /* VideoPlayerModel.swift in Sources */, + E1D4BF872719D27100A11E64 /* Bitrates.swift in Sources */, 6220D0B726D5EE1100B8E046 /* SearchCoordinator.swift in Sources */, E13DD3EF27178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, 5377CBF5263B596A003A4E83 /* JellyfinPlayerApp.swift in Sources */, @@ -2205,7 +2237,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_ASSET_PATHS = ""; - DEVELOPMENT_TEAM = 9R8RREG67J; + DEVELOPMENT_TEAM = TY84JMYEFE; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; EXCLUDED_ARCHS = ""; @@ -2217,7 +2249,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.vigue.jellyfin; + PRODUCT_BUNDLE_IDENTIFIER = pips.swiftfin; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTS_MACCATALYST = NO; @@ -2273,7 +2305,7 @@ CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; - DEVELOPMENT_TEAM = 9R8RREG67J; + DEVELOPMENT_TEAM = TY84JMYEFE; INFOPLIST_FILE = WidgetExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2282,7 +2314,7 @@ "@executable_path/../../Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.vigue.jellyfin.widget; + PRODUCT_BUNDLE_IDENTIFIER = pips.swiftfin.widget; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; diff --git a/JellyfinPlayer/JellyfinPlayer.entitlements b/JellyfinPlayer/JellyfinPlayer.entitlements index 77250fef..bc04cfb9 100644 --- a/JellyfinPlayer/JellyfinPlayer.entitlements +++ b/JellyfinPlayer/JellyfinPlayer.entitlements @@ -2,14 +2,6 @@ - com.apple.developer.coremedia.hls.low-latency - - com.apple.security.app-sandbox - - com.apple.security.application-groups - - group.me.vigue.jellyfin.mobileclient - com.apple.security.network.client diff --git a/JellyfinPlayer/Views/BasicAppSettingsView.swift b/JellyfinPlayer/Views/BasicAppSettingsView.swift new file mode 100644 index 00000000..db04156b --- /dev/null +++ b/JellyfinPlayer/Views/BasicAppSettingsView.swift @@ -0,0 +1,47 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Defaults +import Stinsen +import SwiftUI + +struct BasicAppSettingsView: View { + + @EnvironmentObject var basicAppSettingsRouter: BasicAppSettingsCoordinator.Router + @ObservedObject var viewModel: BasicAppSettingsViewModel + + @Default(.appAppearance) var appAppearance + + var body: some View { + Form { + Section { + Picker(NSLocalizedString("Appearance", comment: ""), selection: $appAppearance) { + ForEach(self.viewModel.appearances, id: \.self) { appearance in + Text(appearance.localizedName).tag(appearance.rawValue) + } + }.onChange(of: appAppearance, perform: { _ in + UIApplication.shared.windows.first?.overrideUserInterfaceStyle = appAppearance.style + }) + } header: { + Text("Accessibility") + } + + } + .navigationBarTitle("Settings", displayMode: .inline) + .toolbar { + ToolbarItemGroup(placement: .navigationBarLeading) { + Button { + basicAppSettingsRouter.dismissCoordinator() + } label: { + Image(systemName: "xmark.circle.fill") + } + } + } + } +} diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index 7460dfd6..f2c2a6b3 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -102,7 +102,7 @@ struct ServerListView: View { } @ViewBuilder - private var toolbarContent: some View { + private var trailingToolbarContent: some View { if viewModel.servers.isEmpty { EmptyView() } else { @@ -114,14 +114,28 @@ struct ServerListView: View { } } + @ViewBuilder + private var leadingToolbarContent: some View { + Button { + serverListRouter.route(to: \.basicAppSettings) + } label: { + Image(systemName: "gear") + } + } + var body: some View { innerBody .navigationTitle("Servers") .toolbar { ToolbarItemGroup(placement: .navigationBarTrailing) { - toolbarContent + trailingToolbarContent } } + .toolbar(content: { + ToolbarItemGroup(placement: .navigationBarLeading) { + leadingToolbarContent + } + }) .onAppear { viewModel.fetchServers() } diff --git a/JellyfinPlayer/Views/SettingsView.swift b/JellyfinPlayer/Views/SettingsView.swift index 9e353407..7b7a9ff5 100644 --- a/JellyfinPlayer/Views/SettingsView.swift +++ b/JellyfinPlayer/Views/SettingsView.swift @@ -11,9 +11,8 @@ import Stinsen import SwiftUI struct SettingsView: View { + @EnvironmentObject var settingsRouter: SettingsCoordinator.Router - @Environment(\.managedObjectContext) private var viewContext - @ObservedObject var viewModel: SettingsViewModel @Default(.inNetworkBandwidth) var inNetworkStreamBitrate @@ -82,6 +81,7 @@ struct SettingsView: View { .font(.callout) } } + Section(header: Text("Playback")) { Picker("Default local quality", selection: $inNetworkStreamBitrate) { ForEach(self.viewModel.bitrates, id: \.self) { bitrate in @@ -144,7 +144,7 @@ struct SettingsView: View { Button { settingsRouter.dismissCoordinator() } label: { - Image(systemName: "xmark") + Image(systemName: "xmark.circle.fill") } } } diff --git a/Shared/Coordinators/BasicAppSettingsCoordinator.swift b/Shared/Coordinators/BasicAppSettingsCoordinator.swift new file mode 100644 index 00000000..d9ee38bb --- /dev/null +++ b/Shared/Coordinators/BasicAppSettingsCoordinator.swift @@ -0,0 +1,23 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import Stinsen +import SwiftUI + +final class BasicAppSettingsCoordinator: NavigationCoordinatable { + + let stack = NavigationStack(initial: \BasicAppSettingsCoordinator.start) + + @Root var start = makeStart + + @ViewBuilder func makeStart() -> some View { + BasicAppSettingsView(viewModel: BasicAppSettingsViewModel()) + } +} diff --git a/Shared/Coordinators/ConnectToServerCoodinator.swift b/Shared/Coordinators/ConnectToServerCoodinator.swift index 20c4a862..45d47f03 100644 --- a/Shared/Coordinators/ConnectToServerCoodinator.swift +++ b/Shared/Coordinators/ConnectToServerCoodinator.swift @@ -12,6 +12,7 @@ import Stinsen import SwiftUI final class ConnectToServerCoodinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \ConnectToServerCoodinator.start) @Root var start = makeStart diff --git a/Shared/Coordinators/FilterCoordinator.swift b/Shared/Coordinators/FilterCoordinator.swift index 48496d14..fa845d0c 100644 --- a/Shared/Coordinators/FilterCoordinator.swift +++ b/Shared/Coordinators/FilterCoordinator.swift @@ -14,7 +14,9 @@ import SwiftUI typealias FilterCoordinatorParams = (filters: Binding, enabledFilterType: [FilterType], parentId: String) final class FilterCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \FilterCoordinator.start) + @Root var start = makeStart @Binding var filters: LibraryFilters diff --git a/Shared/Coordinators/HomeCoordinator.swift b/Shared/Coordinators/HomeCoordinator.swift index be38b278..31837271 100644 --- a/Shared/Coordinators/HomeCoordinator.swift +++ b/Shared/Coordinators/HomeCoordinator.swift @@ -13,6 +13,7 @@ import Stinsen import SwiftUI final class HomeCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \HomeCoordinator.start) @Root var start = makeStart diff --git a/Shared/Coordinators/ItemCoordinator.swift b/Shared/Coordinators/ItemCoordinator.swift index d8f4588f..5e578efb 100644 --- a/Shared/Coordinators/ItemCoordinator.swift +++ b/Shared/Coordinators/ItemCoordinator.swift @@ -13,6 +13,7 @@ import Stinsen import SwiftUI final class ItemCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \ItemCoordinator.start) @Root var start = makeStart diff --git a/Shared/Coordinators/LibraryCoordinator.swift b/Shared/Coordinators/LibraryCoordinator.swift index 47f45978..c90234c5 100644 --- a/Shared/Coordinators/LibraryCoordinator.swift +++ b/Shared/Coordinators/LibraryCoordinator.swift @@ -15,6 +15,7 @@ import SwiftUI typealias LibraryCoordinatorParams = (viewModel: LibraryViewModel, title: String) final class LibraryCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \LibraryCoordinator.start) @Root var start = makeStart @@ -22,8 +23,8 @@ final class LibraryCoordinator: NavigationCoordinatable { @Route(.modal) var filter = makeFilter @Route(.push) var item = makeItem - var viewModel: LibraryViewModel - var title: String + let viewModel: LibraryViewModel + let title: String init(viewModel: LibraryViewModel, title: String) { self.viewModel = viewModel diff --git a/Shared/Coordinators/LibraryListCoordinator.swift b/Shared/Coordinators/LibraryListCoordinator.swift index 2ff63ad5..88377644 100644 --- a/Shared/Coordinators/LibraryListCoordinator.swift +++ b/Shared/Coordinators/LibraryListCoordinator.swift @@ -12,6 +12,7 @@ import Stinsen import SwiftUI final class LibraryListCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \LibraryListCoordinator.start) @Root var start = makeStart diff --git a/Shared/Coordinators/SearchCoordinator.swift b/Shared/Coordinators/SearchCoordinator.swift index 60c761d2..9d66e6b4 100644 --- a/Shared/Coordinators/SearchCoordinator.swift +++ b/Shared/Coordinators/SearchCoordinator.swift @@ -13,12 +13,13 @@ import SwiftUI import JellyfinAPI final class SearchCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \SearchCoordinator.start) @Root var start = makeStart @Route(.push) var item = makeItem - var viewModel: LibrarySearchViewModel + let viewModel: LibrarySearchViewModel init(viewModel: LibrarySearchViewModel) { self.viewModel = viewModel diff --git a/Shared/Coordinators/ServerListCoordinator.swift b/Shared/Coordinators/ServerListCoordinator.swift index c4d75acf..d60abebd 100644 --- a/Shared/Coordinators/ServerListCoordinator.swift +++ b/Shared/Coordinators/ServerListCoordinator.swift @@ -12,11 +12,13 @@ import Stinsen import SwiftUI final class ServerListCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \ServerListCoordinator.start) @Root var start = makeStart @Route(.push) var connectToServer = makeConnectToServer @Route(.push) var userList = makeUserList + @Route(.modal) var basicAppSettings = makeBasicAppSettings func makeConnectToServer() -> ConnectToServerCoodinator { ConnectToServerCoodinator() @@ -26,6 +28,10 @@ final class ServerListCoordinator: NavigationCoordinatable { UserListCoordinator(viewModel: .init(server: server)) } + func makeBasicAppSettings() -> NavigationViewCoordinator { + NavigationViewCoordinator(BasicAppSettingsCoordinator()) + } + @ViewBuilder func makeStart() -> some View { ServerListView(viewModel: ServerListViewModel()) } diff --git a/Shared/Coordinators/SettingsCoordinator.swift b/Shared/Coordinators/SettingsCoordinator.swift index cbf6b1e0..0b8f8a23 100644 --- a/Shared/Coordinators/SettingsCoordinator.swift +++ b/Shared/Coordinators/SettingsCoordinator.swift @@ -12,6 +12,7 @@ import Stinsen import SwiftUI final class SettingsCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \SettingsCoordinator.start) @Root var start = makeStart diff --git a/Shared/Coordinators/UserListCoordinator.swift b/Shared/Coordinators/UserListCoordinator.swift index 5409f4af..ff728bb6 100644 --- a/Shared/Coordinators/UserListCoordinator.swift +++ b/Shared/Coordinators/UserListCoordinator.swift @@ -12,6 +12,7 @@ import Stinsen import SwiftUI final class UserListCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \UserListCoordinator.start) @Root var start = makeStart diff --git a/Shared/Coordinators/UserSignInCoordinator.swift b/Shared/Coordinators/UserSignInCoordinator.swift index 83cf6cd7..f4e03a87 100644 --- a/Shared/Coordinators/UserSignInCoordinator.swift +++ b/Shared/Coordinators/UserSignInCoordinator.swift @@ -12,6 +12,7 @@ import Stinsen import SwiftUI final class UserSignInCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \UserSignInCoordinator.start) @Root var start = makeStart diff --git a/Shared/Coordinators/VideoPlayerCoordinator.swift b/Shared/Coordinators/VideoPlayerCoordinator.swift index ebe38123..921d52f9 100644 --- a/Shared/Coordinators/VideoPlayerCoordinator.swift +++ b/Shared/Coordinators/VideoPlayerCoordinator.swift @@ -13,10 +13,12 @@ import Stinsen import SwiftUI final class VideoPlayerCoordinator: NavigationCoordinatable { + let stack = NavigationStack(initial: \VideoPlayerCoordinator.start) @Root var start = makeStart - var item: BaseItemDto + + let item: BaseItemDto init(item: BaseItemDto) { self.item = item diff --git a/Shared/Objects/AppAppearance.swift b/Shared/Objects/AppAppearance.swift new file mode 100644 index 00000000..a3bc58a5 --- /dev/null +++ b/Shared/Objects/AppAppearance.swift @@ -0,0 +1,32 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Defaults +import SwiftUI + +enum AppAppearance: String, CaseIterable, Defaults.Serializable { + case system + case dark + case light + + var localizedName: String { + return NSLocalizedString(self.rawValue.capitalized, comment: "") + } + + var style: UIUserInterfaceStyle { + switch self { + case .system: + return .unspecified + case .dark: + return .dark + case .light: + return .light + } + } +} diff --git a/Shared/Objects/Bitrates.swift b/Shared/Objects/Bitrates.swift new file mode 100644 index 00000000..6a07989f --- /dev/null +++ b/Shared/Objects/Bitrates.swift @@ -0,0 +1,15 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation + +struct Bitrates: Codable, Hashable { + public var name: String + public var value: Int +} diff --git a/Shared/Objects/TrackLanguage.swift b/Shared/Objects/TrackLanguage.swift new file mode 100644 index 00000000..03833245 --- /dev/null +++ b/Shared/Objects/TrackLanguage.swift @@ -0,0 +1,17 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation + +struct TrackLanguage: Hashable { + var name: String + var isoCode: String + + static let auto = TrackLanguage(name: "Auto", isoCode: "Auto") +} diff --git a/Shared/ViewModels/BasicAppSettingsViewModel.swift b/Shared/ViewModels/BasicAppSettingsViewModel.swift new file mode 100644 index 00000000..8da35595 --- /dev/null +++ b/Shared/ViewModels/BasicAppSettingsViewModel.swift @@ -0,0 +1,16 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI + +final class BasicAppSettingsViewModel: ViewModel { + + let appearances = AppAppearance.allCases + +} diff --git a/Shared/ViewModels/SettingsViewModel.swift b/Shared/ViewModels/SettingsViewModel.swift index 86f6a56a..5cedb82f 100644 --- a/Shared/ViewModels/SettingsViewModel.swift +++ b/Shared/ViewModels/SettingsViewModel.swift @@ -11,48 +11,6 @@ import Foundation import SwiftUI import Defaults -struct UserSettings: Decodable { - var LocalMaxBitrate: Int - var RemoteMaxBitrate: Int - var AutoSelectSubtitles: Bool - var AutoSelectSubtitlesLangcode: String - var SubtitlePositionOffset: Int - var SubtitleFontName: String -} - -struct Bitrates: Codable, Hashable { - public var name: String - public var value: Int -} - -struct TrackLanguage: Hashable { - var name: String - var isoCode: String - - static let auto = TrackLanguage(name: "Auto", isoCode: "Auto") -} - -enum AppAppearance: String, CaseIterable, Defaults.Serializable { - case system - case dark - case light - - var localizedName: String { - return NSLocalizedString(self.rawValue.capitalized, comment: "") - } - - var style: UIUserInterfaceStyle { - switch self { - case .system: - return .unspecified - case .dark: - return .dark - case .light: - return .light - } - } -} - final class SettingsViewModel: ObservableObject { let currentLocale = Locale.current var bitrates: [Bitrates] = [] diff --git a/WidgetExtension/WidgetExtension.entitlements b/WidgetExtension/WidgetExtension.entitlements index b164e1cb..2eb7e333 100644 --- a/WidgetExtension/WidgetExtension.entitlements +++ b/WidgetExtension/WidgetExtension.entitlements @@ -3,12 +3,6 @@ com.apple.security.application-groups - - group.me.vigue.jellyfin.mobileclient - - keychain-access-groups - - $(AppIdentifierPrefix)me.vigue.jellyfin.sharedKeychain - + From dfc8aedf78b74f5f0cb4973a67867b044c8832c9 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 10:24:04 -0600 Subject: [PATCH 33/88] Create Reset button and organize --- JellyfinPlayer/Views/BasicAppSettingsView.swift | 16 +++++++++++++++- .../MainCoordinator/iOSMainCoordinator.swift | 5 ++--- Shared/Singleton/SessionManager.swift | 12 ++++++++++++ .../Singleton/SwiftfinNotificationCenter.swift | 1 + .../ViewModels/BasicAppSettingsViewModel.swift | 3 +++ Shared/ViewModels/ServerListViewModel.swift | 10 ++++++++++ Shared/ViewModels/UserListViewModel.swift | 1 - Shared/ViewModels/UserSignInViewModel.swift | 4 ++-- 8 files changed, 45 insertions(+), 7 deletions(-) diff --git a/JellyfinPlayer/Views/BasicAppSettingsView.swift b/JellyfinPlayer/Views/BasicAppSettingsView.swift index db04156b..286f2163 100644 --- a/JellyfinPlayer/Views/BasicAppSettingsView.swift +++ b/JellyfinPlayer/Views/BasicAppSettingsView.swift @@ -15,6 +15,7 @@ struct BasicAppSettingsView: View { @EnvironmentObject var basicAppSettingsRouter: BasicAppSettingsCoordinator.Router @ObservedObject var viewModel: BasicAppSettingsViewModel + @State var resetTapped: Bool = false @Default(.appAppearance) var appAppearance @@ -31,8 +32,21 @@ struct BasicAppSettingsView: View { } header: { Text("Accessibility") } - + + Button { + resetTapped = true + } label: { + Text("Reset") + } } + .alert("Reset", isPresented: $resetTapped, actions: { + Button(role: .destructive) { + viewModel.reset() + basicAppSettingsRouter.dismissCoordinator() + } label: { + Text("Reset") + } + }) .navigationBarTitle("Settings", displayMode: .inline) .toolbar { ToolbarItemGroup(placement: .navigationBarLeading) { diff --git a/Shared/Coordinators/MainCoordinator/iOSMainCoordinator.swift b/Shared/Coordinators/MainCoordinator/iOSMainCoordinator.swift index 28ca344a..9c82fd44 100644 --- a/Shared/Coordinators/MainCoordinator/iOSMainCoordinator.swift +++ b/Shared/Coordinators/MainCoordinator/iOSMainCoordinator.swift @@ -47,12 +47,12 @@ final class MainCoordinator: NavigationCoordinatable { } @objc func didLogIn() { - LogManager.shared.log.info("Received `didSignIn` from NSNotificationCenter.") + LogManager.shared.log.info("Received `didSignIn` from SwiftfinNotificationCenter.") root(\.mainTab) } @objc func didLogOut() { - LogManager.shared.log.info("Received `didSignOut` from NSNotificationCenter.") + LogManager.shared.log.info("Received `didSignOut` from SwiftfinNotificationCenter.") root(\.serverList) } @@ -68,7 +68,6 @@ final class MainCoordinator: NavigationCoordinatable { } } } - func makeMainTab() -> MainTabCoordinator { MainTabCoordinator() } diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index 95039408..d448014a 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -154,6 +154,7 @@ final class SessionManager { SwiftfinStore.Defaults.suite[.lastServerUserID] = user.id currentLogin = (server: currentServer.state, user: currentUser.state) + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) }) .map({ (_, user, _) in return user.state @@ -166,6 +167,7 @@ final class SessionManager { SwiftfinStore.Defaults.suite[.lastServerUserID] = user.id setAuthHeader(with: user.accessToken) currentLogin = (server: server, user: user) + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) } func logout() { @@ -176,6 +178,16 @@ final class SessionManager { SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) } + func purge() { + let servers = fetchServers() + + for server in servers { + delete(server: server) + } + + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didPurge, object: nil) + } + func delete(user: SwiftfinStore.State.User) { guard let storedUser = try? SwiftfinStore.dataStack.fetchOne(From(), [Where("id == %@", user.id)]) else { fatalError("No stored user for state user?")} diff --git a/Shared/Singleton/SwiftfinNotificationCenter.swift b/Shared/Singleton/SwiftfinNotificationCenter.swift index 6717d878..c20973a2 100644 --- a/Shared/Singleton/SwiftfinNotificationCenter.swift +++ b/Shared/Singleton/SwiftfinNotificationCenter.swift @@ -19,5 +19,6 @@ enum SwiftfinNotificationCenter { static let didSignIn = Notification.Name("didSignIn") static let didSignOut = Notification.Name("didSignOut") static let processDeepLink = Notification.Name("processDeepLink") + static let didPurge = Notification.Name("didPurge") } } diff --git a/Shared/ViewModels/BasicAppSettingsViewModel.swift b/Shared/ViewModels/BasicAppSettingsViewModel.swift index 8da35595..ca3d477e 100644 --- a/Shared/ViewModels/BasicAppSettingsViewModel.swift +++ b/Shared/ViewModels/BasicAppSettingsViewModel.swift @@ -13,4 +13,7 @@ final class BasicAppSettingsViewModel: ViewModel { let appearances = AppAppearance.allCases + func reset() { + SessionManager.main.purge() + } } diff --git a/Shared/ViewModels/ServerListViewModel.swift b/Shared/ViewModels/ServerListViewModel.swift index ce79b8c4..7e8466ee 100644 --- a/Shared/ViewModels/ServerListViewModel.swift +++ b/Shared/ViewModels/ServerListViewModel.swift @@ -14,6 +14,12 @@ class ServerListViewModel: ObservableObject { @Published var servers: [SwiftfinStore.State.Server] = [] + init() { + // Workaround since Stinsen doesn't allow rebuilding the root even if it's the same active root + let nc = SwiftfinNotificationCenter.main + nc.addObserver(self, selector: #selector(didPurge), name: SwiftfinNotificationCenter.Keys.didPurge, object: nil) + } + func fetchServers() { self.servers = SessionManager.main.fetchServers() } @@ -30,4 +36,8 @@ class ServerListViewModel: ObservableObject { SessionManager.main.delete(server: server) fetchServers() } + + @objc private func didPurge() { + fetchServers() + } } diff --git a/Shared/ViewModels/UserListViewModel.swift b/Shared/ViewModels/UserListViewModel.swift index f6fa38d0..630c64a5 100644 --- a/Shared/ViewModels/UserListViewModel.swift +++ b/Shared/ViewModels/UserListViewModel.swift @@ -27,7 +27,6 @@ class UserListViewModel: ViewModel { func login(user: SwiftfinStore.State.User) { self.isLoading = true SessionManager.main.loginUser(server: server, user: user) - SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) } func remove(user: SwiftfinStore.State.User) { diff --git a/Shared/ViewModels/UserSignInViewModel.swift b/Shared/ViewModels/UserSignInViewModel.swift index 5310a267..470f4ecc 100644 --- a/Shared/ViewModels/UserSignInViewModel.swift +++ b/Shared/ViewModels/UserSignInViewModel.swift @@ -38,8 +38,8 @@ final class UserSignInViewModel: ViewModel { .sink { completion in self.handleAPIRequestError(displayMessage: "Unable to connect to server.", logLevel: .critical, tag: "login", completion: completion) - } receiveValue: { user in - SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignIn, object: nil) + } receiveValue: { _ in + } .store(in: &cancellables) } From f3a6cee8ca2df438a2aea30173324a18f70b8ba7 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 11:31:36 -0600 Subject: [PATCH 34/88] Allow researching for local servers and cancelling requests --- .../Views/ConnectToServerView.swift | 85 +++++++++++++------ JellyfinPlayer/Views/UserSignInView.swift | 24 +++--- .../ViewModels/ConnectToServerViewModel.swift | 6 ++ Shared/ViewModels/UserSignInViewModel.swift | 6 ++ 4 files changed, 82 insertions(+), 39 deletions(-) diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index af47c549..1e262c44 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -21,46 +21,73 @@ struct ConnectToServerView: View { .disableAutocorrection(true) .autocapitalization(.none) .keyboardType(.URL) - Button { - viewModel.connectToServer(uri: uri) - } label: { - HStack { - Text("Connect") - Spacer() - if viewModel.isLoading { - ProgressView() - } + + if viewModel.isLoading { + Button(role: .destructive) { + viewModel.cancelConnection() + } label: { + Text("Cancel") } + } else { + Button { + viewModel.connectToServer(uri: uri) + } label: { + Text("Connect") + } + .disabled(uri.isEmpty) } - .disabled(viewModel.isLoading || uri.isEmpty) } header: { Text("Connect to a Jellyfin server") } - Section(header: Text("Local Servers")) { + Section { if viewModel.searching { - ProgressView() - } - ForEach(viewModel.discoveredServers.sorted(by: { $0.name < $1.name }), id: \.id) { discoveredServer in - Button(action: { - viewModel.connectToServer(uri: discoveredServer.url.absoluteString) - }, label: { - HStack { - Text(discoveredServer.name) - .font(.headline) - Text("• \(discoveredServer.host)") - .font(.subheadline) + HStack(alignment: .center, spacing: 5) { + Spacer() + ProgressView() + Text("Searching") + .foregroundColor(.secondary) + Spacer() + } + } else { + if viewModel.discoveredServers.isEmpty { + HStack(alignment: .center) { + Spacer() + Text("No local servers found") + .font(.callout) .foregroundColor(.secondary) Spacer() - if viewModel.isLoading { - ProgressView() - } } - - }) + } else { + ForEach(viewModel.discoveredServers.sorted(by: { $0.name < $1.name }), id: \.id) { discoveredServer in + Button { + viewModel.connectToServer(uri: discoveredServer.url.absoluteString) + } label: { + VStack(alignment: .leading, spacing: 5) { + Text(discoveredServer.name) + .font(.title3) + Text(discoveredServer.host) + .font(.subheadline) + .foregroundColor(.secondary) + } + } + .disabled(viewModel.isLoading) + } + } + } + } header: { + HStack { + Text("Local Servers") + Spacer() + + Button { + viewModel.discoverServers() + } label: { + Image(systemName: "arrow.clockwise.circle.fill") + } + .disabled(viewModel.searching || viewModel.isLoading) } } - .onAppear(perform: self.viewModel.discoverServers) .headerProminence(.increased) } .alert(item: $viewModel.errorMessage) { _ in @@ -70,7 +97,9 @@ struct ConnectToServerView: View { } .navigationTitle("Connect") .onAppear { + viewModel.discoverServers() AppURLHandler.shared.appURLState = .allowedInLogin } + .navigationBarBackButtonHidden(viewModel.isLoading) } } diff --git a/JellyfinPlayer/Views/UserSignInView.swift b/JellyfinPlayer/Views/UserSignInView.swift index 81110c28..f4f91fd9 100644 --- a/JellyfinPlayer/Views/UserSignInView.swift +++ b/JellyfinPlayer/Views/UserSignInView.swift @@ -28,19 +28,20 @@ struct UserSignInView: View { .disableAutocorrection(true) .autocapitalization(.none) - Button { - viewModel.login(username: username, password: password) - } label: { - HStack { - Text("Connect") - Spacer() - if viewModel.isLoading { - ProgressView() - } + if viewModel.isLoading { + Button(role: .destructive) { + viewModel.cancelSignIn() + } label: { + Text("Cancel") } + } else { + Button { + viewModel.login(username: username, password: password) + } label: { + Text("Connect") + } + .disabled(username.isEmpty) } - .disabled(viewModel.isLoading || username.isEmpty) - } header: { Text("Sign In to \(viewModel.server.name)") } @@ -51,5 +52,6 @@ struct UserSignInView: View { dismissButton: .cancel()) } .navigationTitle("Sign In") + .navigationBarBackButtonHidden(viewModel.isLoading) } } diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index e2c08c8b..2ea3b086 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -64,4 +64,10 @@ final class ConnectToServerViewModel: ViewModel { searching = false } } + + func cancelConnection() { + for cancellable in cancellables { + cancellable.cancel() + } + } } diff --git a/Shared/ViewModels/UserSignInViewModel.swift b/Shared/ViewModels/UserSignInViewModel.swift index 470f4ecc..01fc1428 100644 --- a/Shared/ViewModels/UserSignInViewModel.swift +++ b/Shared/ViewModels/UserSignInViewModel.swift @@ -43,4 +43,10 @@ final class UserSignInViewModel: ViewModel { } .store(in: &cancellables) } + + func cancelSignIn() { + for cancellable in cancellables { + cancellable.cancel() + } + } } From 30bf12bea2532c7a77309ae4655ec85e7a4518bb Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 13:25:37 -0600 Subject: [PATCH 35/88] Implement BasicAppSettingsView, purge, and fix iOS discovering servers --- .../Views/BasicAppSettingsView.swift | 52 +++++++++++++++++++ .../Views/ServerListView.swift | 11 +++- JellyfinPlayer.xcodeproj/project.pbxproj | 14 ++--- .../Views/ConnectToServerView.swift | 7 ++- Shared/Extensions/DefaultsExtension.swift | 22 -------- Shared/Singleton/SessionManager.swift | 6 ++- Shared/SwiftfinStore/SwiftfinStore.swift | 1 + .../SwiftfinStore/SwiftfinStoreDefaults.swift | 9 ++++ .../ViewModels/ConnectToServerViewModel.swift | 4 +- 9 files changed, 91 insertions(+), 35 deletions(-) create mode 100644 JellyfinPlayer tvOS/Views/BasicAppSettingsView.swift delete mode 100644 Shared/Extensions/DefaultsExtension.swift diff --git a/JellyfinPlayer tvOS/Views/BasicAppSettingsView.swift b/JellyfinPlayer tvOS/Views/BasicAppSettingsView.swift new file mode 100644 index 00000000..2ff8fe9b --- /dev/null +++ b/JellyfinPlayer tvOS/Views/BasicAppSettingsView.swift @@ -0,0 +1,52 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Defaults +import Stinsen +import SwiftUI + +struct BasicAppSettingsView: View { + + @EnvironmentObject var basicAppSettingsRouter: BasicAppSettingsCoordinator.Router + @ObservedObject var viewModel: BasicAppSettingsViewModel + @State var resetTapped: Bool = false + + @Default(.appAppearance) var appAppearance + + var body: some View { + Form { + Section { + Picker(NSLocalizedString("Appearance", comment: ""), selection: $appAppearance) { + ForEach(self.viewModel.appearances, id: \.self) { appearance in + Text(appearance.localizedName).tag(appearance.rawValue) + } + }.onChange(of: appAppearance, perform: { _ in + UIApplication.shared.windows.first?.overrideUserInterfaceStyle = appAppearance.style + }) + } header: { + Text("Accessibility") + } + + Button { + resetTapped = true + } label: { + Text("Reset") + } + } + .alert("Reset", isPresented: $resetTapped, actions: { + Button(role: .destructive) { + viewModel.reset() + basicAppSettingsRouter.dismissCoordinator() + } label: { + Text("Reset") + } + }) + .navigationTitle("Settings") + } +} diff --git a/JellyfinPlayer tvOS/Views/ServerListView.swift b/JellyfinPlayer tvOS/Views/ServerListView.swift index c1a5fd05..518750b5 100644 --- a/JellyfinPlayer tvOS/Views/ServerListView.swift +++ b/JellyfinPlayer tvOS/Views/ServerListView.swift @@ -91,7 +91,7 @@ struct ServerListView: View { } @ViewBuilder - private var toolbarContent: some View { + private var trailingToolbarContent: some View { if viewModel.servers.isEmpty { EmptyView() } else { @@ -100,6 +100,13 @@ struct ServerListView: View { } label: { Image(systemName: "plus.circle.fill") } + .contextMenu { + Button { + serverListRouter.route(to: \.basicAppSettings) + } label: { + Text("Settings") + } + } } } @@ -108,7 +115,7 @@ struct ServerListView: View { .navigationTitle("Servers") .toolbar { ToolbarItemGroup(placement: .navigationBarTrailing) { - toolbarContent + trailingToolbarContent } } .onAppear { diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 798012e5..2815b38a 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -206,8 +206,6 @@ 62C29EA326D1030F00C1D2E7 /* ConnectToServerCoodinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */; }; 62C29EA626D1036A00C1D2E7 /* HomeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */; }; 62C29EA826D103D500C1D2E7 /* LibraryListCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */; }; - 62CB3F4B2685BB77003D0A6F /* DefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */; }; - 62CB3F4C2685BB77003D0A6F /* DefaultsExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */; }; 62E632DA267D2BC40063E547 /* LatestMediaViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632D9267D2BC40063E547 /* LatestMediaViewModel.swift */; }; 62E632DC267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632DB267D2E130063E547 /* LibrarySearchViewModel.swift */; }; 62E632DD267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62E632DB267D2E130063E547 /* LibrarySearchViewModel.swift */; }; @@ -329,6 +327,9 @@ E1D4BF882719D27100A11E64 /* Bitrates.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF862719D27100A11E64 /* Bitrates.swift */; }; E1D4BF8A2719D3D000A11E64 /* BasicAppSettingsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF892719D3D000A11E64 /* BasicAppSettingsCoordinator.swift */; }; E1D4BF8B2719D3D000A11E64 /* BasicAppSettingsCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF892719D3D000A11E64 /* BasicAppSettingsCoordinator.swift */; }; + E1D4BF8C2719F39F00A11E64 /* AppAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF802719D22800A11E64 /* AppAppearance.swift */; }; + E1D4BF8D2719F3A300A11E64 /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; + E1D4BF8F271A079A00A11E64 /* BasicAppSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF8E271A079A00A11E64 /* BasicAppSettingsView.swift */; }; E1F0204E26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1F0204F26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1FCD08826C35A0D007C8DCF /* NetworkError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FCD08726C35A0D007C8DCF /* NetworkError.swift */; }; @@ -515,7 +516,6 @@ 62C29EA226D1030F00C1D2E7 /* ConnectToServerCoodinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectToServerCoodinator.swift; sourceTree = ""; }; 62C29EA526D1036A00C1D2E7 /* HomeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeCoordinator.swift; sourceTree = ""; }; 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryListCoordinator.swift; sourceTree = ""; }; - 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DefaultsExtension.swift; sourceTree = ""; }; 62E632D9267D2BC40063E547 /* LatestMediaViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LatestMediaViewModel.swift; sourceTree = ""; }; 62E632DB267D2E130063E547 /* LibrarySearchViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibrarySearchViewModel.swift; sourceTree = ""; }; 62E632DF267D30CA0063E547 /* LibraryViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryViewModel.swift; sourceTree = ""; }; @@ -582,6 +582,7 @@ E1D4BF832719D25A00A11E64 /* TrackLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackLanguage.swift; sourceTree = ""; }; E1D4BF862719D27100A11E64 /* Bitrates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bitrates.swift; sourceTree = ""; }; E1D4BF892719D3D000A11E64 /* BasicAppSettingsCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicAppSettingsCoordinator.swift; sourceTree = ""; }; + E1D4BF8E271A079A00A11E64 /* BasicAppSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicAppSettingsView.swift; sourceTree = ""; }; E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayerJumpLength.swift; sourceTree = ""; }; E1FCD08726C35A0D007C8DCF /* NetworkError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkError.swift; sourceTree = ""; }; E1FCD09526C47118007C8DCF /* ErrorMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorMessage.swift; sourceTree = ""; }; @@ -1026,7 +1027,6 @@ 5389277B263CC3DB0035E14B /* BlurHashDecode.swift */, 6267B3D526710B8900A7371D /* CollectionExtensions.swift */, E173DA5126D04AAF00CC4EB7 /* ColorExtension.swift */, - 62CB3F4A2685BB77003D0A6F /* DefaultsExtension.swift */, 6267B3D92671138200A7371D /* ImageExtensions.swift */, E1AD105226D96D5F003E4A08 /* JellyfinAPIExtensions */, 621338922660107500A81A2A /* StringExtensions.swift */, @@ -1119,6 +1119,7 @@ isa = PBXGroup; children = ( 53ABFDEA2679753200886593 /* ConnectToServerView.swift */, + E1D4BF8E271A079A00A11E64 /* BasicAppSettingsView.swift */, 531690EB267ABF46005D8AB9 /* ContinueWatchingView.swift */, 531690E6267ABD79005D8AB9 /* HomeView.swift */, E193D54E271942C000900D82 /* ItemView */, @@ -1714,7 +1715,6 @@ 53ABFDE7267974EF00886593 /* ConnectToServerViewModel.swift in Sources */, 5398514626B64DBB00101B49 /* SearchablePickerView.swift in Sources */, 53ABFDEE26799DCD00886593 /* ImageView.swift in Sources */, - 62CB3F4C2685BB77003D0A6F /* DefaultsExtension.swift in Sources */, 62E632E4267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, 53649AB2269D019100A2D8B7 /* LogManager.swift in Sources */, E13DD3D6271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, @@ -1741,6 +1741,7 @@ E193D53B27193F9200900D82 /* SettingsCoordinator.swift in Sources */, 536D3D74267BA8170004248C /* BackgroundManager.swift in Sources */, 535870632669D21600D05A09 /* JellyfinPlayer_tvOSApp.swift in Sources */, + E1D4BF8F271A079A00A11E64 /* BasicAppSettingsView.swift in Sources */, E193D547271941C500900D82 /* UserListView.swift in Sources */, E1D4BF7F2719D1DD00A11E64 /* BasicAppSettingsViewModel.swift in Sources */, E193D53227193F7B00900D82 /* ConnectToServerCoodinator.swift in Sources */, @@ -1783,7 +1784,6 @@ E13DD3EC27178A54009D4DAF /* UserSignInViewModel.swift in Sources */, 625CB5772678C34300530A6E /* ConnectToServerViewModel.swift in Sources */, 536D3D78267BD5C30004248C /* ViewModel.swift in Sources */, - 62CB3F4B2685BB77003D0A6F /* DefaultsExtension.swift in Sources */, E1FCD08826C35A0D007C8DCF /* NetworkError.swift in Sources */, E13DD3E527177D15009D4DAF /* ServerListView.swift in Sources */, E18845F826DEA9C900B0C5B7 /* ItemViewBody.swift in Sources */, @@ -1891,6 +1891,7 @@ E1FCD09A26C4F35A007C8DCF /* ErrorMessage.swift in Sources */, 628B95272670CABD0091AF3B /* NextUpWidget.swift in Sources */, E13DD3F72717E87D009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, + E1D4BF8D2719F3A300A11E64 /* VideoPlayerJumpLength.swift in Sources */, 6220D0AF26D5EABE00B8E046 /* ViewExtensions.swift in Sources */, E13DD3D7271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, E1FCD09926C4F358007C8DCF /* NetworkError.swift in Sources */, @@ -1898,6 +1899,7 @@ E13DD3CA27164B80009D4DAF /* SwiftfinStore.swift in Sources */, 62EC353226766849000E9F2D /* SessionManager.swift in Sources */, 536D3D79267BD5D00004248C /* ViewModel.swift in Sources */, + E1D4BF8C2719F39F00A11E64 /* AppAppearance.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index 1e262c44..eb546920 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -44,8 +44,10 @@ struct ConnectToServerView: View { if viewModel.searching { HStack(alignment: .center, spacing: 5) { Spacer() - ProgressView() - Text("Searching") + // Oct. 15, 2021 + // There is a bug where ProgressView() won't appear sometimes when searching, + // dots were used instead but ProgressView() is preferred + Text("Searching...") .foregroundColor(.secondary) Spacer() } @@ -61,6 +63,7 @@ struct ConnectToServerView: View { } else { ForEach(viewModel.discoveredServers.sorted(by: { $0.name < $1.name }), id: \.id) { discoveredServer in Button { + uri = discoveredServer.url.absoluteString viewModel.connectToServer(uri: discoveredServer.url.absoluteString) } label: { VStack(alignment: .leading, spacing: 5) { diff --git a/Shared/Extensions/DefaultsExtension.swift b/Shared/Extensions/DefaultsExtension.swift deleted file mode 100644 index 30cb48c9..00000000 --- a/Shared/Extensions/DefaultsExtension.swift +++ /dev/null @@ -1,22 +0,0 @@ -// - /* - * SwiftFin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import Foundation -import Defaults - -extension Defaults.Keys { - static let inNetworkBandwidth = Key("InNetworkBandwidth", default: 40_000_000) - static let outOfNetworkBandwidth = Key("OutOfNetworkBandwidth", default: 40_000_000) - static let isAutoSelectSubtitles = Key("isAutoSelectSubtitles", default: false) - static let autoSelectSubtitlesLangCode = Key("AutoSelectSubtitlesLangCode", default: "Auto") - static let autoSelectAudioLangCode = Key("AutoSelectAudioLangCode", default: "Auto") - static let appAppearance = Key("appAppearance", default: .system) - static let videoPlayerJumpForward = Key("videoPlayerJumpForward", default: .thirty) - static let videoPlayerJumpBackward = Key("videoPlayerJumpBackward", default: .thirty) -} diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index d448014a..d803e8ac 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -179,12 +179,16 @@ final class SessionManager { } func purge() { + // Delete all servers let servers = fetchServers() for server in servers { delete(server: server) } + // Delete UserDefaults + SwiftfinStore.Defaults.suite.removeAll() + SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didPurge, object: nil) } @@ -224,7 +228,7 @@ final class SessionManager { let appVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String var deviceName = UIDevice.current.name deviceName = deviceName.folding(options: .diacriticInsensitive, locale: .current) - deviceName = String(deviceName.unicodeScalars.filter {CharacterSet.urlQueryAllowed.contains($0) }) + deviceName = String(deviceName.unicodeScalars.filter { CharacterSet.urlQueryAllowed.contains($0) }) let platform: String #if os(tvOS) diff --git a/Shared/SwiftfinStore/SwiftfinStore.swift b/Shared/SwiftfinStore/SwiftfinStore.swift index 66967aac..676c01c3 100644 --- a/Shared/SwiftfinStore/SwiftfinStore.swift +++ b/Shared/SwiftfinStore/SwiftfinStore.swift @@ -156,6 +156,7 @@ enum SwiftfinStore { }() } +// MARK: LocalizedError extension SwiftfinStore.Errors: LocalizedError { var title: String { diff --git a/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift b/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift index 3907fdf2..53ce5f84 100644 --- a/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift +++ b/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift @@ -22,4 +22,13 @@ extension SwiftfinStore { extension Defaults.Keys { static let lastServerUserID = Defaults.Key("lastServerUserID", suite: SwiftfinStore.Defaults.suite) + + static let inNetworkBandwidth = Key("InNetworkBandwidth", default: 40_000_000, suite: SwiftfinStore.Defaults.suite) + static let outOfNetworkBandwidth = Key("OutOfNetworkBandwidth", default: 40_000_000, suite: SwiftfinStore.Defaults.suite) + static let isAutoSelectSubtitles = Key("isAutoSelectSubtitles", default: false, suite: SwiftfinStore.Defaults.suite) + static let autoSelectSubtitlesLangCode = Key("AutoSelectSubtitlesLangCode", default: "Auto", suite: SwiftfinStore.Defaults.suite) + static let autoSelectAudioLangCode = Key("AutoSelectAudioLangCode", default: "Auto", suite: SwiftfinStore.Defaults.suite) + static let appAppearance = Key("appAppearance", default: .system, suite: SwiftfinStore.Defaults.suite) + static let videoPlayerJumpForward = Key("videoPlayerJumpForward", default: .thirty, suite: SwiftfinStore.Defaults.suite) + static let videoPlayerJumpBackward = Key("videoPlayerJumpBackward", default: .thirty, suite: SwiftfinStore.Defaults.suite) } diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index 2ea3b086..ac03ec61 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -50,10 +50,11 @@ final class ConnectToServerViewModel: ViewModel { } func discoverServers() { + discoveredServers.removeAll() searching = true // Timeout after 5 seconds - DispatchQueue.main.asyncAfter(deadline: .now() + 5) { + DispatchQueue.main.asyncAfter(deadline: .now() + 3) { self.searching = false } @@ -61,7 +62,6 @@ final class ConnectToServerViewModel: ViewModel { if let server = server { discoveredServers.insert(server) } - searching = false } } From 2aeb429c8e0f544a4e1f15628c8ed97a290c67c1 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 13:37:16 -0600 Subject: [PATCH 36/88] Lock SwiftfinStore datastack --- Shared/SwiftfinStore/SwiftfinStore.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Shared/SwiftfinStore/SwiftfinStore.swift b/Shared/SwiftfinStore/SwiftfinStore.swift index 676c01c3..1711e9cb 100644 --- a/Shared/SwiftfinStore/SwiftfinStore.swift +++ b/Shared/SwiftfinStore/SwiftfinStore.swift @@ -143,7 +143,11 @@ enum SwiftfinStore { Entity("User"), Entity("AccessToken") ], - versionLock: nil) // TODO: todo + versionLock: [ + "AccessToken": [0xa8c475e874494bb1, 0x79486e93449f0b3d, 0xa7dc4a0003541edb, 0x94183fae7580ef72], + "Server": [0x39c64a826739077e, 0xa7ac63744fd7df32, 0xef3c9d4fe638fbfb, 0xdabd796256df14db], + "User": [0x845de08a74bc53ed, 0xe95a406a29f3a5d0, 0x9eda732821a15ea9, 0xb5afa531e41ce8a] + ]) let _dataStack = DataStack(schema) try! _dataStack.addStorageAndWait( From 350bc0ee6b399b5d2eca860d9dcc67d018c670c1 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 13:39:40 -0600 Subject: [PATCH 37/88] Add Stinsen purge note --- Shared/ViewModels/ServerListViewModel.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Shared/ViewModels/ServerListViewModel.swift b/Shared/ViewModels/ServerListViewModel.swift index 7e8466ee..e0f6402e 100644 --- a/Shared/ViewModels/ServerListViewModel.swift +++ b/Shared/ViewModels/ServerListViewModel.swift @@ -15,7 +15,11 @@ class ServerListViewModel: ObservableObject { @Published var servers: [SwiftfinStore.State.Server] = [] init() { - // Workaround since Stinsen doesn't allow rebuilding the root even if it's the same active root + + // Oct. 15, 2021 + // This is a workaround since Stinsen doesn't have the ability to rebuild a root at the time of writing. + // Feature request issue: https://github.com/rundfunk47/stinsen/issues/33 + // Go to each MainCoordinator and implement the rebuild of the root when receiving the notification let nc = SwiftfinNotificationCenter.main nc.addObserver(self, selector: #selector(didPurge), name: SwiftfinNotificationCenter.Keys.didPurge, object: nil) } From fdeb74a0bdbc633092829b7def664df8198e6311 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 13:41:10 -0600 Subject: [PATCH 38/88] Neutralize all entitlements --- .../JellyfinPlayer tvOS.entitlements | 15 ----------- JellyfinPlayer.xcodeproj/project.pbxproj | 26 +++++++++---------- JellyfinPlayer/JellyfinPlayer.entitlements | 2 ++ WidgetExtension/WidgetExtension.entitlements | 5 +--- 4 files changed, 15 insertions(+), 33 deletions(-) delete mode 100644 JellyfinPlayer tvOS/JellyfinPlayer tvOS.entitlements diff --git a/JellyfinPlayer tvOS/JellyfinPlayer tvOS.entitlements b/JellyfinPlayer tvOS/JellyfinPlayer tvOS.entitlements deleted file mode 100644 index 0273a6a6..00000000 --- a/JellyfinPlayer tvOS/JellyfinPlayer tvOS.entitlements +++ /dev/null @@ -1,15 +0,0 @@ - - - - - com.apple.developer.user-management - - get-current-user - runs-as-current-user - - keychain-access-groups - - $(AppIdentifierPrefix)me.vigue.jellyfin.sharedKeychain - - - diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 2815b38a..458df599 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -465,7 +465,6 @@ 5398514426B64DA100101B49 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; 53A83C32268A309300DF3D92 /* LibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryView.swift; sourceTree = ""; }; - 53ABFDDA267972BF00886593 /* JellyfinPlayer tvOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = "JellyfinPlayer tvOS.entitlements"; sourceTree = ""; }; 53ABFDDB267972BF00886593 /* TVServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TVServices.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.0.sdk/System/Library/Frameworks/TVServices.framework; sourceTree = DEVELOPER_DIR; }; 53ABFDDD267974E300886593 /* SplashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashView.swift; sourceTree = ""; }; 53ABFDEA2679753200886593 /* ConnectToServerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectToServerView.swift; sourceTree = ""; }; @@ -752,7 +751,6 @@ E193D4DD27193DC400900D82 /* Coordinators */, 536D3D77267BB9650004248C /* Components */, 535870702669D21700D05A09 /* Info.plist */, - 53ABFDDA267972BF00886593 /* JellyfinPlayer tvOS.entitlements */, 535870682669D21700D05A09 /* Preview Content */, 531690F8267AD135005D8AB9 /* README.md */, E12186E02718F23B0010884C /* Views */, @@ -2056,7 +2054,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; - DEVELOPMENT_TEAM = 9R8RREG67J; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "JellyfinPlayer tvOS/Info.plist"; @@ -2065,7 +2063,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.vigue.jellyfin; + PRODUCT_BUNDLE_IDENTIFIER = com.swiftfin; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; @@ -2087,7 +2085,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; - DEVELOPMENT_TEAM = 9R8RREG67J; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "JellyfinPlayer tvOS/Info.plist"; @@ -2096,7 +2094,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.vigue.jellyfin; + PRODUCT_BUNDLE_IDENTIFIER = com.swiftfin; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = appletvos; SWIFT_EMIT_LOC_STRINGS = YES; @@ -2239,7 +2237,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_ASSET_PATHS = ""; - DEVELOPMENT_TEAM = TY84JMYEFE; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; EXCLUDED_ARCHS = ""; @@ -2251,7 +2249,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = pips.swiftfin; + PRODUCT_BUNDLE_IDENTIFIER = com.swiftfin; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTS_MACCATALYST = NO; @@ -2276,7 +2274,7 @@ CURRENT_PROJECT_VERSION = 60; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; - DEVELOPMENT_TEAM = 9R8RREG67J; + DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; ENABLE_PREVIEWS = YES; EXCLUDED_ARCHS = ""; @@ -2288,7 +2286,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.vigue.jellyfin; + PRODUCT_BUNDLE_IDENTIFIER = com.swiftfin; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SUPPORTS_MACCATALYST = NO; @@ -2307,7 +2305,7 @@ CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; - DEVELOPMENT_TEAM = TY84JMYEFE; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = WidgetExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2316,7 +2314,7 @@ "@executable_path/../../Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = pips.swiftfin.widget; + PRODUCT_BUNDLE_IDENTIFIER = com.swiftfin.widget; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; @@ -2334,7 +2332,7 @@ CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; - DEVELOPMENT_TEAM = 9R8RREG67J; + DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = WidgetExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( @@ -2343,7 +2341,7 @@ "@executable_path/../../Frameworks", ); MARKETING_VERSION = 1.0.0; - PRODUCT_BUNDLE_IDENTIFIER = me.vigue.jellyfin.widget; + PRODUCT_BUNDLE_IDENTIFIER = com.swiftfin.widget; PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; diff --git a/JellyfinPlayer/JellyfinPlayer.entitlements b/JellyfinPlayer/JellyfinPlayer.entitlements index bc04cfb9..ee95ab7e 100644 --- a/JellyfinPlayer/JellyfinPlayer.entitlements +++ b/JellyfinPlayer/JellyfinPlayer.entitlements @@ -2,6 +2,8 @@ + com.apple.security.app-sandbox + com.apple.security.network.client diff --git a/WidgetExtension/WidgetExtension.entitlements b/WidgetExtension/WidgetExtension.entitlements index 2eb7e333..0c67376e 100644 --- a/WidgetExtension/WidgetExtension.entitlements +++ b/WidgetExtension/WidgetExtension.entitlements @@ -1,8 +1,5 @@ - - com.apple.security.application-groups - - + From d73df61671c24bf5515bcc2c5db713dca1996c86 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 13:48:08 -0600 Subject: [PATCH 39/88] add .pbxproj to .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index db1ee361..447642a3 100644 --- a/.gitignore +++ b/.gitignore @@ -96,3 +96,6 @@ iOSInjectionProject/ .Trashes ehthumbs.db Thumbs.db + +# Project files that need to be force pushed +*.pbxproj From 1ecf4b7d265338f4f8b05b5b23f50edcaca231b1 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 13:53:00 -0600 Subject: [PATCH 40/88] Fix entitlements path for tvOS --- JellyfinPlayer.xcodeproj/project.pbxproj | 2 -- 1 file changed, 2 deletions(-) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 458df599..d7dd21ac 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -2050,7 +2050,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; - CODE_SIGN_ENTITLEMENTS = "JellyfinPlayer tvOS/JellyfinPlayer tvOS.entitlements"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; @@ -2081,7 +2080,6 @@ ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; - CODE_SIGN_ENTITLEMENTS = "JellyfinPlayer tvOS/JellyfinPlayer tvOS.entitlements"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; From 7af1a4ac1f9bbace648e99706b9e87d3de192c95 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 13:56:50 -0600 Subject: [PATCH 41/88] Directory cleanup --- .../JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion | 5 ----- .../JellyfinPlayer_tvOS.xcdatamodel/contents | 9 --------- JellyfinPlayer tvOS/README.md | 4 ---- JellyfinPlayer.xcodeproj/project.pbxproj | 2 -- WidgetExtension/WidgetExtension.entitlements | 5 ----- 5 files changed, 25 deletions(-) delete mode 100644 JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion delete mode 100644 JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/JellyfinPlayer_tvOS.xcdatamodel/contents delete mode 100644 JellyfinPlayer tvOS/README.md delete mode 100644 WidgetExtension/WidgetExtension.entitlements diff --git a/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion b/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion deleted file mode 100644 index 0c67376e..00000000 --- a/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/.xccurrentversion +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/JellyfinPlayer_tvOS.xcdatamodel/contents b/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/JellyfinPlayer_tvOS.xcdatamodel/contents deleted file mode 100644 index 9ed2921a..00000000 --- a/JellyfinPlayer tvOS/JellyfinPlayer_tvOS.xcdatamodeld/JellyfinPlayer_tvOS.xcdatamodel/contents +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/JellyfinPlayer tvOS/README.md b/JellyfinPlayer tvOS/README.md deleted file mode 100644 index 59394731..00000000 --- a/JellyfinPlayer tvOS/README.md +++ /dev/null @@ -1,4 +0,0 @@ -# Design Notes - -tvos is dumb and how I got around the ScrollViews clipping requires ALL interface elements to have a leading and trailing padding of _~~135~~ something else but i forgot_ pt to align with the original "safe area bounds" - diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index d7dd21ac..4612e0a2 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -2300,7 +2300,6 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_TEAM = ""; @@ -2327,7 +2326,6 @@ buildSettings = { ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; - CODE_SIGN_ENTITLEMENTS = WidgetExtension/WidgetExtension.entitlements; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 60; DEVELOPMENT_TEAM = ""; diff --git a/WidgetExtension/WidgetExtension.entitlements b/WidgetExtension/WidgetExtension.entitlements deleted file mode 100644 index 0c67376e..00000000 --- a/WidgetExtension/WidgetExtension.entitlements +++ /dev/null @@ -1,5 +0,0 @@ - - - - - From 91081f2659689cc04884aa2a4b678ab219b82471 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 14:27:14 -0600 Subject: [PATCH 42/88] Update .gitignore --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 447642a3..db1ee361 100644 --- a/.gitignore +++ b/.gitignore @@ -96,6 +96,3 @@ iOSInjectionProject/ .Trashes ehthumbs.db Thumbs.db - -# Project files that need to be force pushed -*.pbxproj From ff7a4c5620918c57230040e2b7fb3e990e36630f Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 15:20:00 -0600 Subject: [PATCH 43/88] Cleanup and remove NukeUI for AsyncImage --- .../App/JellyfinPlayer_tvOSApp.swift | 1 - .../PlainNavigationLinkButton.swift | 9 + JellyfinPlayer tvOS/Views/MainTabView.swift | 77 -------- JellyfinPlayer tvOS/Views/SettingsView.swift | 12 +- JellyfinPlayer tvOS/Views/SplashView.swift | 31 --- JellyfinPlayer.xcodeproj/project.pbxproj | 180 +++++++----------- .../xcshareddata/swiftpm/Package.resolved | 54 +----- JellyfinPlayer/App/AppDelegate.swift | 6 + JellyfinPlayer/App/JellyfinPlayerApp.swift | 160 +++------------- .../App/PreferenceUIHostingController.swift | 118 ++++++++++++ JellyfinPlayer/Views/SplashView.swift | 27 --- .../ViewModels/ConnectToServerViewModel.swift | 2 +- Shared/ViewModels/SplashViewModel.swift | 51 ----- Shared/Views/ImageView.swift | 41 ++-- 14 files changed, 265 insertions(+), 504 deletions(-) rename JellyfinPlayer tvOS/{Views => Components}/PlainNavigationLinkButton.swift (58%) delete mode 100644 JellyfinPlayer tvOS/Views/MainTabView.swift delete mode 100644 JellyfinPlayer tvOS/Views/SplashView.swift create mode 100644 JellyfinPlayer/App/PreferenceUIHostingController.swift delete mode 100644 JellyfinPlayer/Views/SplashView.swift delete mode 100644 Shared/ViewModels/SplashViewModel.swift diff --git a/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift b/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift index db58374a..2f1ff9e7 100644 --- a/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift +++ b/JellyfinPlayer tvOS/App/JellyfinPlayer_tvOSApp.swift @@ -14,7 +14,6 @@ struct JellyfinPlayer_tvOSApp: App { var body: some Scene { WindowGroup { MainCoordinator().view() - .ignoresSafeArea(.all, edges: .all) } } } diff --git a/JellyfinPlayer tvOS/Views/PlainNavigationLinkButton.swift b/JellyfinPlayer tvOS/Components/PlainNavigationLinkButton.swift similarity index 58% rename from JellyfinPlayer tvOS/Views/PlainNavigationLinkButton.swift rename to JellyfinPlayer tvOS/Components/PlainNavigationLinkButton.swift index 2a458505..1d871577 100644 --- a/JellyfinPlayer tvOS/Views/PlainNavigationLinkButton.swift +++ b/JellyfinPlayer tvOS/Components/PlainNavigationLinkButton.swift @@ -1,3 +1,12 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + import SwiftUI struct PlainNavigationLinkButtonStyle: ButtonStyle { diff --git a/JellyfinPlayer tvOS/Views/MainTabView.swift b/JellyfinPlayer tvOS/Views/MainTabView.swift deleted file mode 100644 index 77dc3cfc..00000000 --- a/JellyfinPlayer tvOS/Views/MainTabView.swift +++ /dev/null @@ -1,77 +0,0 @@ -// - /* - * SwiftFin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import Foundation -import SwiftUI - -struct MainTabView: View { - @State private var tabSelection: Tab = .home - @StateObject private var viewModel = MainTabViewModel() - @State private var backdropAnim: Bool = true - @State private var lastBackdropAnim: Bool = false - - var body: some View { - ZStack { - // please do not touch my magical crossfading. i will wave my magical github wand and cry - if viewModel.lastBackgroundURL != nil { - ImageView(src: viewModel.lastBackgroundURL!, bh: viewModel.backgroundBlurHash) - .frame(minWidth: 100, maxWidth: .infinity, minHeight: 100, maxHeight: .infinity) - .opacity(lastBackdropAnim ? 0.4 : 0) - .ignoresSafeArea() - } - if viewModel.backgroundURL != nil { - ImageView(src: viewModel.backgroundURL!, bh: viewModel.backgroundBlurHash) - .frame(minWidth: 100, maxWidth: .infinity, minHeight: 100, maxHeight: .infinity) - .opacity(backdropAnim ? 0.4 : 0) - .onChange(of: viewModel.backgroundURL) { _ in - lastBackdropAnim = true - backdropAnim = false - withAnimation(.linear(duration: 0.33)) { - lastBackdropAnim = false - backdropAnim = true - } - } - .ignoresSafeArea() - } - - TabView(selection: $tabSelection) { - HomeView() - .offset(y: -1) // don't remove this. it breaks tabview on 4K displays. - .tabItem { - Text("Home") - Image(systemName: "house") - } - .tag(Tab.home) - - LibraryListView() - .tabItem { - Text("All Media") - Image(systemName: "folder") - } - .tag(Tab.allMedia) - - SettingsView(viewModel: SettingsViewModel()) - .offset(y: -1) // don't remove this. it breaks tabview on 4K displays. - .tabItem { - Text("Settings") - Image(systemName: "gear") - } - .tag(Tab.settings) - } - } - } -} - -extension MainTabView { - enum Tab: String { - case home - case allMedia - case settings - } -} diff --git a/JellyfinPlayer tvOS/Views/SettingsView.swift b/JellyfinPlayer tvOS/Views/SettingsView.swift index 19a25174..7442eeeb 100644 --- a/JellyfinPlayer tvOS/Views/SettingsView.swift +++ b/JellyfinPlayer tvOS/Views/SettingsView.swift @@ -11,8 +11,7 @@ import Defaults import JellyfinAPI struct SettingsView: View { - @Environment(\.managedObjectContext) private var viewContext - + @ObservedObject var viewModel: SettingsViewModel @Default(.inNetworkBandwidth) var inNetworkStreamBitrate @@ -20,11 +19,6 @@ struct SettingsView: View { @Default(.isAutoSelectSubtitles) var isAutoSelectSubtitles @Default(.autoSelectSubtitlesLangCode) var autoSelectSubtitlesLangcode @Default(.autoSelectAudioLangCode) var autoSelectAudioLangcode - @State private var username: String = "" - - func onAppear() { - username = SessionManager.main.currentLogin.user.username - } var body: some View { Form { @@ -64,7 +58,7 @@ struct SettingsView: View { Section(header: Text(SessionManager.main.currentLogin.server.name)) { HStack { - Text("Signed in as \(username)").foregroundColor(.primary) + Text("Signed in as \(SessionManager.main.currentLogin.user.username)").foregroundColor(.primary) Spacer() Button { SwiftfinNotificationCenter.main.post(name: SwiftfinNotificationCenter.Keys.didSignOut, object: nil) @@ -78,7 +72,7 @@ struct SettingsView: View { Text("Sign out").font(.callout) } } - }.onAppear(perform: onAppear) + } .padding(.leading, 90) .padding(.trailing, 90) } diff --git a/JellyfinPlayer tvOS/Views/SplashView.swift b/JellyfinPlayer tvOS/Views/SplashView.swift deleted file mode 100644 index 234da126..00000000 --- a/JellyfinPlayer tvOS/Views/SplashView.swift +++ /dev/null @@ -1,31 +0,0 @@ -// -/* - * SwiftFin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import SwiftUI - -struct SplashView: View { - - @StateObject var viewModel = SplashViewModel() - - var body: some View { - Group { - if SessionManager.main.currentLogin == nil { - NavigationView { - ConnectToServerView() - } - .navigationViewStyle(StackNavigationViewStyle()) - } else { - NavigationView { - MainTabView() - } - .ignoresSafeArea() - } - } - } -} diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 4612e0a2..45627dcb 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -24,7 +24,6 @@ 5310695D2684E7EE00CFFDBA /* VideoPlayer.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 531069562684E7EE00CFFDBA /* VideoPlayer.storyboard */; }; 53116A17268B919A003024C9 /* SeriesItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53116A16268B919A003024C9 /* SeriesItemView.swift */; }; 53116A19268B947A003024C9 /* PlainLinkButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53116A18268B947A003024C9 /* PlainLinkButton.swift */; }; - 531690E5267ABD5C005D8AB9 /* MainTabView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531690E4267ABD5C005D8AB9 /* MainTabView.swift */; }; 531690E7267ABD79005D8AB9 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531690E6267ABD79005D8AB9 /* HomeView.swift */; }; 531690ED267ABF46005D8AB9 /* ContinueWatchingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531690EB267ABF46005D8AB9 /* ContinueWatchingView.swift */; }; 531690F0267ABF72005D8AB9 /* NextUpView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531690EE267ABF72005D8AB9 /* NextUpView.swift */; }; @@ -57,7 +56,6 @@ 5358706A2669D21700D05A09 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 535870692669D21700D05A09 /* Preview Assets.xcassets */; }; 5358707E2669D64F00D05A09 /* bitrates.json in Resources */ = {isa = PBXBuildFile; fileRef = AE8C3158265D6F90008AA076 /* bitrates.json */; }; 535870912669D7A800D05A09 /* Introspect in Frameworks */ = {isa = PBXBuildFile; productRef = 535870902669D7A800D05A09 /* Introspect */; }; - 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5358709A2669D7A800D05A09 /* NukeUI */; }; 535870A52669D8AE00D05A09 /* ParallaxHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6225FCCA2663841E00E067F6 /* ParallaxHeader.swift */; }; 535870A62669D8AE00D05A09 /* LazyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338B22660A07800A81A2A /* LazyView.swift */; }; 535870A72669D8AE00D05A09 /* MultiSelectorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E4E648263F725B00F67C6B /* MultiSelectorView.swift */; }; @@ -137,12 +135,10 @@ 53A431BF266B0FFE0016769F /* JellyfinAPI in Frameworks */ = {isa = PBXBuildFile; productRef = 53A431BE266B0FFE0016769F /* JellyfinAPI */; }; 53A83C33268A309300DF3D92 /* LibraryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A83C32268A309300DF3D92 /* LibraryView.swift */; }; 53ABFDDC267972BF00886593 /* TVServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 53ABFDDB267972BF00886593 /* TVServices.framework */; }; - 53ABFDDE267974E300886593 /* SplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53ABFDDD267974E300886593 /* SplashView.swift */; }; 53ABFDE4267974EF00886593 /* LibraryListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5742678C33500530A6E /* LibraryListViewModel.swift */; }; 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB57B2678CE1000530A6E /* ViewModel.swift */; }; 53ABFDE6267974EF00886593 /* SettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5321753A2671BCFC005491E6 /* SettingsViewModel.swift */; }; 53ABFDE7267974EF00886593 /* ConnectToServerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5762678C34300530A6E /* ConnectToServerViewModel.swift */; }; - 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5692678B71200530A6E /* SplashViewModel.swift */; }; 53ABFDE9267974EF00886593 /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5722678C32A00530A6E /* HomeViewModel.swift */; }; 53ABFDEB2679753200886593 /* ConnectToServerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53ABFDEA2679753200886593 /* ConnectToServerView.swift */; }; 53ABFDED26799D7700886593 /* ActivityIndicator in Frameworks */ = {isa = PBXBuildFile; productRef = 53ABFDEC26799D7700886593 /* ActivityIndicator */; }; @@ -154,7 +150,6 @@ 53E4E649263F725B00F67C6B /* MultiSelectorView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53E4E648263F725B00F67C6B /* MultiSelectorView.swift */; }; 53EC6E1E267E80AC006DD26A /* Pods_JellyfinPlayer_tvOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBFE1F64394BCC2EFFF1610D /* Pods_JellyfinPlayer_tvOS.framework */; }; 53EC6E21267E80B1006DD26A /* Pods_JellyfinPlayer_iOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F905C1D3D3A0C9E13E7A0BC /* Pods_JellyfinPlayer_iOS.framework */; }; - 53EC6E25267EB10F006DD26A /* SwiftyJSON in Frameworks */ = {isa = PBXBuildFile; productRef = 53EC6E24267EB10F006DD26A /* SwiftyJSON */; }; 53EE24E6265060780068F029 /* LibrarySearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53EE24E5265060780068F029 /* LibrarySearchView.swift */; }; 53F8377D265FF67C00F456B3 /* VideoPlayerSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F8377C265FF67C00F456B3 /* VideoPlayerSettingsView.swift */; }; 53F866442687A45F00DCD1D7 /* PortraitItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F866432687A45F00DCD1D7 /* PortraitItemView.swift */; }; @@ -162,7 +157,6 @@ 62133890265F83A900A81A2A /* LibraryListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6213388F265F83A900A81A2A /* LibraryListView.swift */; }; 621338932660107500A81A2A /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338922660107500A81A2A /* StringExtensions.swift */; }; 621338B32660A07800A81A2A /* LazyView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338B22660A07800A81A2A /* LazyView.swift */; }; - 621C638026672A30004216EA /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 621C637F26672A30004216EA /* NukeUI */; }; 6220D0AD26D5EABB00B8E046 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0AC26D5EABB00B8E046 /* ViewExtensions.swift */; }; 6220D0AE26D5EABB00B8E046 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0AC26D5EABB00B8E046 /* ViewExtensions.swift */; }; 6220D0AF26D5EABE00B8E046 /* ViewExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0AC26D5EABB00B8E046 /* ViewExtensions.swift */; }; @@ -176,15 +170,11 @@ 6220D0CC26D640C400B8E046 /* AppURLHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0CB26D640C400B8E046 /* AppURLHandler.swift */; }; 6225FCCB2663841E00E067F6 /* ParallaxHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6225FCCA2663841E00E067F6 /* ParallaxHeader.swift */; }; 624C21752685CF60007F1390 /* SearchablePickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 624C21742685CF60007F1390 /* SearchablePickerView.swift */; }; - 625CB5682678B6FB00530A6E /* SplashView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5672678B6FB00530A6E /* SplashView.swift */; }; - 625CB56A2678B71200530A6E /* SplashViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5692678B71200530A6E /* SplashViewModel.swift */; }; 625CB56F2678C23300530A6E /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB56E2678C23300530A6E /* HomeView.swift */; }; 625CB5732678C32A00530A6E /* HomeViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5722678C32A00530A6E /* HomeViewModel.swift */; }; 625CB5752678C33500530A6E /* LibraryListViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5742678C33500530A6E /* LibraryListViewModel.swift */; }; 625CB5772678C34300530A6E /* ConnectToServerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 625CB5762678C34300530A6E /* ConnectToServerViewModel.swift */; }; 625CB57A2678C4A400530A6E /* ActivityIndicator in Frameworks */ = {isa = PBXBuildFile; productRef = 625CB5792678C4A400530A6E /* ActivityIndicator */; }; - 6260FFF926A09754003FA968 /* CombineExt in Frameworks */ = {isa = PBXBuildFile; productRef = 6260FFF826A09754003FA968 /* CombineExt */; }; - 6261A0E026A0AB710072EF1C /* CombineExt in Frameworks */ = {isa = PBXBuildFile; productRef = 6261A0DF26A0AB710072EF1C /* CombineExt */; }; 62671DB327159C1800199D95 /* ItemCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */; }; 6267B3D626710B8900A7371D /* CollectionExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6267B3D526710B8900A7371D /* CollectionExtensions.swift */; }; 6267B3D726710B9700A7371D /* CollectionExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6267B3D526710B8900A7371D /* CollectionExtensions.swift */; }; @@ -196,7 +186,6 @@ 628B95272670CABD0091AF3B /* NextUpWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 628B95262670CABD0091AF3B /* NextUpWidget.swift */; }; 628B95292670CABE0091AF3B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 628B95282670CABE0091AF3B /* Assets.xcassets */; }; 628B952D2670CABE0091AF3B /* WidgetExtension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 628B95202670CABD0091AF3B /* WidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - 628B95332670CAEA0091AF3B /* NukeUI in Frameworks */ = {isa = PBXBuildFile; productRef = 628B95322670CAEA0091AF3B /* NukeUI */; }; 628B95352670CAEA0091AF3B /* JellyfinAPI in Frameworks */ = {isa = PBXBuildFile; productRef = 628B95342670CAEA0091AF3B /* JellyfinAPI */; }; 628B95372670CB800091AF3B /* JellyfinWidget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 628B95362670CB800091AF3B /* JellyfinWidget.swift */; }; 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 621338922660107500A81A2A /* StringExtensions.swift */; }; @@ -238,6 +227,9 @@ E11B1B6D2718CD68006DA3E8 /* JellyfinAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */; }; E11B1B6E2718CDBA006DA3E8 /* JellyfinAPIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */; }; E12186DE2718F1C50010884C /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E12186DD2718F1C50010884C /* Defaults */; }; + E1218C9A271A26BA00EA0737 /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = E1218C99271A26BA00EA0737 /* Nuke */; }; + E1218C9C271A26C400EA0737 /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = E1218C9B271A26C400EA0737 /* Nuke */; }; + E1267D3E271A1F46003C492E /* PreferenceUIHostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1267D3D271A1F46003C492E /* PreferenceUIHostingController.swift */; }; E131691726C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691926C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; @@ -316,6 +308,8 @@ E1AD105C26D9ABDD003E4A08 /* PillHStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD105B26D9ABDD003E4A08 /* PillHStackView.swift */; }; E1AD105F26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD105E26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift */; }; E1AD106226D9B7CD003E4A08 /* ItemPortraitHeaderOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD106126D9B7CD003E4A08 /* ItemPortraitHeaderOverlayView.swift */; }; + E1B6DCE8271A23780015B715 /* CombineExt in Frameworks */ = {isa = PBXBuildFile; productRef = E1B6DCE7271A23780015B715 /* CombineExt */; }; + E1B6DCEA271A23880015B715 /* SwiftyJSON in Frameworks */ = {isa = PBXBuildFile; productRef = E1B6DCE9271A23880015B715 /* SwiftyJSON */; }; E1D4BF7C2719D05000A11E64 /* BasicAppSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF7B2719D05000A11E64 /* BasicAppSettingsView.swift */; }; E1D4BF7E2719D1DD00A11E64 /* BasicAppSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF7D2719D1DC00A11E64 /* BasicAppSettingsViewModel.swift */; }; E1D4BF7F2719D1DD00A11E64 /* BasicAppSettingsViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF7D2719D1DC00A11E64 /* BasicAppSettingsViewModel.swift */; }; @@ -389,12 +383,10 @@ 531069562684E7EE00CFFDBA /* VideoPlayer.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = VideoPlayer.storyboard; sourceTree = ""; }; 53116A16268B919A003024C9 /* SeriesItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeriesItemView.swift; sourceTree = ""; }; 53116A18268B947A003024C9 /* PlainLinkButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlainLinkButton.swift; sourceTree = ""; }; - 531690E4267ABD5C005D8AB9 /* MainTabView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainTabView.swift; sourceTree = ""; }; 531690E6267ABD79005D8AB9 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; 531690EB267ABF46005D8AB9 /* ContinueWatchingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContinueWatchingView.swift; sourceTree = ""; }; 531690EE267ABF72005D8AB9 /* NextUpView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NextUpView.swift; sourceTree = ""; }; 531690F6267ACC00005D8AB9 /* LandscapeItemElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LandscapeItemElement.swift; sourceTree = ""; }; - 531690F8267AD135005D8AB9 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlainNavigationLinkButton.swift; sourceTree = ""; }; 53192D5C265AA78A008A4215 /* DeviceProfileBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeviceProfileBuilder.swift; sourceTree = ""; }; 531AC8BE26750DE20091C7EB /* ImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageView.swift; sourceTree = ""; }; @@ -466,7 +458,6 @@ 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = ""; }; 53A83C32268A309300DF3D92 /* LibraryView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryView.swift; sourceTree = ""; }; 53ABFDDB267972BF00886593 /* TVServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = TVServices.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS15.0.sdk/System/Library/Frameworks/TVServices.framework; sourceTree = DEVELOPER_DIR; }; - 53ABFDDD267974E300886593 /* SplashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashView.swift; sourceTree = ""; }; 53ABFDEA2679753200886593 /* ConnectToServerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConnectToServerView.swift; sourceTree = ""; }; 53AD124C2670278D0094A276 /* JellyfinPlayer.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = JellyfinPlayer.entitlements; sourceTree = ""; }; 53CD2A3F268A49C2002ABD4E /* ItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemView.swift; sourceTree = ""; }; @@ -493,8 +484,6 @@ 6220D0CB26D640C400B8E046 /* AppURLHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppURLHandler.swift; sourceTree = ""; }; 6225FCCA2663841E00E067F6 /* ParallaxHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParallaxHeader.swift; sourceTree = ""; }; 624C21742685CF60007F1390 /* SearchablePickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchablePickerView.swift; sourceTree = ""; }; - 625CB5672678B6FB00530A6E /* SplashView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashView.swift; sourceTree = ""; }; - 625CB5692678B71200530A6E /* SplashViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SplashViewModel.swift; sourceTree = ""; }; 625CB56E2678C23300530A6E /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = ""; }; 625CB5722678C32A00530A6E /* HomeViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeViewModel.swift; sourceTree = ""; }; 625CB5742678C33500530A6E /* LibraryListViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryListViewModel.swift; sourceTree = ""; }; @@ -535,6 +524,7 @@ DE5004F745B19E28744A7DE7 /* Pods-JellyfinPlayer tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinPlayer tvOS.debug.xcconfig"; path = "Target Support Files/Pods-JellyfinPlayer tvOS/Pods-JellyfinPlayer tvOS.debug.xcconfig"; sourceTree = ""; }; E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MediaPlayButtonRowView.swift; sourceTree = ""; }; E11B1B6B2718CD68006DA3E8 /* JellyfinAPIError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JellyfinAPIError.swift; sourceTree = ""; }; + E1267D3D271A1F46003C492E /* PreferenceUIHostingController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferenceUIHostingController.swift; sourceTree = ""; }; E131691626C583BC0074BFEE /* LogConstructor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogConstructor.swift; sourceTree = ""; }; E13DD3BC27163C63009D4DAF /* EmailHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmailHelper.swift; sourceTree = ""; }; E13DD3BE27163DD7009D4DAF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -598,11 +588,9 @@ 6220D0C926D63F3700B8E046 /* Stinsen in Frameworks */, 53A431BF266B0FFE0016769F /* JellyfinAPI in Frameworks */, 535870912669D7A800D05A09 /* Introspect in Frameworks */, - 6261A0E026A0AB710072EF1C /* CombineExt in Frameworks */, 536D3D84267BEA550004248C /* ParallaxView in Frameworks */, 53ABFDDC267972BF00886593 /* TVServices.framework in Frameworks */, E13DD3CD27164CA7009D4DAF /* CoreStore in Frameworks */, - 5358709B2669D7A800D05A09 /* NukeUI in Frameworks */, E12186DE2718F1C50010884C /* Defaults in Frameworks */, 53ABFDED26799D7700886593 /* ActivityIndicator in Frameworks */, ); @@ -615,13 +603,13 @@ E13DD3D327168E65009D4DAF /* Defaults in Frameworks */, 53649AAD269CFAEA00A2D8B7 /* Puppy in Frameworks */, 62C29E9C26D0FE4200C1D2E7 /* Stinsen in Frameworks */, - 53EC6E25267EB10F006DD26A /* SwiftyJSON in Frameworks */, 53EC6E21267E80B1006DD26A /* Pods_JellyfinPlayer_iOS.framework in Frameworks */, + E1218C9A271A26BA00EA0737 /* Nuke in Frameworks */, + E1B6DCEA271A23880015B715 /* SwiftyJSON in Frameworks */, 53352571265EA0A0006CCA86 /* Introspect in Frameworks */, E13DD3C62716499E009D4DAF /* CoreStore in Frameworks */, - 621C638026672A30004216EA /* NukeUI in Frameworks */, 625CB57A2678C4A400530A6E /* ActivityIndicator in Frameworks */, - 6260FFF926A09754003FA968 /* CombineExt in Frameworks */, + E1B6DCE8271A23780015B715 /* CombineExt in Frameworks */, 53A431BD266B0FF20016769F /* JellyfinAPI in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -630,7 +618,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 628B95332670CAEA0091AF3B /* NukeUI in Frameworks */, 628B95242670CABD0091AF3B /* SwiftUI.framework in Frameworks */, 531ABF6C2671F5CC00C0FE20 /* WidgetKit.framework in Frameworks */, E13DD3DD27175CE3009D4DAF /* Defaults in Frameworks */, @@ -638,6 +625,7 @@ 536D3D7D267BD5F90004248C /* ActivityIndicator in Frameworks */, E13DD3CF27164E1F009D4DAF /* CoreStore in Frameworks */, 628B95352670CAEA0091AF3B /* JellyfinAPI in Frameworks */, + E1218C9C271A26C400EA0737 /* Nuke in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -687,7 +675,6 @@ E173DA5326D050F500CC4EB7 /* ServerDetailViewModel.swift */, E13DD3E027176BD3009D4DAF /* ServerListViewModel.swift */, 5321753A2671BCFC005491E6 /* SettingsViewModel.swift */, - 625CB5692678B71200530A6E /* SplashViewModel.swift */, E13DD3F82717E961009D4DAF /* UserListViewModel.swift */, E13DD3EB27178A54009D4DAF /* UserSignInViewModel.swift */, 09389CC626819B4500AE350E /* VideoPlayerModel.swift */, @@ -748,11 +735,9 @@ children = ( E12186DF2718F2030010884C /* App */, 535870662669D21700D05A09 /* Assets.xcassets */, - E193D4DD27193DC400900D82 /* Coordinators */, 536D3D77267BB9650004248C /* Components */, 535870702669D21700D05A09 /* Info.plist */, 535870682669D21700D05A09 /* Preview Content */, - 531690F8267AD135005D8AB9 /* README.md */, E12186E02718F23B0010884C /* Views */, ); path = "JellyfinPlayer tvOS"; @@ -804,11 +789,12 @@ isa = PBXGroup; children = ( 531690F6267ACC00005D8AB9 /* LandscapeItemElement.swift */, + E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */, + 53272531268BF09D0035FBF1 /* MediaViewActionButton.swift */, + 53116A18268B947A003024C9 /* PlainLinkButton.swift */, + 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */, 536D3D80267BDFC60004248C /* PortraitItemElement.swift */, 536D3D87267C17350004248C /* PublicUserButton.swift */, - 53116A18268B947A003024C9 /* PlainLinkButton.swift */, - 53272531268BF09D0035FBF1 /* MediaViewActionButton.swift */, - E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */, ); path = Components; sourceTree = ""; @@ -1126,13 +1112,10 @@ C4E508172703E8190045C9AB /* LibraryListView.swift */, C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */, 53A83C32268A309300DF3D92 /* LibraryView.swift */, - 531690E4267ABD5C005D8AB9 /* MainTabView.swift */, 531690EE267ABF72005D8AB9 /* NextUpView.swift */, - 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */, E193D54F2719430400900D82 /* ServerDetailView.swift */, E193D54A271941D300900D82 /* ServerListView.swift */, 5398514426B64DA100101B49 /* SettingsView.swift */, - 53ABFDDD267974E300886593 /* SplashView.swift */, E193D546271941C500900D82 /* UserListView.swift */, E193D548271941CC00900D82 /* UserSignInView.swift */, 5310694F2684E7EE00CFFDBA /* VideoPlayer */, @@ -1143,9 +1126,10 @@ E13DD3BB27163C3E009D4DAF /* App */ = { isa = PBXGroup; children = ( - 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */, E13DD3BE27163DD7009D4DAF /* AppDelegate.swift */, E13DD3BC27163C63009D4DAF /* EmailHelper.swift */, + 5377CBF4263B596A003A4E83 /* JellyfinPlayerApp.swift */, + E1267D3D271A1F46003C492E /* PreferenceUIHostingController.swift */, ); path = App; sourceTree = ""; @@ -1177,7 +1161,6 @@ E173DA4F26D048D600CC4EB7 /* ServerDetailView.swift */, E13DD3E427177D15009D4DAF /* ServerListView.swift */, 539B2DA4263BA5B8007FF1A4 /* SettingsView.swift */, - 625CB5672678B6FB00530A6E /* SplashView.swift */, E13DD3FB2717EAE8009D4DAF /* UserListView.swift */, E13DD3F4271793BB009D4DAF /* UserSignInView.swift */, E193D5452719418B00900D82 /* VideoPlayer */, @@ -1214,13 +1197,6 @@ path = Landscape; sourceTree = ""; }; - E193D4DD27193DC400900D82 /* Coordinators */ = { - isa = PBXGroup; - children = ( - ); - path = Coordinators; - sourceTree = ""; - }; E193D5412719404B00900D82 /* MainCoordinator */ = { isa = PBXGroup; children = ( @@ -1311,12 +1287,10 @@ name = "JellyfinPlayer tvOS"; packageProductDependencies = ( 535870902669D7A800D05A09 /* Introspect */, - 5358709A2669D7A800D05A09 /* NukeUI */, 53A431BE266B0FFE0016769F /* JellyfinAPI */, 53ABFDEC26799D7700886593 /* ActivityIndicator */, 536D3D83267BEA550004248C /* ParallaxView */, 53649AAE269CFAF600A2D8B7 /* Puppy */, - 6261A0DF26A0AB710072EF1C /* CombineExt */, 6220D0C826D63F3700B8E046 /* Stinsen */, E13DD3CC27164CA7009D4DAF /* CoreStore */, E12186DD2718F1C50010884C /* Defaults */, @@ -1346,15 +1320,15 @@ name = "JellyfinPlayer iOS"; packageProductDependencies = ( 53352570265EA0A0006CCA86 /* Introspect */, - 621C637F26672A30004216EA /* NukeUI */, 53A431BC266B0FF20016769F /* JellyfinAPI */, 625CB5792678C4A400530A6E /* ActivityIndicator */, - 53EC6E24267EB10F006DD26A /* SwiftyJSON */, 53649AAC269CFAEA00A2D8B7 /* Puppy */, - 6260FFF826A09754003FA968 /* CombineExt */, 62C29E9B26D0FE4200C1D2E7 /* Stinsen */, E13DD3C52716499E009D4DAF /* CoreStore */, E13DD3D227168E65009D4DAF /* Defaults */, + E1B6DCE7271A23780015B715 /* CombineExt */, + E1B6DCE9271A23880015B715 /* SwiftyJSON */, + E1218C99271A26BA00EA0737 /* Nuke */, ); productName = JellyfinPlayer; productReference = 5377CBF1263B596A003A4E83 /* JellyfinPlayer iOS.app */; @@ -1374,12 +1348,12 @@ ); name = WidgetExtension; packageProductDependencies = ( - 628B95322670CAEA0091AF3B /* NukeUI */, 628B95342670CAEA0091AF3B /* JellyfinAPI */, 536D3D7C267BD5F90004248C /* ActivityIndicator */, 53649AB4269D423A00A2D8B7 /* Puppy */, E13DD3CE27164E1F009D4DAF /* CoreStore */, E13DD3DC27175CE3009D4DAF /* Defaults */, + E1218C9B271A26C400EA0737 /* Nuke */, ); productName = WidgetExtensionExtension; productReference = 628B95202670CABD0091AF3B /* WidgetExtension.appex */; @@ -1433,16 +1407,16 @@ mainGroup = 5377CBE8263B596A003A4E83; packageReferences = ( 5335256F265EA0A0006CCA86 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */, - 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */, 53A431BB266B0FF20016769F /* XCRemoteSwiftPackageReference "jellyfin-sdk-swift" */, 625CB5782678C4A400530A6E /* XCRemoteSwiftPackageReference "ActivityIndicator" */, 536D3D82267BEA550004248C /* XCRemoteSwiftPackageReference "ParallaxView" */, - 53EC6E23267EB10F006DD26A /* XCRemoteSwiftPackageReference "SwiftyJSON" */, 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */, - 6260FFF726A09754003FA968 /* XCRemoteSwiftPackageReference "CombineExt" */, 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */, E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */, E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */, + E1267D42271A212C003C492E /* XCRemoteSwiftPackageReference "CombineExt" */, + E1C16B89271A2180009A5D25 /* XCRemoteSwiftPackageReference "SwiftyJSON" */, + E1218C98271A26BA00EA0737 /* XCRemoteSwiftPackageReference "Nuke" */, ); productRefGroup = 5377CBF2263B596A003A4E83 /* Products */; projectDirPath = ""; @@ -1653,8 +1627,6 @@ 531690E7267ABD79005D8AB9 /* HomeView.swift in Sources */, E1D4BF8B2719D3D000A11E64 /* BasicAppSettingsCoordinator.swift in Sources */, E13DD3FA2717E961009D4DAF /* UserListViewModel.swift in Sources */, - 53ABFDDE267974E300886593 /* SplashView.swift in Sources */, - 53ABFDE8267974EF00886593 /* SplashViewModel.swift in Sources */, 62E632DE267D2E170063E547 /* LatestMediaViewModel.swift in Sources */, E1FCD09726C47118007C8DCF /* ErrorMessage.swift in Sources */, E193D53527193F8100900D82 /* ItemCoordinator.swift in Sources */, @@ -1704,7 +1676,6 @@ E1AD104E26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */, 62E632DD267D2E130063E547 /* LibrarySearchViewModel.swift in Sources */, 536D3D81267BDFC60004248C /* PortraitItemElement.swift in Sources */, - 531690E5267ABD5C005D8AB9 /* MainTabView.swift in Sources */, 5310695B2684E7EE00CFFDBA /* AudioView.swift in Sources */, 5398514726B64E4100101B49 /* SearchBarView.swift in Sources */, 091B5A8D268315D400D78B61 /* ServerDiscovery.swift in Sources */, @@ -1797,7 +1768,6 @@ 625CB56F2678C23300530A6E /* HomeView.swift in Sources */, E173DA5226D04AAF00CC4EB7 /* ColorExtension.swift in Sources */, 53892770263C25230035E14B /* NextUpView.swift in Sources */, - 625CB5682678B6FB00530A6E /* SplashView.swift in Sources */, 62ECA01826FA685A00E8EBB7 /* DeepLink.swift in Sources */, 535BAEA5264A151C005FA86D /* VideoPlayer.swift in Sources */, 62E632E6267D3F5B0063E547 /* EpisodeItemViewModel.swift in Sources */, @@ -1815,7 +1785,6 @@ 53649AB1269CFB1900A2D8B7 /* LogManager.swift in Sources */, E13DD3E127176BD3009D4DAF /* ServerListViewModel.swift in Sources */, 62E632E9267D3FF50063E547 /* SeasonItemViewModel.swift in Sources */, - 625CB56A2678B71200530A6E /* SplashViewModel.swift in Sources */, 62E632F3267D54030063E547 /* ItemViewModel.swift in Sources */, E13DD3FC2717EAE8009D4DAF /* UserListView.swift in Sources */, 6220D0CC26D640C400B8E046 /* AppURLHandler.swift in Sources */, @@ -1852,6 +1821,7 @@ 535870AD2669D8DD00D05A09 /* Typings.swift in Sources */, E1AD105F26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift in Sources */, E13DD3D5271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, + E1267D3E271A1F46003C492E /* PreferenceUIHostingController.swift in Sources */, 6220D0BA26D6092100B8E046 /* FilterCoordinator.swift in Sources */, 6267B3DA2671138200A7371D /* ImageExtensions.swift in Sources */, 62EC353426766B03000E9F2D /* DeviceRotationViewModifier.swift in Sources */, @@ -2420,22 +2390,6 @@ kind = branch; }; }; - 53EC6E23267EB10F006DD26A /* XCRemoteSwiftPackageReference "SwiftyJSON" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/SwiftyJSON/SwiftyJSON"; - requirement = { - branch = master; - kind = branch; - }; - }; - 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/kean/NukeUI"; - requirement = { - kind = exactVersion; - version = 0.3.0; - }; - }; 625CB5782678C4A400530A6E /* XCRemoteSwiftPackageReference "ActivityIndicator" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/duyquang91/ActivityIndicator"; @@ -2444,14 +2398,6 @@ minimumVersion = 1.1.0; }; }; - 6260FFF726A09754003FA968 /* XCRemoteSwiftPackageReference "CombineExt" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/acvigue/CombineExt"; - requirement = { - branch = main; - kind = branch; - }; - }; 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/rundfunk47/stinsen"; @@ -2460,12 +2406,28 @@ minimumVersion = 2.0.2; }; }; + E1218C98271A26BA00EA0737 /* XCRemoteSwiftPackageReference "Nuke" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/kean/Nuke"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 9.0.0; + }; + }; + E1267D42271A212C003C492E /* XCRemoteSwiftPackageReference "CombineExt" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/CombineCommunity/CombineExt"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 1.0.0; + }; + }; E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/JohnEstropia/CoreStore.git"; requirement = { - kind = exactVersion; - version = 8.1.0; + kind = upToNextMajorVersion; + minimumVersion = 8.1.0; }; }; E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */ = { @@ -2476,6 +2438,14 @@ minimumVersion = 6.0.0; }; }; + E1C16B89271A2180009A5D25 /* XCRemoteSwiftPackageReference "SwiftyJSON" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/SwiftyJSON/SwiftyJSON"; + requirement = { + kind = upToNextMajorVersion; + minimumVersion = 5.0.0; + }; + }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -2489,11 +2459,6 @@ package = 5335256F265EA0A0006CCA86 /* XCRemoteSwiftPackageReference "SwiftUI-Introspect" */; productName = Introspect; }; - 5358709A2669D7A800D05A09 /* NukeUI */ = { - isa = XCSwiftPackageProductDependency; - package = 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */; - productName = NukeUI; - }; 53649AAC269CFAEA00A2D8B7 /* Puppy */ = { isa = XCSwiftPackageProductDependency; package = 53649AAB269CFAEA00A2D8B7 /* XCRemoteSwiftPackageReference "Puppy" */; @@ -2534,16 +2499,6 @@ package = 625CB5782678C4A400530A6E /* XCRemoteSwiftPackageReference "ActivityIndicator" */; productName = ActivityIndicator; }; - 53EC6E24267EB10F006DD26A /* SwiftyJSON */ = { - isa = XCSwiftPackageProductDependency; - package = 53EC6E23267EB10F006DD26A /* XCRemoteSwiftPackageReference "SwiftyJSON" */; - productName = SwiftyJSON; - }; - 621C637F26672A30004216EA /* NukeUI */ = { - isa = XCSwiftPackageProductDependency; - package = 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */; - productName = NukeUI; - }; 6220D0C826D63F3700B8E046 /* Stinsen */ = { isa = XCSwiftPackageProductDependency; package = 62C29E9A26D0FE4100C1D2E7 /* XCRemoteSwiftPackageReference "stinsen" */; @@ -2554,21 +2509,6 @@ package = 625CB5782678C4A400530A6E /* XCRemoteSwiftPackageReference "ActivityIndicator" */; productName = ActivityIndicator; }; - 6260FFF826A09754003FA968 /* CombineExt */ = { - isa = XCSwiftPackageProductDependency; - package = 6260FFF726A09754003FA968 /* XCRemoteSwiftPackageReference "CombineExt" */; - productName = CombineExt; - }; - 6261A0DF26A0AB710072EF1C /* CombineExt */ = { - isa = XCSwiftPackageProductDependency; - package = 6260FFF726A09754003FA968 /* XCRemoteSwiftPackageReference "CombineExt" */; - productName = CombineExt; - }; - 628B95322670CAEA0091AF3B /* NukeUI */ = { - isa = XCSwiftPackageProductDependency; - package = 621C637E26672A30004216EA /* XCRemoteSwiftPackageReference "NukeUI" */; - productName = NukeUI; - }; 628B95342670CAEA0091AF3B /* JellyfinAPI */ = { isa = XCSwiftPackageProductDependency; package = 53A431BB266B0FF20016769F /* XCRemoteSwiftPackageReference "jellyfin-sdk-swift" */; @@ -2584,6 +2524,16 @@ package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; productName = Defaults; }; + E1218C99271A26BA00EA0737 /* Nuke */ = { + isa = XCSwiftPackageProductDependency; + package = E1218C98271A26BA00EA0737 /* XCRemoteSwiftPackageReference "Nuke" */; + productName = Nuke; + }; + E1218C9B271A26C400EA0737 /* Nuke */ = { + isa = XCSwiftPackageProductDependency; + package = E1218C98271A26BA00EA0737 /* XCRemoteSwiftPackageReference "Nuke" */; + productName = Nuke; + }; E13DD3C52716499E009D4DAF /* CoreStore */ = { isa = XCSwiftPackageProductDependency; package = E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */; @@ -2609,6 +2559,16 @@ package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; productName = Defaults; }; + E1B6DCE7271A23780015B715 /* CombineExt */ = { + isa = XCSwiftPackageProductDependency; + package = E1267D42271A212C003C492E /* XCRemoteSwiftPackageReference "CombineExt" */; + productName = CombineExt; + }; + E1B6DCE9271A23880015B715 /* SwiftyJSON */ = { + isa = XCSwiftPackageProductDependency; + package = E1C16B89271A2180009A5D25 /* XCRemoteSwiftPackageReference "SwiftyJSON" */; + productName = SwiftyJSON; + }; /* End XCSwiftPackageProductDependency section */ }; rootObject = 5377CBE9263B596A003A4E83 /* Project object */; diff --git a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved index bfb7d2f1..1edb1d0f 100644 --- a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -20,21 +20,12 @@ } }, { - "package": "combine-schedulers", - "repositoryURL": "https://github.com/pointfreeco/combine-schedulers", + "package": "CombineExt", + "repositoryURL": "https://github.com/CombineCommunity/CombineExt", "state": { "branch": null, - "revision": "6bde3b0063ba8e7537b43744948535ca7e9e0dad", - "version": "0.5.2" - } - }, - { - "package": "CombineExt", - "repositoryURL": "https://github.com/acvigue/CombineExt", - "state": { - "branch": "main", - "revision": "f629c5b052d1cb5d03e10890deccc50e4c649e68", - "version": null + "revision": "0880829102152185190064fd17847a7c681d2127", + "version": "1.5.1" } }, { @@ -55,15 +46,6 @@ "version": "6.0.0" } }, - { - "package": "Gifu", - "repositoryURL": "https://github.com/kaishin/Gifu", - "state": { - "branch": null, - "revision": "51f2eab32903e336f590c013267cfa4d7f8b06c4", - "version": "3.3.1" - } - }, { "package": "JellyfinAPI", "repositoryURL": "https://github.com/jellyfin/jellyfin-sdk-swift", @@ -75,20 +57,11 @@ }, { "package": "Nuke", - "repositoryURL": "https://github.com/kean/Nuke.git", + "repositoryURL": "https://github.com/kean/Nuke", "state": { "branch": null, - "revision": "0db18dd34998cca18e9a28bcee136f84518007a0", - "version": "10.4.1" - } - }, - { - "package": "NukeUI", - "repositoryURL": "https://github.com/kean/NukeUI", - "state": { - "branch": null, - "revision": "d2580b8d22b29c6244418d8e4b568f3162191460", - "version": "0.3.0" + "revision": "7f73ceaeacd5df75a7994cd82e165ad9ff1815db", + "version": "9.6.1" } }, { @@ -139,19 +112,10 @@ { "package": "SwiftyJSON", "repositoryURL": "https://github.com/SwiftyJSON/SwiftyJSON", - "state": { - "branch": "master", - "revision": "b3dcd7dbd0d488e1a7077cb33b00f2083e382f07", - "version": null - } - }, - { - "package": "xctest-dynamic-overlay", - "repositoryURL": "https://github.com/pointfreeco/xctest-dynamic-overlay", "state": { "branch": null, - "revision": "50a70a9d3583fe228ce672e8923010c8df2deddd", - "version": "0.2.1" + "revision": "b3dcd7dbd0d488e1a7077cb33b00f2083e382f07", + "version": "5.0.1" } } ] diff --git a/JellyfinPlayer/App/AppDelegate.swift b/JellyfinPlayer/App/AppDelegate.swift index c696bf56..1da457bf 100644 --- a/JellyfinPlayer/App/AppDelegate.swift +++ b/JellyfinPlayer/App/AppDelegate.swift @@ -17,10 +17,16 @@ class AppDelegate: NSObject, UIApplicationDelegate { // Lazily initialize datastack let _ = SwiftfinStore.dataStack + setupAppearance() + return true } func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { AppDelegate.orientationLock } + + private func setupAppearance() { +// UIApplication.shared.windows.first?.overrideUserInterfaceStyle = appAppearance.style + } } diff --git a/JellyfinPlayer/App/JellyfinPlayerApp.swift b/JellyfinPlayer/App/JellyfinPlayerApp.swift index 99e0f929..8810e4ce 100644 --- a/JellyfinPlayer/App/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/App/JellyfinPlayerApp.swift @@ -10,19 +10,29 @@ import MessageUI import Stinsen import SwiftUI -extension UIDevice { - var hasNotch: Bool { - let bottom = UIApplication.shared.windows.filter { $0.isKeyWindow }.first?.safeAreaInsets.bottom ?? 0 - return bottom > 0 - } -} - -extension View { - func withHostingWindow(_ callback: @escaping (UIWindow?) -> Void) -> some View { - background(HostingWindowFinder(callback: callback)) +// MARK: JellyfinPlayerApp +@main +struct JellyfinPlayerApp: App { + @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate + @Default(.appAppearance) var appAppearance + + var body: some Scene { + WindowGroup { + EmptyView() + .withHostingWindow { window in + window?.rootViewController = PreferenceUIHostingController(wrappedView: MainCoordinator().view()) + } + .onShake { + EmailHelper.shared.sendLogs(logURL: LogManager.shared.logFileURL()) + } + .onOpenURL { url in + AppURLHandler.shared.processDeepLink(url: url) + } + } } } +// MARK: Hosting Window struct HostingWindowFinder: UIViewRepresentable { var callback: (UIWindow?) -> Void @@ -37,134 +47,8 @@ struct HostingWindowFinder: UIViewRepresentable { func updateUIView(_ uiView: UIView, context: Context) {} } -struct PrefersHomeIndicatorAutoHiddenPreferenceKey: PreferenceKey { - typealias Value = Bool - - static var defaultValue: Value = false - - static func reduce(value: inout Value, nextValue: () -> Value) { - value = nextValue() || value - } -} - -struct ViewPreferenceKey: PreferenceKey { - typealias Value = UIUserInterfaceStyle - - static var defaultValue: UIUserInterfaceStyle = .unspecified - - static func reduce(value: inout UIUserInterfaceStyle, nextValue: () -> UIUserInterfaceStyle) { - value = nextValue() - } -} - -struct SupportedOrientationsPreferenceKey: PreferenceKey { - typealias Value = UIInterfaceOrientationMask - static var defaultValue: UIInterfaceOrientationMask = .allButUpsideDown - - static func reduce(value: inout UIInterfaceOrientationMask, nextValue: () -> UIInterfaceOrientationMask) { - // use the most restrictive set from the stack - value.formIntersection(nextValue()) - } -} - -class PreferenceUIHostingController: UIHostingController { - init(wrappedView: V) { - let box = Box() - super.init(rootView: AnyView(wrappedView - .onPreferenceChange(PrefersHomeIndicatorAutoHiddenPreferenceKey.self) { - box.value?._prefersHomeIndicatorAutoHidden = $0 - }.onPreferenceChange(SupportedOrientationsPreferenceKey.self) { - box.value?._orientations = $0 - }.onPreferenceChange(ViewPreferenceKey.self) { - box.value?._viewPreference = $0 - })) - box.value = self - } - - @objc dynamic required init?(coder aDecoder: NSCoder) { - super.init(coder: aDecoder) - super.modalPresentationStyle = .fullScreen - } - - private class Box { - weak var value: PreferenceUIHostingController? - init() {} - } - - // MARK: Prefers Home Indicator Auto Hidden - - public var _prefersHomeIndicatorAutoHidden = false { - didSet { setNeedsUpdateOfHomeIndicatorAutoHidden() } - } - - override var prefersHomeIndicatorAutoHidden: Bool { - _prefersHomeIndicatorAutoHidden - } - - // MARK: Lock orientation - - public var _orientations: UIInterfaceOrientationMask = .allButUpsideDown { - didSet { - if _orientations == .landscape { - let value = UIInterfaceOrientation.landscapeRight.rawValue - UIDevice.current.setValue(value, forKey: "orientation") - UIViewController.attemptRotationToDeviceOrientation() - } - } - } - - override var supportedInterfaceOrientations: UIInterfaceOrientationMask { - _orientations - } - - public var _viewPreference: UIUserInterfaceStyle = .unspecified { - didSet { - overrideUserInterfaceStyle = _viewPreference - } - } -} - extension View { - // Controls the application's preferred home indicator auto-hiding when this view is shown. - func prefersHomeIndicatorAutoHidden(_ value: Bool) -> some View { - preference(key: PrefersHomeIndicatorAutoHiddenPreferenceKey.self, value: value) - } - - func supportedOrientations(_ supportedOrientations: UIInterfaceOrientationMask) -> some View { - // When rendered, export the requested orientations upward to Root - preference(key: SupportedOrientationsPreferenceKey.self, value: supportedOrientations) - } - - func overrideViewPreference(_ viewPreference: UIUserInterfaceStyle) -> some View { - // When rendered, export the requested orientations upward to Root - preference(key: ViewPreferenceKey.self, value: viewPreference) - } -} - -@main -struct JellyfinPlayerApp: App { - @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate - @Default(.appAppearance) var appAppearance - - var body: some Scene { - WindowGroup { - EmptyView() - .onAppear { - setupAppearance() - } - .withHostingWindow { window in - window?.rootViewController = PreferenceUIHostingController(wrappedView: MainCoordinator().view()) - } - .onShake { - EmailHelper.shared.sendLogs(logURL: LogManager.shared.logFileURL()) - } - .onOpenURL { url in - AppURLHandler.shared.processDeepLink(url: url) - } - } - } - - private func setupAppearance() { - UIApplication.shared.windows.first?.overrideUserInterfaceStyle = appAppearance.style + func withHostingWindow(_ callback: @escaping (UIWindow?) -> Void) -> some View { + background(HostingWindowFinder(callback: callback)) } } diff --git a/JellyfinPlayer/App/PreferenceUIHostingController.swift b/JellyfinPlayer/App/PreferenceUIHostingController.swift new file mode 100644 index 00000000..d6146c75 --- /dev/null +++ b/JellyfinPlayer/App/PreferenceUIHostingController.swift @@ -0,0 +1,118 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import UIKit +import SwiftUI + +// MARK: PreferenceUIHostingController +class PreferenceUIHostingController: UIHostingController { + init(wrappedView: V) { + let box = Box() + super.init(rootView: AnyView(wrappedView + .onPreferenceChange(PrefersHomeIndicatorAutoHiddenPreferenceKey.self) { + box.value?._prefersHomeIndicatorAutoHidden = $0 + }.onPreferenceChange(SupportedOrientationsPreferenceKey.self) { + box.value?._orientations = $0 + }.onPreferenceChange(ViewPreferenceKey.self) { + box.value?._viewPreference = $0 + })) + box.value = self + } + + @objc dynamic required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + super.modalPresentationStyle = .fullScreen + } + + private class Box { + weak var value: PreferenceUIHostingController? + init() {} + } + + // MARK: Prefers Home Indicator Auto Hidden + + public var _prefersHomeIndicatorAutoHidden = false { + didSet { setNeedsUpdateOfHomeIndicatorAutoHidden() } + } + + override var prefersHomeIndicatorAutoHidden: Bool { + _prefersHomeIndicatorAutoHidden + } + + // MARK: Lock orientation + + public var _orientations: UIInterfaceOrientationMask = .allButUpsideDown { + didSet { + if _orientations == .landscape { + let value = UIInterfaceOrientation.landscapeRight.rawValue + UIDevice.current.setValue(value, forKey: "orientation") + UIViewController.attemptRotationToDeviceOrientation() + } + } + } + + override var supportedInterfaceOrientations: UIInterfaceOrientationMask { + _orientations + } + + public var _viewPreference: UIUserInterfaceStyle = .unspecified { + didSet { + overrideUserInterfaceStyle = _viewPreference + } + } +} + +// MARK: Preference Keys +struct PrefersHomeIndicatorAutoHiddenPreferenceKey: PreferenceKey { + typealias Value = Bool + + static var defaultValue: Value = false + + static func reduce(value: inout Value, nextValue: () -> Value) { + value = nextValue() || value + } +} + +struct ViewPreferenceKey: PreferenceKey { + typealias Value = UIUserInterfaceStyle + + static var defaultValue: UIUserInterfaceStyle = .unspecified + + static func reduce(value: inout UIUserInterfaceStyle, nextValue: () -> UIUserInterfaceStyle) { + value = nextValue() + } +} + +struct SupportedOrientationsPreferenceKey: PreferenceKey { + typealias Value = UIInterfaceOrientationMask + static var defaultValue: UIInterfaceOrientationMask = .allButUpsideDown + + static func reduce(value: inout UIInterfaceOrientationMask, nextValue: () -> UIInterfaceOrientationMask) { + // use the most restrictive set from the stack + value.formIntersection(nextValue()) + } +} + +// MARK: Preference Key View Extension +extension View { + // Controls the application's preferred home indicator auto-hiding when this view is shown. + func prefersHomeIndicatorAutoHidden(_ value: Bool) -> some View { + preference(key: PrefersHomeIndicatorAutoHiddenPreferenceKey.self, value: value) + } + + func supportedOrientations(_ supportedOrientations: UIInterfaceOrientationMask) -> some View { + // When rendered, export the requested orientations upward to Root + preference(key: SupportedOrientationsPreferenceKey.self, value: supportedOrientations) + } + + func overrideViewPreference(_ viewPreference: UIUserInterfaceStyle) -> some View { + // When rendered, export the requested orientations upward to Root + preference(key: ViewPreferenceKey.self, value: viewPreference) + } +} diff --git a/JellyfinPlayer/Views/SplashView.swift b/JellyfinPlayer/Views/SplashView.swift deleted file mode 100644 index fd099537..00000000 --- a/JellyfinPlayer/Views/SplashView.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -/* - * SwiftFin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import Stinsen -import SwiftUI - -struct SplashView: View { - @EnvironmentObject var mainRouter: MainCoordinator.Router - @StateObject var viewModel = SplashViewModel() - - var body: some View { - ProgressView() - .onReceive(viewModel.$isLoggedIn) { flag in - if flag { - mainRouter.root(\.mainTab) - } else { - mainRouter.root(\.serverList) - } - } - } -} diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index ac03ec61..85dfc7a9 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -53,7 +53,7 @@ final class ConnectToServerViewModel: ViewModel { discoveredServers.removeAll() searching = true - // Timeout after 5 seconds + // Timeout after 3 seconds DispatchQueue.main.asyncAfter(deadline: .now() + 3) { self.searching = false } diff --git a/Shared/ViewModels/SplashViewModel.swift b/Shared/ViewModels/SplashViewModel.swift deleted file mode 100644 index 22d2c308..00000000 --- a/Shared/ViewModels/SplashViewModel.swift +++ /dev/null @@ -1,51 +0,0 @@ -// - /* - * SwiftFin is subject to the terms of the Mozilla Public - * License, v2.0. If a copy of the MPL was not distributed with this - * file, you can obtain one at https://mozilla.org/MPL/2.0/. - * - * Copyright 2021 Aiden Vigue & Jellyfin Contributors - */ - -import Foundation -import Combine -import Nuke -import UIKit - -#if !os(tvOS) -import WidgetKit -#endif - -// TODO: Remove SplashViewModel - -final class SplashViewModel: ViewModel { - - @Published var isLoggedIn: Bool = false - - override init() { - isLoggedIn = SessionManager.main.currentLogin != nil - super.init() - - ImageCache.shared.costLimit = 125 * 1024 * 1024 // 125MB memory - DataLoader.sharedUrlCache.diskCapacity = 1000 * 1024 * 1024 // 1000MB disk - - #if !os(tvOS) - WidgetCenter.shared.reloadAllTimelines() - UIScrollView.appearance().keyboardDismissMode = .onDrag - #endif - - let nc = NotificationCenter.default - nc.addObserver(self, selector: #selector(didLogIn), name: Notification.Name("didSignIn"), object: nil) - nc.addObserver(self, selector: #selector(didLogOut), name: Notification.Name("didSignOut"), object: nil) - } - - @objc func didLogIn() { - LogManager.shared.log.info("Received `didSignIn` from NSNotificationCenter.") - isLoggedIn = true - } - - @objc func didLogOut() { - LogManager.shared.log.info("Received `didSignOut` from NSNotificationCenter.") - isLoggedIn = false - } -} diff --git a/Shared/Views/ImageView.swift b/Shared/Views/ImageView.swift index 1acfc099..10044b21 100644 --- a/Shared/Views/ImageView.swift +++ b/Shared/Views/ImageView.swift @@ -8,7 +8,6 @@ */ import SwiftUI -import NukeUI struct ImageView: View { private let source: URL @@ -20,21 +19,35 @@ struct ImageView: View { self.blurhash = bh self.failureInitials = failureInitials } + + @ViewBuilder + private var placeholderImage: some View { + Image(uiImage: UIImage(blurHash: blurhash, size: CGSize(width: 8, height: 8)) ?? UIImage(blurHash: "001fC^", size: CGSize(width: 8, height: 8))!) + .resizable() + } + + @ViewBuilder + private var failureImage: some View { + ZStack { + Rectangle() + .foregroundColor(Color.systemFill) + + Text(failureInitials) + .font(.largeTitle) + .foregroundColor(.secondary) + } + } var body: some View { - LazyImage(source: source) - .placeholder { - Image(uiImage: UIImage(blurHash: blurhash, size: CGSize(width: 8, height: 8)) ?? UIImage(blurHash: "001fC^", size: CGSize(width: 8, height: 8))!) - .resizable() - } - .failure { - ZStack { - Rectangle() - .foregroundColor(Color.systemFill) - - Text(failureInitials) - .font(.largeTitle) - .foregroundColor(.secondary) + AsyncImage(url: source) { phase in + if let image = phase.image { + image + .resizable() + .aspectRatio(contentMode: .fill) + } else if phase.error != nil { + failureImage + } else { + placeholderImage } } } From a0562e9e9d38793f450ca4d4f42f38e5c365cc2a Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 15:25:56 -0600 Subject: [PATCH 44/88] Cleanup and symbol unification --- JellyfinPlayer/Views/HomeView.swift | 3 ++- JellyfinPlayer/Views/ItemView/ItemView.swift | 4 ++-- JellyfinPlayer/Views/ServerListView.swift | 2 +- .../Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/JellyfinPlayer/Views/HomeView.swift b/JellyfinPlayer/Views/HomeView.swift index fe0f1f46..15c3001c 100644 --- a/JellyfinPlayer/Views/HomeView.swift +++ b/JellyfinPlayer/Views/HomeView.swift @@ -11,6 +11,7 @@ import Foundation import SwiftUI struct HomeView: View { + @EnvironmentObject var homeRouter: HomeCoordinator.Router @StateObject var viewModel = HomeViewModel() @@ -65,7 +66,7 @@ struct HomeView: View { Button { homeRouter.route(to: \.settings) } label: { - Image(systemName: "gear") + Image(systemName: "gearshape.fill") } } } diff --git a/JellyfinPlayer/Views/ItemView/ItemView.swift b/JellyfinPlayer/Views/ItemView/ItemView.swift index 859fa6ec..de799478 100644 --- a/JellyfinPlayer/Views/ItemView/ItemView.swift +++ b/JellyfinPlayer/Views/ItemView/ItemView.swift @@ -66,7 +66,7 @@ fileprivate struct ItemView: View { Label("Show Series", systemImage: "text.below.photo") } } label: { - Image(systemName: "ellipsis.circle") + Image(systemName: "ellipsis.circle.fill") } case .episode: Menu { @@ -81,7 +81,7 @@ fileprivate struct ItemView: View { Label("Show Season", systemImage: "square.fill.text.grid.1x2") } } label: { - Image(systemName: "ellipsis.circle") + Image(systemName: "ellipsis.circle.fill") } default: EmptyView() diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index f2c2a6b3..c920a56e 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -119,7 +119,7 @@ struct ServerListView: View { Button { serverListRouter.route(to: \.basicAppSettings) } label: { - Image(systemName: "gear") + Image(systemName: "gearshape.fill") } } diff --git a/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift b/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift index fb9bec12..82edaedf 100644 --- a/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift +++ b/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift @@ -50,7 +50,7 @@ final class MainTabCoordinator: TabCoordinatable { @ViewBuilder func makeSettingsTab(isActive: Bool) -> some View { HStack { - Image(systemName: "gear") + Image(systemName: "gearshape.fill") Text("Settings") } } From b5b2eb56a18512a390f6af032acbde3cee3e96cd Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 15:38:10 -0600 Subject: [PATCH 45/88] Fix appearance color bug --- JellyfinPlayer/App/AppDelegate.swift | 7 +------ JellyfinPlayer/App/JellyfinPlayerApp.swift | 11 ++++++++++- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/JellyfinPlayer/App/AppDelegate.swift b/JellyfinPlayer/App/AppDelegate.swift index 1da457bf..d41c406f 100644 --- a/JellyfinPlayer/App/AppDelegate.swift +++ b/JellyfinPlayer/App/AppDelegate.swift @@ -7,6 +7,7 @@ * Copyright 2021 Aiden Vigue & Jellyfin Contributors */ +import SwiftUI import UIKit class AppDelegate: NSObject, UIApplicationDelegate { @@ -17,16 +18,10 @@ class AppDelegate: NSObject, UIApplicationDelegate { // Lazily initialize datastack let _ = SwiftfinStore.dataStack - setupAppearance() - return true } func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { AppDelegate.orientationLock } - - private func setupAppearance() { -// UIApplication.shared.windows.first?.overrideUserInterfaceStyle = appAppearance.style - } } diff --git a/JellyfinPlayer/App/JellyfinPlayerApp.swift b/JellyfinPlayer/App/JellyfinPlayerApp.swift index 8810e4ce..bfd5b86e 100644 --- a/JellyfinPlayer/App/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/App/JellyfinPlayerApp.swift @@ -18,7 +18,12 @@ struct JellyfinPlayerApp: App { var body: some Scene { WindowGroup { - EmptyView() + // TODO: Replace with a SplashView + Color(appAppearance.style == .dark ? UIColor.black : UIColor.white) + .ignoresSafeArea() + .onAppear { + setupAppearance() + } .withHostingWindow { window in window?.rootViewController = PreferenceUIHostingController(wrappedView: MainCoordinator().view()) } @@ -30,6 +35,10 @@ struct JellyfinPlayerApp: App { } } } + + private func setupAppearance() { + UIApplication.shared.windows.first?.overrideUserInterfaceStyle = appAppearance.style + } } // MARK: Hosting Window From 299fa6dc2aa173daf7c136f3e02e5fdb26a530ab Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 15:39:01 -0600 Subject: [PATCH 46/88] Update JellyfinPlayerApp.swift --- JellyfinPlayer/App/JellyfinPlayerApp.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/JellyfinPlayer/App/JellyfinPlayerApp.swift b/JellyfinPlayer/App/JellyfinPlayerApp.swift index bfd5b86e..e0ba712b 100644 --- a/JellyfinPlayer/App/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/App/JellyfinPlayerApp.swift @@ -13,6 +13,7 @@ import SwiftUI // MARK: JellyfinPlayerApp @main struct JellyfinPlayerApp: App { + @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate @Default(.appAppearance) var appAppearance From ce22b737e184b6dd8c6dc2a06c7b958f4a76031e Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 15:41:50 -0600 Subject: [PATCH 47/88] Fix dependencies on tvOS --- JellyfinPlayer.xcodeproj/project.pbxproj | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 45627dcb..e020a686 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -229,6 +229,8 @@ E12186DE2718F1C50010884C /* Defaults in Frameworks */ = {isa = PBXBuildFile; productRef = E12186DD2718F1C50010884C /* Defaults */; }; E1218C9A271A26BA00EA0737 /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = E1218C99271A26BA00EA0737 /* Nuke */; }; E1218C9C271A26C400EA0737 /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = E1218C9B271A26C400EA0737 /* Nuke */; }; + E1218C9E271A2CD600EA0737 /* CombineExt in Frameworks */ = {isa = PBXBuildFile; productRef = E1218C9D271A2CD600EA0737 /* CombineExt */; }; + E1218CA0271A2CF200EA0737 /* Nuke in Frameworks */ = {isa = PBXBuildFile; productRef = E1218C9F271A2CF200EA0737 /* Nuke */; }; E1267D3E271A1F46003C492E /* PreferenceUIHostingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1267D3D271A1F46003C492E /* PreferenceUIHostingController.swift */; }; E131691726C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */ = {isa = PBXBuildFile; fileRef = E131691626C583BC0074BFEE /* LogConstructor.swift */; }; @@ -584,7 +586,9 @@ buildActionMask = 2147483647; files = ( 53649AAF269CFAF600A2D8B7 /* Puppy in Frameworks */, + E1218C9E271A2CD600EA0737 /* CombineExt in Frameworks */, 53EC6E1E267E80AC006DD26A /* Pods_JellyfinPlayer_tvOS.framework in Frameworks */, + E1218CA0271A2CF200EA0737 /* Nuke in Frameworks */, 6220D0C926D63F3700B8E046 /* Stinsen in Frameworks */, 53A431BF266B0FFE0016769F /* JellyfinAPI in Frameworks */, 535870912669D7A800D05A09 /* Introspect in Frameworks */, @@ -1294,6 +1298,8 @@ 6220D0C826D63F3700B8E046 /* Stinsen */, E13DD3CC27164CA7009D4DAF /* CoreStore */, E12186DD2718F1C50010884C /* Defaults */, + E1218C9D271A2CD600EA0737 /* CombineExt */, + E1218C9F271A2CF200EA0737 /* Nuke */, ); productName = "JellyfinPlayer tvOS"; productReference = 535870602669D21600D05A09 /* JellyfinPlayer tvOS.app */; @@ -2534,6 +2540,16 @@ package = E1218C98271A26BA00EA0737 /* XCRemoteSwiftPackageReference "Nuke" */; productName = Nuke; }; + E1218C9D271A2CD600EA0737 /* CombineExt */ = { + isa = XCSwiftPackageProductDependency; + package = E1267D42271A212C003C492E /* XCRemoteSwiftPackageReference "CombineExt" */; + productName = CombineExt; + }; + E1218C9F271A2CF200EA0737 /* Nuke */ = { + isa = XCSwiftPackageProductDependency; + package = E1218C98271A26BA00EA0737 /* XCRemoteSwiftPackageReference "Nuke" */; + productName = Nuke; + }; E13DD3C52716499E009D4DAF /* CoreStore */ = { isa = XCSwiftPackageProductDependency; package = E13DD3C42716499E009D4DAF /* XCRemoteSwiftPackageReference "CoreStore" */; From 6220a00fc0e5ef751b90d7d5ff5d7fc57affb057 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 16:04:41 -0600 Subject: [PATCH 48/88] Fix appearance splash --- JellyfinPlayer/App/JellyfinPlayerApp.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JellyfinPlayer/App/JellyfinPlayerApp.swift b/JellyfinPlayer/App/JellyfinPlayerApp.swift index e0ba712b..34e5c3fa 100644 --- a/JellyfinPlayer/App/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/App/JellyfinPlayerApp.swift @@ -20,7 +20,7 @@ struct JellyfinPlayerApp: App { var body: some Scene { WindowGroup { // TODO: Replace with a SplashView - Color(appAppearance.style == .dark ? UIColor.black : UIColor.white) + Color(appAppearance.style == .light ? UIColor.white : UIColor.black) .ignoresSafeArea() .onAppear { setupAppearance() From 2d083eb8f5f9baf3744b58fe2d5093320349b955 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Fri, 15 Oct 2021 16:16:50 -0600 Subject: [PATCH 49/88] Fix merge problems --- JellyfinPlayer.xcodeproj/project.pbxproj | 39 +++++++++++++++--------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 13a19f21..99d65e08 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -220,8 +220,6 @@ 62ECA01826FA685A00E8EBB7 /* DeepLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62ECA01726FA685A00E8EBB7 /* DeepLink.swift */; }; AE8C3159265D6F90008AA076 /* bitrates.json in Resources */ = {isa = PBXBuildFile; fileRef = AE8C3158265D6F90008AA076 /* bitrates.json */; }; C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA5126D04AAF00CC4EB7 /* ColorExtension.swift */; }; - C49FB6592717A06300AAEABB /* SwiftUICollection in Frameworks */ = {isa = PBXBuildFile; productRef = C49FB6582717A06300AAEABB /* SwiftUICollection */; }; - C4BFD4E527167B63007739E3 /* SwiftUICollection in Frameworks */ = {isa = PBXBuildFile; productRef = C4BFD4E427167B63007739E3 /* SwiftUICollection */; }; C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E508172703E8190045C9AB /* LibraryListView.swift */; }; C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */; }; E100720726BDABC100CE3E31 /* MediaPlayButtonRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */; }; @@ -302,6 +300,8 @@ E193D5502719430400900D82 /* ServerDetailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D54F2719430400900D82 /* ServerDetailView.swift */; }; E193D5512719432400900D82 /* ServerDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA5326D050F500CC4EB7 /* ServerDetailViewModel.swift */; }; E193D553271943D500900D82 /* tvOSMainTabCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D552271943D500900D82 /* tvOSMainTabCoordinator.swift */; }; + E1A99999271A3429008E78C0 /* SwiftUICollection in Frameworks */ = {isa = PBXBuildFile; productRef = E1A99998271A3429008E78C0 /* SwiftUICollection */; }; + E1A9999B271A343C008E78C0 /* SwiftUICollection in Frameworks */ = {isa = PBXBuildFile; productRef = E1A9999A271A343C008E78C0 /* SwiftUICollection */; }; E1AD104A26D94822003E4A08 /* DetailItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104926D94822003E4A08 /* DetailItem.swift */; }; E1AD104B26D94822003E4A08 /* DetailItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104926D94822003E4A08 /* DetailItem.swift */; }; E1AD104D26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1AD104C26D96CE3003E4A08 /* BaseItemDtoExtensions.swift */; }; @@ -595,8 +595,8 @@ 53A431BF266B0FFE0016769F /* JellyfinAPI in Frameworks */, 535870912669D7A800D05A09 /* Introspect in Frameworks */, 536D3D84267BEA550004248C /* ParallaxView in Frameworks */, - C49FB6592717A06300AAEABB /* SwiftUICollection in Frameworks */, 53ABFDDC267972BF00886593 /* TVServices.framework in Frameworks */, + E1A9999B271A343C008E78C0 /* SwiftUICollection in Frameworks */, E13DD3CD27164CA7009D4DAF /* CoreStore in Frameworks */, E12186DE2718F1C50010884C /* Defaults in Frameworks */, 53ABFDED26799D7700886593 /* ActivityIndicator in Frameworks */, @@ -610,8 +610,7 @@ E13DD3D327168E65009D4DAF /* Defaults in Frameworks */, 53649AAD269CFAEA00A2D8B7 /* Puppy in Frameworks */, 62C29E9C26D0FE4200C1D2E7 /* Stinsen in Frameworks */, - - C4BFD4E527167B63007739E3 /* SwiftUICollection in Frameworks */, + E1A99999271A3429008E78C0 /* SwiftUICollection in Frameworks */, 53EC6E21267E80B1006DD26A /* Pods_JellyfinPlayer_iOS.framework in Frameworks */, E1218C9A271A26BA00EA0737 /* Nuke in Frameworks */, E1B6DCEA271A23880015B715 /* SwiftyJSON in Frameworks */, @@ -1305,7 +1304,7 @@ E12186DD2718F1C50010884C /* Defaults */, E1218C9D271A2CD600EA0737 /* CombineExt */, E1218C9F271A2CF200EA0737 /* Nuke */, - C49FB6582717A06300AAEABB /* SwiftUICollection */, + E1A9999A271A343C008E78C0 /* SwiftUICollection */, ); productName = "JellyfinPlayer tvOS"; productReference = 535870602669D21600D05A09 /* JellyfinPlayer tvOS.app */; @@ -1341,7 +1340,7 @@ E1B6DCE7271A23780015B715 /* CombineExt */, E1B6DCE9271A23880015B715 /* SwiftyJSON */, E1218C99271A26BA00EA0737 /* Nuke */, - C4BFD4E427167B63007739E3 /* SwiftUICollection */, + E1A99998271A3429008E78C0 /* SwiftUICollection */, ); productName = JellyfinPlayer; productReference = 5377CBF1263B596A003A4E83 /* JellyfinPlayer iOS.app */; @@ -2420,6 +2419,14 @@ minimumVersion = 2.0.2; }; }; + C4BFD4E327167B63007739E3 /* XCRemoteSwiftPackageReference "SwiftUICollection" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/ABJC/SwiftUICollection"; + requirement = { + branch = master; + kind = branch; + }; + }; E1218C98271A26BA00EA0737 /* XCRemoteSwiftPackageReference "Nuke" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kean/Nuke"; @@ -2460,14 +2467,6 @@ minimumVersion = 5.0.0; }; }; - C4BFD4E327167B63007739E3 /* XCRemoteSwiftPackageReference "SwiftUICollection" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/ABJC/SwiftUICollection"; - requirement = { - branch = master; - kind = branch; - }; - }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ @@ -2591,6 +2590,16 @@ package = E13DD3D127168E65009D4DAF /* XCRemoteSwiftPackageReference "Defaults" */; productName = Defaults; }; + E1A99998271A3429008E78C0 /* SwiftUICollection */ = { + isa = XCSwiftPackageProductDependency; + package = C4BFD4E327167B63007739E3 /* XCRemoteSwiftPackageReference "SwiftUICollection" */; + productName = SwiftUICollection; + }; + E1A9999A271A343C008E78C0 /* SwiftUICollection */ = { + isa = XCSwiftPackageProductDependency; + package = C4BFD4E327167B63007739E3 /* XCRemoteSwiftPackageReference "SwiftUICollection" */; + productName = SwiftUICollection; + }; E1B6DCE7271A23780015B715 /* CombineExt */ = { isa = XCSwiftPackageProductDependency; package = E1267D42271A212C003C492E /* XCRemoteSwiftPackageReference "CombineExt" */; From cdec38be7ad0f77be9f09c8ab29a80af920ae5cc Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Sat, 16 Oct 2021 09:53:23 -0600 Subject: [PATCH 50/88] Review edits --- .../Views/ServerListView.swift | 4 +-- JellyfinPlayer tvOS/Views/UserListView.swift | 4 +-- JellyfinPlayer/Views/ServerListView.swift | 7 ++--- JellyfinPlayer/Views/UserListView.swift | 6 ++-- Shared/ViewModels/ViewModel.swift | 31 ------------------- 5 files changed, 8 insertions(+), 44 deletions(-) diff --git a/JellyfinPlayer tvOS/Views/ServerListView.swift b/JellyfinPlayer tvOS/Views/ServerListView.swift index 518750b5..5ca66b3f 100644 --- a/JellyfinPlayer tvOS/Views/ServerListView.swift +++ b/JellyfinPlayer tvOS/Views/ServerListView.swift @@ -18,7 +18,7 @@ struct ServerListView: View { @ViewBuilder private var listView: some View { ScrollView { - VStack { + LazyVStack { ForEach(viewModel.servers, id: \.id) { server in Button { serverListRouter.route(to: \.userList, server) @@ -46,7 +46,7 @@ struct ServerListView: View { Spacer() } } - .padding([.leading, .trailing], 100) + .padding(.horizontal, 100) .contextMenu { Button(role: .destructive) { viewModel.remove(server: server) diff --git a/JellyfinPlayer tvOS/Views/UserListView.swift b/JellyfinPlayer tvOS/Views/UserListView.swift index a35a21e2..85bcbe52 100644 --- a/JellyfinPlayer tvOS/Views/UserListView.swift +++ b/JellyfinPlayer tvOS/Views/UserListView.swift @@ -17,7 +17,7 @@ struct UserListView: View { @ViewBuilder private var listView: some View { ScrollView { - VStack { + LazyVStack { ForEach(viewModel.users, id: \.id) { user in Button { viewModel.login(user: user) @@ -33,7 +33,7 @@ struct UserListView: View { } } } - .padding([.leading, .trailing], 100) + .padding(.horizontal, 100) .contextMenu { Button(role: .destructive) { viewModel.remove(user: user) diff --git a/JellyfinPlayer/Views/ServerListView.swift b/JellyfinPlayer/Views/ServerListView.swift index c920a56e..bd0ea63e 100644 --- a/JellyfinPlayer/Views/ServerListView.swift +++ b/JellyfinPlayer/Views/ServerListView.swift @@ -15,10 +15,9 @@ struct ServerListView: View { @EnvironmentObject var serverListRouter: ServerListCoordinator.Router @ObservedObject var viewModel: ServerListViewModel - @ViewBuilder private var listView: some View { ScrollView { - VStack { + LazyVStack { ForEach(viewModel.servers, id: \.id) { server in Button { serverListRouter.route(to: \.userList, server) @@ -64,7 +63,6 @@ struct ServerListView: View { } } - @ViewBuilder private var noServerView: some View { VStack { Text("Connect to a Jellyfin server to get started") @@ -80,7 +78,7 @@ struct ServerListView: View { .frame(maxWidth: 400, maxHeight: 50) .frame(height: 50) .cornerRadius(10) - .padding([.leading, .trailing], 30) + .padding(.horizontal, 30) .padding([.top, .bottom], 20) Text("Connect") @@ -114,7 +112,6 @@ struct ServerListView: View { } } - @ViewBuilder private var leadingToolbarContent: some View { Button { serverListRouter.route(to: \.basicAppSettings) diff --git a/JellyfinPlayer/Views/UserListView.swift b/JellyfinPlayer/Views/UserListView.swift index 55ffb975..cd2f6411 100644 --- a/JellyfinPlayer/Views/UserListView.swift +++ b/JellyfinPlayer/Views/UserListView.swift @@ -14,10 +14,9 @@ struct UserListView: View { @EnvironmentObject var userListRouter: UserListCoordinator.Router @ObservedObject var viewModel: UserListViewModel - @ViewBuilder private var listView: some View { ScrollView { - VStack { + LazyVStack { ForEach(viewModel.users, id: \.id) { user in Button { viewModel.login(user: user) @@ -53,7 +52,6 @@ struct UserListView: View { } } - @ViewBuilder private var noUserView: some View { VStack { Text("Sign in to get started") @@ -69,7 +67,7 @@ struct UserListView: View { .frame(maxWidth: 400, maxHeight: 50) .frame(height: 50) .cornerRadius(10) - .padding([.leading, .trailing], 30) + .padding(.horizontal, 30) .padding([.top, .bottom], 20) Text("Sign in") diff --git a/Shared/ViewModels/ViewModel.swift b/Shared/ViewModels/ViewModel.swift index 001c6fed..75aefcf7 100644 --- a/Shared/ViewModels/ViewModel.swift +++ b/Shared/ViewModels/ViewModel.swift @@ -70,37 +70,6 @@ class ViewModel: ObservableObject { self.errorMessage = genericErrorMessage LogManager.shared.log.error("Request failed: Generic error - \(error.localizedDescription)") } - -// if let errorResponse = error as? ErrorResponse { -// -// let networkError: NetworkError -// -// switch errorResponse { -// case .error(-1, _, _, _): -// networkError = .URLError(response: errorResponse, displayMessage: displayMessage, logConstructor: logConstructor) -// // Use the errorResponse description for debugging, rather than the user-facing friendly description which may not be implemented -// LogManager.shared.log.error("Request failed: URL request failed with error \(networkError.errorMessage.code): \(errorResponse.localizedDescription)") -// case .error(-2, _, _, _): -// networkError = .HTTPURLError(response: errorResponse, displayMessage: displayMessage, logConstructor: logConstructor) -// LogManager.shared.log.error("Request failed: HTTP URL request failed with description: \(errorResponse.localizedDescription)") -// default: -// networkError = .JellyfinError(response: errorResponse, displayMessage: displayMessage, logConstructor: logConstructor) -// // Able to use user-facing friendly description here since just HTTP status codes -// LogManager.shared.log.error("Request failed: \(networkError.errorMessage.code) - \(networkError.errorMessage.title): \(networkError.errorMessage.logConstructor.message)\n\(error.localizedDescription)") -// } -// -// self.errorMessage = networkError.errorMessage -// -// networkError.logMessage() -// } else { -// let generalErrorMessage = ErrorMessage(code: 0, -// title: "Error", -// displayMessage: error.localizedDescription, -// logConstructor: logConstructor) -// -// self.errorMessage = generalErrorMessage -// LogManager.shared.log.error("Request failed: General error - \(error.localizedDescription)") -// } } } } From 9ac86a478a52a0e8d306b6b7697c3a87968217a3 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Sat, 16 Oct 2021 09:54:57 -0600 Subject: [PATCH 51/88] Fix cancelling connection and signin --- Shared/ViewModels/ConnectToServerViewModel.swift | 2 ++ Shared/ViewModels/UserSignInViewModel.swift | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index 85dfc7a9..2f4b1460 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -69,5 +69,7 @@ final class ConnectToServerViewModel: ViewModel { for cancellable in cancellables { cancellable.cancel() } + + self.isLoading = false } } diff --git a/Shared/ViewModels/UserSignInViewModel.swift b/Shared/ViewModels/UserSignInViewModel.swift index 01fc1428..14d2b115 100644 --- a/Shared/ViewModels/UserSignInViewModel.swift +++ b/Shared/ViewModels/UserSignInViewModel.swift @@ -48,5 +48,7 @@ final class UserSignInViewModel: ViewModel { for cancellable in cancellables { cancellable.cancel() } + + self.isLoading = false } } From 9a04a80a719f48c03572b35a5782314bb40f9ba9 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Sat, 16 Oct 2021 09:55:26 -0600 Subject: [PATCH 52/88] Connect to Sign In --- JellyfinPlayer/Views/UserSignInView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JellyfinPlayer/Views/UserSignInView.swift b/JellyfinPlayer/Views/UserSignInView.swift index f4f91fd9..3173cdd7 100644 --- a/JellyfinPlayer/Views/UserSignInView.swift +++ b/JellyfinPlayer/Views/UserSignInView.swift @@ -38,7 +38,7 @@ struct UserSignInView: View { Button { viewModel.login(username: username, password: password) } label: { - Text("Connect") + Text("Sign In") } .disabled(username.isEmpty) } From ccc09d5718ced367b1df976a5a94145bd87e40fd Mon Sep 17 00:00:00 2001 From: Aiden Vigue Date: Sun, 17 Oct 2021 16:42:47 -0400 Subject: [PATCH 53/88] push build num --- JellyfinPlayer.xcodeproj/project.pbxproj | 12 ++++++------ .../xcshareddata/swiftpm/Package.resolved | 4 ++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 99d65e08..85605874 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -2034,7 +2034,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 60; + CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; @@ -2064,7 +2064,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 60; + CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; @@ -2216,7 +2216,7 @@ CODE_SIGN_ENTITLEMENTS = JellyfinPlayer/JellyfinPlayer.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 60; + CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = ""; ENABLE_BITCODE = NO; @@ -2252,7 +2252,7 @@ CODE_SIGN_ENTITLEMENTS = JellyfinPlayer/JellyfinPlayer.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 60; + CURRENT_PROJECT_VERSION = 66; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_ASSET_PATHS = ""; DEVELOPMENT_TEAM = ""; @@ -2284,7 +2284,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 60; + CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = WidgetExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -2310,7 +2310,7 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 60; + CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_TEAM = ""; INFOPLIST_FILE = WidgetExtension/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 15.0; diff --git a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved index 5f5f3f80..5378c461 100644 --- a/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/JellyfinPlayer.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -42,8 +42,8 @@ "repositoryURL": "https://github.com/sindresorhus/Defaults", "state": { "branch": null, - "revision": "8a6e4a96fd38504a05903d136c85634b65fd7c4d", - "version": "6.0.0" + "revision": "55f3302c3ab30a8760f10042d0ebc0a6907f865a", + "version": "6.1.0" } }, { From ff5c068374ae1b393a9198f342b719f633612d88 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Mon, 18 Oct 2021 19:13:29 -0600 Subject: [PATCH 54/88] Add debug app icons --- .../Content.imageset/1280x768-back.png | Bin 0 -> 18963 bytes .../Content.imageset/Contents.json | 12 +++++++ .../Back.imagestacklayer/Contents.json | 6 ++++ .../Contents.json | 14 ++++++++ .../Content.imageset/512.png | Bin 0 -> 104212 bytes .../Content.imageset/Contents.json | 12 +++++++ .../Front.imagestacklayer/Contents.json | 6 ++++ .../Content.imageset/400x240-back.png | Bin 0 -> 2332 bytes .../Content.imageset/Contents.json | 18 ++++++++++ .../Content.imageset/Webp.net-resizeimage.png | Bin 0 -> 7866 bytes .../Back.imagestacklayer/Contents.json | 6 ++++ .../App Icon.imagestack/Contents.json | 14 ++++++++ .../Content.imageset/216.png | Bin 0 -> 23903 bytes .../Content.imageset/Contents.json | 18 ++++++++++ .../Webp.net-resizeimage-2.png | Bin 0 -> 77973 bytes .../Front.imagestacklayer/Contents.json | 6 ++++ .../Contents.json | 32 ++++++++++++++++++ .../Contents.json | 28 +++++++++++++++ .../Untitled-1.png | Bin 0 -> 363447 bytes .../Untitled-2.png | Bin 0 -> 363447 bytes .../top shelf-1.png | Bin 0 -> 102829 bytes .../top shelf.png | Bin 0 -> 102829 bytes .../Top Shelf Image.imageset/Contents.json | 28 +++++++++++++++ .../Top Shelf Image.imageset/Untitled-1.png | Bin 0 -> 271255 bytes .../Top Shelf Image.imageset/Untitled-2.png | Bin 0 -> 271255 bytes .../Top Shelf Image.imageset/top shelf-1.png | Bin 0 -> 77946 bytes .../Top Shelf Image.imageset/top shelf.png | Bin 0 -> 77946 bytes JellyfinPlayer.xcodeproj/project.pbxproj | 4 +-- .../AppIcon-Dev.appiconset/100.png | Bin 0 -> 7906 bytes .../AppIcon-Dev.appiconset/1024.png | Bin 0 -> 231882 bytes .../AppIcon-Dev.appiconset/114.png | Bin 0 -> 9391 bytes .../AppIcon-Dev.appiconset/120.png | Bin 0 -> 9914 bytes .../AppIcon-Dev.appiconset/144.png | Bin 0 -> 12790 bytes .../AppIcon-Dev.appiconset/152.png | Bin 0 -> 13470 bytes .../AppIcon-Dev.appiconset/167.png | Bin 0 -> 15444 bytes .../AppIcon-Dev.appiconset/180.png | Bin 0 -> 17197 bytes .../AppIcon-Dev.appiconset/20.png | Bin 0 -> 893 bytes .../AppIcon-Dev.appiconset/29.png | Bin 0 -> 1523 bytes .../AppIcon-Dev.appiconset/40.png | Bin 0 -> 2505 bytes .../AppIcon-Dev.appiconset/50.png | Bin 0 -> 3454 bytes .../AppIcon-Dev.appiconset/57.png | Bin 0 -> 4017 bytes .../AppIcon-Dev.appiconset/58.png | Bin 0 -> 4138 bytes .../AppIcon-Dev.appiconset/60.png | Bin 0 -> 4374 bytes .../AppIcon-Dev.appiconset/72.png | Bin 0 -> 5488 bytes .../AppIcon-Dev.appiconset/76.png | Bin 0 -> 5733 bytes .../AppIcon-Dev.appiconset/80.png | Bin 0 -> 6012 bytes .../AppIcon-Dev.appiconset/87.png | Bin 0 -> 6624 bytes .../AppIcon-Dev.appiconset/Contents.json | 1 + 48 files changed, 203 insertions(+), 2 deletions(-) create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/1280x768-back.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/512.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/400x240-back.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Webp.net-resizeimage.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/216.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Webp.net-resizeimage-2.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Untitled-1.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Untitled-2.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/top shelf-1.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/top shelf.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Untitled-1.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Untitled-2.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/top shelf-1.png create mode 100644 JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/top shelf.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/100.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/1024.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/114.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/120.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/144.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/152.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/167.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/180.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/20.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/29.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/40.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/50.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/57.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/58.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/60.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/72.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/76.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/80.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/87.png create mode 100755 JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/Contents.json diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/1280x768-back.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/1280x768-back.png new file mode 100644 index 0000000000000000000000000000000000000000..f4ec4edaa50d6e7bcba269df89412a2c4363fc36 GIT binary patch literal 18963 zcmeI4J%|%Q6oB9EUX~cMdJ0O677;rY4R~^bO+5BIQ`{kk;1wxyg@?i+dUu5&!bU_% zK&-@ev9Ju7DshnIE+1ptRMQTzHPn@~p{CM{)kV?^ewEFwFxAnoXU2W&n z&$~yDe7SZ<9Csu?TB$|rLM!fVS=ioQKVgfs4mV|`u(7o)Rc^lAaXVFTt+B{?6J%A|ziEDRNuGc1oE+?JPrmv? zRB+K1z!Ehj`u znHZ6P)pA0>nhDieH)zz=V)>R{-?4nNoUn?vi?l=_nPE90nPC@cMj)ACIU$*$ZnYnW zlFYE2kj$`)v_v48K{A8i8#JJR255i=XiyD612m{D;2WR;8lXWn01eQfwt#Pd255i= z)c`a=gW3YV0UDqI8dL+&01avj_y%Zz253+XKm#rjoV*JlvvZVf#dhbY5!hCoF%GsBTjO9`G24oHjfwtc3mTvS8vaeg2RG>We;VI^ QB`AtBNrCE(EAAT8ZJz`)$WbKZ0A z|8VaQ`?L2vyPmb472g$mVl>qia4;z_5fBh?loVyP5fG5zhe!zMsPNqtVCEjaL-f#A zkVdE(quPi6khRuVvQbk*V1*x}BOpfEBfNON1in$gHv|Oa0z?F4_#W|jtN`ghXOR#J zkpK7i`9ds6V*~<%B!ZHx)O!HpQ3pnWwe1I{`+3o_(h^ps4_|r4iNeEQ^t=(DI3fLQ zu;*Pc>1`)Pu~fL6t}BJAC7Ul}St)4#;1qDbG~a296^faRh)$2Mh;Bt^MZ@axjdkBu z|8VW$Pg{%<>j$sH{OdLUo35wEx#qd0!!@7kz%jAgKPc6W3g_ioTd5(Dw)&)G8|2>`rY(p$pDg2+`I+^f+%pSGxIyL{fPjUre=G}j;PXn@yzz0+} zO6OVh{_DAt)&(vI2NeI;du-qXrEb%Qscg^hg`elq6hQF8`R{p1TAN|=!UuF(_PvJw zbDq4MGNkQ)p2x!#@jSrt=Sq0{zwU=mcLqoD(m-p#^$T>hQsQK^r z!LL^}M?F9_!xZRHZ~Y(gypT2L|IOzg`K4UQUdUV#IVNSs|ILoHXLdOLFMIw!JN{o{ z#}_t~XFc(>GTTc2dMtFv-!QF5J;l%QaSr!mTZ7ouz=`)^FJ3bxjbA|^^h9L2>||xq zTkK-M^L5Es9S_&`Kbh@9IJnyNL5(+VY7d;>sXjImaJDb2F%;2E`G`K@5$0RBgmc7_SD?qc__^*XnQnvch~F6}js2aTpZl`rr{i;re1p7m`c zBzTJLUr|kX2QH~R~Ko=$NhP$CXu#KzZlazn(@7Jq7xg5yW+9k zd%v9o&n#2|GDIsYfO}%w?a}J&>c#KMrSGP&Z9h=Ar-_Z%+$B45$_MlOJmWldYqL&U zv%4NSKn1Mj#uC78TC2Dso+Dzq>65~Y#^8dgee&mQ9>D-r8o2amLuU=12B+PwPMZX8 z+b*xIxc^j}`2kmJ!8g2I_xs{+w!RmzA?xG->-D}npNj31AOB6OOhaz;y*`8d0QZ5v zKjj+~l_xkonW6W1p?mCnl0EFCd;c_iJ>LX_M6fL*1GdcK;Fe~6eK;iO2(Po2ZF8vm z%EpYK?TqpawTpJm+rnrBWF~rnW-v;FChs zu7-SF9y}X(+catwIduy}LytUSgpKm%-K#OBW^|+%H zaWtk_3t9C_UwHX0R@X0?150*YP9w!jQk|*8n6~75_*_XxGIE1@B|tD3bXKp?$K+CO zMN{9TA3kNX8e6*I9^-`i%}Q+5Kva`x9|#OL8wUQZl8Dt12))|j_2a*HT2f7Q#fGxy z`Q^P-TRz3%YFX{*C@wRYd zz5_x107ygRUkPr$hTMRfKr=ZWu6>FLIYJ`W9cp z0sGda!E4bC-lLDV&3Zu>DaRMoBB*9s&&NR6Q?L%P7;7mx0&7Wt z)?L>BEJ<=x1);+VGz5=$T#}+fiDecKiW-RIoBj1bp59ZMF7#M{fVAB z2yL7nG&+w%PEj10OLpx=j^e-0?3IzQDMOcKK#dS2pVyfr$4&_d;2+E=GR~$cV1QS zRl&7Gy&s1l#uer2p_Ymw!-AGEj>{5+$qn3iKL|snD@b!sn{JoleB`IUD(20P=1v8a z)-RRiT=ZF#x90Rs;;ixdL$h=lJox&4fYy{- zo*Dlz=yKv3oLSJnKnyn`Qmq?h!RK~Zes|wOdZHDnc(>50POy1wKIsIZxgv>syZ?lq z+;`LMe3iFem$ae_{(~2OdSO7Gd4S!1ojJXPNA0dUF2&y;P?zho<4_A#`apD>z;3v5G=FDg4)6t~>&Sq_!sn=Xo*>pFtYx3$ z3$<=*pINo;Hz{(us5eHakf7p!5)w4lEs`Ks{OHCP++h{pSsrxwL^fHQ)fRKH?cFhg z8*^Qr*ZBt8^r-RcKqR_>R3)-$mDvrPb==_0u-3qmAXC5 zcxxZ*`^)#3{BUl_hWdHg9&>=@xDWI8zHoEtfw~%-@d)EEx!H9K>&ITg`P7G;q9z&~ z{MHb`PTA%o`4BSBHojUVU9#?$h6brp-i79Db`$~FLcp`1_+aWs%^K0V9^O=@rMhLT z2z62va61p;)jj{%D|gK6Gw+X-n<@;aPXqOUB;+w=_d=Uo6BVKk3-*5zw0n9Yd|qXu zmhz~j=2fRu-}=qVVh4s;kUY;*iJVgnW(NpZDQ=~O1kBRY=f~+K?D!*C4B!zTaR!=2 zxMoxGF?hBq)$TwVfmcL$i1QG`E-R&n;Cz1<5%`?@Pkvtgk-t*`7BqTR7V1{Xu=nvd!ERB2N2LHyJPU=i?0;wW0qk z?}IoTSJ$3;7}KyKA1jiwNU&Z2NNj)%;j2xbhxjX)k&a3&XgA2{ifG;p-txkNK9CD8n)qG3kQ(Bie3c_kMxfQ*3;+Go= zw3Hn3JouLIrBYX^$xsx}X^E2y7`mSq8welE2$Row>4fofs?@F z)faNIi@mQ~)@%II_5EKdk=hufU1E$U)Qvm71+ItMHhuW=lDT&0**nu(!M*d1l=iTd zbqIOOdScwMj|RZTsIMs+cZd`BdSOzP-^kQkeqVWz^HJq>)%iz>j47|n<2Ini@Qwxz zFYf(^Uew<9*yd&@M6}0Rq9-CwAwcfsVy7!6>Z6#`0uR+46Pu)^W*i?;9 z)(`bMW3Gp!oLbU#Ngjp#l%pDIiE(&qi=SA0B>LLj63N*-7TF@cbh3z64 zq*hqf(f**>at0~K4t9O3^?5iI#GfhZv>=W{$r6Ovgg1ua7ughnI$IAIfxq` zAj)@aE@amw?@tfuaSCnwl^AsygxU3?Up8Z&WbpWe=PW9lT*||d*cIS?4x_zc2p*uxlf$-gweoKB*KG2A7d0st!;Eb z*t?3mM4#$@I+t^pHq<^2MvOc4&nlpbc)_jHk@d4};v~{P8|wCPU0OBi+J@LU9hvOu z3fD2-Jk8mw6t~J<4(FhZIh1H;$DrwSOp(q|A%AE37Rl1@nSdzv4HKEi1=r~v)Mz*^ z9Z=&;gJl<5id7fg{0H+hc>vBEt@Mo-KDBc46l1>9S$46Ric7oQMX)#sUMOwL8M(7e zpeDW!JeI4~dsdbXWm90881lH0zum*OrMjMnXQf4d-)(v8kEFQ!Z0&Tl{DA4XS88^f zA})Q!?+#k!C|rdbDspI2ev?Ob{M9lUd|{uhZOHiLX|@a}lYq#Y0j9((&yW4L)y{1U zWj7u%I28AqARY!))T9!;BngpdS+BZ}MJW3gp9U<;g*zm`PzBq1gY7zmq;i=y7cf>% z@OyaUplB?f;^hE=3Y(a}4Q*dWb_Yei{k4oz0js$GYxeM@_$02gPiPTtkn+`ywT;Qz z>2U5&YO=Gij}-O1ZOn2oXwk6LxBzyW0o{va?&{3`b2Jkiko!epq6`LUD%N6=&{E1` z^cr^(EL4qhi4)|Z>@fG7@ez%{o&h0>N0gA1@YDvKYeQSt?wp6=JCNVvL|>hKW!Dc| zC7OEeUE4YthOf$^52c2gpP$}%JTd{B29o02%GgnhH8z;6!n79E(K^iW1Q6{F&3hHb zTt?!T-M~35c2I(NY0K#Svgy}kSiPI{TjN;)*n>iN!uD*J-Bh_9L25s3=TE#Rk9{z7 zqu}Ozeb5@N$be6Gtj9x=M(t+i4}qeW5_|`Xpp(gsQ8r?#-}AR zx8h72GiQ=d7hAGZ5@e(vxSt45oQ5PMS7_7D0K<#SO&Qd_`U~Y1a0dtAd6pRFlHT^Px(O5&8 zo(#=u_vWh5ooN5?=zj77)7@C{Ct2Qb79PplXO5ke+~X9rYw32-`nL@2rQ8_wrultm3a*#3S>G>rB-&E5bR zGQ6|gpHGiH+;hn*RDck<5Sv22avZo}zkSu#ZG>s0^d@tHiQ^ZI-C|y?n*S9MbMb=B zx*n&=%oD_S-0txF<$uLb%=yn^z1hk-$}-;VaaIM(QvemlmoSmUDdK=WV&XM5xQD&( z{oJm^>7lsdWTjb@@1%Spul8yEF3YutF}l>wO%Y$R!GgC92-u-=@FS%@7IBpaVDb%m z(2el6(h!|*S$X9X8kGHf#c4kHSJ*yA2l!3OvS|DYPn+k71mQzl@D!v7j-2|dO(s|2 z&T;uwkcH+yE@3=pX7e?(mF<^!YrWtZhX-cS$~%df2Sz)7zIU%YN1ZGV-1k%+)Wz)Y zMsflUcho{Deo)*^Ow@g6HpclF7?--lAe%W@+{lW#981oa5aw zVS+FJkUr5MJc}%v#GW?x9v=Vq$Q>uBi#9tO*3D2yeMAexQB-?p>+!XChi@kg+^j%& z;cx2_ zJ7AbiRk1nIJFtJ2@;>dZ0x52;67KipL~7O0cjX&}XY|3xEX&J2R35T*j?c+%8fG|Z zJrf*c(Sl0nN3dy8NmJZB>6!ExQikw083BXO2&Wx0M- z4%U5Py3^Dfvp8Q-O7qC*nF%5IkXi(qYPEZ26L&XU*p*s+uCq3QXUEeKt#oTt$z=#Z zq8ToDG)%rvCGmx^j#;Yv)&+zQ*k2)RojK^I0>a3?#0p{Pc!? zS8|Nr%=?1m>^DrvZHlsjilWOEbcHU~{PSjJ-dlL2XM_>dja%zly-id&B=>}%ZW?M>LiRWZx6UIAPP0=TO{Ok?+ z9VzFGf8?5)SeWIced17B?ZkM1``H|w$m?%d%6Y6_latY1t2s!Z`a+3 zyvzr}UX^!G8T~^CZ;-E*LW-@34af)nD=Rdt!)aIfa#Le?LFTGk3MWD>?zIs^r(~ss zR@AptdnPFyynV~#Qkwu)A`Pm3E=o?5mzsl5_WE(0ZtpSrne5-hMZ``{bk(*zYNV~& zS@&>1K#>%KARa`x(;Fh^Gfn47u81630dAbI_ZUs%gKQw8OJNhEjH;0j(Y+Zui3dzmuc-V(b%{Vf6te+2tu#byvq9;AsWptoHXfq&8Y?IO9~T(fqJ}_T^{2M^TIs1hL}yc!eKZS%8ct~o>)coS;;wZI;D(X zjTn4AQ#WW2H=t68sStE6ikSJ(P`}-FUWUqF(m8!cs)) zLHQsjA~sk;lR&<=>VxevzgG3X^fbeB{e*$Ou?o9=yL@`7UeDF7_=`&!6H%T@9P3ZA zsWhA8ubQA0mtk7QNI0Oeh@s~Sg~vE z3|_He0y|Lr_-H`%o<=W#g$0#s3(BI@>ExrTm*l#gKo&G?$_kD{%h>c718lc%p$Tn$ zoCrD;Dr?-rGqC;&54c&8#o+Ur(9x2G2Pdu~o{kT|Q3VDP2ZQWI&GvX*L5I{uXbGWO zrND?}YYgrvD+dt+)zzP~mL|@3#uxSO-hR>Sf!Z_ngzYKO5Pum)w160UqGHQX-Cj95 zUk1s%EWm|bjtoG{I2zdmOpEmU6@6TcQqGh*KPl5nEw98(Qt((&_58WyIa`!2(No@~ zO!`}w;43Ka^-lLp^>Zo8t{Pr1V=c#)MO8QcQTjN<4Jnbp7O2B_qmGk@IvFocEI3UT z4%iHv<7MNxW^z=ZwBccfg+*qAa59q=&RfuT3y@wpsPcv+yc(3m*~{Z9?dKmO9pwL*Z$i=`lHB8U1pOfdxopUwst5%?J8y@IGmn{4gAq%Zni72ibw`1g1s} z)M8jSl|QJ-cVq|#RFDIu@|^T#UxRUmP~Yec*C9@BMg;%1l0p4TAiDJ90{}saF9O}p!Jg()aW~hY7al&Tx<7|cp9O-K zGy-vg)?ohqpy_mu^#sJWY1u7{<=8^`&9od1Ou?M-$kezmaRWH4?6oZWSO*T8G7>}b zOlue8Op#GXxR5KE1fib#^!;(1DTrv8ah&^K-)>COJ{8(d5{ZZ;ynQK-qCzu4;Mmtx zs9m379KO_zzGr;H(VOEH0p%6g0G^C{K<1Bv_{nT1h4Y?ZSVp(|mPOgrBsKDtiTl;g z%_Fm`iW}UyRQxNCZ#T^=@gjG98p%3d*slEJx=23re!^y^|IfQWb^`^OqOqDErWq5Q zMqG@KJY6(P2rWryzOt&iS^>*&EFNoXoQT4cPDJu>IL|f5>0aonp-)V9jgKqFtD^lzE_Yd-|ruGT)h77+Jh+(N|LPDbtXgi5iZgJ_8xfEHdK z&3O>bPpfzHC&vD0o}xvo&hq_leSNNzvg;O>9v7t0LMc>7h%;OLyIQ#wQ+u>=+C}k* z(cy3I`PUqT8@eeZ9dZ1{D>`qPdPEk*^t=R23i}9tA$f&8Woq0iYuH>7vUYljLBAcF z!yW$LyE51b{h8r1c6-@Mty=G<`NYL8kENzhJ)=I^y}jHOr* zQXZP6HXqYw`K5{!INEm+UJ<%AfoHNB!$Hv|aHS7?R{H(r%L<7t9o-uH(}f_v27*#c zI|~PW!9AgGeiS)h?y>w;%hF_P!ZeA7(yn~ndXs$*K3j`R{8kUJuoBE^x$a|#9F3Fl z#Q(*tsy$lBY@Izr-Xg@L;Xy$G9mb_7>IsSGv)G6fA*=mRgVtW+RE6M88Kb8!pOr?6 z8eB&TpeV?vxsq-N)`6~MJE=qDfG@wGMW%rP7Q#X*O8IUBLpL>-8vMoZK$m6sxkX|z zQsZI2M!%)J1jARvCDpfc4xT@lBnJAh)WZ@dO~K09`F|xOV_&IFv#TZ9W_v)}B$b;a zDSHM9SUz2ZWVKniF#!!kCkiunEgOEU1g}#o+<#)98T2Tk=sX4mES9q63*3P-hxF+R zh=u!Zr9z~VuTf%!!3xVh)WKH%j5P3i&~!Q+V`er{gDx%~e?$CX?i35O3##DJSR5Wo zSALpz$xd%1$(U=iW3HkZ9K*-st;FS!wM)`B)^?n714Qd8hN^I#Oj4!Dgkw$Pk^-=Q zoKLHf9DEX^vV7MwOv4vZufKqR%J;(3rp^ihjXaTeOKPYK(i#iXqAB0`E>h){zxUcaVhQ!1CPDA0@EC}DUjuDctpF&~V zg@9cFwoX(^T~VUEU96E}!IrN`>v z$MmyzVTX$bTni#`=9h>rNHk(>hys~;H#NP(O2_)>xX`TkY3nVqQ3mX6x054|135*D zIX=E;kDmI(%>TGi@AJG^Iku(W(h$OdV9|39$$T-hKyo zs%9c{(kwO*qQ1E>t1@1|dQ{}x>W|5Md5}&)*mmP8+Nd}PU6i9BMk!Nz)V! zy1FV}`qJ$5q8Q$>@bs^E4WrR`B=3BR-dgt1b#?QQOw;3Z!;^H0j2ww9K_wwC&iDLk z4Uj<1$LSNmaj}cZ5IkG_Y&Xa8mdeed_&{Cq7EF>aO)91=xpd-P0M~sef$5O2<_kPs zw|3-e{U0NV7dGax8Q!b|@7HIwd->8ZHg60<>ww}DiZ`5QT+r61>=B`H!jjk=HOw7#ZfrPQ$hZUQs~ z`-A&_hIm+3!zC@Zj@CJ4_PH&3Okun`4+WWU4pnPe-ttx~gkV?|b~VdEAJVJ$))}@N zaa{%!i;^2zeio7Tl_g;~q8fxXpH0DDHPPt;Xg-Za7RC3blj5)lCs1xD%4}fZw&Od! zB`cYwk}Ja`QTu}LOtVF1X-9uP^)*NHSigEjc{D8IWQ|)hf`C9|-FaYC+-_ehCBYzG zH>HX)o6o^uokSe3k0m52c)c$hXuCH8q$>jcmVV5(>YJbxCL2@{6T*r`QnqAhr?SJL z-@ZerfV!(u;4L%HE(uU|R0N(5UVjfuixvLAX575h8x-HG@YrVFQY*qXdGz62s^7N1 zlK%RwW#C(-3iB^TC|j3I^tQ^V+30lsVLwO?UU&L5obYDjzpro>BbYp*MiIK|RhW9! zhc;w(cX}Qs)M?J;-HlcfRgx=5T*pydK@#6%4=$XJyHtzK*r$XfvIV`FwCMlBG#(U* zng?KoK*PxwL;GZe_DSuGLqvU8Sg_ATRww95AA%q5m=9>tBDS+xkuTpq%f)F^gL*VM z;4YHkkvX_#+vUZ&!l+M*tj?B)1Amm0v=j9rU$GDR*6wPIcl=kjit|s5M(NWw{Q2&^ zb*Tz;d$RSd2le|lr0p{i1-G%3_0@ar<-PiULBdj4Um~2zIL-GYoyjmcszdYQtz#X8 zjn0&~ab?0N-TT<6@oj>>GJY(YsyY|-xpb=9bwyq6lr}(>iV9vHN3o$`?53+s8r87C zCMzXQ*mQB8-IP1_G4b>>ip7ijrbV8aKwi$~FMe{63Ytz*(QEM8qJ31w)q5zUml={T zNar1~9BCo9O;HIvKz!SN)iWl`P!ykyM>1>ECgCQEJ(dPwBIJE{_J@SE4D&`KR`qp;XU+Nh}b zXSk-gT>av}4-$n23WJyCj2|doOJzQK%ux^~=}XI~#UGw0zAf2Nfa-g8)Uw4=g&y#~ znmf~wT1`|`&_AF|tZNv()EcQ(p=qom@JRBD=ibcd-tFCzh4L3@Dh<(<@%2G|%_Lj( zf8h{+#8M%(oN!VHvoW2y3i|u|pAZ}tYQZ5>*K;U$=_pb5U!d;I+r*@(-k7Ez}2*?Z_5SVWU+ju9_80J6JU+ zkVS2te-^+GD{&kU(DRgo7RVs;*y7w>REr2qHTgQ`#byOUI9#G`5lt? zqL(=BRVsGI0(8Z`ubLcSQns}hB>D^HsxxOocUk@oo6&24SE!%Qaerv1cQW0uY|^%t z9&ky&{aK;14H^G3MBX@PQ58#P_v6>=@dpRtt%W8(U;o=n4e|gIc)JnWGhp?tjq$>) zuI>XtA8*{pomAdKqGDU{Y8h+IE#hkyzewCc>hkXqJsFSXp(7KJfOJKXeP!>6v$oIS7&gi`cQy*Cw4k1NcC49!VaeL|tyQRd<7r+*&9y z7UyTsW1N+qh)}&_n%M!}PXjepcOA$lG*EMapZ#Ea+Pmy6vipq+jkEXeB0V(NM!f8HxD!O7{FSf{1rz&A(vyIs!c2 zcrvXL`7Bpz8MAKTz1XeG_=x1limf|{F<% z7pYV7#auZyRl~DLg?S&cy4kGbw=cuyhy2=+Bc54qr%ME*kh-WDIG zYL^7?M%s&vB?Zf{(UjP%tiHAr6iLTUNHo{IX&Y1$-BOT6jXT3ka1yQC*3xK;O`&yr zo%#5sWG3A5_-0Co`+YR|m7rc7j=h73mX#n<9=y$R>S$r=^>O^4<%IQyfk>=YV!<*d zD*|;i8UIgYYg?7E40Pu*?c&rm`=$!)#8Ihzsj;HLi*h@xyC4Y|#QSI|4He#d>X!IiV#b|{tE@G8 zXuHl?uEbp-t#GrP4E>$ErZw~7sF=5fycHUiO-aNmGM}ocz%!O*M+iX2Gm?+*m^)b=#ER%A7PCMYU=p2vvBA8GM(gvaFYR3S&v0L2sP1WTA z_EE2nu?0}UmzfV4?wWb$C{_I|q87%j0CWG-FB;BJy=i#ZhvtY%N`EFmUG+=v&vXtD z=SxPDgvdS=91JN=`kj5PPmSq8YI`>0RJFJ$3w`5e+gv2n+8p)-IBb3&0R?K#;Y|=@G`VkEd>zBJE%v zdqpUb;!2ISj~_t9rIP@uZBtuk>D};>mb={thK#;Kou50m5&y8f`4;p0T40h_s zQknQjtCAjzb?5#k5?eb(_N9CA?}(gKu$vWi-_m%3AR5Gnx}QD`<3}xJEB6yJ&KTmm zPthd9%dLla_RD(UpUc{PhXMq@0aCH_u4 zEKvJ2uKhfTyxBGFs5o9|9sbN4-(O|8*m?N|O7!*EXsIc!`1Zqq!JC9V8kMs>J#O2Y z?(rSaE9kQ0PpFD6!3+ftPo{{p+9s7JSH9#*_WZjn@pT`zMTPD4KLo z9{r{!c0!YiYio1I8S=~KmG+--$S4>Mr!6P!%{r!68*i=sV4e3QIj0kpBqXwCT}vuH zerr>V_;2Bv0TY^O<+7X^*`G`xV1 zp!|xku$&Kud3^)eUT2Jt(YImEtE;OQ5tYjltM1Hs;)TCpLAT0((A&@dS}spkLcd9l z)3Q(0$9ofB;ny$3GP=GfuR%}(#BLpVnh}EX!^yUkqMRw^W&aXnircfj`l_1vK1m7` zG3JOG*`{9P#bl9@nB)$t*nJaxQ{=d`{PvDV=vmv;PysmoAA%!EH}CqE8S)ni8>EH2vQ2F zL=qModg2i@7GKZZ*>(1B`TK4JepaIKEImy$@NqobR)>CSR$tCHwh31fcAY#(Ep z;3K6x`tj@4!v(#eGsgA{w0B@aKJ%H~L>i1CPBfJ0PJLBr!hJi;KE=a-H1}P4lRwmTnzjL>@zqxYpYniw8*= zs>1I^@qbY|A8e@(Eavbs8^dFEh&F$~uGj>V`1l?Sk+Tj(l zh*4XLn4myLJ;v=`(zJ;~OK0s$jCt|}^&)dxN3&QhmkyPnBgR?^VW=Ll_J%Vicz210 zdsbAj9QL~$^ZRSwJi+GLr8Z!8nSB8P=2chsyW`siEZBDy3RhHk;T0F2|1d?Q!v6W5 zd(-t%uK^Zm3mZPa;EVd)fZ3tkz}7YwL@K791)?VmSNN840+=!ki6CDqWLg?$tu6vn z3GWogAgDtp*qu~D=_)MbjG9C+f8-YylWEiP9N2t!PYFf6gG?EEI?hX+nLXU7h))LH zwjD0JAmx|33#{^B3T!D`2zBrLY2CnMY1TG#Nf8@+^>k)0GAc7Dk5M4(>L;r2Vu|^6I+@?nrM$ zF3vBtZxU<~(k6SXP<<=pfz9us`8d+v%#^7C5nbxL!j?*$hIm>m-7l2*`H1B~+%3OE z_%He$!4h+q^}+7TrfYsi{@2W$jy|GLH@`*ZOJBS$B&~9KUO|)X*qlAXJMKKaHr=>V|_m{NRGD0%G!^Z^2UrvJoTS@24A^CxM6Zu=W z;)963RD|-z?i~P2n%TH{EZEhQ_x`9zl@Yu?O*JMNh(AHKnu|F~4iOI+gIV&!R{8YX zi^gx(l&FP=XMxVk@tN%bUkc@7y6~&0I;5y$A|;JW zZtVik`i>TZqzl_1Yj-={R;SBtcJ`R$<;S}590{40y_=s)9#8kh$EPkoRS53ZjoIGj ziBq!4=jJF*q~=hoHC86l4goVZAq6<-)Keptv^V379%%xvr*pxoAI&Lx)IxiwhyyCe(M|P5m8=Ix{(I;D~VK7<=YB!p_Z;YM|$GdbLwC6<3rku{e1^)e7 zp)bL|1$N5b#!bQoTx%oWT9G`2(+6wDgC5s@INJK(^>f+>2M$+cJVQ#dK}z1)qCKsqtuS+SKS4$H=jM6UNfq(NdEcu9OHs-8^ zl1dKPHeX(vUpIZcDcsCXwmnHb$JmP!>IeD(DJtllv=#v!Q85}Nz%)FA48g`q|_PS(dz7_hxr*=J7 z7R19yuT0@y@`rttp2qa0u)u-py29{l^N`?ocZZxpt>?TXaD%wx@Z8bf+QzFx^HSn0 z>h#|9ha31*`$Nbi-}|q{zKL_U6ZqhF*%pqt<1a3=7^YPXcic34@yE$77{h=8rCIet zV8@^3RJju<)2&le>fj&P0m?g$XeCx_+I&s|u8x>b7A8AA z*N~4*ofiK}W*sYLdmIuCv~P?4#j73B%PsS;5XquFNI0ItjWR~mAlkw9BPIj|O!HpS zo|tzp3k+=M;L;V~+#RSpH}>Zv_JL4bOj=9Cu>VK|SVMy_LZ3rjdDMd&PnRPZIc^5z zQ_=g_rl84W;PB?>C@ij*RQX=A9J(<(NO)@8_2pRo$SBlhDCDdscTVGNKqdM@;J6-| zoo%fogJ-xe6rF!m(X`G94-%_Noc_g?$o#U0fod#Wv}!Mzs6?vX&ow>c8~RDAU4xD6^Ix&9`F(@;~66!D?cU}~*PB~vjOQGXJEA3unow6!_RZmf^u6)ff@5n0id zq9Lz70ouDy(eG|Je}#+-5=*bkuyR@j?&SL~sZ2tcm0RQAyIKR6*8=OrLhyRD zpn|qR+{{BDA_Af0*Xj|%^|@)EYyw;&J>F@fDw(GAHtq9XH=b$^2}W-)Oi|ARtI=`H z^~pEO^tsjUUn*C%SJZlKW^AHVt#yA#I#@#$Y4*xBdM2i|kyeLx)Gq)G<8+p=Oc#}% z9JL9JFSG@GTTd7>maljc{4>pTJ1$9fzHXG zcG!9>J+@5~^5BafoW0b@*9&^s&B0TDFWnd8sgDoEZ_d53p8VI0X<@Lq=0?2$2+=*U z^l`$N1MxfcfxE5N-x$(=JW{_AZX^Pd)tAsUaJwu*3aIZ;@*ddi-y~%SAbWyj+LPix z;$VKv04P+twK+S}S(9nstWJ&9C+IIfjT#tDeSjB;g;JgiY`jKVKzL)a_`wW#4TdMf z==G*a%g*4ypn>CBYZL(`gO#`>me<-srkp7xZ8HDkIwEd+tzZcni5F!wxF~{plBbX_ z^pxsz7!S4p!!qTxFxoeKG*Pt$o_NR;wBxqPwQmiw*6P7LN=3ZIAh0&sd3h@F)fDYb zaFRz}V3|9sGXA*tD`!I;8;pbio6#3QCZ`vKVhjH6YZP&p``MK*wCHQ8K8Q&(0pO*9{V(lnOXdT zHez@8l}=l#HRaY74p7C@xY$WWRX7=&ytSK`fS5g?^1+PoLT#UXO@uDfLQWs{wuf-W zKO(mdv?r56D!R#yS?w<^NaxjZc}_B>FvS(78v0coC1jXy(^nRt2m?`;WM}O`dm#6z zq`=9jtykz_A#@#c+&3UC{WpzVou3AKZX6*W;GG-Y#zT^iB;CeKaV+uHvqis;k(u+> z=EefHOo^?^z`upQxO1L->(@$Bh{$Tx!$Cw@do-vumN)3Hbt{~LMrv3w%f%#>_psZk4w(}i>{$)%N9Ih_Ls1AEH}HXQo$vf;BB|V z!-Z?R<)C0RcrTvGJ_=`p9bn2^OS#5Hp}i;)XtJj2H_u~?L+Gb@*nk=HdQ(vVvJq@ z2_@nSr>{^0aDNv?WG%jEz!Vc(4#!>LMXmFt@i|?ZH3^!OJN|MznkR8RT_GCLdukFW z^H8A?M1P@xEbhB2ioGL^F<}Gvj(Tl=8tqe*D)0@!xh?IX+?%5+SVsG)A)7`%VQt-z-M+I%_h zWOpijKk_CiDe+C!w>gW#%x?%k@7u`3m_&YZr011Te7it`nuf6V_UUB&&W5U|pm|x` zDH=xPU}yJalX_nz|~sNKJ(Jr8aGT_=BXE8xt^Xjyu3&`FKn8SRjH`R zXD+Zc@RjLx&RzWEt?~<>)K;pSm4{PkDLZ${gGMp<0cjn_^i1&U_&Gary05A2I(gIy zKlsT=#CPl4P1f?MBdBX@{qY*t!(eND91e2U*VlT(?y-X`hGUMyx3|Xc`}eJq@&tMH zmIGRKQC|A7pHXS~-AcY@aD8#HZ9(eGkF<$;B+2NKNk1HlYjdB`-dmosfyO)cIR$c- zF7RT;B4HhR&sJj>>~RRZa|+Ju7Z-28DPmhj>+<{ALC1OWJ*n(Ogi!uYwx$4WwH5~E z1vSvI38O1=MUrJ^`A{hUj)~@z^~d|k0UTjv_9bbKP6e%>zD^^(;|reLklY;~T}@0>*}| z&VOz!hbMN}ULC;FD34YhSB}lK=o7;q@x?zs!Hf#nOw%1dkp`Z+$PXxBe?`Kg3eekL99HrmZYHcG9ThP)L4=8~lZ{fR*<_pRSd0S1+QRF)U)b!RFXnf7?sQ%3|e| zQ*#z*uj|=5JGagrL&ln}LG&bc9&NLVSTW;;HbuY7 z#9hpk{zi!U=dUDTcs?{EVYLyg%ceXWDzRBwCqc*Svo=;e!0~zK!gXzN#PZ#=3H$w{ zoNu+d{A(8Mgd39@Y*Ij_9Z}y};Ul`m;+Wj&`&_)Iap5y48&@ntEbEzP3Hnd@yxseM z6pDV+3*NeplTySRC0T?sMZam>pV*sz>YpxDDRDlDY+EZ6aMZA|t!0@)UD^Z*f)-KV zp-i(oM;w+(TF9TqK$CNpfpt6-lUUkDZTmoNlg&PE%vs)F(C3uXwQ=qj$ngtaI6H0h zC&>4v>N9>-7W5u>$$gA>$DtfhUC*%?K)W85K=;hB`a9jkfq~Wn=Wi9|#AT9th02RAtDbLXJBTv1tK~9ABFZTE6ijTuZm(NAvzPi}FHi z-sG88Roi#PsdCx>c5a8Tf{e}%$*5Ev#vR~!#cj(w1ab;79v4ww2>=FJmc80 zvp3jw$Tu|P@B!ZZ=km}4@fjfXwS+A1O~S*F`Y)-GNJi|Ps5xCHx4 zI;`ga6Z#Sw=__%of!W&K@CTDE2ICCJFD`fC7Hdttrd?hKBDH&hPOK(+2jW`v7sQ2> zdqfo`dM}ftbd2MQQf2OR3pRK@1xCBM2}(SoWKUafkhM=M@OA$Mkzk`@+Qi0dSR-!4 zC)QGSEvi_m7lFe=D9jFtUMj#GdLF;pp1!@rckzNdGQj7nX=_s+yXF+*_&6;&I+sG{ zS#0qfr^3j75z78*r`O;520!uNk=^t*`9gawo2*5Xgi1IaH1h<2nbSEwbM>OCz^i5N zBD3yI0r!qPj-loe9hnEZ$oRwLIgA0=?1Tmn2B zBn_01RxU_c@_3%RsCz^O%<+2xuNfP_k@%1{Ki8RNW z&$Swd>3tyX?Y6`o)kA(rxsXvRTpU4C z?ZB!)mMcH7tytTx>?V@Y+xX=PtRCwPqXJP-2gDc6#XJUb=uE^)`e8!SI5&d+BmSbQ zcXKq7Um`Gd_h&s;4Y=@N^xrHUG?S?K;HH*)kHXoibB0@U&xbdz=%WBHNrx7*i=rzI z@R~UB15XSFrkH@pU#`f&(%i^iTp7-=cEoD>Xs0@kB<^RZK)v`9E|Do2Zo3)v;4G@c zY7s!`%MTQ8CUgnSZ_>HC^VB{|R}%@Zapo6*&A(FaV=5jiZQ{n;of&Ow&K}2e7nMQI zGXI44(@QQuMX$<%DMr@mhrhw=>F^6!2ASOtuQv_9gWCV;|0F%U+R*6#&4gkxEb@?b zRga-4ZVJv0mTK=fx;uKRVC1f}Qdh`A?&e)u7WiN(?+)*hhu*Fy@J?S;#yB*s!Ms+Y zovI|3G_z1!iIPDj*>sd&Qs zy;=8TxSw0RI}TXv#V`xtx#G~VC-CJ;PIhS<*=GwBGgU9q95tUgtj9DgF6+s%eddRp zq&LZPw=QiD`U`6sWk{hL31yS9e1^ix0BmRQ;EQ~j!_}W3;e?}fH_)dChsWsg{mfLd z2&&MY-F)%I6(GgIEmfVsLotSg_0g?yU;gMgLbiaI{frC2P?%)#=)*TB~C z02Y}jMB0;_Z%U|V$5)9dL%w4<++bv=+| zG$et?Ty{jRCWj!8x~WZs%`?laJOWmOsje>5+4Wg1q)namTRo_l$!SRaLRx*P*fr7{^Ws5BU zEvFF^Emr!TqZ)CsZh(-9rG?sTSD#_4W z)agLyf!cZ8@n7`Am!}A1oK&U$yF##Jhw$DHV?qx3fQ%pE1*$|r>kNNJoiU zhE_i+$X8$tFd@*C`-IQ@X-6_;z*mCV+RqdoZ3uscm4I!r) zsluqh*!vg3FHd|gf5!9T=C^Fgwje>GiXy^JREVeknWpM1_mbtx;hSB+5_vG=H1-}N zrM4#nh!V}=XpEF2gZ6;gb|ijHR~lcZ32H%{WT`^7nlYXF=|pd^`!}^aPG+Frj?q59 zbMY1$>NzCoqMK5?v3yZxH67Uh$OfGgl>9p_9mtl(p2VoTy!kqdVOjVtL-vgKal_c= zmprdeJJ@;wpS;rv3+#!6*sA;yd1B zO(o*FHzgC|{c;y!v*5#HuZiARR6EdnM?79^ofp(=zjRNSq`O*Kj0zg5=RJA4=J{u} zwn%4VLfBe(nQ|ZL4rd{<8DtUg@*C{xx6OCzE=!W|mn?(jDT4x%u{Sy8jRhi3JMXxV_8^FBf z<+I5`pL~zf-9Dbtk4GH}2DRydK9~ftITvghY;`OR3-zR-=`V@w^?^CenLe&--|}Mq3K+l|adQxcku?xf z?|VgEz3v{{k(aWFE`R<*+P>QSqP6t%l#JbSAk}N-CCG)v>o};iG6(n3xqbh!(fTPo z?bt!V-bkPEBi_zErQ7#1#V1a++)SYTX_*gZzuMdoDPWmbpe{8&L_(+RajMX}NOed` z90l>z8@s?45xoFQBglc(cOHYk%y|@wWpE7bk>>cT{&ZERF!((yr=kOy1A^_IANt{P zbwl@#BdG}%h-zOO@?&WeKhUylsApPWgL%Hde--~r%AiHby^}82)cUmTZwc&ldn|c4yl;<*Me>_S( zHg64RBv8)wD311|sMz4p1k*)#M<7zO6_=zE1gs3$%XwU@WE*k6&Oli8r{0Kq><{_9 z?K$_(M($ct?S<)!yF4#oLo_X3z9u{s-CVWsTv}CuK(uYY4p&c>P(p~?ioym!#I^0x z)jpddO!Z)Yg%qaAl@m@dk(`#?7-x4{Mx(KUu*Sd(K4M4ab;O!aS$e5i~%<6TNjy0j=y{W z1_JbEfSvXq9hVZR3rn=YG4`+i#9VQei#_w7{xu7m=tq}4+RNZ6?cP~3K5pHV$jRIR z9u4vC2OeJ;*O%XpPk~vAwIe8gpdE|R_IA}l_qd4n7foA5R^OhBCT8?~m#LlX%NEm9 zWG~R2(A~5nLA{~wYObe_F@msRK2FA8NJm_PxynqsQjK+aY&LCwA@hqsS&vimKqf?bIBeyU{T>%gt7ro2 zf2^teG8j{CJoZ#XFd}rndBgF9ro;WRfME2O6}<@0IG?3m6^J)S?|XmHP{y#;UOK2h z0x4B;6F}_}_RdhD(P>>nViF%#KsJOcl=!4JUoZ|i2{2xPQr7utNzBbViT+ch>%u8G zK3^p`W9t?(I}W1n8K>6ARo-W1|JemxRuwe@-|7CZi!1Um<6oljz2(8PI0)a8H01M? zOF0!c*jBpfl6`NOen_?Na|RRs*rm*bak@h44XuXM*DoOf*EGHgS++6EgKdupFRUIJ z0c`g=@1a26mv7r9t9>2<5F4f&bB{o-qx`<(f7RZ@0Tw;UZ& zGm(`3w~V}p{UG1Z9DT7c#Icm&NOQk8ekO@?KO;!S+ z968IAaL$Z=x~WnOkf8VkBeyT|np*L(eTDzLz6|DTb8bk|^RR2PIGRLZG}!vHod`>0 z{jejxZP8?v-b@kr`heNZMtw=hG569r<=JH@H)Ii*X)(UnA?vkTq%&H=kogY>me)0s zB=gnqqWRe0K|4=-I+#=FGb4~TiO$mE!%TQLz(ZA{fV+H#G*1iRp3(cBebR0Z!nIOR z9g+?y%|*=Acp?ajAQD-a!N7IX#m150v?W5IP!qAcl`MBD_$D3L9WeJ7FSjj)M3cLg zb@rDB0P~xb|46#7^8n^WD=g8l(FBMS`m*Ka`M#%W9bN0BW3BysTVlv@kgL#BM*YuuHF*6&(65?e zX;5iDEnr%KEPN3C$qilu@5`!-?T?yYBF3$u&8i=ROdMsB9AR=>t>zJuK&);Q)mDpC9_p3q!G6dM` z5>`|v9&a*`$?9cBHwHQ3b!71&WNX~&r>h6jggSA9&iqzzi6}-+P>jr0*Mov@e+z%V zN5x*{137KRQr$$dzo-RuOnh82R-cOqz)D(j=4mFLdwLXu1GHggSelX=w=YIIiBgN4 z-|0y8$TbF3TNO;nf6qvB;c|7W3Jt89BJ^Ivp^}@)OER-5M*NU8^N9)%cXDNTDc(}k zyDw?X^SYcOBa8+fEv?UbJ&fWvi1ghJ$X7epG;NAp*SBp>euF=ECz#N53SM}Nnl_&_ z7;4bxZa+zl#y-BYP-7nsc<7ItR440!bc^*y1=0PE&BCLYm*SIh6moerlCjC%|jU3kPrtm>Mq z_T(Ooq>0-V8tG5h-$2x-?JdV%E!V&2ZEPFzPRRKj!XA70D2O=8` zzPXZS2Q{2aL#)9m&Wb$2`!Mq2aewrs4=?i7ygkR=u(P#*=M={qGi|vA*Sx$&Yv69` zz>hGN1r@)Xz}PdqpY5kPS%mO?CX(@EK2I87dk&jI*>iCHv)~nf&{T$pSa20o)=n_MvnYz%9$-Bh!Vya`BL7S4|*P5BTHQTzAXPGg+ILln);w#Sy(1!!* zMq4Hy0jHx=4U8Lru8ak{$v@lJ0!SKBge4>grbK)((HdnC~+|!*TudZkfZkfqPLiS)lyH z4RG|R{kRw@(`sgIJodH1n93cnmF|p;* z$XD;~to_w;FqrwC@j*>1Ye`rezh!CNQ>RM)+EIctU!79aWCF(V+noL1Qf~>KT_JJA zbhsn5v3%xya-?6}Z~(;sDj=?RLm##$#KR3^3CAaKa|^dv++sN>k68FLC&y0U#@qL>&W*6n0<*e*=feTwm`Og3 zEDSh0UtD#r{wN0JKlb7NEh+Q4fs^CgV1hIBOhMnGpp+hov_W!^k^DJ^19eD%DC^?D zR#PDmX?HLiV0AYub^&f{|R{f0zwGbt!6@QfyG6t%&$?jtG zeg|IyXTivKW&qhu0{*vCqot-O&pQT*Wc*>3^R`Op>DIw(-s~j3KLvDET)HBx2e_#| z#M`X0{Kh9nam1B#w{il%1zT%{(jU!YmMlW;?jjiU{+<+Vov+%1eC(U*l{hLSq1n_v zXUc!TU-*KO_+%eI%}(&WuLw#8A8vUhT}-JBo$1qh@XHJf`OH4DpG~bnjJ<-N)7NGp zXcwwsnB;U77QgodnDCdlshC2=GBb88t=nvwK0mW0x#%GKu4Y=JT|?Ci{T?~` z=|Sg))S5fHjMNUrs_ha;wCMk^aC|mbUw)R|obx)FM8v@qR*J;y^Py(S6pWQDXfQ&= zZV=$#S#Puk#`4YeHX%7>=0b z-6N%Q?fZ{K!%#;U2hlTz=yx;1dIpbkgH7xHt`jk!NqaAQxH|*&q92y^!klq~|5?Sm zQ4PPse)#nuS5M84vl3nh^O+Vxk0=MNaX#3uuzx9L+*uQj(D*T@)>>4&dpa&4-+s|? zG%Kq9GHsU#`!-UetKIYY5VU$^Q^rvuo@)L~`N3CTFyLuwSguIlBU&PL8~;u@R0|rZ ze9!R>;0j$U_7cJi)u#}3L@WD!FXNqM)Z=vA+Pvy(7WyrI-Rl(z2}v``#4!E{Ej2P= z2T8d872i;hKMhnfJQpy{ znAGmk-|cHWJm)xq=~~^#s6$(C2HXA|NU|U_U8O)XXSzJwfHMY}zJq^xmgF!fH~NN2 zOlISLQe(BUOLMkIfc3ikZq+)du~&*6?%t6~YT_Vp?In8B2hR^{90U_!FX|SL5tZ+bb8u^(N4EQh2}B^}L{5 z`t)rS0{;SaTMhDocU;Z7ea`jQzFG9y;^`m*8_j^@x0Yvm>T0f(b56}_-E~pnUv5y_ z-kjVhp*rF%F}Xj!q{#7&ceXIeF1e1PB`t>gyZsKRf_gcI(K1wd*L?#&Xm?arR_u3Z zfwqhIMuaY?WUl2p&>RthN^rlZ&@~-PA-TZC(kJXqi^i5uz znlDL;v01mM8i0@_5``qvbBJkRxF8I6q_yW`&i#8!>TPx8rDCytSfYL+=v0l6;$@_!k&j|=Jg2lAfq?m;Pp)JC3675w zjmXkX)^q!U_Pi%#7h+3*BybK-2mO9;YHcx6y)HcPoq-c^e1L}L6Y8CovZbcWWzI1c z1QmjP37AM%#ewgBh)CEBm}0}9D+^|i*|pczrj_9|Yh4UG?b{1^d0{64(z!^i@Gs&um)gRj^D2t5q}Lo}T=+y1sed zvHZsr7mLDJ*MA^Q*TyBZ2m9nH?=3|7-EO z|GA4>Wi~Vq$TWq57$q30_BvQeTWir;@-KMzRMveMgpH@9>|%T_dyihT>dZGXTlCQl z3xpRGc1Q>VWCCbP6>Ls5&f#K8fiLzvrPn*(4~2)IO!!MiNH(q*L5jgpzeqgckrdB< z@gf^DQ*4%oSX?l8Y|C}r3Xqz>K3z*W3rxS=2| z*vWqsdtmy`g4S!&AKTYiMSjyYNlTlKra`p!nn`~SyCOCq<>&jst|s~$I2-;rZd)|!G+v! zW@6SfTELmb%%6ShpX3$?HZ>%7hs$Q3u{hK^=07=j7Gbzko$U^o+ zwFLCx-g3&mZG_ni(~|jgg4-%QpdQ@hyuP^U{CY=bFB^xy6+%1Up*i$GoY_Q7}R5~dFRPwumvAU}bNEL99c~55`dw(*v z4&|4Dqz|o;0YS+}{aWTjm-em~_Kn+0P-<`=avx4;meLn>jhw1j*lH<{FvM%+~_?>U=C%r^xlw+IW#r zQe|c=FLR8`N$1UNug?v7C=;oN_MeFcY54>myDI1J(voy0d2QGyy%M%l6-Woh&w|vV zD@kxZ}yBfTqvfNb)I!Bi&YmvP?`Ss7IsAxV$15Qy*LBGQi z=zEXI$P>8xE-eZ9xFbcm3*BpQ63(q8Caz5Y(qS}_lmw&-RLnG-`^iJQBBKG+W0(uw z1%jwVRAW#kyv!j*kix@zwlSp4xk}U~)ReugnvPlMM$1MDM*s-raUFO|` z)#|3KZjGB$a>p-uIa|bX+HJj_GPyhEIlh@Ur!G_nxt7i=CRWL2;#u zqI6B5N@Z+x_B6DCnVztU1C}&P1@$b5P4}!7iv9aIEsCli(baXHpQEIb(_HqV`LXRB zM8_<#?L|8ZiVpobZ&tK94s7CU8zW}{A@_?J!vS}LvVQMyY_XgEfgp9*hr|3e)@|k+^-s%HF2%TaTo?PDxXi~ z60=k!p%nNuG1F8j8gGmt?{CZdIvWU8!^H>tNspDOMYgkhQuss!xy%=i^or9m3!bR&7^Ndw1fc+n5j2>?UMv={{T05rUfZ(dgzS*BS4 z{U^4r$i-8hH(&urqd@y33%A{3=wiWQl#MO9eowyv?vly-{K)}>l&_*o+phKdS}s;P zmd?nh*=Lrb$Q_-tIK);6-6EH$oJG1w(K5rY^uTje3M_2RtkR7w?cgTA7j=H;@b-VCxtd0VvO?! zRcuWiQA5bV(eP;(zD3RQf&<6*{KI1sgS#5|=hirR?f{9c(#5*cl;!yd!QGSk%)Y-v zadeLd64NJxkfJArxMw2aatOZ5 zCH|r94@t_%7QiQd06ojSg>8@Zokn&q0QtR%-^!#K+RX_q5(WlTq^MCeqx`8|wC(Bj ze+8nE>ja;C{+&Yxn|{q|ywKhe?DK%k=RHl&ivnfH@%Yf*ou~B@37=_+>Jnk4`l!b1 z>b&N-f4v5Ud932~@#)tv-A%8a8;d$1aUb8D+!)NVKvQGp6YNVIIT%Ek(6|M0uiofZ z-jZb_A;ieQ*hLbzM~8ZOri}D{sXuzVRUG1e!o%0~GtQAyyh|D)X zcA{RFln}q$K+hkiCxJrGi-!apl|1zwcPo@w9xGM5|DAHXYc5CrTazs;u^=~5V2HUA zwk#&K3O>WA27ySyX&55mEtrBUAy)$VzUFSl?FTt3?pAQo!c?9G`=zd zwMC8%c-+hebe3jg-DP)I6rn+sgdPlc#hA_L2`WNY@=}jA77s@Qga{3${O_}4Mcg>Jo^TZc34l@^BsMP;IK#e4}P>J z$8;zCCeq`w4(KT=OHt>(?7x$)5_9;PwZAmT0>0UM*FE45kTq9I({L8#X?_Xnh|Oa; zK0u?8$K-dQe&3Zfk2=yz$;)kxSGd(HH{0`*K(xPi2}9 zO!L!$v@tUlH}`Wlo=HIwKK$HkwdWUfs6PU4FLAJlQh(XR^`CSg%9zjWCeKj#>R<0k zGp8d%0bngt4N`5LTIrHlLDKN=ec&%j=cXlk1BK7%awKl!uGyAT{Byo~fY#PFJx>ZQP%GOKHL6aX?iWc{5oOmlI?rO-*5;h8t#~*pY?3y; z)Ic5{lAGq%0QZUarA(8nGm+|m}EzI(;GRwSn335OK=* zZY>?0`gycF#3Mp6Y(oZYOUho>M6La?lnz*oh@ zCLudhw$qsyg%lFC1R`64Kbb2M0j!!lPIIeHuT~HBQC@D2|00k^OE0jhAj;U0%Fg=r z+Rknp531Qf>8y@YQ?g`sDJ2F4zPY`7xftXF6{o+#yO&rJdkZl08RUg=BV>s3=tFUr zTYndO^^Y09TYax|T-LhhNiMpy0iNz)lNTSxzg?jyMTD*{ps=H?txj+_27$>gR#ZSU z4N)X$Qs!*+lK-scf^rg&-^uNa8Bm&aN-N-^(01hWXdk@0&!&l}VmF3^x83aM*8F&u z8)3~_BUab=jt?B2g2i_=*ue0AxRuc7|T+ zDyW0nKR46KJ(wM-IN>B$@J*)3`Nm$c1ChFO_ay!yQ9zxCt*y=-Lt?9@L8a~%6?bUsPEcnfg)X7{ zX=Yv^A_uT6jQ*?)OQ*cF^Ivw53j3@9rR-T8J|yk5T>Xtdw}DZJ?k5h|yYMX>jqPvv zT$oS3unPPVnuF&o4k%FoMA4@yhECi9BP}s>^-iej(AbHRx8Y2dwNyG@#3ET4`8<93 zpUQlpD??wi%^h=!iUdhYzPAXp%d84JCndwAQAu(|sG_H7OLeSmr^w;{)OkXElisnlUrHwy2L%I&s!Ww<7Kf%q@H->ww?>9`2Gt#uA{XEVssH+L$~>&ZFR9h z+)}G!H@2Z0nBJa927BBLcNUs{X7A&akG0rUJxG0y>26Cxx_CE=`}7l={XL>-mCH=Z z_4HAGmcXHf1B%odOe@ zxN~dT%ybK-@I43`{V4wvN z&NWgp@_gCbLDp-NwussQaKPl;?2-#CJ+!98ToC-$i{5LqQadp4EsLD z0{nBxp~X?4!m)nN6Y4_5-q@P;>!>$Qs*j7h@Qch5!P4Z0r+@xC>YiMPoHdL9isU7w?}}>tK$VUM`b0)n-H@ zPN3du+tztMI;PXoW%)n8;?i2pOrJ2=65{$zusyJge-Xo5wN~dN>NSb1Gje92jA>6O z&>6Ycm9SD{a?a8^`n#_Y0t3620M~JgdgMb@D|H>OFLAqu8Kg}6#>IDG=z>45a;fhN zY{d1Y78mjn5BFVQw!1tA_Eu-k)I40`*^FJ=&kx&H<-GQ37^^u&2Ey5ja1IT^D=!nj z{7Q=E%$?&#o#?iR+DEzh5=gwtyGzL(j==ck_t8;=;8m+GnxYWb?QFd`61{_U&H=PH zQamr-M_f-%N#0b1L?i zum$q6HvvXgGmfGbZ^mRJrMVX43ueJ>Y~x%^8+Tyn#lj3xGKhzaT`Pg>GzNhbkri$n+E=h1YEqsVxol^Wy#5H%$^4N%;bww~%H`2>wOk;R*-6&D^$) zdFQ(v!s-zH7a^t~_b~mu^Humc@+fN_g>Z9;30G6m{=KDt*0;vhvE!E@YHWOuZXi{) zH7w>vYZE~5HHQkKLwOhd1}jJTh_xc%a>D10nNVyGNXMPX9>$5&37~~w&(NZeE6V=R zz(_k)$sB)G_E?^p()CJ#EZcq@rVnb`avL>V)8vO@598_=#mGfkANDV*5t{wk&Zvr# zsVuy7+Ihumw-$4el;yP8>y~U^>?*Qd#&0|FRU+fO9tVU#(5p>CY~%^{C#pB(Ignr; zblMmC8)6x6xMRcvEJQyf4o{3=B&uH;f0yWwECp2S=_|SH8Z@5pP9?ChgyqN4p&4Vc#J*!6+z< zk10}}C$yD1kFiVhl;76{Q!|TwFr_D zV3HdQMkkEH2t4Ngt}&Lf)NB{UM~5B^LCxLEp_MyO(`^%=`|~cG8e!N_EHc@w#eKGM zo6KzVnz+7>Mo+hD8o#nsT3fw$#9u`{UzUrxx1O3Hg1o9!BO?p#>kS}L`C{x?Dr+Lo zo$K<4PGz~4yJVUyt5WY)ZCl0TbBDv1^qlBly1KQd6oKEL-nBE;=KMe#PY;L7OWwQm zN7F6jRw}A>+#8}F!fHFGKos$p=iDzVJG;>&ixX>TcB0({UtmqIO*$SK!|Y|vx163Q zw<{y>Q&F{7|B>Q^`Wwzn@vbDm8i*-*7-lb%%rlZ|-bL0d@?KBZWx!{B9_Mg@w6QRg z^J4nCE}1Jjg0bZl|BO>s_4LVWYUXS$Y_AS7(Q5O96OVItRYgU;Y&aZyy{V=RNH&z0 z3Zx0Jd+AhnO$Yd_`i3JyKIYkg3lpHM85gi(0ys$@*}z%BQyQK!14z!1?p7=?y) zWhpSjd)%mW*{F-zynsq5(@UoQQ66IIk^3_laT3zv7>40|xfve`c4nxctue@0&L26A zzghJ9S7Op|vx@<(Cen6Q$g|4mahuAiGBicY8;EH`MzSlY=B8Q3XKky|^>4 z#1LZf3Ar+y6t!JZGrQy4X;=5Cai$6r%(*#n4d&yVavy@-tsuP zMwGfb>f4yo(bM)l*Dzh!oVYj+Gg8@}*=WdWB*y{NN55B&rPFzt)IbXaM$3aX%||yE zlnfzqR$4F@zkmsymy6(MIqU?loZuTZ%V5T+QB5W`2 z&hC1Jec*{I7znujVoNwE2s417sFzoq3*6YqxZnQu661H0I4Hv(q2G{ZZzYk>x%POB+xvp+tjo zIsosq&Zg@bXt5@+j#kBvKIGNdzliNrWx;R~SMLyFbCD3rrfJyDlga4}`sF=UjIAr# zQbZQ}?IB4&VI2qVlBmJW6xn~8>wZ0DD9|P3NM?$UB!jW7MNHonnyD##@TvXc6F-8J z*jYka*vJVpx54(E1K%JnxE&2$6J9H5nb0tCQXF+FOgs(wMp(jm|4tlyBCy~`iNOq zk(7sl;Sxqa9DZDe5Z47%C8c``w{7R|4N{NCdVQM&s{rt-IK`^l#o_U=-xr(@B;p*b zh{)7PWkk#Tb&2EYoFn)qF>4>1AgYPNW@QuUdK$wjhX~2l;d{{*;(BSu9-c}ds z0eVS^Wi$rD`0^K-%`v6`<7{ZX&;1j=dp}ELfMQl=oV@8k9hx+id*Li0yOht6{_MeQg9*$0puq_ z35dc3B|BIb<7xYPn+X{7hqFRjktFV^ctJwTU70F=_*-9=uswl^O5vJY1G#I5^Bl4+b0?>UXH;dBNj zSV3l*Tk73dKj!|mxxyd{s<$tj1g#ecS3!JZc~*puL!x2T9N5ZK&n{F20DHES~9-vI3Y zX8~m8YRA};x$7(T{YJ35&2J0F1s*5147B4YS^Vw~E*fzmj|VXPm0Ncbbsxi!1AaC3 zXx~k2TayEjy}f)rlBOasRuDRh@LseU)MX7_wd)L#TK&v~*;+d=0!={go`{Y!Cdp)eMTEouqJb z`RBskh!DWKyuW&Yw_yBmi26QwyHj9kV9d;gSQ?Nmlr;^rlO_7 z4L_z~*X`oV-p$jjSZ$r846~{7QyUfm~&A#J~5BtA{pAB4!2u!TL`^NJb#F) z8P2$`#mVv2^4UCz3HckdTfN^#8G2m2U<&mq)$wOxVy4 z+Hl&oh2AQ_Ud`Xl!(%E2rMADv0ukg~LxSRU5~CduzW+gVsas`xSl{qEtd&y8as*Y* zIW-|V5hvAdIlhyW8h&JGi z>U&2SpI!G60lI`)&rMr{kw-bb+sF}_h&`;vePs#XKJQka?KOp}EJ@*CVYHwU1zK}e zrwmBKNT#0r^k9A#x+{z7{rq-79;$rY#rAe_SqZu%W<8Y1^xEIK$N+-hBGopVss9Mg znLIiiPGb%cwd;SDS^q*G&Y&FP=ryKn`neAq%H@$+7lk>fZaV?-3WG4OU&Nb_pPzW! zB&+dSg*tq^?DbGUdyC&|;{udE-^@az>iJ5`=Q=}f>vnF~%N#@xJ)@GjL;V;~5LBc$ z$A*%re|thXY#IliOzKuFQLkXEs&lfm-1__P1w5CR1sV@|e}+T)@-mxI)Q|mE?ozn$ zVEZ-jQDtYTCGZ;pEWX#S20x~K$sZv6L_Z?NIg(rM9VFJ0vOHFmb? zY}P+IQ`)@n_FX$P!R<)dRX?4V>N0}F7xJ`aOf()v^JH=mmntX3BpG3!O6>Z$r5fAN zG}6N`t;IY`DiHyiD9y%eGgAdfAqQh}81!DbQ0DggoHmT{h0Ae=uD)hvWWj(qDxjnE zzF09JgT4xi8IDcWOfVTnxUnbpV^q*uBuYK`^R-fefc{E+mY)JYrpu+{d_nT;u*C!yx-pz=$LWirZD*o$$=ATF7b<>TKnY1 z;y@8+7@cQ26)Z!ZdZSrc&77^oPyX$z)`skcJ?uDdo|ood^Uz#8;P|@d?rs~`?dOZe zaJp;S93twFYDc zY3T4tF!a%3MWZ;B9t^LMR0@W5bQJL9EgRYmciq!IcEfF$nq|A`&U@ST&Fk8^yW;=l zr&D)qB6!X~?y-n~;ungwKWf`4#)-#H-B37aAyx8ZfI~b+p0!5*eLqXJbUhE<@CBZ^ zlwaln9(4{iKZefpA?=6_hqjyVy1#w+viatd^PPKJz5;L%XZY2-9?>=&vY!<80^#DJ zoy>-Y&#q2+ZF+BV0)fzaQjH-S-b|#HgV*0CyPZ;*@baNy6c>x*SoqXWe6c4Fc@YY= z^8YJWUD-Z$`@V0q>ZWHvy!o-GwKKOIu7Xc2bnc2#Mxg>pPg+!|Iq?{To-ZgtR|SvW zId%?vxC1YhIM~dDhr^Ft6dpaBaH_z|YaIDS4@sYEDhrg(g7u?cdRjYq%SI+V+xGSk zUD0lj{|q1=j$xc?23}p##JC!I1i0j>!V*w?r+ph^DGM->4AY+TkS;^lDF|-Rg3^l! z$k0#oNnK>|@GMJlvH}0q&)(fO$E!QbcJM}E`3k^6n!7#gH??0p<#Fw>zMJDj*r(dD zaS-2qzc38v`oFy}=$XEap;vfJW0s<_k|)!u6D}nbA}HzATu`bxN*6}WHDx{l>md%n zZSju(Z~eQEwL540&i^MIdsO>{^UqSe6fWZK)6Xa<6rwu=MU(`9o3VslGAaAe)nX_* z4pO5RI`bvDWgwApu#S7-lIgX8lKoph0f|L*-I_z&*~e^dzj@*HaA(>0w?OvCGfp{5 z=jS;2RBJy}PrO2P$`#51Hc!#aJY}f7@nYaOTSEq{ka#63AxaTuHTI2K`L`$g4;A^c zo^xD!n5EUYUXj?e_K^4_#J%k=FTT|Z%i}>8f&DyvJm}70RZjS|$DiKT*3PU5sB**r ze(mTO>gC<63Uy(q&0kRZUSC32Cer?h$FSKHp#bG$vd6{5{>zsPOA#-YX(;Sq4{-`) zCC}rXmtNd%obgNl>*A&V_vXdlv5qiI$#C%|R{ONb0Xat(f_RChbFuFbL@~&eI?TZ_ zlHM18^)e~#l&5;)^`{`&o6zOo7G(hKctk^u7X4FpAKkv|QS<(!w)$OWVKi^}m z(jPxC!nu|05C@$h$I$16?FoW zpNPlgV9mhL#aT9$W@QI1}$&lF$7oKd1w2D%ddbr z+xD7Aozl+Qvf1aS^N$1ZRA4eRnOP}GCn$o&ul`1#OgcR>ACsEcvKexxMYn2UCb2SZ zeC1Ovx=nDbF%00|0`+M^o!Mb1a~|VVmE#|M@+0Ci0_OW2^L#(Ro8Et!Vq8nxadZ3# zvv=0C-U%7HPF^2~lZi8}H8E*B6&dFVEnR%jh`njADe@=(nw(|IkCba3=F7r>&xI43 zVIhP^ZaA#{(6f#Qxoihv1eP}d2Vv6QaQq|NK8bTh_m*cj^P9W6HgWOB!VqdM5Lwu5 zM$f;6?}dRl$>vlrB$I*QC0-LK0X_1SEelWClMar9&@u7M|3@yqsD1u{`F`lnqmMeG zz4}onQ%>Xj^Ja|^@mz=<@@U1Q7t4j%gT%{J>Zh7m!bffc%LAYKNmXcKZr#bh#Br## zp*d(C#$#6L136AwI!HY`84mf8@$T{WJYzp!T4mK)9DnzpKGXg_J{+irAPL2n+{RgY ze_B9{9XevjARp1GSp(BtK^B31t|JH8{8!y{AHC_w_VrtL?R(y}S+)7822q^p)LhshUF3sc z(@PdT1UsEy@w2c8ADJ;Bh*qi^)FGHEHmFDqEk8U5DU^2Vc!-u-&L24bIDX>x+uHA4 zJKqoeIV_&J|H6|V)z;_(e|+Ipza;He^=e!~_< z;46Q&07ulAC^E7VkGyM^P`NXAk}@$2*et%Echc7O?@piZ|B`c#Z~DOHaoS$Z72lp8 zLZQt;U@Eo|AYvp|9Q12>4?fHx*0PQY(BLC7A|xV4|In@lyouM6IF?C#C*HEq$vJxd zaHm>gPkY;@wTHIXJZJeTKt%7LYs(vegDhol+`XS?PHfz0+N|2JW>5@z;bG&dx}Z5x zsvQGf1*-H0yf=H{3;;X0)4&BI4dQ1gR(PhBR5rsvjls&lCLaHv8Xx(~r>xDjegElu z+T*tRD^^ulGZKzroOPXh1!xR};;IZJH|UHtwrGlH^gRX82!cUgte3i3*lm#_Z+xmx zHi8e;X&sBSdz+jt(jn=Qh38BOh`f6Y>>!-VgpIZ!6S1k zZjGb2;r6{x-qCg+J>Ng;3}-wma(M%A5T*0H%}2NAA2mE{n)Y)RfncaGc*}BB5zb;! z1$p7ZkT#?e2XFXk%Y#8S*-D#X8@_PF5Ic#tHcVO|(}#v>3tGh~FxZwI4veD+edOkw z+n?Mp-*=1ei2wC})7hsv2EuStts*^+J8s9?b+mx?u};)il> zeYmvbc|aOxlHAnFug9=B;-d)t?tGAhrGesjDRfH*7mnF!W5 z=g)gLoUQ4!D}NIQU9^mW?s&!Cnw{)~`O0(VsB%8yOP$^i??-fLEAgJNWd_*K`uLB4 z*MG%s50=M+CIZVFfP*Ggt-WdGv;V3MY}TT)$n3AMbE?|#syeZ?b04$Gp*HLVG$WIhu$STM)72MJA_B`BfP*4U ztv&h3W7{+0(OYh0#tVgYyhwBzn|#=;$a(8>t$DU*?L4M^{hn<-?wo%W^NIx}TaB10;MK!VrV?mj74t+D zx-|P(zJiN>(d8ek9%-a(O_{It5I*}AC-cXcRz^I^W5|N9ndY2*z9{c)?|J6wac@)J z7J#!Dy!iu{wFe%UqNvajkUZrn=fP4%&RAMeF`Cd0i7*{+-WcEFRE{USZNn$z#<&Ml z`q08uzNBd`$Axrh9((m(mN#9n;=hwnUbX`^0?QkK12#2_6Z_%)J^LT(gm+|Y*(}Vp zdHaPSi^XUaonqI`7d_bU)axP?wymt9Gv{aj zeBAF(#n=3D##5_2z>CO4S9z0~R5RHfw1`KK7)nccE0z|yCKY9c+)gdH41-tl>d~=X zIOgg&!r=?wRXSm{IBFee79ookteV0(+m2}8d-iC_bz=R>g| zHV%|ST!Eoi+z?t}QVUGN1W$o!=dt!L`J3{+V4=H}D<*@@^j~<`;t5)KxY24T%-;6R zPdKifxnq-M%i{qbf#nUr0iUAQo)drfKR^EdKQ`?*ZNAvCS(qgcLG8(^5a?Espaf5i zLQy~F%5IR>q8h{?@o4OWSAp^zgqfV9-tlQL=3&cL3;&5PyZ`yRYui8EI^Rzgd(~Md zx6_U|JOUGEtaFb@M9>|TIA#LW5hM#7$cn9m2zX?150V&G@g`@eStHb>XPyeXw9&VW zBa6giw4){7w&28r-%`RlY#&BvD2eSkp@L%0HSs!ssU6bZ67L1re)xR~v7Yu%#dp-UPH|+xVV7U~E4!`}jEYk}3Qw<8323cpju?)X z``H8QzxgYduL4v&4)lI`18|^cDCYO?h!mw2qt`arx)&ZvWwb zU8|50=M20^ABYq&<;)$o;%iK-X>{>$4#m+}?9?Hi%5RFL8?v;TX^T;S(wyl5?}>UQ znrq6?7YJ*1YA*x*b&uQH9(w{exyyE-M__paaDZp%c}H(=k2`$JG)p#G-^s8UaEv~R zY!&v-3xd6y^*3o_(CPS4aB&U`6bq@O9(ZZSQMMQ{k!YzRfI!AC2opajhd3_`R+R5w z`}9@qk~{85&iuNcI`7Q3A-=k~F5JY-bVjqnTDvksthhx^JdC4?vGdjOrJG`kRV4J#No2%M^1@uZW2=NnNvZ+uE7pBC}A(tuo_*IdR!1g^6%|Loq9>~PQ5!nky zYj^K`p#AtI7f;GFqrPs>j`pmbTc@~1uv}t&Bp^veU^BKAgN&O>F!5I0AW$t72@%WU zjIB}}cz(1l#y;`3gxvTA|G{(Kv5x}t6f^x52&`$_Ng6i(IlmAvk7P-GM8kN`m!IDF zZiG3u>u$TJ{oLPP?FeMLGPOS48W0rGB4QAI=sOQZn{B?~V6^*CNxEZX(y`YB@J~Kq zrR{xnr#gTK%b}uyBhg{NHe>{*e!lv#Tie;Ym#+d4ssp*rbEh515&u7!+gHTj{vUt1 zzg0}I*l#Yv^zq2u%a+sT%ngaIiZld`eM%R-i?C@h{J=xQc2W;eHp@NecCm?n9*LKR z92L@jLqUw`XkTElf&E{);>vdI-FHvG8Bs^9UDMum?jw~0VnxUps5e(J^tfaw(L&#Z zkHosL^eI)2l5hK6GNP4ZK}uJ~aBsVlOvWdDtORReK8$fDKC+}WF22uKxer!fKdCFY z_{N`p^rrTT^Y$>9W&6p$ysF*&`TGb&=08u9n2`fDdeh2fvX!Gwhf0PRzV+y3Xo$1T z+I&Pm@X+=z%DEQ{Vbz0l1izD0_Anu*VM6l~!+30?`Nj*Dp9`R{9KeU=4Zs1MoY%!S z{w*~2t2Q{?#S4SBX2`Xr)pK#p%?lHrdI;k=Rs%0~9MQ8bUZ4vDH0l1uK`3CQszk}n zH`hF=p_&9{k>7g%eeEYNy9CKB+v^@3Z*bcfZ*W@(Y(!kaQRXrx8JG$s(Fu$-OqY$i z7$jPF#WU1&L5N5q(+!p=(|D+xuI_&@O#;fMFDxVpPADxTj&U@MB#D2wNyd8dTv=aM zs5zl4_<)Ce&G~!U?jz>;|KvB{bzgh;UwqnO8jqZ~)<^clirf<*g^hg)ZvsI&bh$<< z0nwvdc@_pJfP5HdTh7a3ex!_Uc<8u<*Br!0MMTZSO8EZjbGEj}EMEm6LI-SH-T)k+ zsd?`B>|Yx(CQ30-i#|4(i?V6heZvP!B^&j?vOgjFg(2)n*IJ_G0-GU2m%~td;7Hp< z8b%kTg^D1w@HS-s9k0o_*a#c=pSkR^_SuD3pII15neci3)vq zaga$lV=Q6t$iJIJF`!2m{>C+jwI6xPDXB5P?!6zrrd@aYy*e@NHcq-81W|#^KKSfa zqT{{hcvQULOB@EoORV;B(D016Sy>9x#>lFDGXaG7i67=5Q?N=|v{aySnxU&EN5)EK z{_<6T49@}DEpGr0(8Me}`)4n)Ib$PgFZK$m`4 zDgaU~1R;zjeGHW#dXX}YMk+!|&wVc>wjjJTL+3O1-qU{mipxRFvc2PRr^g4RWb7h7 zzVYHzd(ft^!Kz^Oq$x8QGic)~cc>MFT+~HExx`%l0E4cJ0f|e?y_ZfIt6r$kl-ul~ zmH6n#Ryx5e|9Gtl*7_18@qG?y+H-8}8_(RaC`?D(@hRkP=6LG2d zR*cAncp3JfiQ8i1f<5JzJXfyatBp2bFwREYZ8cZcfUo?OZpW292`0RTA;Z$w#D4@l z`uOF00eb8XFk*QFaDXL*>G16T-0^S!Y_#0O3x$|?E z#6QJ=*gED8Oq?|QF=j>6E56YOEx3+D9EA<>xQi378;!*4Vh~t@N zoS3V8%O*EcJ5Fz9hJ zqQV%AbP^9%yf7JJ*(scQF;fPecqyZx2ROjdh6+{q5+SCrt1txgs(91iuU>T(?AbLw z+V-92<>xn4)g?DN(~KK|QE-UJ7$x{IRsgMJDLlupa)vpZw*^7On~Hncrgu(cL>^@~ z4yA)#*_19c8u_T)qGL7dO3Z;NmmtQ2E$nNaK!cAct*S@JSmzZzqw{xdY2R?>@a0!H zm`S_${s-FIKHygYd`cCs>@!Zth)cy=adW~Q#}xU7D))BAS8)bgO*S3dAcdDG^o7TX za*Q+@&XV*P9u#wgb{?gdbEmqDP9K$AiT?cJ&S=0fUniQbw!eZJ=K?kljJQA9xKhEEC zmR`tzixN!2Qvo6fQ$&}OZvY5JyFQ{^9- z^b%iVVdC)ir=Hq2#Crnf*namPKGXi`IzIP8!EvONZwI&Uz0k2 zoKvUcgVS>&DGIg!%aQ$S)fAa&tht6}H0QCBiSP2CQmJF&jmuX72+0B0mNx(gSW5b{ zf9B=N7({L~jk6fkjz%r%eF|&nTjpKd_i*QHf9``X*Z3dt@TZp6FkK{7-L9ktyYN;^ z#o&MP_B-0|Tyu@|=62xU{@(o9)1odq7{p*Yb5le5eEO-YfoMM~W9%404aGam454O) zqz@?T?d#usW`KY2WkVP-jaO1NkI;Y*2<@UZhF2|Rp~DY)T8}|%{)q>UE&9;vt^6Bp z4D<;{tZP5`gn53b3||oR=0CmM!H9F^#}`utYlz#x9^&T+W_&?MzIYfNp^YFb-aX2M zKBQ@b_{(Q0C4Nxf2cH%O73Ug8`7fc|1X0 zyzy`Unj71cU6jQkXf_(HE(~nqeu)WHOQoU>jvhLtXS@rC_kJJ(2VJ$m=&?W;Zv{Mn z0g#&X^+=YrQZN03!O~kVy0ATv=aK5O>0b4yll5M}-5x&^ihsow7DYLJ z6x-;ar9*I|L7NPMUmLK#WPu>g&{9kqY~p1{BQsWBBoc^P88Iz?CT)$QtlAo6G@rNU znN#WKG0oq)%s*l3newa7KcVg1yxs~kJO1$}KifWh1U={%37d??mE*g^1HF)!Om=4$rF{%dyy}SW9 zAkyGTyl(i+|7jz7M|pz<%}}hVuyX}qa|`3W**ASE2gE;Mt4Q>Mg8Rf}S1_SGyTp6o zqpv7Qmmn;pkK)j4{`B$qpSRrH{_FME!=7C`ar4IZk~924HqOZu@QMK^J>@qBbyXBe z2Bu{2eF2p)(J5Vt?>QB=XHjv-FC2gOKoHPjwzPC%ATiNIcL{pjhG_JbE#Vyww)DyRP(m5&F)j}`y}SW)nh5R9dS4puN24q9_5-<0-6O+DPsn`#` zPZonY$0WO}jt_$v^{-~&b!Rqs#Q2Y?*l*C~pSeTJZnvRT*uL#CJK8zh<2@BKY=3## zE$vS~b#t6q?H5im0;CxEguVYwm!4v^0yEv@Ic|iLR(UAeaYmSH3&9FoVhwoYZZ%H} zJr7GoOO3;rZ;$`|S1tb|AcJ^7bPJb@17b$2bP}&0p8b!7Rh5#M%O0^f>GRjfz;`}#zW)~Z z_WX|k#Vul^IMF*`%ITB<;)BewQaU2|sEU`dRo(}Dg}moP2)JG|vX9|O5s@3l;!z^A z(e+xi!m3MJ%PhuBUU0j~m_wR{!8F+Bi|%Nu|LAPLj6|JrT)n^bN#HfXfz!eCu< zSKt}uj_ntQ*pO*KBGDZdMD6g@^6m{g^6Slx$6g9L7OwF&k%AbgAmqH?5%2t;YvV(I zoR=!7aq<~A#Uu~JLoH+Cm{+_II*tUc7kL07LOQ{#xFQrv{+(;$UimVj{A!NUPoK~t z@r$nQ7VSRRG)B?YMr_-5F;#Qva}VC=zi1nu@R~;Ag$?>CCv0iYJM|c=&g}R< zuDms01t7$6vO{B}T}wQaDB=`M#={Q~*tAM#F@#I~lu9JKsjRLH*o+Or%e5-~7uV0!WAle>&d>gzcl>ef{A0K1 zT(c%-93udxAfh?9$_;D_gcq47sP$I*s0F6xsx=C)TA08J(7G5{XRsZU0B;Vor-g~qdh1h9(OQBx zxAyk;U!ha#5g;cS55<~c#8`2QK-P@{se)F@g6?rkykQy`gCbhklCbPD$Y%8zgq{o* zBl^HGN6jhO&@yX;Xp2Hqt|rXCJ@43d=Fa7N0V>oFXTQ7wcsQdUzMp#JvF-fL!*`%- zf3bD43_!+%qRB?A&F`Jd&h-9-(ngD3Iw)6T!-i0tq%kYIr4vH=fXz>JNy?zZA+RYC-2}(`jj01Vk$8k-KpT zLbv7tw`h5ZgU(Ze)*iF%@c3{b{>(DJ_CMmk0p54f&3XO~J26)Z6hz`gJTkWmkmEoM zJ6rJ|;sYjsuvhyWjmm?-HNbAsD9I0ucyu~dQcv|I#hxQTH;qSw@kL^S;O6ok#hOJ1YE=zFyO0U|t#DWDOr;9sQ$=)O1PhEd92+|ERhSv(J{2+2wYSTyFkwKpwS8r5m{vGX|K8mpm%isAp(hgJ zQnZa9o$0gxwQ(VO(_^L&{n6P*44elaD>{-97Gi{``XDQx==4I*Aet@$CY_7I$&YLe6JBC=pJ_H-u9}mSiTCNusw{2 zQ#Y8c3bjH}JsG_Gv zj))z~6CM#^G`jNO@XJTw>j&TR4=*0JWV|hS9cVfdT5rK0&cdSRhI6JDEKk#T*ybTj z8&;72nh$EQHUH>qPC83$)=wyPnfzN;ewh*T(D_0mh~L+L*`BsBJ|AF??d|Wol2cUE zdHa-|U(qF{Cl5Ym_!M(##G&vq7z)xU#qLEWrUT%5D2X0xeTvV4+~%|U73*gV=u zdH2j_G@@@V^w?-LZMZC`vJkX4A_~D_429Xm$WPKG)Ew|H#WY;=iJ{2AAoc;KH@)no zuaf=P#TTP6yS6DlqyBY|9^aJaz&f10-08e4#1)fFjAN3?a4tfV-_EPBl?6vw^3b90 zx|LW|;TKfBM?#ag!c~v95{k_7MFVB8)`gTNI{~Tn6(r_ur#cw%i+_HwCYAEfApJwq zWJAPcPxB8vpA7iobLaVP@(<^$07R?uM9Lgr*8+0xNIEu(SsVzV_iyS~e9=~X14pmm zI+{vE#u=A^)US+lIOIyjvT`$=vjSN0 zq>qQN0yB5zTq*qZn}unE0N}JRV&*! zTDA>^f4P@AG&(Qw)7*?#2$(;L4dgr!4@JnE@j>>@nmbt1?ld}+30}_;~<`BN$G1I^OAH8mE z`=PT=)_GT)-Mqc`4k9LZZLry5<)pX}gy`qBJjj7aC9`9Qa}dHtd7CC^&E3J{@rSlaRi z;9&^+D|VjN6!_Q?-Z)Ic8%=u(W<1z9mLL-;ebvAi_5vC-+pTZ3#PVMQWkH0^N*8No zAG$WCc4hjNGla~IhOv0yi(dYdCtNU9AQJySZ@Fc*&;DN#7ym8sH)zEz!lDR~n2Oy% zR`>`Zfg@yU=*L6xG^0zE<5ZMd$mJvL)8X6xZ2@`Z6iiJ;rprD|?AkyOHHXw1LDDl{ zzSF2o#G&S`IbcR+0qskR7kJGt{ezcXdJ}!lqb(WKVG)m)mp);4+rD|8e@Fh&_g@uf z?Re5TY`MpfNaXcIBrA0lW3L6{C9?sd?T}hz!^&;29eBxWEm=8^p$|`Z(VhdgSp&>O zW`dy~`tpI1#7H-3crSVOj<$KjJm1gJV|RcO%Nu|%a$B`^ZeWY_KoY?iyj%zJgdM(I4b_iD8V8`)e{VwcxWhcT`p_}*txW>;9yceRfKmD zo&0qFPH^{yPi)Gk40sXfqFn}~@A%NHCf6Da^Tks55I)xt*fNEm3Fm2O27y5jdEo<9 z7KEQX7p`XFIh&g_=Naft>ke(N{n8UlaaR3bU3yFV>-e4k#Z75s69w z`6fSb^@}tf$RXn}<_C`WA(sgWjZuhGq3p|U8jw~ToQh!b8xMP*Y%rei){)sf9JTSV z_I=Ob{ZPyH#g4%82H=Yv@t5v6wXNrWn6-(#Noq%GCC{_-G;x^<;CtUI=U>OJE3e!>5v2@{Pu<0QkUmK|-Jm(LSP%iA~gOhaz z(Yzjvw4`jNLSW@dAVGAfdB}gBn`w+r%J!ZtTax$-;eqlfoT(9?C!l$yukS^$FV+zzGFPEd7E_O$>$eMuse;j-wB=Si|R(bFD{o|pK|;mA+)f&apVH56zzpPSR3HJ2d0VN;N|DTmGjEoA@w|>$09j`$omVbIz%Y^LN_VU%hd zG)A5eA!3KJfhY*Z$L0%KD!H?u)q)T$VQ#{#rNYWDLT~%gKX_qfs0M+`xyqXSTI-U# z?reW>-F2lstNx{DoY*$5Idq}WWyExzQ%v%-$%De;Lb%`fDvyrc0zUalCGpLiVj0?g z!(!pX1o+Mms;?VpeUhZ-HQEv{yyXbxs} zj0lG@gf`^$QB3R@R8Y)1e;}v@HVX}QA3Quj(daYl8jBA6tDe8Jt%;ktW&7eqV0i=Z zMT+$ihplPfxBcYF8yi$R!5gLo-Z(j8Q)wf!*=jQ)t4(IUUkNY<{nAvQ`>A+Fr%%a7 z|Djd>Y|e9($3+X8mvkq5ZT_FW5trvBJo*6phmy6Gvwo zwU*E^UGwmqu)^H%VK8)`KoZtTi=iM@ozsMw@S)dj7~{DnEeC-E0LxQr8{($y<>%*n zYixEl$3Oh1o7#mp_*DQ-Sf?E4uDHip)|%jieUqmMJI)y|qlS)SU!DL)x?nCg;z=pwMZ0eI+QyI}c++fQm+ z;wC^XH=c{wP*}A|Vw;5AMKk&=bhX*KflzZ1mU1rwg~I|E;IwjSx<&|-E(hrkyhMqY zu~4=4bYb8kBP)sj^j&wg-@4{%+{~{1z!`hmX8!hHt-`1X6w`ebK?O{)AxibIPKPIy zvBDih;RTHYd95GR3oHG^)2+m#I9(v@f5McN!5~KPZ%gS1y+GCaOr4rV`DCuOe2ljz zt&xsR?}KZZV=On8`}|W^6N0Ws>aMWy{pam!TjO5?=hhy0ApWHG!P-;4?aXvIKM|Im zWFp}F*o47V4%-U$e zsyJGgqc(LMYSVd>Q=moV+18! zJV%5Wt$76jm@!TIHQd_{kB^pn=}cb*`0bC~(5|}q^I8v_w&EFaAif&IQ>);_KnZ~< zMR$wJC|M6R8u>95$B@Nmjep(SVR+|a(}+^u~E zOX8u8!14y*p^dMsfBSKJ+Hvs)K(*WH&U$Pyw88J~h;H^htO?+sI zlAb(-tok5Cdq;{y7>~mDjW0;(#c$yOqsMj?Pv*?K>E3(VuU&PO9nI|c{qfTOmbeKZ z?kZI);-xrp&V;q9C4(t&iipdc`4w;Th-^XwZ+icD^ubPl(?>7B@xZm`2R-3~!nz-t zUnuvvp%)?^Qp|Dci4`JQ4jy);9(bup#u`XCMxdpKX0)`c_@zOwBa3yEDzh(-)t63; zCx?mwl2PkLPuMlfPY1m3{=Mxd|LkhTSaHsij;QxEYCXkE>5g9nll&-jaRd}iU8Y0~ z5*1AI5hNZqGC1VXWQ?qf-NK*;UHQa<^%FF?myXTCG$skl!tQIoa{0kP5r!{HTiyUX z#9=-xcEU?{#Lczz_8!|VS@ZPlWYg6G)4K*IYD0`kq zFuMta`9PiBD}5|jFNV>)vE@f&v1AwC&s~0byX*e@OEQ~&b6oge8ZZCTROpBa@ghhW zt0|VLgmQ0=UJthj=L|Tl%qZM;VtyQZ-q7p1VKe5?@zT!uC9`DUO_wv2jqmeLQTLBZ z@Py-BMRPEpGx9o=rD^_%%W>%@9wkI228jx-V}di$65vQW2AkxlxYRI>Zdrd=d(jhC ze#&Mk9o+q|edPLf{q6TE96H?yUd4dk`?BJv3^~38xyKMXHLZrJ|ntvlO^ z>o&@Z3Y*uxH)d|DWU=9mmsJ?)Jc_c!~cOdClw+m0fd8OxDrIvwy8 z%H=<3uQXc&yI@Lke8W#&c;ULQ7oA4{gNNSObbiS&U2_g5Mg)Mz*j>>cdaf@$|M<3< zZs#y9@G?93B&HWdpMEoC9t9w@fNVp6O?I(HUi{6pko zJ;0T4TPTyZAVI+ucgf>G-@PcUIf7q;jx2(_2R(ujDW3onD;;AXeLL&ayp(5m?>;JcPl0@{z~3$8S0+H(EHVs+B%-t!t!B1cMFX zU+)EWg*Iw-=qxlBPHp1Er@FMvpA3#No6)ulGJ2_57gLODUYZt6#1hg&>}~O)Wc&Ge z`G1b>J5D{mZChX8_{Yg}mOgJsuHu($#Hx-W6f70MDy}k7MN?5nQ6>o|)+%SIujoLjr~?s%o`Z?4lh*13^R z0<7@&FhVTyHLfIv1>w?&a*+@O%4PH!TG^I<;B6uzEk+nXZ?K14I^yF1h8?j^OfTZG zV3m|d_loB&Uj=Z~9=hZFcF02)tN&xmFX!2Rt#{DuChZJ1YZho0zIKfFg$iq^#cw>k zN!S<~v&rK}n=SG1v55(Mf!C%LX0nX|*+xlr%c^m4?05{wE{0?qpP)FpAZz}q_j}h| z)2_YyZY<2I9UABU620?3Vnw*(;n)(F_=QJHS*L?x(V!5dMgdhE86>alD7xaOKn4?+ zG&L6KE3X=enZLYE44$l=4BLoucI=m zC`m6h99$cKC3egp>9S`9jv?TePsEI0#U+K?4`189`RsXqzWmSq#kDQo6Bvy%CO$rY z_3X)#(T7M6sY@Uny22J7HF%i=^@+zkB>I>`R=VcpdQY435(iAlJqK`D!Ipf8m}nGm zgbppbZ+y}*ZTHso9xsm%Nd%TR01ru6TRUUp5$(B0`J*khq*>dsz_rGM%w@jd9iHT& zOV1{&Em3?J@MzUT%U&Fev#<(t?ZnXrn5m^DO(3{3LT7#z1@ya(;SAn$*=3Wd8Bt$# z!nStO;Tz&iUHFJ&hJ;8=XR6@mFsoh_JHhKA*&~H-nJ+4=+A8vv&jOMyV)>p$L7q1#=q7;^x~pgVoeUd8C6%N`Cx&Tijbkorvkq8 zx%0e<;}j2sw!8s&h_cY%`Hy|py{Z=-MNo|Hxi(H`q&m863DkuPL*Aq=v?XKXj25+x z;viitgaOksghf2WBO0W1=R%H7`sX4QK_Usn zku$8A6|M1#Q+Lv&OTK&2ON??3&Sn?DV&jXof(o{<5j6f8($q_o3^65=&^d=ho;os6 zI%cn&o9D#2I?KrQ6DC*&n5$lvVaUg17fhX_>`Nzcs4dK6CBDWu8|Db@DW!iHxGsGS z%?sce$8K!TK5d@=Q~p!&FM${$koZP{KLV1*!r1EFGV`LcJ47-+LvxSI?gN3RY4&Nz98%5>x>l~21!&B z>I#V@=w1M0>?yptqyPXw07*naRLg0ZEs6VzuX0ST5|4f8GOwZKjos{_y{51R6D4VAEIn9h!&c)c!k7`?=ZXU0_!Td0lx_7gUJB7m8Ht)+fDl?LOfc=r~+;zu3@tnyc_A!DmXeZYbEnKO(*=_2hZBtC*uqX+MU zduS=haK}p#87**9DLWt~;!r-ZI&JX3yY-g#p_^_Jd~S!A@wb09UxbTxujndfE^5K8 z_@Y1ziKpluP^$#bQOr074rpH=K*dNKvg=GG8Tc4$9Zb3--Uf{q9i&=LMS11m30kH6 zh;2npBQfB+|Im^DG8#IyCdIO05E^Q}P-QFeW|=wR(N10m1PgXH?G2p-dJ(^VM6K2; z%7?TsKjr9l*0#eL%&z@(|9IfqlMxA$RIyT@gE4ucYZVff&=J&YvBMKjM}Fulz7smA zT#NFZ?k5|j#{7=7e9M7-D49$tnvh}prO(~b*3R$^oj%Kl_qe_IyW(^I zYcqI5vR$SH&iW;E4Q z9T<%lCTvHM!KRw2pPA|3{&&aU{lE4^{`N@F#|sMMih#u$5nJL$e8DJ&`Amnni7$y& z00j?NHD6GT>9i9fd_^98=*gz72l<7bNgB!4vPv8!usxLivXaJymQPv}l{9v(pq1p*pg;IE7?{rQ7yuZ_|C z+Kb|E|9pZY&7sO%tUOgzDsZW<_!mzG9793FjIx0|a{x@%69ZnRVq9v<1bUu^1YQHA z&_ExV&xG%3$AgS%7D?M!;Zri%!)_WaUm%!+O?fTs4{w;~Auo0nvj}3OQOx<}vhQSUwRh_zx=>%72jqCKZTio=dkdj7RUr6wbZn zHD7FDWwJNfL{pf)bbKQVM*6vageWI{O_d*%K_o`r7V#wmv2XlaTOaQx|K9WF`9J0V z`QtaXD?a;q&fIZw*m}%FMEsl|2m(pOGFAg!DL@9D8DJQY1V&e~ina85E~PA;30G7) zi=l1TWIMw|`T$k!F(+(l&pA6jQ)Ss6)CeqZ03O6}e%&#<+6n9V^s1={dgH`++#sRB zhSY|OJ)l140l&}zk{)C5wP`Tb|MyvRZ7AEVk$jeuM3=1gGj8L)C7P|fP?&~Sjzy9e@1Daj?_W0l*zWI;%I4>Cs)vk)miqozb(;MV2h7~v1(4~qc)`t3Ek}IzX zIg$gL3REbWc3-n_Zs1|uO2xxEzv3rAU79zY1Lgrfn%Ao-j&Nm~K{V`h9(HG1yuydv zbDb=Wem%e7*g#m!HI{gRHFeL;v%<0GQuvCOW9oT$e%8%Nz|uK<-xGJW^)viCGG7w( z^M7%j&Qpi6qASK05hq8&W5v;lQcmHbkt{1IH|CFc>p9Ow)6>9LDuq!Rq0lHTuOk73 zajqF_0JK0$zg}U$nnV2w-Yb`{0#wKzw0>MJ51P@{YUpKrsx}S_pH0yFSon;!F>KrzHc8>DmwfVHo5}3jWZC0@2c7Wnv1wz>PxD|LZ7S!7 zwEq|v|J&mxU~Y{M{(12uPte)c1<}EFjOu)ejhaH1bO|Mk{8ijYaQx;l`vFhPJ60Kx zOYq_=_wfCYY8mrjKtqP6{H4|Ozo=vx)9+R_&04Q;OGg5Yahp~vENM2lGB%xe;ZZhj7-~8BlzMK5l{`UHIM|@9!8o{lg z4e=~yiIk5B7Gr2sX^LOaGNX7}XR1HeLt}DfJY$$;YpNevzsk8xNL$mArNRGTpnJjA zGah|pd)!I$d_!kN^^4svZvY;oh(CSHaqa9)M-0|-fd|KH+v6&P+EBUCkVqPDIGfr? zd%Ll*3eP6dcmm{RDaMFr1~FD=K3Gr8;9y%=V->@vlO=w+-0cL61+==p(;b4hFq?-*Mqz0^S$Zt0bOuLX?C zBida_x`3EtHLG@=!b>;QM*l$IizmG22@n5Ro%C@;V~v>BvDncU-*G@-3v!~fgB85Q z`-H6}R@v>g!h7grmmgZq2g|6J7u!0deSdsa@EqGMciq?i*9GGfDVYOo45K>9Kj@On9X7atU zx{~<$myw5BWm}|B08n<`eRo ze~fD$;B3tDTDw{kQc8zl>_PTNeA$&z3A)2>+aasT%c&0L?A+WQw`+4TX4SvWTHQuzqj;gmzKFs+qS+~ILe)+5Yd;AqYf0Hb-|WHdo2ry zu5+CVEJ>dD(j9$@mLIfjwTARv7kAxnNVG7LC&i%ELNUg$OhCm9VJDs*bJ7#9XlbG- z83*fzHtQvIdk?JhY@=U5a4S3ZpA!fse0L&O(o9r->10IlCC1}LO!F@l4ADZp)-LpS zo;%Ms1Agj;yV`&M=bLrDj(@Gd#TZDYct%|E6-VNxM;sL0i1C0{J{c>%$jCdfjV2y_ z5EbXqhxC-Q)D$hK56RY)a$YOvPmXIoYoa#(!1CjPhXDTT$mI>dzb<}4zbN1N@9pEI z+BdAk53}|I6N+ zMr(Fn^_@qmQdOx+HESwagC$!Y}Q{S&Yj+iDccbT^(DSBfM+^*$5KpVDyBJ5JY*z{#S#Db6+T*3 z_fm;1aFHaw@Y|x}mjL{Cy!7Jf;J!WOX}hK$)^`CIPBV#MhdhhaGS@P^(B44Ppx_x{ zeCslYTNvAnGJY&B8_~s*M&o*3@=WU>d}7Jmn6Trw<1nObegB&;nhqV<&OPKj|1`(? z0Psa-``BLn*Rc!rXJgcBSF~m~>AEoNLbRI|3)8tqsA>3~-Qd#L&0Fe1OP-6H1$coy za#7o-1K|?lRijAD2Q69Q;hQY~phm1&*y{herC`|C<18l7fn@~32l zrK1yX|^nN0nVD%#ai~x1}rOTxrWnCgSUUTDZ4nAgiF`710afVxbt<0#x>?KV2bzYWgy-}B_$fng6 znPP2l>xbc(4(~sA`qmfcJ3Ut0qQn1p!(G!yZ+<{$M7CV0mD2;GXGwuHVi*?412+ z&Fcfe7n$kr)f@jDJXe1PRnN6t(?u7CTxjpO=DPE5}|tY7}~o>iOa z>)aIW-KYeT zbAM>YCKzmbe@xfz#f8O~0pl4v{bDb|v_=#{qS9;jY*-k+V05e%oKFGu7-1#$`)E=i+e_W5rTxF7=wbS>>WbM;u=Dfqq|D;JFeS zua&iObyyJt_7kn>`@#jp%cC0Pg0>eqbNte?e>)=PbEbdvsZUQ2Jo;$iw`+ROwff~h zrLPlYGK`!ksm(@6r4w2CmR`%qS&!K0mF8yD-hzqA!b`&5LgOWaN2N3YoMceQ!exz0j+IoqCX-0h3We^A`SWWW*yq0$^hHfmQ0s*z(mf;jkU~uW-AN!9y_Sp0zpZe5> z_O>jJ?>}#P=N0?{C!=pT(Bv{xHzHU`?wG95jWyXq$7rjjzZqC?jAp>~u6yreGy38O zVnx@5gTeHSA66RF@nUy@cQo2d*U_+3Xeo~Pi5r{-bDOjO!goy~EY-3r&;mb%mSU`| zd5$iAHU=sMBqlFeS5W2+{E!+k$6GfExKbhZVGEl+k7@e;E&XM{`yYCA`qBS*i}T%k z<^3gZeAYbYJ$ZDdyiHcJ-UeO(r(Oro!$9!lIYmQ-&Ni%8`?mw)crX@w-YL9T4c{H> z*uOS_ie5kXj`i(50cjnr4qf*Da1+bN+f@O{CVsfE3SS(jhIBbk2YmYb&=_1^#6IKJcA zr=|mY`WK4&rjs*G;}lJ9$RV%FdG8&(-n;P738e99W`U!_x@Vi#!KMS<#M>55BD4=c z6^Hp=N8Wm#$Nsnd8Q1>N>-cSfwFpdF$21)Hid#10KIdWnPX9I#yiv%_(}9?vd&X|d zF@}&&@%mh$`{kTUtK+~FaNE?>V~#agE0s;uzx(AEPy4p;odG%jzo&NweEczG&--8d zWV-SuowS4O1+@2|xJbd~qxK?zvKc&b=f3e{A5iX>g*wzIJ6?^Lv?@bwZ+MqJJi}`C zT8yuI*^%kmQwQ4eIzNL9tPcRsAZb9ZJ9uPzV8*3j91yIe z(Zs7^`mU7Ds*dQwpU?K9@;zonHO&7f0+BkZ4XXAf5YAN zJ`bHsC&~G(R6B>{gO~T)IqmB|Id;CtbSbhWWYS9(40twbLhI&hHVGnnV+~(=R)sEn z$6z13IvOj%)&)gugD?EY^rk=Wz3q1E zZ`5u%Xz6;$iZ68-|7HU& z6UZ>dYt*4u?|#!o(-Hkuz&f5;2G$3FXOOoG&)Yw}i$DGAlJv#J#gdOyathU=(lqUh zWWEMKxS-Y8`vbk`=AxkJJCZh|KSOj9$(zoPyfT(F>ud&8XzQ^721{KZB6}P9=7iLy7Wi(Yu+SS83U5r=ZTnz4 zv<|X;IVP;cP%X3Q8$kPnJ1pTp+CExVyb*uJvGfm~SlWNv@Qgr&&&qU3QD)6(y4Pa0 zjn)ZXH-gHKcxD+`9{`>~-oEeRE2sVEo?91JDl|ph#!~FLpz8XNC>K{| zG?$pZ=(uJ;mj$k=QTX6JYF^@p*5ZPR@_cN(;}Uy`$3LU}LqDWn{`;}d+z7dq!w&$< zACqvFq+uh6m2+nRnimS1HH{pKwgeGL>_Jo12b|=+Zcf0(G`?scgJ%=D3C7nZZD$Se z%%NP{NG-~L1&~;f6RcIZQO;xOpV%Bd^=1f~O$UQMqb3twOPq{v5LK_n4mzO5+XyTh zDhsA%p)mF?8a6b#Gv3Nt_m$*O;@{eR${<6ZxA&aso452m0Up)w0Q|#W*LMN*k<3)i zICrHW`9m`2jl7IKXJIt;8vSH0c%;sCZvZo&UJp&w%nuQ|rPh`Hh=ow>t2JCb3;!KU z6Mf4YiNo>D4$G(NF%AwcNG>w!L3H{-a;JWqMTqByi3H z38|O3jS{kNEWK^JaK9|r5^#zjis8LWW2X__-LlM`;wT8 zJu>uoQN&A3c+nZx6xO_`3r4gtToAD8!tkQ#z9_x48j87On8CN-{8N}VMZ_7~{L6pe zdR4!X2)XDp)(qXRZb&3qO38kdMjS{kOzU4gb+wB;wWy;i6xz*NgbPyZ@Tz8Y z5sYTe1yL6XMIC--Y8*s~J)1Z1fHi8O2}ikSgwV_y#1^A0{Av+w`-iVZ$CnFgnm%;z zz0>>eRP)%<@eP;jE5A;3pJOM7wR77l$&qvGoef~lS+ApkndH6pqV|E@+OFhwh1o#I z(K=7Sqt}`<2Quz;$7-P&dT46F|TPa|Dlal!HFRfqUiQ(q)1L@HG4(J-->`V=>V zrHhrh^wHs(fgiorE>KNn$`-&3KL{*rT+f?$lww2j1>V;y>+;`GH2NRvo&UCVJn!hC z>DnU)lglKh_F!?w)zF-8bgZXb!f#AG`_h`bYG@&Ue}g~dkv6uj(Z|Jr^Un-pCy zSX#yqd~sqL6?8A?$cZT z{>vM;_m}_P;jjM5PtKpb%oM9ipy#DTxvb3r+W4@@VDDFM`p*0k?%k{%Eqr^ztA~uW zk0;{M=*?aDhm9Y-jFk<$B`|o%YhcrC@%8I0vy3&m2;mm3$)jx`w~Dw@68m&Xe}45wo04=hOSHBsp*1RHw)o!;x61L^f%n`UgrRdB{YwG$s~Uup{P~ z4|c{&-LgQWX*?MC(e;iNMjQja=c`Xn$MpUV>p1%iY-iP<{rR7@=JCDzrf)sj|4W>T zoO=mWKB{n4m=tRd3b`9IJanb9F&baByn(l(u7WgY48;G2fktpG)UG-P{OA>I{F=7^ zM9IZ{OHiWuKyFe(A9V%Y8(zwA`d( ziPWdrm1VZVFYq9`4rZTea7g276A!-x_TRLb*c1p`j|Z$Jgaq(SBTuX@qoRj@^hQwF zi+{6pkl1)lF#?0pm?hoHi@0LIh?H^RhEJPnqlv}2vMq%EtXxA!xA9i9P35*?@p+mK z9 v*7@h1Grjpa+xtso|KxqQP7goACM>W2N@OJ?*MByOTtbZ`NtGO;LsHXAoLy^K zFA83JFRafpevB>uHYSOE)B&5lPqTlUb7?gm4s?4r9FD*T_MJO@@0-^D5}2%=-En;Y zIJ-Pe-+j>)(}8p6H=G!aRrqc~n96m~7n)?_VhTOG+idIfuj2++v~|3wm@&Mti3x1l zZ<{s;BN;SN*M;WL;=^+skY$q@kv^8gayu2jbUZKcA!8>NmNuXjzp!na8UM?;o43>> z4r3f_qr)`|$K@(|k(nvkTlJm*+d6K$?~H#LaI=@_%xgc%Iq7kZNs{=^S@FmV>&ACJ z2i`)I&?KX>QS_Ka=M>4#Xw;Z^-HAp)(W_jz@I2UQm+|R z3Xzu|w2X%US9lh|wVl{#dGZnr#S09)iJr|09$DKn2mj@3M?4o@Y2GNbjfmP z&j4U8z$|Teuo2=*vxL}yP8_VGxG*7e$T6D_bXmoH*$QlW!Q}_0uX^zjt=4fi8CV|x z<@+b@amN+5?ADa0`7GuL_aT1>Itb(`8Db*T@CKLPcv{6|!hw4=f93Fgjcu@EIaP z_OS($VNlDyC|c5Sv9^D7hLzR|9Pp3bxV>NfD+SY=F4b>*`?Twpqp~Utd^a@H>|OBQU*MH;))j&0>`jE(GiWIpP@1q7_{1k(=_P*YcHH78 zrbKH~!rL<{sTx!iy@mL3&N-OQY~vz(Wg!mH$-*jwu>(Kq1shKQ zw1JqgTnA>Km&9G)LuSY_D`2(u2^4ODPkokS8^*wlk3<%XXZ1w?$tWTWgAeJ2*7%Qm zG||CE>$b!wn}`9_mO7C~AvU1D`kL+iE&%Tg_+!6ut8+#M$wzV-T3K+4sex(}u7^2q z%6&Et!gqlJMd{lHOEc3q**oiE3akcOWEh&5(80TmKm)wvEuu9#AAE3OY`aMQ?eBFb z_~$6F$4BTy?WaCyK}ot8leNXuDBaUq*w=o|9|#6`jCnVC4o}k+#dq`pgKj zE|qy||K`L(&co)9r!eW{lj`j+b{>+))xuSOC8bM ziH{6Ewg|QWnr9D_|IPDz-m?BOAX)lCV|@Vl0vY=A7hO5=_PFd8BxOf8akqoRNwc}2PMyJ-jA>X+!S z5+47?gk?ViXM2{KpL$KajmMcS>oDAlu(@LV#kXBNt^Xf@jD7yGJ^*~4{G6+*e9y&K zEi@?Ix)@Yw6fMnzxr>k4S|xLdith1*#tK*?gam+~{@Z8U3d4&9_8pOOIc1@<>v;NK5UU&X}Amn^p2jD%hKRu*$YzB3VSjh=%tU znnqWC(mbQL;Tn`1YS6Ygg9bhh;)UI^4F@2e@a-RbNjLpFK3h-lTH^-avwxKO{3Gj7 z3hv1@h41!{_hk$_LFj2XMh=pr!Yh$i44BbJ@)!N+%ve&j^p8FtMlxww9@0LFtO+HY zGjS-a=V^NRv-E(t<^NRXpSJmbqgYkkJQR5}iOE`4Kn;KA_nVS%@<1kb*B-}JVZufGg9a`zO(`T+10iGlsL zV;4_X?mr-^8)G#b3Jkklp}jo5yv>>s!1ert{c&t)wFAz34PMCld4; zXmW~j=Y2@UYPx6it=guH$Dnn4MhQ*uKzlZdbqMdQ<2NvB<#X(H;mvluF^2_oQiqD& zddR9#m)-EOpV%E5x(w;K#;l~Z=J}k_jN;5QD839Y{|mj=CAM}0Dm2_&H(1BFaqRrFZnLsoPS2lZw^*PP^f-`?>Pzj@pAklz!4eRVc{%zo>0f{FjynHrms3GDl!AHBl?*P0G=X)m+wD+`r2dq<-aZ{>7}?RMSZ9StF~>SX$m(NkqVJd;k$@UV+VnT z>(o>qgtno`&2@z@t`IR}e}{i7cTmA|#8+QT!@q3`Z_G6P;px-UZ{KxSt+sc%>H;S7#yT?fk1=ME^ehWR0#MvS?5;AK}ic8&F(F?$!RAG~4ghlt4I13J8pr7f5HK7sOW zU&N=^xw^akh4qbrlHjK}t`7iDk(lq(SO3f8xUeYDZWz>9VMjr0-34oXG+dx{u~o4$ z^)-ZvCpK9eS!>|EhQ*7~{;h`BhM4k2VGA}djmbQmYFTv0h{BS_VbEikKKMyTm|`NL!}a=THWW;b-FQ-#;Ihk_XJDMb?S7&FGZR##<*E%UIA&Jn`RH ztiuNes&$5bx%brmJAXFP`^rLEF=UDTi&Z9U8^IOF_FKNqhhO~tyQbUk*IRvigERSj z$#dtg@>yFa@z}&cj#?#)oya1b-%28)?wdU$YFDl~DdC~_d5MS1x?_nR7BXB>OaH{~ z_#dDC!dow#_U>t9Bi6Yyu)N1LZ`aTK*8lfje5LZx4MZi@)jA4%z7A5XsbFXqq|tNX z_YIfi`hr;0=M*Z08NMjPr_Ww0=vubcfD6Vy6VNi|ddZJE!p_H_|6^3cXn~DCoAjH9sbz;Rji$il!!;<~Yf%?4o?f=~{ z`m~+1bP|&3q;P{_kgqf!EyQx(qEdREhR$eKZ4Z3eg4K9z+b#_F)|WR2Wrp|1yVSPO z)tKW(&z~4TGVmR9;jLj-l+dEK$V-B22*x%?2219?bR+9vKI_4-iIlEGwPT%XxW`{E4h^;x{7O*yh8p z{=q%d=k7j}yw!<1hvTHR8u=tCmB&K#o|(S{lFy|L)=IFi6{N`=%#?nc#B zRrTe@TE$sY3SC9}q&J2tOeO|+hJ6$>#V>({I4b475DW;<{>wsQEnDLC#kRbdFojEa zrYnG-+9eMF59&`G?|is^?pgWleAiYun`uYnGWjxdAxXo^O%1&Ddozt`3zhFOu;iNd zKD3v*5u>}XWoWh=ftRs^fA%r>w(S*adJXzX@Wa2q-HX`*NEi2*zyRkOOEApMT>SV) zA{l-Pk9I-}KFB%>oBB-rHdVI44BhhY>jSS57~65#zxgF329H|X+F(i&-}W-{H`@mK z*?S(gg>64Prnd(E$=|x&+m-`+mRxy1Vd^uP)UjmFi}{`7=vnLo=;+UTmwFwDvfCIf zZGKtLp^<24^Etq%Yj>6oVPy!i5opBGd5 zxe#1iJLn~dVy8xT}sx5o&ObK2Ou27x*m8 zwyaWAL)og9!AdMTS1{IFs9GL;>$VxJj9h|6*KvkMFS>ZZzb1_(eq(_g|JDI)(me9g z%f^5Du7^rt`=@{Te!VGBc1kDP`$;aHH1nJvFOx$jtjHuU3)ces#0PlMZQIN8Q=&P! zwKw2xqwt|;pR+Y0U5;AW4s`jq)~xyGzvg6}*AlzZ>jS`!8u;!DFL&W~6H4($3A)Ez z)M28}M;C4`g1IrF)%Z3;QG?0QYz2x|ubs+`w|b*e;B5hnFBDx2BYv!*hIw`y<+A+~ zyX3e3b;cgQcq4!Q#Hjo_eLHiAG`!N(q@Df@zB$*$gK2)J*1OPY2JO7tE_SeA zd*ICh-|Mo47O)Xr;jGphicixs9yl1sTKG|$~^J$Ou0br4`*B(AGJ@@>) zA9#ur;aq`S7ir$iNK*VWFNJG8x>yw^>o(K6VM)Q}qdN*3VKvZPUBTN<*^SNlqVWYI z88I2|2!kV9xIpm{jcNMnUGUrgPDUMm;uAM#|2i#7g!87^`%?VQ&uBgiM(be`b~mae zKeB)}_gfP3Zy;J4?S#$gVQBC~)+&g*F53qF(M;{cK=fyPxH)?N5$T2Ah+pp8W@Jx} zC!WUIF=nOe@NKZ|WzPH+T#EG*Ew6xAG-72>F<2_Q{KpKB+LDA^AW%;Mrrb%vKFIh=T-Rx zk6zDCd*ylHC3PJY-kW0`8#f*c9%6OP*&zmzm9M7RUt)0F*!720jgK|Qsx`8lQ?#HH zV(_kw!gp9&#}?o-8-;1yfE^*I`YE=tzw zDfp$o7CRtfwc*ayCce;)0lfzwd2IUYKm9Qo-(7=02PD_zz_}h90ij{OX7d+wk(x|( zK8?}=o7sZi+}dB5Rw};XsS&fWhDzyS*ZdMXR?|y7M%dpP$iZuLT+rY0+T+vFLwh0D zQ5jet04fm&_w1d%^}=V3f>{=h8suL8i_TspS@+f|M5@G_=(5A`N5A(Kl^FU zy^^8?byFc@#m(&Gl_~_fVsWJBJFT3A${qZc;qcgBR08}Bo^TegoA-_=!73)tIuIo%iSv6GJ zSy9*)Xrd7LFsqbZctr#3Hrlf}EqAf%z`A)gTVy^LSuCZtTM?dODF5I~J$#g#Vc9v; zzx~|qd;oa((Z{Cm_@)0m{qHyEI|0d#^QMDS)VX%blq)xwYBFwC*#IlUMlXBccyYjC zo19Y@g@<;{Scb5Mm78vSYN{(=+=}Aguq42Fo zts{dU9W5Zr?%<)rN9mcbL%Vle1=TbQuy1?j>QEbP9UZv4Nj`JWnZ9rRF#y>aV|@Uq zRD6%$`LAk=Ye9S$v}S6|7l?}~jTspqmQlE)S~nYO7hmITIiT3Ie`zi7W^rh6>6>L= zEsR3P0XNYGDpi}nbYEP|pLpQ(^!vNu&3}@QCmtVD4*t9Me{_2L&wpV0=-sEYcjRcH znv{#9DQ z%x_%B5q;#Q76%x~m5e0^#X{+^$EN8=-v7DjrT^=1Pw)HWJqz6KBmd0@?__s2Pn<;a zVl49J{D-S!Hj`Q;$Bdf1J@ByruT3>Rvh+=8*C-~WTwceF|5%c|4IypXM%#a8X#(;q z94$n=`uPW^7hIu#3bqbsV0{2k8m>BUaJpW<0LVx&noLoK)G?O`N8e0UsOB)cXse;h zf(uRuu|p3Vn5o8II4fBz1v)CW@JlGPeYx=Cmo*>MI%Yb4`__7lqS61^UHaAk$VCyq za?>5tYyS0bOh5R(8>Ua(qdyVUAa9J(l!_iah(*qwcWZ}wB3}G%RMLxij>8caHPD;= z8)IXNMEF?GF*{yn12Z0J*Fx7Q$UI1xs`Ha?+=Gotw8YRDCs0kmS+|cq5i7*sIG3`Ap6>h8PwK1v*Zkez z@z4D4dO+_DvCGGMZ@6c=_d)#}q;uW*<-xTFWWBmp*sEyhNd7%_-LTD(+Js1(MModT zmLF)>D~htyFyqUFJwcnl(UY}Sg7$!~5l6+1tnn%E;L|kc zI2^r1m>s5N1q;Y*T7sXwd3S#M-wD`pIHNBG|G`H-GrjDm-#2~ldw*|w?@f1>M)H*- z`BY;Xd#jwXme5T`2=*sC#loM%PWagcGrc)lW4s-dA!`-itac#lqXv3U7kZJ!Q*af> zhTS-G#Z)-0JMhIHu?_#&D?IVHUa=d$VEf$WmbilFTXW?&p-Rf^q)U_pZV)SzXPFPfc*In@#l};2(E7?3!#!|1ER@r;m3k?6>hGM6tR(o>x-rX$a>*_QTW3@u7tPCvg3;`flhavd3d_| z7k+7a6zn>lGy~5%bYS|9=UzH}+jB0NUUou%JM4Ta@0G)3w~msL<|pKvP3Vn>g!bHg zcpBzGAn!%fnS%&E4%_A`xDdKyi~WGrm>ht*?&A67el>n-sG+JOgWpIuiA z{D=i8zA||>%e)0%>$YVxZL9E18^f_ASIhYCeBjLVb04{L`WL@*%k=O6%U#o>diT3^ zJb4Db>-85-|Mw3(Cwt?3O0VaJ)SB%`CUfll9cm@_wuy<>lhZREt*mC<4gVt+X|=IN zc-?56<<$^Nv|#OCDE)W-E&Vd^Z|Dcvu6LI~Kle+nz@0#io>>ftNKvQ2X zqD7OX5mWe)q^wPfwv>0J#6UA=l=jbL3CdjF{<4>2BBQO%gbH&AnG62hNVJ_44XbLt=W zjIt`*Gp-r-m}2UG_Cr93c@^zgtjf7cB*xAnTFU?cKmbWZK~!3UUwE-{-IP!1 zVGBK|ckAB-uMYszwCf)LzMF6VS8;S{(O{@28cGkZ(|LTXaw=N-DK8(<<;7yzSYh?Z zMNljJ>}ayXzYWEX)jBRMxET+T2FpXpcX zpVoBO{f|uV``CTc_0Q8Ap=ocs*4jwwMZ4vF*MYraFCdHVnu4>Wz2>l}Y45b~(bN8y zEl;*-Kp_gcQC!k2j5S^0!8m@Ai18VlH5dOIUwvdcd1UW&`#rn6UUu~Zzyh3+wSq}hkx%=ws7ge{nN`YIy}AN!o!|l zbmD^P>LUjx{-QKHkD4}s!tk64u1AVVlGce{*HPaRyGG1sKc!X{Q-AEWeNdkmEtjm? zwCJ`A*6N4q~=E5ss>MPaW{#$dHUib&t*MQGWO3aC=tzsec&G(;~ zZn)+2^r6q)KYifF`=$@-XZRnz?X-TIKl1omk6%m%{{4sVny!C7ZsN`9k z4gS#4{-M!(DN0>~M|N|Up8mJ%tN(v+?JHC!6jwD)Wu%ibiV%)IH;PrlUL#?+ z?f~~_OyRBJ!mVONul1R2puo+CDNMv&&@Tq6_SnJc`Nt1UFF0{%y87^e>FT5BPtVrt)Iq%)34;yIrj8oOzRf#_+|7~QY_>64 zP!pn?-TORdilOjmwH`d0A$ING!ElJpF)#2zm!e?S5qKkBz5}I?;olw?@fSQk%fBtn zHGR*6k4+!H^MUD;di~)Y4^AJyA zOASRtFw`L3d?8CI?9$JoFCb8iXwG<>loBz+okyDRyq+mE-+TKVGh?Ox#4_-Zewg~9 z+wb#hr<3#d?wPLC1Hok%?4K^t!@wo_5yGiM(C3NXZ~9`<#}Dk)Hg~;frpdaFWYK${ z+8a0WDg>{!*U_EvRErDA@EBS?2&Amhsk&ssPuDvqBA%r&UNS`~CTfWhPYK3+(U0h> z^jq{5{OzaDOgEo?c)Cgda`&_MJ~Vyio`tlYl#3NCuH4qOikFVu_|!?r9zIydG~&^$#Hwl9TTWQ)csBz|4+(E3P>SVX1+!#bK( z2gVR-%C+jj4}ospg|h4H{6k4_)G^M1cRUp)KtT?8Huct|+1Z?Av(@bLbw_MS8C)z9j|^J9qfM4u;`-(LuQj%h7jM^!=o#Zdh<*mUO6 zN2fEoVLzh6I->`fM;_Np>obq)rMkLLKXvlUfMGFrv3A-*awRN`0dji+k_IvH+g$P%dgQtr5CU1iQoR!C#E0z z@tcg>jfY+P0PszE>)+*{f~IJyrd(hYN(QqFuGTI})8Sf9rBPhGjI6>hOv;c&ta);2 zMgh1-;jzpm*2D2>u`J}4F$bTbCI~+ufX9T^{Mp~Ht=|DyrtC|a<}Hgqeb0k_{YeB$ z9r2(*uY82J#aqXk0cGHqe*d278(wkDb>W`k{-OTjn`-r+qBMPlUzF|hH6fscNJzsf zh=6oUgNPt0Al;4B(jC$bqDXg2cgNBoA>FZrbi=|fyUXs2&-eHK2lwZ?uQ_vOt}|z@ zIj4>!E(8vOAaoVd{JJ`k@6I+X(_2HRnXm|^0(Dt~=M@*5*QU0|a)@H2-cL_rzk{lI z_k#p7A`sOzlHC;#ubC%)62Grg0AP>&Km_P$1V?93c3n%w%F{#pkkj@}(~Y6Gk-rtc z7U$a2apw$;CNoOM{f>KD9bpK*fXh(t_HtWNw=>5)rV;)+F_UN+@kRjDeKLLhp0MQqa`2yt#qX|u67_G7~ zX|`yhi!e#H7f7@cvo|bTmNKV}SM!d8O^)s}UbR>J$u+KAbfWLL!rc5GfL9{SFmHg? zzWiHZ6_ZNKRs3l(s_>U9Q$)vHoo*x-Phls;@I0qxSM%14fOARy3h+ofrAJI!C9Zz< zB*DTEZ-jY3puQwDvjkcVx<41FjugbU$ITJN2EfO$XRCY{2N=F+9m<`3bdo+4T+dmv zZ%04k@n!U!iLK;;GW-7YNE)UMU?(E{z^fut*!ed$;(5bs&Xx?ZyfBHW3Cj1nrg_0Z z#^>^oXj5+86GLkc|a?fVYa2_n$QL19r+;a(lC;aWSJ ze4Sty4ZPBy zDel12LTG%>!hNWx09@(g;YW!zsS2Amv_en)rFK)&W1$-htEE_eD5q#`*LdW%j=1!t z1(}r$3?dEVl$rQIr!&`px)na%2qNkH_o1hKHf>afS>=hzm^eS*U0oN#0u|qr1?%|O zjZaXd2xyozB+b|d5a0uMw+P>=zQMRW9mJ&%4(J;QGJk{q&S4SWOc42A`O$OQl;0!g zYfT;KopjRrgn#GzhY=febBUOfpn{Y@qO3%W_^tdB_m_psf?j6w`pd zg|a(5Ou>gOH1q^iX3}O9uamhR4`2vc@YZ>Dx>d%a;sue%H*1=R(i;Db`~-8IiHLY zFB~-8+`{|lgnFGM?7kjC6Sn>5}6lTiK4~E^AA) z)21;kvWOmm`5KY$dIdg&(()J3yf%u5nVWtDgtG|!*p+g5U%{b+|I_B+ZggVljMbJ;X$>0)`HyE|1So9wl z+Ackj^0ov_nP5~}O!Q;~3u4>+z(jHP3_JO-0-3nJb`ZzE58Zf&ev-YhgX)i8xMvrg z3e+PrH9j-ZougTib#r)^7b(qcJ@WpU{&B*v`QJ`D&F)VRP&@f898j*%WGezG`{7r5 zTr-Q7S+cUwk-!i?M-r4AKV`VwYnWu)siuF^m%F`>9e)6s5TsgMOn9f>hU3uviECsi zcKHRN;yiZKYgXN9x_Hv=>4?XZaeDYIUp5bL;xW0fTqsad-ivSy>70eSe^Iw=wb>#W z2-HuTr@U7Suv#8{<`q;B{8DM3G*z;Ztj1%9bNfYcH?;*5MJP9R5|g>Ejcxch^^@kH zwA%#g7oVkoLsGi_fy&qn(SZp-cVvR z;2gXBJL87Y9$*j>)mSG$18qA~dK{x-&v&Z&0bPiOF=6qH%p8B?aV;`Q&n+I=G%&`b zA~E_A9zn5j&xM=@MN)3l4N_`Ug+60bcXiJuQa6q|llYpOlkx z>W-0@$B3s7qDa0%oD~$+NY@~>Al6Hoyt5;YsSCcv51^^@VP-!_v5CjJOdqm{K8uN zewsjHqetYB4+a8x#H9&5+n5NoWu9S84$(*NGJyToJA=E69tS9s64yyQx&d*w0N*a=N38^ z>ASrTCv_lv9{6F{*t~8@(m-{ben-qCXinR6%xqB{!#{Kb5hUXOgL|lcDNpm6*2A{9 zn7!9V&-=*3`6j2Ym5d;pbNzVCR6O-^A61Fh<6NDsAQs zwH(QH)kUBGi@Be{wCDcbqJ`+k^8wX<=Am01=qQ(`XuWdLsXwSM%t{^XauBO4)U{^eH6-{Pyf zBw`Pc;;>EQe`kgIdw=YOF)}LpALb$m#Y@l_cV(-SFap9)PHal8zVQfRasBL!_>RW_1TI>mogHQW(^qR{i}u`SpooU9clK|I$Dh$ zTp^4jYJ1$VRm;wRp?YM3?!K)>{rT~|EM$Dob=G~k-E^~!&Rro`j=;JmUcQXnf|$+I z`u??qfpFICx$ka)i+CT`PQCN(6VlZ*YG3`h*grE{T>^q%{I4KzjBm>S!`~cLT**Ks z-$+El*T&+~GpRbmDtky@yddnQ42ZKdXa%cs*L2;EkrvP-hj!?ocyGu5&3D@PWi&{v z7zm#as#}8x?cLmYjhHz=U34Ci&uv~$%UTAIbcLwpb=3DY;E3R~P%Cf}A zALNL-Z~{LY9OF}uJtF|&wFd51rCESoatLk zHExIyyrpQGdkPEC6$7Z$dgqP=L)zD`{V+PVF*j*djo%UZ)PmWJ&pUMq=hr6-x8b^tS^mQx2zatafqZ-q~RbQg(~41f`l#GG%aC;*%pZoX{gH zQUXljgwF{YxTImT?vqT3VY-R`psSMFn})je7$v{{VXa|K?L$y-p44GKzFvxfQ6}*1A;+rve+m1iScaW_lM>a~PD-8&dg*fhP0aS;{$< z!##FSW`faMdQqt1xl6Oq1AWFL#=3Va@|RQPRmUFji+e}O)TktfBRfx?$1YevCGEge zAF+~mIarR2J==EY-C^18o5#jP=8ySo<~i^V2XpT8s1QrS)4Kl0c^3%9vkApvwZ3>n z%JIdollWC8x0!^u&!ixQ6J{bDPf{BFSW@I0ek9OOc&8*mlZU7jZq$a!L1($Jbd@O8 zaUm;F)it+u;j!2FVTE5>kPJNwQW&rnw2@XBCqPqc;+M)fWB#v!ccn4GjOVDZjFFR$v7D#3>7L6~85uxlGFT#dBWK;n#Ny_39Nf@9Pw+$mN+K&*2L zwfE+@g$GdEVygkJw7K5KF{-j~H6#1czD4k>thPXlp0~w7P6yykajqnb({&L*??&w6 z`z}E_hkj~Xl@rXa+nPz78xBeX`v1n6jb`#ItQ{P#3dGoaa(?=dfw;o_ZWoGR*5Fj5&P_STQin@ZOC7}ae)X1|c${mD4YjGgZC z9e$|QAn}5mo^7yN_rVB-wf6t#g)cUFAnYm5$$NS21JU)!wcw)7TTKZS&XLgNF8gVa z&?9XJ=8yP^s!N1)*AQRd5ehaY_u!Kck@@_;mQwphQp^xaFP3XZNSb`1^-GSxw z(4k}Jek+>2(gGe#rm0k{jJZ%DPcb$!Z4#JVk^E#_Ylq43z08^&g2_+_sm%CQ*K>@iNL!{uCH*@xE=z0M z764oOZtsVh!THR+z}1kPx;!)am#MI}_}@(5m>uedRJh3^wc!rpd_z$Lyvptzzw>Xp z4~ZV+8D9<e`@l9wFNYVr>*g_iDhM@2E$kc;h2;ZV%lrY7<6Y_}v>vf5ECmXG_= zgIj>2wKj>n$7cUaxoRxfsSIL3?V1ffXfCAsNc%8%p)9lRz)q#vjHWI6D5_u`yh#}= zxyD(;%ghHxsW;ybd^LswCr3{3+oA@0asgOVG6y;rvQ-bn5&SS2xEqP*M;l!gfYGW8 zh6i1~yeE`@zLhcafxkhKB>XnX*L=2uYUv-#uZ%zGeKc%H-HhP{Esoqzm1$dI}fIUt#?7(^rC z1_8hhrN-4xawAd_Y}ucs^AM~E@$C3rUPW;JE=Y_=*_a%9_6KDq8!6N7F>!u>&ei+% zz!+aR;}gX&hf@4zw>B7OX|Jw{7z24Kg;=JYe9Z+-Ws$+X*_seGl4EJ#RYIx~Y*svM zuQe}xU8sak)^yPGSQ3`v82*mcRDb&QBU^+peiJN(Q_wCu`ZM7f_$+kLWV0>_rF#4*+XrIe?MXhiM`>(El5vTNi|%8Gs->C?c)e?Ob2!EB zF-S1cW&TEA;+*QYzT4ZJ@l>`k>J6@CyvtS`4(W&B`d=0o)eY%C`bY!6n3I>i(0zwn zL$G{-^{KKh{d%N98oB5uL;biWxs;NjEw4cL{}_2z0IspO2v|ZHTMEi)A_lG@7yK5+vz^5+YRk13zGzo>B5uglS> zn|rSR!C&U#ae*c95aa|M;x35ErC(fds6>wKXL7eqo!tBfU=Ovk$xBkcNiCf!`$V4BQ2S&(e1Uq{as)#;&Wk~?SLB5gVKpM zDoR*=(oCT#u9kNC#n>D%S$K;A#;Pv7rQAY@13zI|zkVl#TfAPUIL@kR^nd);p|BbE2$ArK^5k_6aL6eD0C{H9gXUj9v#DT;f4eI;}yYS;XxcB=eoJ%+=F5Is8kn=$DXtn6g!*`nC4JWuVV4g%h~Y$ zTXbt%*GrBkS56$m`JFt3!0E)+tkZa^I#i!BFSc@h;Ju!w`UGrFldI_R)zLO%^?RCz z>HK$Mqfe_AX}xoG><1EbZUK^i{i?hDwe`#XuR;qZME0ygSmt77(CNTmq`!iSYbF%e z3;W83gnW}0&U_AI18AF_%GyIeN`0#z(yxJ>TbX1byg1CGsaE~&%#6J4<07QUv8SdP zlybEa$>gD`++EgULFvB73>bg3a5~QpT%Nyk!b-tPl@- z-@=&icENOQHXnr^*SEaO%u;;>`7Dl+x2aDrs~&rV=H;ZBvuYenP{f_F-xe0ME25*C zS_vXdv-}@9mjvQ=?>_W%Q%yXaA;caK;Ju06xaNM z1V-n3DYR5Gv{OBAd2LV!wX*a^Ep`YyKdtbW5wopFz$bjY%)3{SOTTeuh-n?ggwe|z zCB>Cfrvy7vTl{U7#I{I_zLQo+iv6<8QXtt(0Ap3;MOyAVV@Cysv=;IsvP!`VY?D zuGs8_2Ve2Rq3Q?jS@BbmRDL?l9QR-db30^M$!%Cm^mMf2oJxZZ3oNLL4ngq06R9GZ?ys`yr?jskx z1MI?Z$b;cH-FJ#^k6BPC|J+sJCtDK<;AR)bxpd_Dv;L4qQPdZBd8#oF0uRJ&aoml4 zF=PS10|_;^Bn6Z^3JK1#(cq7GOlic-5eo1tt0y*p9?z-Fp>5pN`pd;-QDEEfT+4P; z1+ZCX;6{n;$>gSO*0Qk@h3)yBg$zB2==(oDo<&!lWBHHmrY_iJ|Ks(#{ND(juhD)% zhs(2zAmlFuN%oLq1ZuYG(?DL54xk?Am`JWJBj+Qu(R?+5C+#ahb4g&BcZmznOrO}$ zc7oA+xq3ci()SirWKF|?iy@@rb_XntqGm}rOE-3%2b#|#e+a6FHbL4F@_Y8_H=Nu5OXt$#MbnrFaUc=Y$Q345fFH<)6 zQ%+0M{vq9{1NK56s|xO?4yW^Ss6>>k84TTvow1k` zgPCrjwsH!vkw@GCV}>QbwNF*#$hFiE?uLkb60vobvDW({yr*a!lWi5UV#sw5ssHw4 z)4La;n)dIjD1`E`lm1ppEJk~xaj)hLU>0Aid@)*YH*w&1Xk$w3@c!8NvG|`=e_xA% z*_YiY)7%Y-xZ)1loYiYbu+;TsDKh<>AeH2+6hpZ3N``sC%b+y+Ve7bq~1<6a_Eb=7yqOzvXEo;VU0ro{KY?c)ZoFCsDAaEh+<_R;q5XgucSD z3d2X-A0S(WQL2&`;e_{3g;1l<{AnG};#!`YbCT>6->pyru$r_i9-4K=9=bstD}a^8 zyP?!x1$M-05tFiG$X{$?J}@U}68 z_|s)9G+F3VsVSRgPdK-1vpqw>_xqcD2|sw7aF?&|9~`(N_TOMlW#@;k||WYI+}1y|d$p*{Od!0x%tuq2VW%-vxEnM{yH z+F3Qrp1@dgF4&)DrYKt+WU}HmE*@OGd5OBS`3C5GY<9jt;h1y@yx|XqKl4ITWJZ&v`|Oekq&? z3`pRwdaAF5I}VdTpYPayF=je%UEk?Fdae_1eDz+3u3(f3BP3?$P9Q8Yab$GXeZCk` zqNK`!l5@QTWtCPP!D}R4*D^ow)_%$9@@qOSSTJ@LkdOw?|!s zX6bAhC0l>!4*OHScEMc3qI@#m`o`|B6&|gr#QO(3@8H-*_Mg-|Wd2IxZeQp3W03y$ z$V31ha&NIK&=+9^r{4Upf3-A9Xy|M@2@wW++(EWL_cMo?CO@HyW!iPiK?6m?uw7+$ z;Iug;u?_UT7@mN5HetiY-RV74h#gHlxjwtc9nrVnN~KQ<^tD=UF~4Xok&H8n*#CA* zW}_g=@FadQA0d4G)V}~nSfysQ9)RsIf!)(9;a5Uw@~y?8NV@(@hCQ^MRafYges@Z4 zcJPxeJTJqdx>oHhlDlM!s^sM=nHoJS}FX-=OeSZUz zZmG-f>Vl5B0VpN(B7?}=`@c6eS%H^THR;`Z8XF&7=>Jh#2U*;wxgZ<(IoM|zVuJcJ zR)XHjuTQa;mKFN#d9r0%qFzm{`G8s(=6IxC@gWCbjgp-cTOfw#3`6HUW>3t@qBE=!9dY6T9vX)3NNm;5b_=GslOP&o=o zq;c}QK?l9rr_yv2ws)JlQS7iBF^akEY#5eL6T>6aGOdYF033x^3PRVZsiBc%x!ID? z9@$^j|2^AqPZM51k-)&|q(ce#k8YsfMD%Ydt4e!cNP!*Gp_B+ob&$!O9fsOLu19rz zuAibH#h8u1=woHC7f{BLv&^MlBY0x3Tq(L49sJFSLkpdZSsM)s;DFmGJHdt3+Sggg zdZs>dSP>W{-6ehvevuFC-d;I{=VCP3XI-X3VI7OzmcEl^6^52sbDh&uv2N@cjBcC? zw!YCxs^DkwmQ|E;7~)n1OtE`;g~XKHjTqh21;IHU)00%b;mc8ja8Xzcd(YF(LftD* zQ%?#=6lnaZc&jMyv9o^jyvu9Ia3gXz69^6M0o_43XAk8Ws(Kc_{9|6|6>9I_&+$sn zyHS0I4?TKUQ4eG%B=_jE;UB}f^=p6Z53h}@?;!POdTpo<-nsPU$DZ{iE&1mj&@w81 zU?I9uzwg&CThYOTx8WwY=Fk!CI=v7?GZ`VnnU$%fVY>>#U4} z3h>R=p{B6Z+Ar>7ANvQ6^PM2U_xb~g4SPdriB@eBf{Ott#wA~qRxs6}{k<+lXaWa|Xm%x<iNgaU#fkAF;h$dThWU_P=bjW{xC2p z*&Kva&E(?Slmu2Tj7Nj~n1g9cfg|n;Snl5*Iqq(6Ud_9?+KyQ4OYzfM^{9>R*;=xy zG_^>W4S{shqpl0VF?eCS2e~^BRpc19v{fh>;)=dAe`0^*;`U3>^W7!)7i#H@(3B5Zj2Jsec|&rHw~9zMAtdcPLmq5^^~ua$M9#Sq|;1lt7L3MDdnQO$)t*3GsnGB(a-BaY1?ae zTjiSlZY=p3p#*+=d%lVGA@kF>W~tr4L*~*&-69W!(Jk=0k_5SysZWZ0u)Cr7nHbT6 z9;gvND7+UA9EjGw)49!`lnA7`~ z4T*cP0I$t`Nw-z^ek17M(tqlNO=_#nrTnhh)oQULTGS#4vgE$CCDE<0Z=cout(iwm z0XzDYp{>Q5)GMeB{1r|2XuyHiRH)X;?hRmWhCq?<(;%gYHe)-u$S*kv&&Cu-Lx9XQ z9u^;{JHO~Id8k)MCrSlS-<#hzav2P|-fx{!$=S4W-$1UbFZ&$2wd_MNvNA*`xmOSA zS-8^!k?lHcD2MdpXnuYc;SH`={G2~hDh5}yYB*r>gtQ(V4u(g>=<-8S0Ay^G;CmYYgjoLuz$WN62b`nb3AK~`? z)eu^z@f3Pg^|kvToD9Lyb(du8fx`PrU}VsnPXxhBL#nq3Es+opB^T;ee$!>aycmBa7613^8P!U}H3cZvewQ39Fd z$a^f)MVFuPR)LlFT?^8}?yf0KV+;~qLKjReGC#-O&J|n--Q{D?dP(fhL5wE52p<$T z#MuujJfqo~pfgp8XKRA@8`;q6AoH|SgTxL2>`rzttw%q|xJLM(1l?zI15Q8o{o8k> zG{+xle)P_fq%5-rY#3i@&>uBKn;IFpS-WIgZDj1@T+94a=o#QF_sk>3{9Peq*#!;I zX=@)ZX{mYQ>rR*QX6}nA;rIk^db3rh<;OS$?wl368N%i#KcYRCmRj<&?2xDLlLMaA z_$>I$=1A--CrYk#3f=As0|&8t+=v-6Vh8E^*j*X7-6%Uzc#Qm4(oyCXg4l-FzEP;dVYpBY3=Mf_)YM0?2)pNe)G70Hu0gDA} zHv5%;r;#RSl3gf`ErkO`2Tj}@4}UOZ)W#$)cO5W}JPDmGEA+M3Ghu2=+0QBBKaZ{Z zUhBeXKu4&P!A7$40hcq-BrxsbMk+Z;XYx{u%h8h1s3)F(ECL@8FDg_LN6~FjJHu0? z$|zE@CfjJ+m8El|Hn0nJA^^^+G_ZE+NiOj%@V`lMVcd55TXVsb@?Kj$($<#+cW3`p z!loTQ*L`S_dv}FyIH>Y|C<-xve?AF+j)`kO!TJ{V&Vq@W4X#a!jl#fa)UX~1mmzle zFiqMnErd@2@S!$@!4kv6G$>7$*B@gOpgg5JMXWie%djf6n_F9CaF_SSK>3N`mpJOtKDn0F!EMhE?fTV)fE!^=b8u39<&Qh?7m z@gqQ|5%Hsz_2bA8sn%nN`yMaq**`|x4dJhq2PL}S$RSFPA@fM~+yDjekd#0`xD%4{ zE&#f3{Fi?VYs>c%r^j%AnE93HNqZoNohW|5`pJoGA*HiX{4tHrDQMr&OYD*!mzN4? zz7VchY5Tgw5dGAZj)R#B=O|54m^U9+s;)ILx<8#)G$O?UgL0o3X;zvp}0@rm@8hp$D4 zey6I7^li)bmizRh@0o@6s(dkhgT-vNoPw3KJw2180;{SQ+Rs<_Dp^&x>ckbqo^JS8 ziAl~^@~W3*w&;@c_X|yxF5Q^XjTTV-y7M0xbzD6OhAP5e?DOtS3^7#FRa&DjIP5_B zJ8A%?K>J*NdQspc1g?~Lhl7hOoPon69;Cr-$Ed>yvGYvH@;fH4jT$i9TZwGRhHgNx zW(xyqj^8;4l{nNy2}m>cUcQ?pPF#45&L%_ zMCPqUsyxGO=;kn%Mc|w_?!wLvo|E4#_JQI$()q3Y5;3ut6!BBU-X$T_Ers!z4f?^` z_W0YvIgTinvBVA|E9FWk|5ht68yx6mJ)!fPxEne>x3LdJpmZ=8WvoplUW)!_|jHZUlsxWg3KpoFpe|F=Y5SU{<8<)Bkjh!=IU!NlDpb?k%G&e z1#?J9WY^*-i@nL#XPo9JrE%NGd*}nx;kaxOq?)DaZ;BeaZa=G!Pjg>IwvO%TTR8LB z`>XIsJ|}0uUl?5&e?IZPT(Hhfjc#!PlzSbJxS&@Ph7_-dlY& zr2e1p6OS@O5(93E$A-JFws&_I&jaW4R$UiSK?cF{keBGdd&zsejo*tFsps=}lJ~jj zYL>Ym$d$E(A42NUUOFAypAG;S_=*rBJDle8`YOS$Dfc^jLtr5JC1MBGjR!D7k zGs0uFCksR*>F&#Pql|)yabUuR-e|uUuE!nU%hT!tl~p7qH?h6W5mM>nyR@lL31}4i zIdnAuP1MtY+>(ma@=NY7Qn^)o*eorS5&A93?aUabzL$+x_vQlYJeX+C#y*H$N(Rs} z{ZMo{XN_x#w1lb!aU_7mvuG^&-kNR-<(w#57~zW*e)4CgG6olNb4hVI!#8)>#$W8I zuN;>yUDYk9F%l5tpW23fy!Um|6>RBhO_Qmn*vr2TEqnjv*Kc@f#(PiZ9q5B(atzve zdO0SA=su78fhC71+c&ut#sbU>W8cF+2Dn}PuIci>Yjmwy3kc-zvl2>6K&eBU{}0GSxN^gulb{l2qsCr25yWaIXk@{8+A#AOD&dv zcJhd|%6vx3Yjk{H7^rDs{)W#+Aq%Kpzj&Uzblxokq&7P>!zv}VyIzRK0QDhrY#8Fu z4;vl+oi!jp*S#ZWtLSqro#5IyYwA#m%( zQ9JcJ%p01e9ejN=cjCk}a%`!9FWxmMRZXYNLXvlMCl%h1W2QSjrJp&1Z}?#AK%c*T zi#6U*O&UO)?%WMOcem@^96=3?7OPtiHn(^+(OU{3!rGaXM33&qa)VNup8h=x%&o*g z+x`)Qcpc>WTy2ecb*TU@;LbsblH=g28mRdFFR6>eYs6Leo-%~)j%v~{;LKIgV>12v zx)dp4}IaRvgXuZA>8Nd1gG1ljua%n zq6l|eSzWxcFMuV6Jo!`FBwj?XvuQY+d7fLT!g{}?A7bOd%ZU_8G=r{*6OXP>SG^zG z*=wHxq;p-jH5d7pS)jM;yI0R!JNK76fEexXrAkjb09z*g84aR{@eeL_E?sK|7M}CZ z?KK0m$qj65F6hEMsKW5}B2BVCy`8b)6qtAEn0kyq8(Hfe8GcN_sFko0GJG-95)8Lc z6<;dkML9`krTvlJ>>D`JjNpWiWoqA%U#KrE*o3VWp|C_5> z?oQvkHKiKEzz>|@w^M-$+HI3%=@2 zwK%KRsRuYCM)YSB!)!K6xC54?DsGple?Y;xCa)8&53iGL()qV$x708bWK19;f81Qh zzgslrf*BNY+5@9{niIfTDm@*3+<|miaLR%L z*^ce{xiqp|O18AVQE-dmoh0=7U_O?WK0L>6C5-2>t^8#?|K~RCOk2aW9 zyc9^@?eZIqpWJSiA^2S~A`S$bWbpq8CcIdryBpeMhnH+B9R=xef(kC?Q%ykPHBy}; zXw9u~9ncx-y0PZfAAp0q@lNVZ3**^v?7i>%Ae{%ObCxOtonEHMZ@6#CiU-640)Dsw zUkcy1NTm?NT8^=Eh!LfCJv!(^7KV25S6p1TmZ~fIKo$i*><<0}{5)Ql{ium0W$N}B z=5Ov$qc7r<>N!Dg5^a*YnPh_w7Hw8FK{h_*FKz}qQ$#06w=25Mm4Vv<4^lq5=E^|- z8C*WMYshfZ;%i&R?hG37gTLD5hp8QJ7Y`{Cy@^WTu&Mxks0Yv?>@{P0H%Mz$umM1z z=P~daw9WH9<7?n=NrZ4YndI}7dFy*KDQh+y-S zxQ;{*ej+Ed%Kc<;-B-42Y-6JWkLZBN|8Z#1B<97-PcI#HXJyF(0O=xxND7%6yWpZJ zw231@O4(1l@cr@IS}_Y(J9&jFk-K>D*o5xLCy-ifE$zmbTw+W~Q-Rmst(7u|e@_=* zlNaU9^6`F+mb2aJRR;i`<^9CNd+n{UH9a?&INP@xyJ95V6k6&MztUvU?CQ}rB97~EuTefkrqm;V(V!T#yovj@XX@A~Rhe4U;6;l+(-h_?JE5LX=@n zeht_^<>uWQ*mrTtP{xxBH~?nt#%hmlFeHBLMw=~Jz!}@Cp%C-=t75h@iq zdsy5ue&@?p=Mfog<$jr@sU`RD5!9>2F2&1D)qtN{6;!ONk->o; zr+}arL+pa?SHf=lIhA!7(?D=O;2DvKnDJ(! z?VdyA+Ay&iqVi3)HJ8+TL3v(9s(5}hltK9-J4Avwq7(3#wFX|@r&tZQIhpe|4sidO z89su6XTp;A0*}NPlgA;KiE74@ z2>k3|IgXm?aZ7(4z1F9+11Y7QOKF@xFC_z(CiQRV3!Y2Lu6G5Q9&Eqx8_y{DOmo&c zFs2@$Tfa{W_TtoWsTih7LQzG7+=ta}8d6 z-tKMwx!u_9dXu4>4X(S2TDOjH?~jYPN9<0U1lY`T%Wld047FXKcz_GxSfEE5Vt>Ta zv6N+dfNEdl;Tgno=u_MkJe5jaI5DKguJd z<~t@%Efoj(Hr(Y%66qoVTqkjd}sbdEaLXXWSOp9TVpS za{c*2{nzIx$M-vM==}T`6NbC_5~wO%ffwoM5=XWdzm|E($s~@qHP8zFArpOR{?>f+ zN$Rp7vNU5SpiO>0Jcd?^!Zw0p#8%lA`6sH<{%js_jVIaZVU;!oi|!Wr=|ry~2|LO< z-WRn{b}C@Me>RTwcgs0xtcBZLPfcK~Jnwz9UwMpIya9N0BrFk?Ks;1N7IbSiE9e=c za^We?aNJ^N%oJR`C*`5HYU(OpjVRr7gy~6Bur;S`K{|}tErLH3&g#qDNMeC!e=)a(8ZyS~~TKsp0&8kQJoaM>!dDEu(?4UINr-L!Uv6 zw$;A4<%SlYdVjPnD64x<*29MJP_e2;+MxTrZ4)N++{9cjcL>$y+3{#M-n=>b1yyH7 zVHi4nMc)EzKp0K~u&mdU(xf#}USR%tVlpy6QzL06DPlg6ajRg9Y-tW0Jr8#=`ei1; zTZIRdyZ)JN%N1EeVTw$8d;4aMR!S>p;S;z5v_}Ipby`KYfCI3nPGN2KV1dM5(f21Q zUMZ2nk-cXJh#puok*4`$7y4Nd2%RoqNQ7{&J=jEJ^9DQ4g@VQqrONgHy#P8H4Vxbs zo0PZ+?6^m3*lP>g*)aSe{v~cEXYowaAYji7z0I`i9;PiN_~fh&7tfyc(k0%6OxK<{ zK{i)Xvb8>^B48j){WF0WM-H8iB3p)uXhA$jY!!K3OW!ku{xpey~9Jcdpp6fg~=S=n-h@!gR|B= zWm>NDS_p8?muAUrvEfAwE|7%iHpdYJyUzHU+bwqdx^&cs`^&@rw%rJH{Kdx(-=#T| z9CABw(R9n#ZIwDz!|8a*oueO3-A5M(O&FbT`@UJ_TkoBH|3zhyZQrTrKEHTGufAm= z9WORriX~I3b{}>rIlosP!~+@r$@Z%#Fys#l4-HTLF3y*@t7$wjZ{fMVGQfPX(B#49 z=ekEYZ<-4G{664&u8&*%AZWV$`o|t3OT!JT>E5S4{=kVyJ}TeO+V%btM>^Zl&?Q~~ z&gcNw{Od^|CsFm8?Q4do(TwX|A_|(j&eE8~;a=_JlHX_`FG#({dp^0DQfOb^d<_#9 zm5jn%j*##mglBB=q%!7qH*5$6jA5om(voj2$@t!yfQCB@K=y_1V-k;4{{}ltThzj7 z@C)|m-w+x~ee;>BkHEAkAMn7Wt52AmKf})Wtu}OnEh;i(a9K9BP9X1&uQ2YbHo(Bj zWQD$;XOL@#YITY01b!t9m1oEO0DiI`VDH389RWH{y&(pq4*~nhECNlnv*8S08=vVk zc_yDz=cs&RErHP>pLlp%UGMyC}=o>u_^;Ha0EObXH~p?Q4NRu6_Tvp zRMDeZrwkfN3yCJ;)vZ6A-xrHWmxc7~zSIbsCyds+D+IS^82HC%TI#WW>%qpb^?ZE=jaQO-;Ay22mL%N_dE@ zMV%?gkMWFe7&Ss$$K4tO*kvg4H?{%d?X2Xtg3QIQL)_uJ50r5ZK(S59c&TlB&nyFAJXR{7*~lSSNEgY3*g>Y^RL-%{-%_E-ETu0u^& zST||Vnwg&#wkwa3r>D4*xZwi@-F9GX?7SMu)C>{Nwa6t0f6^FQDtnJg#ZE4{cpt)*xxC~XDB1=`7N^$?@wg|0JXLK z%M}uQ3wpQ(G&kZ0(|CHxzDFf|j!zLn1&|8Jg?%?JD4^Fj1uPeR|2CcCc-5}g+V%{y6X%iGTssCN%lxV{@YGRT^w%4k-xe;_0Gk z@dnD%MceKI?^2=5TFz;9&_z@TcszBR)k#o!%GdF+mG)dT#BgB0XByhuLQ*dB0$(F# zFDG!OUpby&{;-$x0#`Ds7W%a%j5Wt!I=r-5fJ*lo0IX)>)v?soJ^#k| z-hJQ=F=ug;&5<_G=Yv$rgt<4K*omL7)->f!59vC&o=F@F+#N&Trxl#7eApOF=g+sb$)Z z0k7+o<$JRD*@blssH%j^e7dJ9r zIvQjR5 zOU=yR6m^}0Fkv(HHSivubdS8wv2{BZ1r{mdDB4rj%p+{E=aSx8GWR3JSVn8n&w#lr z+ht{euRc54GK4|YjGw*v+A|*4OI74_LHFLoZc0rBaj-viwjd|6<{rNjoYAVg^8YBh z%D5)~FNz|d5>rt^Vql=iPf|K2q9W4W3_%*{7%@g8QYs)_A{`TvhK)v~YeQ-SBqy)| zgE83l=l}M3c|V`$eD6K?+;e1)u~$YXpFgl;20l6NDUNTXa{0Nmj9!oc`AM!xbLIns zt`(Zc~>ix_s zsZV3{MTp%6HlCVzfb>S%{cmBh)5#lMMBaWhiRZNsHfd(0;btp3TKvP`FS8a-PY$Ot z61av{SS51%MZ?k`ZtQPAecDODPP}@U|6oU9sE{fWjkjyc$^XWq1>L#YA8V=c1N3b zMa%DTPm%1n>Ga3HTRZTh~&k}(YsD^H+#LY_Q zs68ro-rsT-D8c5zEs_(V+RahMfd}{0^Wum?3te8eTf3l-@5D~4e_lccec%}6%e_k> z)@`pt3hve@F#nTV&1Gfrv!0Q5$a}lcy4`8M^s|RK-KXXNKQ3>kQIYm`8yM|Lw|fe^ zfsCPH6c&9c5SKrXjSNUhtGY z84+(J55aX-F^8fT3HCKsKBzj5X?xcdN3gH*(TB5c(fcBEH0J~lB@bXJ_-r0_*^sGt z5!31Pa#<^BXyp`tr30PZ$6ZrxY*K|=|04Aa$|wXTlmNATf4qDoUgJUO#BhHX$u-vsJhU3U%}D>2zdLB-f5B44TB>G+;X2hz9 zvzNU&Fm=m=b~-vkGfJKi9mELdBK9QuN;mO7-Rbym$roEgC7@?jNawO)$coxRfO@q5 zCyyx3;!}@#&N^jQUEjO*(6ZQK6;z|%>e^&4X?cnrN_O-Xv+A7%OfwU?o>7K z)m(}ySmAn_BPMF`-0v}vJs^?iIZ@Tk9e>2pyuA{Yc>n#+Fg)>sC?~Zn=WUP6V3Mhy zq2jC$Tl*6fDygz0MRv7*U8JnCW-p7}cvf^laA^+J#*kj+WqEobwL{_!(OOF)J7v91T*yQ)wr9%tt?_q14g*G z?`QZw|CRMy|69?vqfZ*&9^z{F^EAVs7CEt)&-I25Ze@8o9oV=3CdT5r$2!-~hOXAv za7=ez<=_up+cfNl$WJ@fmLNS!H4sV#S zZn4Tk$}d~A3s2t+i<1^9341^{_OajceQ^x^wbq*f!uI#a{C{V^eOFv?`{#i_wj-=* z71zUc%Jc3pBniD;78x=sNAg&YV}{_E(Uqe{ihSn=c)HDY;^C4fpfRBTH46Ns-U6o zp4QBxWQrx#+UtfM|5+TU784vsSNng)VYV4a-Oi~0^lxFVgZF2CA>ZzW2gShK-Ce5K zh+k@)X@CZw-`QWj==1XiKaZ3JHC=x#L=??#&RP_+v~aE7TUm%*jB++fNEP-Eoo4_j znzA(%Ul2<Qb@nN_7f#!o>y3*^3;!ghE4>0s|KhAwO9e!t#0!mx##7b5>kuf>x1 zIQu;=chO&5&mdi@o_H(WrsC_h5Rlea4Yj+!mrt1M& z-HJ;;N_oJvX;o+yjj@9+s)0$9)tj7VWv%9V6;tg;V&cDb{m(2%+1D4k~fyuhs~;@XH&MG+Dw11+eJQgx7mvinhmiro+Q zt>UlP&{#mX*1&EKM!e+Oi+CH*_gEiIZDN-?NWQtkJD&%PW#|9NDE+kGzpE^nYk7jH zYKY&jxYXCt2QSo)9QJRBx4yF0lYbtc<}{moJ7wSFl;u1V zg9X{v0&#yrTfs? zLNA#2^Pgc!XaQWsoOw8Q(1#(_k*q$uq-e@j?Z0_bcQmxc|IyQ9YMC8weydRC!Gu3+ zzW1$K{N3qXZzk0v-H88kl{v;n8$FM*=)78gPX843jeG6X)3B^I81+(RSLkdVd;6;AYJbljngd;a>R z=;UN@`{e=(5W1S;e*?0R$*AL&j9?7;*InQG`#~Hk$6vzjyH~c(I0@v%WZhOV_CAb| zP#iNp{$RPWU7oYIbEWLWN3UX&WT#!GtC!`Q)DgB8$VZ>SDyEwB;^IO!hh5>sCeI5O z-`B@JqxYWUb1s{$mVNZXo0wmoTwET;L151|LSJ<OW4E zCbq5_(Lk7w%KG=UasO3AP~0q2zk21X!pmCoznDH$7GPe`F;rFZ}D7G7}86;(>l@5eNK1>H67b zr#3h_LqADv%$#?bcX6)d;k%}0?Iyj^@wGpqj#rvO8+N!f2wEQ`px8lk*WdGFBGt6u7#wIZj@ zr)JOj49jjQ$}PqJ(R_q`y=jJA?r-VT#HfuKxs|G}KkF;)6#<1-5H??9%EJxPLv~tZ zAkE!siYiqg;jd||RUM9qUPAttKks7Qw06GU8ve+WYXQ%?(tREzYzguX;Yijef8Ql` zRitPsyM-q%Ry2eOaF{$axRcoJ^=W*DVi|JvPirYGdRYG}Jpk|~gg^9Hg395t-MJq_ zbE&|GO_>|#$KE{^`li}edob(P-&+1&0kQt0w0V_%Y>NqIE97x?If_|B;`xc-k0Ess zaevLeAgo35*#GotC_O#{xnDBmM0C0^I^rZXCeq`tl|C7;@7GeM4=C&3Q1w!^ze|?^ zpl9ladZ-sfmVoj;U&OzFinH`=MAr==6^z!x#S8{Iuc@|@rXAUCuHkcRkC_Z9bspC2 zWmbU-Q?sbb^VYEgRY25J34PR3rx7cl# z(A24W@Ovk83&8VV%4Q09@r+VHhBVp-J`fMZ}$CiZUy2vPc5n_zQE zoo!e;?7)C?pkn+LX|%{6YJ$o>rn&AWl#qV+2&>n5<}P=pG6%T zm}_TFfHr7g+VaWc4gHpa9Htc>IvMOSY=4!LR-+XFk9*lxkYsq_fgq>@tb8-5i;sz+ zdHdICxYzqKuuZ?w-*Cy-BhfW#ASPxZzzu*|gk1O(AUfej3C;zJ@n18z*e?IMOQbxw zaW8rW*#21-aAI(~U4CHuGMDVjN%&836F>uBzq(n6$MmDj47w_JL8)dFb}LJNylsa~ zQqlX_h`{i9lE2h}SJ0(@EvKG3=w2o+#I|BSq1VD7^{7{|+LG&K7-L^GF%k-S-hXLQ zuCZE?A2{*WTHmW`?&o}2P%Mt0mLG~IZRU0+x`(nXiO!YT;)jkm3$jJajOqy%pAL-% zu>rW)&x9iQBY3)a)AG&*I;GYDb^*o?M_Xj|gx6Oct*zSmCD4ajLT#2U%2i1_j{@k; zkH_J*FU^X)xIZvr#VT=l=Ub7Cv9-t@;p8%{HuBqQ&-`VBRQb<*{Hdd@JCeVcfJvV$ z?%-z&vJV;7KS!9agy3HV(UfS)DUiqq*^7X6*=?7JM=cgpg@X<5m8;o&|HVNq7;2Kr zLThp;tM_bvVMMnK0PSxS!IUm*mHvRW^MOq;VLt>!NX6mb zruw4=@yppgU!v-VxatY=LZV>3KssC*piQBV-3Y?wEiiihFRtC-99&h3UWh#DcJXP# zs8s@$Kjv}zy&M^t{58C%8saW`wU*FO91WM2jnbM;vq)MdDpbzvYm?ZwtGOU}Z=8(IRxs5!J22^{^itrWZ_GZdonHi_z}6U&OL1H6Wg~%1sL| z=`G@CfiD(O-Is*IxW(C2){osid+Z5TbRj>kv=2mhpAV8dOA4Y_7M|BbyJZ4<#r=_t6}knnpP?xFqcm8Sd)l8H%AbpL)Rn0OMW za{U+SD%m+hN#oq@(c$oN@Q1|ItkaI!myzgJRN404{k>6W4uq!h3!)jAc141bsoB-RnQqB#Y$xW#5yd^ zGgkT|FsROn{dC3KeS5S1kCE4}c7l+>-_DJv!>YWALs;&QfR=vK4BuoZ7Dr7z--Y@_;_{*yb!CCSI06 z97W|yXfb=DD^j#Q!~1xN@8I{ts-+{>O)zc((-lBIyBXsd>_k}r+VcINsOOhVFFz++ zHnLs+q4Ar6_bb@{Gz9n~kLMnF)eeXc;IJbv@{$C&Yx990vdZ9s&e}(ri8rvn0EiY; z_ry&;GWrw1uv|U{dN#6@m%sj1#);B-{3|XeFykjoXFLt*q?UTILr-p55wLvQ2Ez0tYFB0*ssZI-*zxpJfvt{;2N;eyMeVLOD;R1 z;u`8AD_ zc#0$rg!$#A^D6J82Xp`~GTjFNLdrj!`BgJDF@^5zV|xZPrI`k+Z@DBa1etMaFv~^m zG#S5bJr&R_kCdpA!XeHT5+%c>40K*mC;{qc@ugrsdU>*Ecw7`ZlVbnl8N`M~#1*tQ z;&>&MmG_^p-w`X{`9P~ujoD0Xh^wB7e>sJdWNR-yDyxhc=#GdK{c&%lo-`wrPb~Z3 z{nR{pGq|Sd!hs{SpGH<*?5Ypj{xXJBg2ZeXpzdVR%1gNcgqrbb){jrWe+Z_ELchcw*aXbfOftGWI5$qbpap@0<*N%XP@5nAQ+_-bdpC}%PZ#U{Xc8Wr znQdA`2={Fer3Mhwq3K^vdz+E?Y436W69~f4DeWoo3xyS6Hsr%^`b}qaPOjNpX(OC4cnO+IOw#%LMcmM z`*30+Lv-CCIOTMOQ{htWs|zYm{3LclCCvM7n2ht))dsP5pL5~`2FQDxT(>FJ{^-Y$ z@kiWwhgZx7utI#(o$Pv5%vh_&z@rZH)pMQ;z%+>l)ISZfTL8GU3u#=^s??Hyx3$@b^89cfYG&S25m&?D_h@yer)e-wJ%u9_2Ltc{66eR0%E(c8up`X z{ZAa)f35UO*u%KQ!s55Jr}~<5zXUJ8crzqLz077k=F~4A^zAWxz8lave&sywbzbP7 zXK)sTG3O!q;dBD-B{R5q@7*m?9AqfF&4kbu2jIWaB3Z1YE{5DE4j~WcRf12l#1N=M z`Y9DJ4BdArB;_tB-~_1xhw(hkXz~k~15}?Xl&jny)D2|Q@;O~z(L4V3&B?AW)aIJN z&P%?OD_UNX^0|tQnMPo!xO~*xxFHDJgFl6H>W`obgR+4iyKjP{#=dG@z9Bki&XYM8 z2REIT{$cWU##ba1m`m|tNq0%Z_}&`%7$_Dw807}I+x~93N;R~Xx7jb<-ThXjhxl}Q z0tb}qt0uQnkVJKhM{{t6x4P^pAVRG_k$R)yVqcPg67+Cu6~=|iww>#GYgLvF@vED} zw%IsoE@PL=l%DiA?FsavTm}1D9gA`U5JfrE;(31_88?f`pHd*zdeckwD03FM`rYeD zZ=je*Xt4|zKEd$2j`|;HMZk#<%-&4RcYDKHjt(qG|}11*!k=iB|X?RF{azo_cVf@Hq}<8G3$pWel(z= z_RdIaY9O-h*$^yi3jz9wp=+-lp%6i5YE;gPXw`|Ar)zU2ZdeJoEDd5_+M;s$xi zOL;D-v3Lt?!%IT+1L`9mTIZnWEXxb78Rolljs@aB3-^uYp|c}`Eg{9Iz9dRr_I8KLv}VBDA=P7;QAml$h9yWEj`2Y1Ml|@=Y6=iCIg=56m$x7 zE5hRVudDeND-+xZY2K9oO3jNT#O0y{r!LCr!nVtv^`x8Q(mv+uJOak5{zM!+9Qzfm z+nm4HD+S8A<`OiR2T6JL758m(Oe`CAxO_3BVH9TJ84A_Ek?PsY1GI%X@XKwV4~d>Dy3~ z_1r(DD&5qY|0fP|QZaU>lRlzrJ+dn=6n(F@7NwioTIQiEbBE58P#{@kD(b&MPOWrw z^s509^`_$}JSEMSszLHs;Q1kI&KV(6oVQn$YMn>?|Bv0p_0@&EY^! zjQ!@=kY?BQCUPCF2U^R!WSA=GySc01EI64E%D3pASP0oMa7!b^BCa%|vGj7M*FTJ= zt7I?D?jTk4hO>M3!(efkrBEJdOci$t)_SK!+Xz;6CQDTZ`JVu3y-}yjW4RsD`DgUO zA!f9UPTD`tP}-Vo$1!w{#Lv+ng@JM{47J=vUqlPb#yK}Qu`)UFyJld1jeIin!xfyV z4D))qm1~85Iq#X?J-L6W!Z`7+o z!TA}DEe4=+H{=H(C3l2gDZ~KUH2wU(Z#*SF`sv9EA6F=jKN;BkDIxP$7)_q^Zikk2;X+H zkCa;g`&5IZ5s}2W9)RDFno*cD#8vB_z5OZ!6e{IiVn?2gcGR+CPkYMcbO$?kjt{c| zCNJKWkk}3L^_pKT7T>RHuk;l?h3ndC6SdGKV5Dbj87 z^S{%F(*yUchkzDub>44pa3aa%H8d@`p#3Z!d5AqrfLSNxJRTakt%OH=hK_}Z(N4t9 zs6%(jcPmZfoY``L7azX>kb>weF@5{olOL@4o*X>1yEA965wfZC7*3w9I?S2mn1T3SJueoeYNh7<2Q+SVboF4> zg7jrj`vc(ttkimrsC@4y78v=XoCrJjE=W+!PmER3$oaKCg&b7OxiD=a0>RYx*Yh_~ zOtsLi4aIL@N1x=oq0*MIY>Rj^T2#sMcJSNh0)~lYUf`K)ud}$@JmQ6xxx~!;w?S>d zU1Lor5--leGT>B9*EJO2@p_siCB)M7?@XD$IdS?%Jlf@!cPk=kyat2MvW@I93=N;j z^wcv+>i>s{kkwhmrWZ%umCkJ=)v7bZfH4pGl`I2SwI!|6b~S?2ezt|A2(9L#Lq>TB zzLX5lzOe>AqDXt$+lwA~n&hK*NihqE9}nHEwC@U|({G&Y$sVxldZ2XaO`xk%=dzK3 zb24FG%$m9e+q0)0Q~6+>o&&BRtkle5*w#EI>|`%&P^=|%kNrGg1I_*Bz@H>Hi^%pG z`t*ls!x02n*dg)$#A+MZFm8v)Nw9$<_w^0d&h&&=|LMEIrDAIV7$e5zlZElPdS7LH ze@*cH!~LCvvVd_y?z*bKysGt#XUL9y3bs|7b~TV}yI!VyTyHXS4C-;$B}{ToyY7fB zWthHNzP$^%ijdGniGZkcOX1M@#;)hb=nH$RKe?(15t0xMy%sD9M2{kxG83F$jJZ++x28*k$#YyIT zh2B54Q@8c!^u08G@b&q}ACO+~Q&EjzzhkC{zMI*Td;TS`-VxDf8^U4qp}1jLl35?R zyu5@5IkfAAqJ`;Hmu%ZP2KP6CJx2fToq&;ECpE~^)C^AW5mH$3DYTzrtSbjQ;reLSo*GWLyUBsLdNwhe@N{I#;5N19J*m8(l_-u53-|m`wR%D z6H3J02V}hB^yDgM_VurZOiLq(Th=E|a?^t@a_u@T@WjaN)-Q1`8wPvf9!GOm4v~1T zE6s#+BYU4(`sSK%r4;OG#9NB6#B0h<7H8y9_sNzfX0jMVlznM4+(sI=3zy;iyXBPf zUVGG`LY7l_jMxdZB7lj(v6{&dn{&88=XgbmLsUkW zm7H|{DZFry@EkOjtwxoD|luze-I_5^Vr`InJuD{Xqq1d&fn`A zz6qd6JE>BJA@;k(&^3*QCJ?P@lYKje(X8LC;KA0y67reHZd4g_yUHT^9e(6zt`(*`)vt8IW68FJ5k8=B;oN0etA$xOewj%9b^)#q6@n=`M|H%vKf zR=op0*`7bAxYi{0qP3+-VdIVz3u$~**}g2%lg#9^4-fYB9&%{geR&{5N!>^~MOX` z!I~d7YP#xbKYaEwVq(Une?IiGTijPpu`*0yKt3-gDc|AceU&l)M}~``g#Jze72l+~ zTJsf$_bQ6MWNQ#v;r2rI)|y}#Cb7NH!%x!3{6cI#Yz77!%ihs5IR7JbSN`8DMKbSm zUxRfOfW;GTLkn$-+MLYi8sj247AX%xENL$ji#DKl*&L)Rer1=N`FGs|mTay>4mDfi zk2EIHH>;`9E*1tw*;z6Oy&OOsVl(zD0vE-ZOQ{+a6Fy)9J|?&D8Y3Q0Pz+iaR!`j9 z&40tzO<+n1GY%heFbb{0uiCShc)Hc|IL&UU>3y@X7AjFw(MmMIoE_&kBo&*0>rIX~ zb7~0p1+BkB1|4mj-v|fN zhIDPHr~xp4x98Zp)tu+pt?_CM72lJAAp@Z2r4PkYGSrE2uY8(QN(e*M2kvmFaZ-@!zktg3?hBM*T82x~6^e9T-^W!n7}s6E<(w^RxJ% z)OYc2t%&Gl%%>|F8_3TThR;vWtKSuMnj%^h>lUmn=oR>P7Jks|BcjXq6a;j zCVW$rgHHkx#~aqvq+{gqel)e3E^Z-ixl_`^-Y_*N#EQ-yOMIEB!Vm&$6~8%_`|ydzT*GKDQ$eJ;l*k2u%Grd^ zFiu?l;W!xA^R%}8W-(}v_>OYIevr=|gc1{2Eo#`%$+V6j$2kz@lc;Ilf&7x$(EdVk-jPeHm@-5Jz4Gu8jOF&!@I0_Jc*L8Ztd3D)K zT&oReX!!m$t~6ovUcF6T|mJa?0?`$)(QzK{r8)ue7YC8N>j6p{5jL~G1Frg zypauUDTB>4IZP z8#2fRvjdTwm+(YgMTD`~FW>^Vd5NavFDxphn~Ir53GB~gP0_w9zM_=>_{P#)F43uD zY6iM;hP;!wjnL9ke%D(9oN;vo?*OdzW0voRpoj^e4jgE7yXk1`Y#c30+oIwB3>A>a z7h!~u$DRwVwX)rTY9`nkfU@5Sdg(ZS$n#|B7_5RPt*XQX2{gF-Zu-1GH{%ce;_n(N z0KHS8Sr&IFbM{W`3Mgk~Nb?Txq28ad&BO7HE91^9RShG(2hX}kr}f<;DReDXO_02d z7vLM0R?p3Ki+f(P8b4H8B2Bw1DJzL4(nomgky!fIwvQtM9VA>$XL=?1p;b?3oc*{g zVB)g!r%6wbz<+v%j$SDVf2r{H4W!pEdI|bMD`^2cKOUnVMcGn-?;V zW2qXoR})N_bNSDU<2gE0{`7+}(r>1TmIEO; zHu5;NN3TkRchD*l$h%IDV;7z#npPjMKEkz~&UjL4$g(g8ZM-jSf8=-d`@{NtzACvp zJiheEd^h)Ha5`?%tEMkE?vms{!xFu7&HSIIhS}2XgGp(r=-|@NyJR62O+=|j(sFZ{ z%&V5)(uez0=Kb3#hni$iH!T8m5;L?n3B;fBfCzSPcXyj=J1yod>jPEcojHD$VIzUc zAtxh1$a&ge*g9V>$XWq{D-^-b_PX%SF=ZJ5XM}fp@|i*+9Y-Q$q%(ha4wi7466V!c z1{0-SHL-~PC`|L^dwlPtgl)$L=yhceKD-7Rg-CnjMWgh<$13>MB1C)g!#i^18E&PQ z|6(LXn`2gu3;YFMe$=mpxZWdaa3fJ;DrwwG(jsU?$9;SJWR@b zozBnVp1B*AI9bBZSIGBiW}zbFuZ&f9LeFDP*WBP0KDlPoE@N&r1vu=* zo_7Id))uvmRl3$ki6;eQQGMtmk4@d&a#M^wdE6UA?w5UzyK}W7`=m)1&zL_RFUWV~ z%6sYwIbvZkm&vB-_+++8ef+rcXY43+-Ts3+850^h~umdfk z#-uH<=`H?9XENDAxg8e(l7=xX3 zoq~=>4v{4z|2mt}4kCm?FzhMdu%1)I=|0aAEq^E^AM%eZAmy7Ez;^ybh{XbAI@--X zw{`4pcgfxXqyneUmza?`*2CZn&o=rS`N=X5@_$ZGmW`~%ohQ_f=jKP`iTzLsca-Rg z-&3eIE%H-B230&KSpc*e7=8)O26@z5v z(ZJIh8sYJRg;b9dWdS4k%YWBz$1=i_l9O85l~PMzg}LGm9894Zmu+r?VR--Af0!Ba z;#W^va@@Z|Xa`ODooovq+4)EB306>oil(L-npK2sUuNeGMRz>5>-wgQ8<*I@`i4K< z?0yN)q3}N`Ugo24)7P(K_jcSyh&|g+g~!*3zC59JIYY(>YdF9zddP{VDB7-_rT^1W z7KIhMtkCgRmioKwNquls(*+3Ox|TvOn}LYVFoUp;23}MG*b?-m|K>91Vam~&7>HCd zw0DXDo!1>m%^uqGz?@z6b3q36T9=rHgKv?_4y!KEwoft86V4^d!rEg`73#o;YFBvi zUepdL=wp!3`V06%uq`#2(p5Egcdfh7(E|=Ar)}5`)7V{t5+o$Aq|#}9MMdLSa$`|F?C7s6MW9>P z%kw97BGDP;x-Ra!6GzUfztz^IdARk2O--pPHIne`C3=g!JxuQHMUM0d5|Ux>no{c| zlNu;w;pox&)w&OJ7Pl=mqSlDhd1PbvA6LEzu)LAn%dJa?BNwwB_rYic1q(Q@ashRk zQxt|DJD0wuZ-9XjZR>mf3}%zLkx0|O))b3~0irBp*hpJ`%bCbt5PGd31g$8Rvai0e z@qL#``@+B(sk{Jn5_Fvyu^szy^|eyeqL}U@$X7H|wtg$?lBJbo<2*$_3jqu}m1B#> ze>?s9JZGqG((QXFK-&1rdH_}`6`L;qfzGu(e58bf;x-oUf2H1b^WIxf1qQMn*ha-B zjxjykNQkB+Owg?R@{KRGuKvzmz+Z8Nz|W!#7jFJ#LUmZd;R##%sgMRSC z6H9uVabZPb3A#aMMw>QCl;;k0y*l}enBSGo^lIn8mH#EYxokskbdvm3n$j=E|F^oS zKn$B#Rna_?%8*RVvFZt-Sg^;EZc}{uO-X;RSZ`T|4E&%a4sZlPiB{o(GVD2Dd(R`M zmXm1^Y658gYz;=00=J(P0ZEfVMY1_9P6&XW<>$kY6NX+0f4Jj^J^G)7nrl%K^(9f@dFBX1ud?;fKV}6t zpm}10!S!MrwP2IAff$z}m0Hq0I{6xrsbs*{!I;&|iRn+r>fh0oVhOeBICXRy-dng) zg+*w>-%_mP1U^I;=?x<(AhnVcr+-Z>oQb$zy&F}~*f$_@7X_CV{6Xs~AAIo|Jww+0 z=GI^_;Lnp7R|WcaqhXh@Yyyml@~p;-KpA$x;iGl4!_1K{=PG|l{7TBTTIDxDduCo7 z1RF9hjjLv?CFWuDaz+Td?&)eFD{t~1$cCUjfKIO z_^~`WQ%eAu|4pYA?@vUB3#pRYLuI1PnTo*<&*6Pvowkr62Bf)Awh(PN%hrqkg^Zp9 z{ZVq_Er=2FF}^AvIDz*POrWA7-#z~7I=B)q~hC$q`795 z^669aGF$$yC4`) z@u&Em)5-oHxiUG3=fLL?PWg%*8KQVR33Kn-%eKtSzqBSp_wF7 z5T)MKUe)LMyub4?H60m9Q=C%6_(qPs{#5K4CeI_R6g-lqaN6a-nD8v`pt_~>xydY5 zYJ;Hb@k&Oem9j4NdRaDoJMg~)sXn|rJnt9e1tjc6U6sMRd2z9hU_M~tl@Zw=N?S8x zOPWr;X&zRnz45qTh5akNkh9eF_0EYK`CMdhFtuT*U>f}A^e%av2BH;+fe~j7ZQv!R zcxsrnn;SLk$^yZW0b(0AVd&X$CWRr64#BClfmUICiUkOzZvY#R%<>EA2_FquhriOS^p$8a86KO3K*x>&uHozISBVs^LLX9~lu-aqN!khR(Lt~-RQ z-27z@gx%uW`Yd{ck7OCZ<5S#vLuI;(c3J-+V=0-!pf+BcL|j-&ef0IW}I&C_Ma>Lt&xpc zuaq9s@VV5ba@|ky53gBJfaG5Z86ZND*l83^j54wz2FGDGk!@iCCWZ5a`r?4HA0}80 zib)qd_(+j5(g_dVRTKl!-gyrC7V#|?{hCT+def0c^gD_u{^bz1Z2|jfVi0psKVlf7 zf)^EG@*)<$79yc!O+iLn3M6u!y2H8sFL8~tT`cgWLtmPz&T3W`T+fFG>`I2 z&7;!4s{H|GVEx7_^Eirce&K`u#{$cOIh((iHmTf2W{)6S05c*HQ!SiU8eP({zxOuE zQM$)MWZ%|>5hfkrxY{%zE60Q19D2Q;XXt2{;}oCN=unD?{a5DZM-K)PuOf(f^OfEn zRu$#AK;N2W=TRwfL8%Gjg4N>N8bZJr<$)69_l-GTob1`BoOP?AC|62#pvOPdSSvLTd+z$iLI9mCOl5#8Jg*O*mX37P3CZvd7wwIQ<;Th2Txa3MzV@DG~PPp44&JoYo`KC5`bt`t6In?QOUDoqP>3 zYUhrlq-c9{TyZNOy~^pDRvvd#a-1Wwdm$FAf)-;)=vOgfO;Kg%f&UFD!uXHI1=Afd z=uYj9*uaf>!Kk7~j>%KFG9^@`{!q$hLu;q8nv%ax*t8q$< z_b(NeBdjKWA8BQ$#bzAfgUIhq)}1Yu>r3gC@S|h1l1>Fr-TJWdHfw~pMjqQz!*e%o zk6o2CT{i;_c4q~9$+n;lBuEhdl9mbcP}ZJe+yj+^4`E_75%M^Ux=&A5rsz_K7x&hj z9Kv?@+-Fqof{w#>d55nm9g~VPz=Ywc4A@y#6RwFlzx8Y-uzhF$8lYew$DqD*@;#3d zgl+4vg%C&zxa2S()@W;&?lDM~T3xIQwLdE6)UxZk7k5qHI&OX2Qtg(g+oJ8S_x`%{B#IJxf>#c~4xT`ygU7g5PiHLNcx^UnK>yox8sis@eh) z3%4VyU^BkGDDN9uCt!2bcZ#WzN{h1m;5CXyDPwXSoNWUZ z7I6^($Dw!!k9i*aa@3xV>M@G;Cq@O=a7sXH>SEpxOUs=Kyp?jreD}Z^+T;#JSUwKk zX-eimT9r95ndC}O5*f*Tob0mm>Y1KskTm@Cl)fRq&Bj`osx_$0xgt|oDM}|bbSaJ3 z4_BHSdZf{&1qP8>`&wW-#ci7-(4@N2o8c#<4V#X$wUl{K zzMMRg@CSHlyDiV&V7Q(BrQ2nfv&r%=Dz6xk$yo^P||^)G=7_tE%CfxSaYEz7Wt{d z_lQ67gNgfU;J;xY^i6nPu6dPmij*!NdLQ}Zib6?Fr3q}M;qQ(8o=TKeeMJ0HB*>X0 zB}j4X17=^WIdF)?e)`+GHFJQg)`;B7hO5-I@ERg(HU{WoC=tO&IWdA{XxRIo1wrl< zVHq)h-}vec+3XK$3S^kNk^`c#G_FqsiT$Q$p(FTh??>%m_yb>eHoUH|E^|$5A)7D0z2pg_3K{f{xkQE#C28K zU5JJrHXHFVeRZv8?FT|m>2<&08d~#eA|5KAYHmuH$<5H(d?KK`%K=^47}~Z?a>D)N zlx$e9RB2}`WLG~@@^=E|@AaMDclPYUn4mcwoDZHgNM>h)QI0tFyXi#VHDk=}RW$of zC`akwsE9iXsLWiRzvi%5+RZY!m{8Oh+?S@#4Q>kNA7RIkW8&sHhg;p<&w!MMFSUOV z)^@gdC+p))eo9GvewX>iGU8qG12Hb!TEhpwTLGqA((XEsE2i&xR~%j@o^Kfl@uB;zzk^ zJ>V$zkO1(Vou6%cK314_AFVtF+9=7 zf|Kk6M^}u1xJB95#_OObwnkA-_O*cKO|TsUH^DhKUi1vFFT;n|P;_6g!r}3{X=ghw zJbLR{RXw)T17vsh%k^woT6ywQ;X>~HG@BdA!DH~glAw&wisO~C_LNRcl#q1QclNU$ zY9PPdL-7EDERFt0GOznoPT3zzhHAXjEq}j`3AEk@^j~+LFkfp^xE{YYUH z+U3m}3n=Z|Kt(RGMxLfBh2!>3Wl<)mmlv=QGVU1ZDzZ{x!XTm z0A+}4U*zu7Xq&Th86J_L2HI-R>$X;J&)T&4mzW}o0I)6p7#D}xs5xe@Y3BoORC`0p zv1ZgtFAeI%jp*&rb?)egRA&6RsXt!REUMmPNvQqY{?d>(iXR{yjK7!hkw-qnX+pj^ zKO1}HU9s{_bUL#3*-mHGLB9ijFS2VS4KG*nIzbg`|Vt6l6; zB6?+sC6^1Vknb?pDTqWiUyl=#&*yVDeM@ulKmlZ<1eQ@ks^SPs@8AE;(wTJ0S|Tks zYZg`kTw@^%qmsZclp3?&F8_i4k$%LhS-OE2o4G z;ODy@znv}K3HB6^-go`Ed?s>DrWqHw-Rh!ou36-}fy+0RtZ-8dq^&9U@{1o*M;XSl zfg5Hz9$WW@lC!}O%dhrXq249(BtZxwi zcv(d$b=!4IT9eywQ0C7xMxtHK1w^brubYt7Hqxek=rUj$z4CmBu`X*9}>QlwN~y*6_jMw*+2ps30d9Lq4LSdGIn$|5Iq&jQmmRmC{Bz;CrDPF>krqb;@=wyt^CGiQDXm0Mk-r5#KLxo#1^{hEbR_9;% zt@XU~KBnz{*YiV9!4>7{2Y-d_=)7?*GfGH*tG~2VMiFP>#)4Rtoog?yd2blB%!>*5 z+-ewcQf#^P-goA!s&VKe5c0D$0C_Dm(yO~f<2`2f%a9l;Bq5+HD{wGTw$`oK7Y`GT z5SHC(_z`N{N(PRq;J>?^6wThWtS`G5%eXaO+pcQ(d*1sK`yJFVhXhd+#?s83b6GTq z0ZdyGtd?OXXHKci*m{3(yV6}CBWw zK0XENOf>tc^$N+R>jK**paRtubPcAK;LJx9ReTQHFPLE$T7l?8mIM@3(aZLK#C$GnkSCr{9z)|S zmOp(n*QuEKTT1=9t?97>_d_&!FzYB$E5N&bJ~h3#=qD%NCM;n2kGj>59me|DgyAtx z4fWmzFPotm=_kFlrEt*Tn9R*S>UC3_t)>IR^vT3hGzebs@l>)xuwh*9YQh6gb>I2z zrlnTwWqMp!%k*ls5rS*ucWA6ITr8X&ND4b0H_63+drLpn_{DD|AV#>zSk4df)bEU$ zTHBhkF?nT5n}mc)2jLJHz#am_L`IE@#4{|otD;7ciGfWZ(LBC%BJ9=T6a3wacm2NS zP{{m?6O_QD^5rlC8E2w6OQf4baThqOzez-E3%#D=y_t?Kz_16Q*=3E>wy=`N;eEHK zq893|DhdknL_RvF{qY5&=QAq3oGIboa|pN8QhPmlBJ=2IuTrUfu3CewawbVH#12CT zyk8j@+<F`|U!gaa0A z7`ssK(1B3K7{q)^*^ke%C<$3Fv2Q_2fi*txNlUi);yY@l@<#QZ*RBrLkH!)>lxa+Roc^hS9fJAp@f0j!U0NWq zCs$%~RNiS(mxCA1ky8h;w$UH#el{b7zR~(gFonwCcoD)3E6-@2Z-O#{nv0J}hc1@- zQTuALXn*@hnS%(UvhQ*Ue<#Sx1d^gGW(N&$>&ZbuX5=(Eb*f_!%7E@4I*0H=ceR7m zu~ecGUb0$l?fYZT>af;kS!@!MCGp sn5|~`G|pp>+rQXAE#m*_{~1nXn!!X&>ghte8Z}j%Jm%wBcQiQpKO7vn)Bpeg literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..dc3e9968 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "filename" : "512.png", + "idiom" : "tv" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Front.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/400x240-back.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/400x240-back.png new file mode 100644 index 0000000000000000000000000000000000000000..313aad333ca2ddada8a9c7e779deb4481c66cdaf GIT binary patch literal 2332 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJCf8byPl6p2qNEakt!T9#-M&1So9u~*Xf4}pv+;1?KQ`xjXB_(tI%*y}w-5VGfnOMS@(!btHW@6zG zP$*z!Iie|`;LzY8BrxGfnhQvt=@A=H#zBFT!z0O9$pI+DSjY@gJb{HpWuv4ZP<2DY z4xl+40v=3ElWz2YR697_0U6Dq!pP{E;|5Z#ppXZ)ZBj#nikUJjjl}9THP^CD8s?eJ48BF(E R{%drATPCi4F6*2UngHI(+lK%E literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..e1178b2e --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,18 @@ +{ + "images" : [ + { + "filename" : "400x240-back.png", + "idiom" : "tv", + "scale" : "1x" + }, + { + "filename" : "Webp.net-resizeimage.png", + "idiom" : "tv", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Webp.net-resizeimage.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Webp.net-resizeimage.png new file mode 100644 index 0000000000000000000000000000000000000000..56bcb845ee016eca0d2e08488aee6a2d8d4e748d GIT binary patch literal 7866 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYV0^&A1{8^9=llw!7>k44ofy`glX(f`xTHpS zruq6ZXaU(A42rk6HJy_VF5FY&G-PMFvYXwJp+TB zil>WXNCo5D>l=9w81S$d9{v4(&XNyYySmt7>>XC@Oi#P_znX`)IU%G}=BIZ6A%ck4D=^qwS;7_7P~*X|#Pf+CCg@A40}oN887v v?c>q*@o4*aw0%6gTe~DWM4fiD5xr literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json new file mode 100644 index 00000000..3d73e5f8 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json @@ -0,0 +1,14 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + }, + "layers" : [ + { + "filename" : "Front.imagestacklayer" + }, + { + "filename" : "Back.imagestacklayer" + } + ] +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/216.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/216.png new file mode 100644 index 0000000000000000000000000000000000000000..f64eb8550b11f0203060a916dd6953f890736876 GIT binary patch literal 23903 zcmY&=Wmp}(6E6-2hl6{u1GKoiYjLMgoZ?P#cXxMpC~n1}P^`GS99$3Xm-qkS-sgVE zCcBd-Gn-_7J2Oc(LRnE74VefT3JMBMRz^bgBVYP2At8KRBPbZpJ~C)$RcSG(+J7WR zA2$+a+Oj_s6rdPB%1BVqVU|#E|5f=&L>~zX3N{}a3icz1{_j~n%>Sh><-`8J@_!Xi zkJ+uDphTc#B}CQTq0hPi`LtRZAYcBji|5>%#NwoX8%L)AXlyZmq;M*xa6<$vLt2(tlf3uY9k&|uTAS&rqrNsiM}kvc`LGxy^8w@frWXMlu-gGbeNW1Vf>Q;E zPjDww?Olf(us(setRL0HF>U}01gL*@DIQ7Bx=i!>Z%f){J5&ZuG?Rw%zdt+n^{FLJL8X9++nL9GOe;XcSTy0IM zY7x*oUv78a`|KBNy#!i9Li1-e8A`?<|E{jz=wjCHuwY{eP+k`P;b-*9@I`9jZAsA=&I%Hd7d61QDa&u0BP1LwgfR@8X_ZBTRFC^x=O(YdjpTz z8tycVjUGEwf?4ZNA3eq;24l3)b_MpST1+*c%=|SgQmZ^p)!n4}m^>nZgdI~B|I7|; z37Z%#aM5+23n|sLqkksz^A6T_HLdEi+$FgKV|s24($9{CDGL22;kLB$9&&=18nY%0 zk)*K56DCEJq__+M702<(J=!`?S58KU1id5{F3@v6#*g2nd+{&+WVV)&`^>W0P@AI+ zIw(;IjlDpmRAL7icebQ^8?ITaf%VGc?EE|b7)ot-=~}(d@TZo`zhpu`PXD_07c{&< zmQh9x^4wiBIPU1Gl@}0OhM%k5?4aZ$CcV9bDWl__eAipVtBw<;_bZweV$kj z^OrVAebhgu&!vjI;duArw*c38Cd)Q)o zheOCHuJi~@xhDCsI=k{od~-A|qsO?CPE595mz8Sd_agcuP5B(Xw>L}k6iXi4)35*2 zTodw1GVX#G=4w6XVI^fYOI)$e#d(z7gGfmYCyhuPIDZlQ?$PuJ!b`k3Mb2iM4C3-F z`1qj99~`3<>}6^9d45uaCjsy$ZtLzJDsK0}P~n|>Y44C{J#Q*dfaNE_QrrBLe})?c zh__WWMMzBd!S|tsRlM(Pql*Ap#~C`+TI>~MmoM)lhl{N_<4rR5`0QKVK7V)n4^;R! zQ#bkVqMfFrd66u_x)`{0b#u>EVmdq{Sdyp?b&eeAREa>WOJ)s37*IxqpWrRgW+!a6 z>57uyon9IsnZVTFvlskVA2^fK)|{MY&{6ra^iqU%;;4bKOEK4MerZ0_j>h8ri7p#w z90i2H8cc6F=k!lmKSk2FMwzSx@}mJJdpAh6!2|Z0)I3+4$v_}3zuRT&KLB$$HfzL7 zHW1#IsQGdRr`k=o#Y@*uY70(rt${-#qDf}5@z-nLAG@q*`1`jCErP`9OS1YnL#zo= zlB3dyjMH1e^8tR2zNX>{^X9C{!1pIO;vaFfgSZ3tHQ%C60O5L)F0`?TPW_K$DcIp0 zU#Q8QkS%xsop%qG9)8`F)JYOf=`5_dk9FiT<}mvYgYDl(<=3d5r`Q*gD_&D1+wFMV zd;-ymxXWTmwchT6okzdSamI@a1@+Xj$RYe9lY^NuO*A#Ik;gPlr|+oyl<)Q;kWv;v z9fjkfT4CO8ssfphRZ;;;y(O6|GWxl^jmSY-iegvhNyuqwAPmKi6?O3rogNko777UcX-oLsnl89Gr!9Pj_`B!sq7`58! z`hF1PzNhue|0c}#m5Ik~p~)D=xDK2p`W9^hl&C*HAY2^fRZkG-C4(T~>o=#X$(NeU zA}BgSomq6BjYu0x?02{d^jyzB38wY+PRj-x-L4w#76qH|iBsKg8z0}ErTg>WqwTIM z)sU<)N6(UQa|wP{iTD6if^EXNQ(ovfHfGDBEcaP%`h3rpt161AOnw(* z>6g&2ioO2RU5EF=uT5BD>}%+1w*HB5b3G&w*e-{A z)5I8l`l^$X2`%M|2iBP?v!OK{1;uEJVkJR)_X>NBWJ5w{Q-LdKW&h36+`#LH_7nKV z$M&&+Z0PZPJk*3^kvQD48F>9k1it)<0WM7<_9!IG5sKV~PGqwkomhgwEdCx6Dx_4hw{Qk6<5L^+W{Z+@*a;KG}#Xt&= z^4H|=P;9~zKBQZ0=%TbDxC&e2Q{+mgj`2pL;tg`*?KTZaE@=_Xl5KNY8HAiiJ%t6H z6@Yp!fTttR)i1P~wLsAI$$g~pygU@yJ`s z!|hhvO+nF2|D5Pg3SYL9C~^-liD%H)ATFyGWrzH|IY!L2#VKJH{Ui~mN<(|Jtd%uq zgV@MnHI#-#!xfPoUy=3zKo21T;3;Ih1FM!I36mt}FS`FTyzbVYE58s3*S~C!a$@~N z_6w=U7I7kIQ>;Z6caS;^3S^uKr?U{(+mYBFWT^pLPU3>(8lT)XOReqJ@sWN&v9CU|VEVm?h!jMY3@;Yf>*G+voNBf7*Z1FH7C-)CX~T9EZ1H-6I%B zRS9*Z#_Sm45M4J7FxvY{gy<=s>gZp|VMELmVPnkhCWAR1F)hQ1RxWw* z1-8ZPtCeW_T%w+})H(OB@A?blSxi{3=luT}ofoG?4K_Q;kj>Pbo%}ia#DOVU1ZX6& zp+<3jEwUR(ax^uv`+_WCUGJxCn&1(UMEOVoT-25=5Es%2UY4em1DA=2(jkSnMLN&V zzA_^X=YvF(kZCEaIiJUWWcgYqE#2%_2{L{DFT?Zr$x&sK8vc(r zOlzT$edWc5omk^!*3FG}eFzT0u$X1h8k!}nn>_+e^)G+c?^A!-u9vn#=f$+%bVHU* zMjxFWfjpM<2*gQ&x4jSF9-#tbs=Bg(}|Pc1g9nNc0>+5M4_B06m*bwoijIHsr<(YE-qzR&Ua(K@+T0GidGHoh$opsM85WVp{*yv3r^*ON@Fo1``zVdg+bGu%ZC(smk@@J0DMAMzdHlFUZf=hZLS zjjE4KTFkGk0TJ*p{qtn(eE2@i{7bsp&U)#L65taluO>AXyp<$O^!q#}b_01cIyECf zmY5g_Vv@!0;hn+eYx6iK_!?I?K&7O8SlKNQfT-W>AjymI>$j#V%OPgI$DS)255YCI z2ZA|2D47ha?q@iXF@mti%FAlP7v_$qF|hc_`LDfA+ufYjH5Gl2TeOEGZJE^WEfPMi z5E{ihjw;7}!rMf<{?@D2F-A;i1gHEbQE6Azq>;1+Go*}$ul)xI^ZH0{xfzR8rIAPa`M$|5$65j$lwql?PDmL5i&JxD3x5_@Q+@=zGXqusF+JJhIfp_ zZH#^5KVx#l`>|iY$;v{q0u3K3G1eUY9{>FEEvo!9GF4I&Ycq3XPexLXpI8b{6?9l< zABjPLi=OGY^!5Om*RETo;vkW>suGs8nRxNKtllPkpe#Y&h3hMH7tP`nMP_KZo?~`E z75=V5%?{9k(X#F%$xgoC|8NieoHzLrTWouDcpC@b6!wKq#$P*oN zd190(xR(;4&jKCMsM;b{j>6w`hnI2LDelG3`+gmaanTv|S8Q$i{C)29w_RtREMgPS|#}j_;AL#L^aEzvpuRnWd!O z2`BqhE)(UiW=tPX5)#?i8$k%=qC1^o3!-@(xz30o9?P=tmi+Slf^5L-Iq%^G4Sb^O zMi;@8i;h}BXWg7*W0xgG59BK&Pc#UPPeF*tvwd*tUxEndHbRRp zXfO?cMa`$l{!KZV4f>k(H}4A2e#NE$)KZ#CknIZI{Lb%|`uSH6nb!KC?9jilmagZ~ zINyD1v(Ji~+U3C8g4&l(@cdXy@Up_r-(2+szAXK@lsv)rg!jkc2}WjtPfR#8Cs^Oe zuK=!3a~a@f_YGzEz65AZSQ%(D_gaw%6MwEgB2t)3d!oF^BRY(~OmNp0e?6_e(Yo;GIYc5_eUQ+EPXjHN=S#!@2Zxw$h292!kVKu;p@iElJ3V z_$s|2|1MsK+J{KNzo|UocYkyK%UpRH4HKin4h;yT;(y06!LpHS$abNC;LP;lBe6C; zOuvu)yie)*zPOG%pnk+ZZ{Kql3n{sc3%3z*JG8K7Pmt+XcN7~@T_N_3H?Sy6WZLTc zgz4~$*V_*~p?A;FFH+K9R3;<^b6X=C^e~Zqdxir-ie)m)JVB@|+m6(e zRK5s=&)mD#pdN?o2~*y^5PZSfms16B!Mb<#(&v=3##at$8fTfIsn=imi{Sw>8Ot?f!5L^a0^z(2v|-O zPfsHV=)}fwn0eW$X-)oR0#9rSHaK6`e%l)ID$#r;$pDBO)J@?vX9d>_8xkj$pW!cO z+dycNVph{3#AzhDKX$7arHx1Gc#LfhPV(P}BRdaD2vjk7f>)|ifx)7C!LoXA`fx?D zhgjM!lzqvPxpDSO${TKzf^czvA)mGU8rM2K_~m6_voRY)5)x$hf}(93$-PAyboMnn zLd2n!-g}9i%c4Kqd+m>69R<~<@aT+;}L9G zhEL`o&TEo6Ba`(<2n$~zwj6FZB*tJ!!7K%pP70pO&(M4|fYKqG0UYK*L!soQEz@gg z8WQ6{6aO%rytv_Fvh0p@?xxZVQnOpTvG5qKY?Bu_JAdunm4DlP|!7|`61?z)ZBzi>@4vHfL-MYf{IAVd3_;qyPG)z zgRSup786uRSph?N9r=Iq$dX&+$`hM+V-CqnJ=Uj$icGmp^>oyXqA8{-8;2 z5<+meN8*28Dfj@5a}uezlP@*EpU+rMG)3CB|7AV~35g_;AT*fYe+o!-qN;yI{;p!T z#`V-)Tkm+V(SV=faMZxdf(pQWOUU66JWUY}2E}(9L9k@G^EI>HXsEr5GT}<(vv^Xw zAnp8d(e}dRSf7{tGJh9m3&#Wm^)LSvkPwlO$HaHw^4Qa?HXX+tMiZrDJ3|tuS|Rt` z3V`@=S0g&Oq;7Vd=R)SuR!uR^(!SRz(ay-*;3@*mJP8bxn1htuuM-nSK)(3~Zhfp~ zkJVJWpBck^0u}n>z*mi0jL10W-VpINCv=M3QJ#7>mS{C)S^pqV+|tmuegwTK_uUEi zbXOew90uRxAJwK@ffXjq%dmH7z?k$peTAn#bFQ@UheTpV^nXl~hT`aZJRapDc}~ZS z@(jIIeRWQ%=(2x?MNv@%g|L%47X1w;0HPl4i%^Jyxy2zbrxV=A6UwwCUC&wEw#+?0 zZ*$oEh2p_1s-9OxE|5nP0sMGv)A*2 z>gWYXn1Ax=2f3uIKs$@6NZI_rp3sq2`pnF05&%zD`aHnZ_aHe+p64cSy|Q!oS*F%l z!3oP6`IJhZ%>oXoTSf^)#p8QM+!`B6Jjy8Ttu=AtP`@kqUauIzx|Ox}uc}S}rnxZu zbBgz1@D4d!6w5Q$$5XjyF+B%=cEUvlhNqsE)I`F` zysZKR+8>eRH%eKIhH<)QFU_xb)VtbOFkNQ&T%VF5p=w&mi`h-p<9We(^@2!dW9L3# z{P$Z|5VB7oCG%+6rT7U)JP#-VU@bP?Gcrshz)O>=F-n}E*Bk+Mk|{S+nTH;+?*r7WK`Nfi2j|pb-SjWG;L&eC>6uN>4(SjiiW#$Ee1mL z2;uH~|@GWUH;-0!OOLou@lZXXDq-8xEs_=^) zDv5FzLRqN6>dM)!vV86P>p1&ZBi=3`nIw-$brWgJ8E^axN~t_uUfZu#s&`reDNd{> z0kqE7u8n%9__X2+txXAgxzK=~BZOWpQrQZ8JUbe4`rjclVUdl?# zRxTwES%hjr`N0_^BCWi`GySkj-6||j4@EHelfC8v{xf(siz_v5t6M8AM408xZBkn; zH=1AJUGcA@7WmUb+2$6wp=d#&qdnm4EyIkKJ>Q*$x;4H30x>c( z3)|5bbN3Awm}a^(>swZ88cn?|JXVc1#{Mflm1>XMY^nFYvlD=~N0gK1R$IIzWYym0 zKvZtZMTbdr<#;QBOD@-BPFL6WT-bKLeyo$Jn|Fur{rYY5*6Gq{XljaMxWq`YhgLUE zsDM;jZi3Mj9SO^E^rSe+ezv;{+-l$ReXG`WvcK|n^WWZ)KEfAiCw?Wf8sU6oL!%PV zKZY>_;paK0wefuzC4A5BtJ%##duj28wXFN5sghp+b3isQO2mfHGMnV3k;A=37M^de z=PujKtiR2a<;-H898dG*iM7i4ABSi*ogzV*d6ms5GT2o^AgoYa=LG>$|&q=W)&NjQE3&&72@|hWBor zTvSE7)NE5}Lj=l$7S7rHgJ6hof4)Xh1%MfhmyP%K*ma*+p430+%baN4x7Qg!f`|}< z_f+aQFEwCkz9N^%d0m>)n&YMi@+_Td^?f^s9Oe%1ed|}{d{jBV$q3q7YN!2Fk)wA? zop&NYuu{uy;OdeQ$!s2b$9Bv-+jHO69D>gy;E|4=`{p?G5XU$$1x5barHVBy1PB6w z$n!(}{5-&D2A|zdm!_BXdbamcz_?YH?VpF{MQU7q5o}KOT7r^`&&D>mZl^OQ<{IP&jF_G&PpV~|HLP=!5RcWxzF8qMHE*b3=+A#iW27*9?o`a@0%bj{7vfjfZ&O$8y#U889UKd|RZ{;A|Yo z-gbPDe9Wh)^#+aPd8bD*xI-htv(WY>Zg#}r?WuJ_p~;&Cdp7qvGLfUPqBHZ83KZN(yq0n8Nb{j?F4M zm73o|u?)$9+f#8pSYeWE9RntA1@77RW$h&6K`t_ALUdU6s+4!Z)MEy_R(XEhiV_PY zSLOP1Iza8ibo9Cq1QU~X-#samRevd)7}^z89fD3ZnXMDx#0hn*+PWDn;R>%JMY5V^ zl{a&t7w+&h@_4IXf5qI`+-#`#zS>|UO7on$&%~H}D$nZXm~lUpzm+#9Tm9qOD>)!R zqNe}a6k>K%J^f5^SuW4g{r04F!d%3{%fpUdhsv%%aez`j*oK=#Adq>E3Mbo#PNMq} zB=SAUYOSA@H8SoxYBDL&J*MDnE3$j|g>Sk>L;0=|McWJ;C%?m_DS-g_%`8|yetxNb zHIdf_yK5|u^Q6;~j~;)E+IB@*)x)M!tEpi=9G<5h4N&W+Vq2b9nFYg4iyB+N}VuzbJc;g-Qk@`#szEx)042u>$ z<5p2L; zJ}xC;RxoMnrlzaQjh8-(qxd6Zr`6wnD3h8TD7fP|!Bk~k76kHN|CSXm5Mi*>OY2Ax zNt-r8)c({v9xqLyDxDA$yCwH@o{Ppv>$+f86=tY3QAH=eP2-0n_BD;jTN>P=Tnc;N zbvg~P@>mm^nW@tdY&t$X{Xtj!C6O!elnvBAhz}Sn@`EGL&FwGdR@~}63WR}M>vEPZ z<4*BA83*3_Fu`Nt4)t6IcC>G{gk+X}N1jve2w25?4jL3CmnR8>C}s&acixSk3yr-D znO`vdzMfw_@;efP)u}F)V4Pq-D2HfK z&UY&tv)WR3mJh_adFmj3)LwBVm}yv**g-tkV$##WQ#jj?T=UU&O}p1SlP)g~y=gda zns(lu{Yfrj5sr%vG%Y&=^aKkA8u=Qu{ZQon`C%0Qkx~e}(t!G9;O*T(!U^gFO6Bj% z0SS|cjA#)koq??Uxe|H*cmVbrZx)YJutv3?C&u@yc|G`X%4b0qR{Ay8`?T{Cw(EMJ z5{$^@qEL$@(Bss5$-z|?LQz?CCfxIt$Ji*g_uXiO+SVU9mQWtXYFV^V(bZ%o64b&uahZ-y_%^hieRz;Ic$|`i7qK-GuphkGe-ud%D`3B*>0;{+ zrUcLHa;5nlAD(s2UZTes7z~i-?e;1LR0jGNFkTL>(4M3Q$mBm#5i}-o!k1z|p`1*J zyW0%D+|it|L$je9cr4;C;?jOwsW8Gdn<_ts`m(Q-3l+_nA^IW`F&G&KTNqT$Z7{uV z{$YQG6|gg4M{nL*Z7`EJ`d1>5lk@>*lCfeG)nlSKf^zFnC1`VL3Dxa~kLNWW;RVKj z8yX9!NehX!EtO_?ulms^c|@rj@l6?pK1`M{S>)Fv|Bw$%fh<(lfx4AeZal zVXn^OGq<-}A%?;LUZJ=UkNB^|#6C6T2h|zEjGB5)x?X@@8T+&(X#_?d*N;7;&_e z^yN#cr^(#$`<(RQRL0pIgA_k%RHzLm;+FKbKcrLzqGK}%T8cVgVjSLIRM}cX#eCXy z9PAw#p}+)|WKfVX{?wM%g=WZqoO-!v^<(D=?RhFui(>>14=terF=7G;?u;;85et0d}Guze^Mi!8c+_>%$$F>Q}SiM5ljPyKHJ;R{VFn@Dw*}MlD1I% zh9>11cAcb)prWD3vDJxb4G_d0b7mZ~HA5N;QE4U*5rYwSnPJ@DRQ2FU`8Mp!dC zNjWm{6lBJsj}r4Jnl`7my|{eAH@gl*QuzGiJjIcx79iDQG9&FW63vSOEyjrJP>-x+In1K00YXt84+-nSc5GQc08kJ#(8W0GsUpu9(nv?uW4KUO zzm#vf_ci?UO@6^}81Y>_ALd9lkN1?#84?mxC2t0%z@)yt5Lo;0 z;L5r|CQUw9v`c;$N)=P(PdcgJxs0yzNnk*A{Io}JzD{r?xyjRC}(E9>rZYLtnHnq!(ApzNzn+{56cIL2eN$w3*Djym2rLHnjBSv}zH zN435yt>7rV!=>4zD7=Lp1w|*lz-U34g6h;KVHA+LUpp>y!(&+NxmQgtZ%wDgqgY&s z&-@=ec>k22Mfz4nzl8fEuqpp8FG{^K&Yf8J zl_Aa-mz&yJ^>tv|)w@>TLvKtYf4e05rnTa)Gk$LR`z0&}wXyceuDLv;a3^I@b627h z0V2ok%>tYd|USu8b9Yz$8E{^?_ zS0&)X=c`hjN=ujW1JX%KuAm^r4lq=w$cUSb2d10}w?!FXCO7eoI&k{pai@4t&2@+| zz)FUAwux82`%}ojqZiMOVkd?vx5z3P4bfK1E(}s{?2L%Y^H(sy50xQ*Emis=?CQxa z`n0tm2o_&_(hUC|@2bQ896~g$h@)9x7)8F1brOg)? zynb@&!<;AOfK4>K0(NaFqb!Bx$VJ7Tg}K?`h!<2srPpiOiAwfsM&}mgr@Ou!OJWwp ztHP(GWLCByIHGYlJnUm%a#z=)fc`?Dz>1Ce)Ca>LbDF?X2*quRX;1Vke%`9#fVNCd zByxUf&u<-mU9aK5;^JxTm8cAz;kOubQ`TNsejw$J8#VUFjYne3M>`A~^{&Fsz;$K!xGa}3IdVg*FVr3I=Vjh|U z`L-#L*ZSyqq2sQI-c%K{xl06|AMTc6+r!G%+~4mY8LJQ2Dk~ujXJzik*kz3|LhXgz zPc!xn@Hb6bAwM|`{NTH-(;Q4N9(^TfmOhp#qG(e3M7SB$i4dnFwq;;ur(s?CTOS27 zAiNIVliTE*K5kUb1iIejFI9?z+;+}^;#zSr=+Dq{C{X0sV%+uXGQz~JjEVl8BZTE(?3I^MLtSq7dJfOOMg zgj#uozB7&fIg44iMWW9`AL3X?4!^9xDfmxYMJI)Cwq73=GP_}QmUyVN(W+!lAQFcS zZJs+4=8CuGk^o_J3aJbz!cr~PyUfPUG#s>t9vwHh_a|g5HtW0QwKZY|DsmSV>>2W&_5(23;TQM_-D7h@>$y)phD(nkM+P3KF!Hzq(; zL~h~0&-Ui!gerz==x2x}VX~7HiR?+<>^b=-f#LO<7iT~u>dy++u%G~w%5rM6Gz3)y zlr3=nm_sTb$%LwU;R+~DUi|Bl&&4JxLRb%|H5}KNZHAen98=0&SBQ6tcH3=CN8!AB zsY~@0)4pzsaL6OdjQWwjMZ^h%yCKGP{Ruy-@-Q^0?PZ#G~?F(`t35mT8_b^sbdp zs=nl^Rm%IQ;ZGR#hMOb^-k=dbdeq={*}moZ=yPj{*Nh~swyJwOMGwfn_VY&FGH~%J zMFeks4f~;R@Yxrt90*O5=?bSRuMPnp&0VZ}95_@8P@Kr=tr@CdE6du>f#Rk@RX{T` z+)dV`jfT3|&}4X{#?V*(_JPrC5D_&W==7B(Ys}H`m`lFe!KdW$m2aE8A3HJdbLS?0 znVqjZyL(I?Tt#xz8Ijfy50{a?G?G>W&Cg~K0+;VtQQDH>32eQt9-T*buppS1;WBkv z%-;Z$?mO3JS*}ciQf0htr|O8Je1sNW%@s?LvZ{@1JziRm4^L=^sD6YWv0y*>w0%}9 zJwppA%fN78Ucl@Yz$BkV#sZ-RYml1l-)pFFJD_zuIV(b{O}nZSE?$}-@sJ(g10Fv8 z<@}6UEB98vGM!|@gz!){+pE?imL#@Ez6o`J8W^IoJ;>#`|IM@-Al|%C1Eeq z7u2&)N-P`NLgd1QS|I$!@1%%5yif!%3KSOD99Yz}qns5oT94Bdiyt8q19R@wylw~A z41>*AvL{1%`YTdJvvU4`@Ly9w~u!-UDl5r{|eKzV!L zhU?z>zyRT(o5bB8DITP+E>o{r_sM=8SKD>4nI>;eZxy=763?bJi43nMKCnTf&R=|| zBFLw-KJ`iU#~g^~8vfGhR3$5V-c#mF(d9$g(Da8&<&@Qs_$pB~`QwH?{_VKiU0Na@ z&HT2|4289VcRxT>g~3$?*cHGck_0ax96HN#+1Sf7MJI7V<}&k9KNF9j^J zMnGDcYrYiv=&m`eL%goFi zS=UYGa?kcueIeypC4?&%Cl@z_{i(Xe^SGp0-*2iIzS1C87V0lv>mx?2KyT%;bf9h8 z0>@SN=b<+|FL-cPx_Z4uV8#j6+LYvonb#MOtoUr-`pXMo<=)^n{>I)VVMd+z24%p) zv=GVIh%xQs@$Uv58Lr*3N*@-bYzx1!x)A>5OAO>S4l zsLLZVSw*njY+-evm?57M6C3<|Ea+Nt{EL0c=6zuOhq|)>_ia~w*n5@N$-Q(me#HDT zKHwkDE`=~_BK#WS<#JWk{kU^B3SN`1ks7RdIvq|iVoiQ%rpq!|q`s?3VMzPPBD23u zZ=ErO;5}omdzt{o{RLGfBGzBP(EB)Q2Uh{@wpmR?91l*ftuU(<$~l{#`{R^Wd;Lc@{^~t40tz@$9jGPA zNl(k3qDVpMos9x7(C_jiEHUFi!`>Ie^8-vMN?0Xn$*5h$>~5?LPjjH8@eUoO0r{`K z*QWk^j3|M;aA$i7>+Zww``o?ayAZ-2c(SYeOJWl2bNVtUPpIF_uI9 z?-FCq@|kXykmve<+1S7R6qp5y($G zAvYe{?CsAIF8Qz;|HLn!3KaX#iaRjME|?!8K5ap^C-*?4ai;H8MFz43-l^^GxUPyF zn#Q5F*8LSh;_bWy)cSoQp3+c%+47MZ$dh?KeUe9a;+0q%sdc2I8crjKyHJ_JW5Pg~ z65+lBn2HKNs#&1&*?((gPF`-jxPl~DlMiK!qE*a7w4RcQun|d#d#2dZq6rm{4$C`y zPzCrvUoy0FJ-)f+(Wu3NDlt3*uXcvU(hX5X_+n_Rc;$d6RMtO@LK0YDN90#bhW%Ao z>d`9W1bPkhPHRsk3@v6VMC@v|UHA~XDx%KBCeY=Y1uwKB@_rZ7hWUtiwqCnnJ3J^d zeM+?XqEnQiN)r9)tHbB~AS@3VSY0w(_RDJ^S_0P?p*$Hs!|fEGma5gr`^(08W1~$wJ5Q` zNL+l?>*TKB^@-bAZSr@Hma}!O?ryM3cqtjy$62u702sx?!2}_8MqD7HEfpgGXfzF= zTB^2P)!kJS`wl49`JBPH@FwRQJK(7Er3`@AqdJH5G03ZuG7)@1`Nw zmHD=*_O!8t2ptP2C%CLOG^s8bKS%iYI3FB7|A&ZOE^pHg;c@*=5p=ajr5v$y@@A^DXC|)h`QW=eYK1{2RdM zLoM>uGd9_7*_=bgf6mUA3FQ4hn?$?uV*XM~JATTdKx~U}XZ;ta=Y5%X%2N*DvR-?D zytKc3bK^m4nN>pl#GhJ2XHhO493MP8UH+Fm*@;OdxaxHH!u#j7p?z%pt?*h`fxtmt z&$sRd$Eurz?;>mwGqe>-2pI`-r71>n<;!*tGN1I%wFfVL+y-q8t!nlAGb@(-m2$BO zZrqz6VF)uvz#0TRAI4;jhV;1kv~LHTGvUZ)Ecu*1O`O%PW^iym9^qz*dl6?*`T7Ip z)rhwtzW_1uKWG6lj>q=&1?(-iF*3?bj`wCip(67%p*f2zRovbR5V9B>fwE(1 z!M?Vu3r+^oaZ)N11>nlttTA>WSA}-tKMf>e#>|{*q{OoOx zCG5wm&Kian&adTMF2Jxi!{0)~`285hK>!B7u?HrhVM8|QHjOC%z*k=L`8g*@!w7ia ztK(7Ai`{sZuN*KmJMiTuNR2A7GDYu*Zk`aG8h!I9`I9DK^s5eP`TOtgECV^&t{#n7 zrF#MOHif=PUjbrS*X=?b@LCA_Xy)VW)wQHFy@(Am>c}<1iny@D@MS(mIF#dyV(;exCp>it{<%8JDN{PRS>Nt`Ra*mg%&sMk zY#`nQKJUfoj$&l*mYLYV{w&yNqP|JAy^-!$5Y2&4%E(9SoItnRs{L43fRqZKyfvjg z)oFiiN0N(XI5G7cA45tM zc=E_UnF%DG>@BN}T{V^_Yb?d)aki6$*~x#*qtJIVEV zqDiuK#}M#Kv)+yE0tZOD;rj-;HziN54Qlc6)LS{#PriqT2-GoXiYT!76v726!5K;e ztn_9AQ8!)4401i5ZXg*akI3!kW1?T{$TP{ALjn|zFc&!ER%|`cw6XV8B7}l=4-e)4 zc4DNI2^)CsB`D?z7Dobw>U3=M9eJ0K5Wr%jY; z8)Ua&@E6!ugNgj%_qbg)DP#di-5x98|6Hb&qZ6CQq47AwGcndJq!c3F`BF4Mg~cg8 zOXtK}-=evfN1;26}_%gIfi^Ti{GR_UGOGodi0Lv(ofi$IC181~>pLH6>j z<0q@LJ`b15Yq%nn$HypM6Sv;OHbD98k8d@`kuJ44VsP6o8glU$<9z_6w-Y{3#w>(m zH^e`%2HipT>jIM*n9&J$YibEZY`yMph$g{s#oNPSu6xDVX?ji$c6@HRhSmlUW+HB*6wIM*@A__I8~(wBE*H(=ybUZcYfq zHeu$<6@PLJ1JbNf6HiQT3#l$v>cuIa)(`J`#dYtG@mV>~qJw0Rr2T(%g+`$FQJYd+ zabXl?eAkR5T_hB|kssQ;p*I<2pFDi~36ld_!fm`t)!>cXFPL&j&lnT-xCWjsHptB_*W|8*A7kxt%5I{^36XKK83t6g=_mmc*v|UHYRZ(7 z?}r4QOSL+b_cpvcvGZ`rESxTvr5vv3ww8~fVM$T`;!y@pz`><9>S)<) zj7b7kn(59>;M|~*+qQ>%f^4a!s@-k)aS?U6(>&UJffU%psl{AlT9eKy3?N|_Naz1? zmxiy`YhUc9%coHHdH(@QKb##3ilpnme*xUEyCWg}vy;O~`L_8QK^9+%YM-yHru^Gj(5B;A2h8%h0 z(9(J1%ULIM^Gh-wvAK<#{b8-2JA3F?wIhiziWV?A1~AleB5J2n?px{*C%o(CsAidb z2Cy%OhX*F%t0fsJOoTe`XO2!N9rzSjj1Egk{=t3(5~}B)-|Z^a*$OrR?`*$l zroSFQ?1H5hNK)j2mr;F~*ML56t8zFZYy(@~pGEy&u+Df}J~kcA1EKU708{EFNu< zadD)nmeODuoi3nTkVpi}QQ;KPU6{6L3Fg`7oFj(f zo++)$>CaTDF(X9U9o%MDvN>85F(HJs`^$MJPc73XcX#&FS%N)t*1Q43babJE(h;nc zeKuNPC0#>9w6Jm%DRSi^prHezOdmhCJb&@fQ&M93GMYT_lBeOUhjR<19V?6g&$sLl zkTBqD;`uM<7im8$W~!*N6=t9ir!QU zw4z6%B_I9b7upP^wYavdcbvW&Z+q(YHDlF?zA@|`ShaXk`PCOMt?}WQs8NFKz>wTn z7#DdK#5VpID~=n-ieYgTk`YGUpsh9Fm#*#Z<*J<|*cAK}>{-)i%3vB|!)+X0!M;ju z5NCKkA@9T?oc~TdGSaD)O*qp~-r~uV%0E8+Y}M@dW%PL9lw+opPyEX2G6gRRWq4%5 z&;reO#!Q^$C@vViKsNDUPU4tiOg0wtr-1AS0^m#5c6Y$5$>yalCh$M80`Au7$P6Rjcqd}*Gf%wyAPAgw{*7@c6OZ(GBdT6AVqi~w{ zQ~`eg_K%kNK-}$2rxE#=Nu3c?FC#zTiceH^GE!V2w<`fD;n&%f5QrQ!^4ku_B+lP z@`x%^CXOxV9XG8!?ZoNjvQuZ4^NycZjyj5g?z!>7)brdtJ4ig-#Epe@dtMV3bDXiD zSOTr**h4hQOCcdwHTvQwUB;Xf_do93SlH#^g^?Kro&C(azrka=yFp3jF-*702Ly9TIWN z-o53T4O`2#o3@s(J-oGChZoh{y{&&jpRWCOWjy?N%96?D%;i(dnJcE2vsX?nYtSB- zkre^W3G^IBU_&VTnzNX|h?t-Qfj%q6=%8uyV^-16Btcv8W(kB#GWeZr>{9?M<4DOS zWwW8l5uut9mJ=Gc1@D%GCkRHg(9L|==8)<9`H^q z4h317P&-d-;ZTbJC5iLMD1Puj=8W;<@IJ#i;NjBO#>i)W%gYhqb~dilJGdgHFVf&@6g zpYVs~OkTrIgxKjoh8lj(xk!JrFCc0*$-=Z@sj@^wev{_GSG2(SV4D2UOWbXKOCtq! z7JblAv|jicOq98D@r03|V2dV9^btx&B^ze<*)kc1rdBT+$0HUiwZl1?Sa7xAqTr6s zCLyPQZM4`$J11R}gNYSB9ZNj^I8w?pp1dx3K_pKpjQ9A-C)pGLofl5w`wa2hSvkIr zp44ZMXVb2|WeeX~h!t-eYiwKb?n1uD@KMx!k0IMT_dSMJ&iP%3eBYrq_%LDofdsx| zk#_RU+bN{r-BkUL}L|jG8B4gBnW%NO8tn$2>PN^hmv|z+E zI0vZvL6LxA>rbeP9YZnQV?F}3vKmN7m`Y*<03c(OFAWN_@A_s zCz4@!OOp-5BzF=MOoq{5G^Dep!%d9CNo^mg(_pH=_5u8If>%A#aH2%V4jOr6YxoE! ziaSq2;*_WyKLvy=PLx2=7k_xiL6`^*ih{06jz5H7L&q5HAXb|}AcBwsS@H>Gau`;U zOL*dlh`eM=C=tn#taPmD+edY>(K+1PIn9JO5=asJd45ht6+4&BVhoOcuIHM~~1@%o;%rKYKA1B5vW>6fE3EemNQq2_YUtDxL^Z2*^M|$qO55 z2fxQ=Sdx@`(gvRhxpS$312U3&(%5m|<0pSI0V#Q=5j5y?(lvS;1|sW%I%kYxIDl$5 ztt%6XIKw0p<25iMX%F$-HMGhai8Y*P^P85INKVwL6S^%#)1++j^Uty@M{z)wTt&st zT}!Wkh4-Xu9iKX*RDSj`0P$&0(`d#QT6Ch6Ou~}qz72cS9nM`&*RaXFpD+L9;jPXD zMcc^sAn9;BpB`$0Ky-4VTxvGTM3LB#pHk~k(I9-l;c`7;jar&~fErqlZ@o;LxKKd+ znv5zRbdv2o1FrIeP%2|g$&vDwYk32lp@;P&eafLs^EbRz9x(QG$jb3Cu=!G6j#VwO zE#&7$9pzKfQ||-EmrkL$#*g`_?cgVgXlVe7_mm%PjTHz0D}U%g!_7}_=)p>m5I}yy zg$Vwj5iH zq@h|YZT^%4Xv`GJB$K4*h(FpEk&__8DnR^$pm25oYeoK0MuP#N;*o3)5d06a)Sdkr z1j2I%W)a%1$_H5Tx5u-Y<`bSf%7A3|L!MxS59%>Ee&E{tVyHXG=Ja@a};he{DU)Po9(^ECDR!0*5|RfD!|fOi zb2WRC<*8*efBVZv{&j2Fw@(5z(S73;rRGV8i`K%q@~0Plz<`pF-p*A z=op`NajeE4rM&NBn?lI&R-Gi+-#&0(`S`{Supooh&eC3n(Re%0#?lLh$;onnVVsyO z)%8Nhr z0IbT%@x@_V%@s01DH2N*A9>AB;VFv*Hf;xK_|I=?P^my+|=+d=MM}qiDjz4s@%|rUjCM zwGoo?8$ELTMn@lo4;YK%h(G0VG!*%R^4w)Doj}V*bA_=zK4?QHE1dkHmt>(0*_4&C zHGUp`6P~mrOh2?>4L`X-0)ExvkMX1{ks6vYI=8-H-y5(CY+C)eZw%elUn%A+RbhvUU=}1lUA2kEMJx%L1Ojb=rKGiZgisB*kwSW zrZc|fibI~(XB&w;K%V6%j?Q-5NtQ?cHoQH4%5U>iPxi&r8ei}{Y^4p+ALNhV3HzKF zp8h=eP*z*Mebe|!WbzNQ!aSa;PSbpmZQ)w1ctA z7{VvZ05gAULMzO;fm1Mz8{^l>CIbU5oThdrKWWM2Np9=yb|Xs@9(0mLv1H{|`3a1v zVJ$p&**5K9@C?BxA4$b;9u1bV;Y$_ZZ5RDR2mvvcx@?F1>mMAU|MjoeuCT*+Qns(f-(%wv^ZX&voVQ2ZsNqGRGKN!ec|h-So%8 z+Ls=)w7mYfmF0x#d>5T3#!haxfr4gEB*L4ct>Dy}8;jaL{%QWBZ#X-aYe$oT2?BVV zPEaR~;Q$D4`Z|6DWiw9DK_*6VV1kc5(@;o^-#RF?<%y0|kezZRYv}mmw=C*L+N9Iy zL2r124@Jj=SEa;m7pLThC>X7<3_OxXa-=?Ya z6~0V-t>p>x7)H5+Hh%WH?d2VR{b2dzHQS`d!P?OjXmfB29rpZ13(C(Ozp|V=mp_7L zhsZf-*A=QY5p}ZS=-C8hD~MzU`QwyB{DDVXf#1S$JO!A>M295;Feki?&%}|#L`VK1 z<5P@8(WXJX`9c2#0qK?a!10?^l|oy-LA%O_JnG3lb!&8vPSBb^d;^sDBXKi`+dfK} z_JzkEIL)MtSi#IsZiuZi**VbvmPcG{;7a?SX#7D~=n?+6;X~(~BkV7Hf!IgButleW zU;X+H40iBKXnXJn&Jj<>DdS6)EiONTm2Jsny!JYro@Yt^h4vxe{HA5Q9pD;217C8jQ}S3|YkZ7j{XItYHM^DHiAqSr zPaUZcfnh(JL*&uUFJp!J_`h!{|NC>B%h&JOMXC`|!r~F3%YYK6%$#1HheW#^FAhC- z?#wbi9IXJRgE`CT^g01(#F0)%Lf{!Nq|1pKNC2XUPkv3D`wk)!aQZ-^G1+Sc9dVT( zMD2+e+`QJQ`Ak3_sjqP<9C9P@HJ*44Z}+8>#td2F34T_RN1f0}T>$@9<3DjS4Y7&- zlnjfd{Y;QXmxM>1c2r%$XPGFx1P|TJPu;TZIXZBDG-CC?{V}F&#Iu8+y>46i_|;p= zC-AxIq0Phppso#nYJ0jNJowZEb;&&$zh22CyJ*4ea>4vr<@^P+^x8EluE39=Q?RQ| zgf$vW3>&M-jQ~*M4e&rJ2^d(c)Q%uQUjcw%(XaMo{GBdvalNO#}yvoFG~Uis)(2x9up` z-M+ni74-v~M&=4d{l8tIsq*)?BN`1jCf({;Q_9J+r=gzeZT8f1{LCqZKeDEPq9F_f z{0#&Lz0lqQ?}-lw1>S*9e)F_tRT)G9Pu#%g4ZsrqoyHemoK8Vp)vw`)eCj}5+X*Gb zIIeM4vZH6uKjk-l z&;)!i(X5;K9q6gMx4J<&Fn;mv7v^t8BvOsKdR`4Tp7teY*+dDzb3OgtBxRUa&cJqHDC5PDh{H zv#Cn5sZ_*iWe)PRtWBvF&6 zt~O*)GDTvu-=cGy%#;~8R2-i-VYlqUi%{`g-d5JT@B&n9TXqBtHT&9jK2|nv+ly@< zl4@_+uw`%Axo7xa5JUA3w?en~3D)tfGC`GiN=76cUd1~OFuk2OYSQpl1YyMKjlBcy zg3pqiu2S~lGtAz{{PthgeEV;{`FALsZwM9*=yvig!b}<@%&sGRW$AdztN1>_sw?_N z?}6d>K%T7+zvNzG?}6R}^}1E>irxdg2RiUTzk+q()Lvxof%HJ1VCjjz?mf_f2l@o- zz^T2+-UI1@KEcuxecgMY0}u2G)`3%dk-Z1f1AT&}C;GbgKnEV^6RZQL_9A-^qzC#0 zOHcH5?|}|H&?i_2PVGhZ9!L-L36`Gd>)rz$c%V^+bk=o2hG(bv5PI`BZB zU>!KM7ukCtJ?)Kzg80u=GS<_a5lL1AT&Z;M87Z?}7Bd Z{{t>-AWG+L6086K002ovPDHLkV1mzZp<4g| literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json new file mode 100644 index 00000000..597613ac --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json @@ -0,0 +1,18 @@ +{ + "images" : [ + { + "filename" : "216.png", + "idiom" : "tv", + "scale" : "1x" + }, + { + "filename" : "Webp.net-resizeimage-2.png", + "idiom" : "tv", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Webp.net-resizeimage-2.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Webp.net-resizeimage-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5059fe96e076383ad0a10c33cfff282225b5c34b GIT binary patch literal 77973 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

$7^#>UzT^9o@1gL~V) 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 H+l2lf%i%p_ literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json new file mode 100644 index 00000000..73c00596 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Contents.json new file mode 100644 index 00000000..f47ba43d --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Contents.json @@ -0,0 +1,32 @@ +{ + "assets" : [ + { + "filename" : "App Icon - App Store.imagestack", + "idiom" : "tv", + "role" : "primary-app-icon", + "size" : "1280x768" + }, + { + "filename" : "App Icon.imagestack", + "idiom" : "tv", + "role" : "primary-app-icon", + "size" : "400x240" + }, + { + "filename" : "Top Shelf Image Wide.imageset", + "idiom" : "tv", + "role" : "top-shelf-image-wide", + "size" : "2320x720" + }, + { + "filename" : "Top Shelf Image.imageset", + "idiom" : "tv", + "role" : "top-shelf-image", + "size" : "1920x720" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json new file mode 100644 index 00000000..d4b5af42 --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json @@ -0,0 +1,28 @@ +{ + "images" : [ + { + "filename" : "top shelf.png", + "idiom" : "tv", + "scale" : "1x" + }, + { + "filename" : "Untitled-1.png", + "idiom" : "tv", + "scale" : "2x" + }, + { + "filename" : "top shelf-1.png", + "idiom" : "tv-marketing", + "scale" : "1x" + }, + { + "filename" : "Untitled-2.png", + "idiom" : "tv-marketing", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Untitled-1.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Untitled-1.png new file mode 100644 index 0000000000000000000000000000000000000000..897796d6aa8fe3ae4a38841a45f4d08ba9473cf9 GIT binary patch literal 363447 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 kc`v#C>r|zkE`` zVKP1OIfL|bYN=|tP#F1MUU8$13N}?j_dU4^_hg?@c|X0ReUU2>n(rO{Yi(ttCi*A8 zrs4ae7x3(wojr6lhQdRDqp|ScPF&rk>CM+^gi~p_(rU?xf4h@i%0C;~V#dve&}B*4 z6J^2@@&CfgqHW3S#K#sqqk|XuGfvC)H$*Fx2)4W}6Y34o0URdKx-WGG*`H1vg{+NC zE~r|>GS{hs!T5+8C_8c8i)1uZWR_^x zC8H?*>YJaGDbq5*~3uzzu`Vj_lxmL?Le*e|P)O^j|Ylq^`&->ok+Wg#Aau^>; zYrXWFPfn3{+f096r{cz5m^qWfPYgyk)M#||_+}2EqD4Nx-)}1aCiE*my{1ejL801u zVps9fd?z~>+O;8+aqZ}@e)7=iFrCh&3m);=|9v)stpRRkC$Q$*=I0{2lN~(_9R8l2 zN9E70bPqYJP8)kD)Wk{6o!7l&jCx>nV$O)r3hCh|f>wS3mCMU?@1-xeT0D`03o)%I?K1Q|hM}hY$B7I-4c=hP< zV#4N!0>p8Piug`DtJLguABf_WwMHylkL2-iNmos?W?M}<*oURMpkP}Pw1m`-fN<tSw1T?iZgBYI+3d(T4- z%ZkwLMwh+*!9C*{h6qqJnV8GbC2Q6wTRi1i!4{SgYk$1#*Luq{K0>SnuY_yxa%OA5 zOfMMtRYqr`ev7>F4k-0gQn5eP*nPze-})cx2(SYhw}80$m7$ zz$Qz#1|!Oe20UG*-bO?1V#csO7hPjp&O$ditbK8KQ>(F2{X}AmgroN}kJPB~^TmhF zZ^oS?aHkA=@^l4%*t7X$PlYAM@^&sYKg`qgt>#@o14iDcRzA3(T3d~+|2zMv;?EC> zBorKFuSgDWefK&bVhyBesYMmR&6qh=L3xN4QOL#d5-MqDHkyzgKD1iPxSL?Kv+{He zxII`IYx!a+MV3V#uQo7$3aBVxIplWOk?X%bii8ZOS3h0*$~MP1UvVIgkZl8oO~I

Bz+P~pCOf6?hV3<)Im56s^kh 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%0Dt3gta2GM+-5&VG({9ohdN`l#;-V63luP~c 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%0A)|JFKT1uVj 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Untitled-2.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Untitled-2.png new file mode 100644 index 0000000000000000000000000000000000000000..897796d6aa8fe3ae4a38841a45f4d08ba9473cf9 GIT binary patch literal 363447 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 kc`v#C>r|zkE`` zVKP1OIfL|bYN=|tP#F1MUU8$13N}?j_dU4^_hg?@c|X0ReUU2>n(rO{Yi(ttCi*A8 zrs4ae7x3(wojr6lhQdRDqp|ScPF&rk>CM+^gi~p_(rU?xf4h@i%0C;~V#dve&}B*4 z6J^2@@&CfgqHW3S#K#sqqk|XuGfvC)H$*Fx2)4W}6Y34o0URdKx-WGG*`H1vg{+NC zE~r|>GS{hs!T5+8C_8c8i)1uZWR_^x zC8H?*>YJaGDbq5*~3uzzu`Vj_lxmL?Le*e|P)O^j|Ylq^`&->ok+Wg#Aau^>; zYrXWFPfn3{+f096r{cz5m^qWfPYgyk)M#||_+}2EqD4Nx-)}1aCiE*my{1ejL801u zVps9fd?z~>+O;8+aqZ}@e)7=iFrCh&3m);=|9v)stpRRkC$Q$*=I0{2lN~(_9R8l2 zN9E70bPqYJP8)kD)Wk{6o!7l&jCx>nV$O)r3hCh|f>wS3mCMU?@1-xeT0D`03o)%I?K1Q|hM}hY$B7I-4c=hP< zV#4N!0>p8Piug`DtJLguABf_WwMHylkL2-iNmos?W?M}<*oURMpkP}Pw1m`-fN<tSw1T?iZgBYI+3d(T4- z%ZkwLMwh+*!9C*{h6qqJnV8GbC2Q6wTRi1i!4{SgYk$1#*Luq{K0>SnuY_yxa%OA5 zOfMMtRYqr`ev7>F4k-0gQn5eP*nPze-})cx2(SYhw}80$m7$ zz$Qz#1|!Oe20UG*-bO?1V#csO7hPjp&O$ditbK8KQ>(F2{X}AmgroN}kJPB~^TmhF zZ^oS?aHkA=@^l4%*t7X$PlYAM@^&sYKg`qgt>#@o14iDcRzA3(T3d~+|2zMv;?EC> zBorKFuSgDWefK&bVhyBesYMmR&6qh=L3xN4QOL#d5-MqDHkyzgKD1iPxSL?Kv+{He zxII`IYx!a+MV3V#uQo7$3aBVxIplWOk?X%bii8ZOS3h0*$~MP1UvVIgkZl8oO~I

Bz+P~pCOf6?hV3<)Im56s^kh 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%0Dt3gta2GM+-5&VG({9ohdN`l#;-V63luP~c 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%0A)|JFKT1uVj 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/top shelf-1.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/top shelf-1.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f1dd19943bee7e84921bd5a8053f66ad64c132 GIT binary patch literal 102829 zcmeFZXH-+&);5fYieRA%C<1~MsRGhVkg6iR2vVX_r3#_9h?S05=p@p6?_H(0gpTx1 zfDn2DBqaH`-*fJBo(CA`IlsT*4+a~ulB_xBHLrEexz^sn+L~&YDXvqHkdRz{_&`~g zgybR>2?=R0`T3*&%yq!LkA9s2>8dG`6u_8Qj{Z=#GJ0sOp+UlXbWKij=Hp8evcHBL z{aio#At5>Y{S3+3qu*!#`rmibzhAvb_5JMM*QC9F4YUnqgOiXbkUUhrukUqcZPIts z24TjqX#@71b||UlPPq57&*FD9)bG6HdqW}ZdPC@Oxv1oo@1&i}tVSxCqHn?s znC{+;`^rYgfLn(fvO5F9*2lV?J;>3LO6TCH2ovm^#gx zX%GwqHb>w_Jg4Lu@Nm;H=|4H^Z#TRqiQ4#Y#*qZlQ<78V@6V1)|NYkg__j0b)Bn{tQod_cY)`kE zD&7B!2%kA}Si{->8wp3>Y{<{1P&W6`8Tnt0CJXYr@PFd#FMINg6kgl5T%8`i_HlOqj>`(miY zC*}iAG8>0I=JPShl5?_!ZCWag_`b-pkve1&N^Gw#6;I%}Y9q>e{0q*IA~KG43J#%MD(g8?EzXC(} zC_mMJLJ=$Rxt?`qpV~c7eAuf9if-ULSRZQi+CTRv|8>6OSrRGGb<_Zrpe37Y=D+z0 zoT**^TKbnF6HN&4-BO|Aj?eQ|0c&INf)HPM!ZY6%lj#YddK)0&g#0wg8Kmb6q5 ztxjuij+;~D8fbszrqgu5z)ciLuYX48^eEE4PgXKV)x=sgEp3K~(lD;z!4`-t`@a z(&A96zN!R7RXEZG3MO^544&goXRY3w!j$73mG=OLo6F0}|BA}r7n^Q$K~OMR5F|ni z7Jp(gW;4+oh)UvSUhSC1$H*{=D=m?7TbN{QANQ1E*@T*^Eg#jruCpSb`^J@MP@h9B z{q>N$eaxa*JZxinnlOh1PEWZK@h-@dk@UJw;ecn~y=Pj_dBR3R{>}F>%+5sYlFWEi zQvE^ncPu!#2Vholk)}t2oYUa&I-MFsO~f|ZDlBVt)lsRw0l0u()&p=2F^j%-BXUGm z6nZr|myJyM0?S-aM2%dwhYVY&j{2rmDrO>h0&telp_(QS(&x0UB_hG zaMRZMP4uRgb9ttOoVy)anDtw~bZvBDQEyg|o*QhuXP^3dr=UU9$OR8fnUGvSo&Rp1 z+Bi~v|K||k2FYqy$5AH9{6n~4|(L9nV*!1;Hprr?@9 zT>$-VwklrqtwK{S@X05h&NjGG=8zEHI%fIHNJ8aRt4~>ba0zO3O%}LEW_q+?J>1#u z>fYU`lPAt*R&L!r`f?xsVcrv8ZhuX(#M2o!WwLGu^_;c(hFf7o+cc{NasQIVUsj@D zTlqFGFREzbIB++Bz7zPt2S+%cJXO4&D$+Sm*FsI%c?K&*iTn!M?czy7EsaMKkiJvn z<^*J8AB)#QRNwF5<9Vwv<8ZAV8Vp-H_w>f`V7ykaXV?Jr2J9OP*$PP#e{q)43Nj%_ z^=2XDo0c7tPbS;XhHGoTf9s=BVXWG&DoXM-)e@KQg2Nx~*oca z04t0Q_+Vu0Ba06Ym&-{|B({)l(Q4so+^z}r_n$aEb>x(Q8ExFwxcP4{)t% z^G0;x2&NVS5B@grTR0wz#v$^)zi~x^a-o%1OasQYLcXz`3HBAUE0RwU5gKI z=1jr5c~8PBse1rQ(U;Y5lUDSYxa98x;{t%|=q=1HQM09*`|YZL@~E_h8vV79gH!{6 zM~{0>J(@7>4Bln{r%&Q$-VSwepK$*VW9}l*aDMxn6AmHMof&(pHl{U6NV#-X<*v<# zk8`HU$t=q༘@_nj?o4nZeePeOwxx_P2<2ZqNj>tHCZ~`-+b)7im9ww!zY&;E! z7E^&=_r-)(2zPbtL{>ntYYb(%S6Ej)PxFko45k&!0~kWMMMRmfgE z$!?bdbA4==%kl7NGtpm4qDZ~boPR}=k`9YAWk|_&+ltY&@QNwJui@ge$*~qN z+Mm#z6=?mWUsIol_RC%7(UdsGoJx9?+8#!+b+p=*O6cJlqLS~*&AgU_+s9`@C23Da z76gk|dw%N#(+mp&UKQ12h8Zf5S0R;k?c8&cT{plLZ{&A+08Aq*$w@WSW%)DkFs#Fh z(`Utcmv3rInQs6ttl%pC*6dCxI1jU#&&v;?yuA9QPkv_&*Px@*;!`GHO?jiZeS((z z-(FA+rag(9Q8qROH*wi>_9uwnEl?f9+P>MV@e$T_x0i-_)tzaW3GpN36}6ZJ+sNge@xi0 zgUk5LKG?BL<320tV(>GOH}w2LEA$eL!CjkSC>xl;D#)aS!!J%Y6U zH>Pc4-3NVX*L$96yM=QgHW0BK1-X0cNd6n3#0Ekv@qLWxU;{#Q!xo2~x_SJ&&yYgR z&ouV>`QUqwALY$6eU|z0C7~xA+9!|rold{IlAJ(3t=wt@5&bPn3uv( zuJ+{;(UQ@&PKW20><%zYc1-Qdbud{t_8Ikl_A_mLReY=)vMjCYH$BUVJz-9&dC)(3oTTpP$ev<|g zWrbDSHJ5e=O?-UlGCw-7=Y6>kp&reyJfpIdF~#-uK4gk*JiIuXK)sX=;~1u$O`=|9 z%8X5oh_$^3m-k=bT+jQ^$~ z$fpX9_h`eH+LF3S77OL@2naR#Q&_52qDa+FtVbUwh5Z!MdbYd%%X4wqF;`)be>U_pq;^Tn&eh!T&;zYc(L{3}(KZT>9_OZk|uc3>#BE4#Pm2{WVI# zm(%X^NlYajy_z2!d9_L}UR6P7EoU;VcToG}*zoy&$ydeLymL*NHVn#|7T9Sv5`OT( zZzsqH&OE? zkSyIsBBeMuOkFwZHGx5P(=JM#XGG(fEtK~zoeghMM$1|^GA4H-ydT%zoBE1)ts}n* ztAd()9wfg-sjU;jJlu#4Qc0r6bK&)mFGnZXcW;de>FGOygQu}E|AJOv{PJ7eiS^p#YN2Muo4Wkxe7SAciRVt9=r+i(Q^ByY4A;`9wc9EP) z?q%8e6T;-{k0)l{{RJ5$IU_{)$ZpD2$dQvyxwlFPO$;F9@+s$ zK7$NUS%u!w=*XJuM19;?0(8_oU~YA^Deic96=ojNv_st?X~mb-k6U0=|07heDh=N( zAmo7az!D?*-ilM_1QQq4_BxDUS;$O>fl!C)X^CYyi5;yV#7Z)Vb(37ZhbBXhMWV1_>)R4DXR0>-4MZLDo)~z- z;ar|iBM)&uHL?PZTLHdoBm`bXP|2TAlw=UEGtO*2a~k0fj?el*VD42Gr)kiDnIrh! zNA|%lL|!r4*;s60QOdm%aq8Y+;x^bjJ~_Uxwq``b<0cyPdRelwt%XLuQy#1M4yamPq@vVJlyn2 z#DFjBvIk&uPG;Qdc32WoKW;CMJ?iWTDX%QumF`z+JmwU+fLvqd~(}}4|P*llE zY@=sH>eV7&LZaA*JdPzOvg09EO(TA>bTlt#O7xSyzv%aSA3_I~rwZgdA_V6?(gbxwG{maJj1#-_NYq?#?xnG?SKSYW^tHK2 zrP1dh4vdaCunvQq+Fs4dp09^Uh@M8O&Y@6<>J&F$MFHOg?U463kO6{eE}LLtR%@@ExB;|QsI~~-gn+EopQ4Pk z%8nR;R=`g77$ZDGlLB29-BF7%W_my43!dojwxkOagfSD0RK*;d$WTS7_u$+2&;qi z>c)ZwO`XKL;;>fTqYR&RFvX>w1rmljXz%M*K>x0CR9682VsIKHB#-X(;)eAZ<_GN-&-4JR|OW zwNv=TOuzzTJ-q6s1uV*bf{8mvg2}4Vw9A1W!9t8B-D2EMy#W&lCiMb@2A9J zNQSyVBRtAkH>VgxEXLmrJ+L=cZ|89$w%AOKtyk^8(V0J`C#8IJw~-umNb3pExCPE% zxKh4Rzfw>k^yVHOc<$pI>OTGZxa6evc1um`+m<4dU!vkPY`JSJ=`ue&^#kRtNqmv5 zw+jQNMr3pyrUpcaw)VW%3=@5$TAjfxase(ja#&8#sfpvw$o^H+{%OEeFYKDqNcArj zi@4%~EF^K!yrhdK!QQxYjvcE}J$z;3Xd&M0ml@-{aCL$C6qge=k5CQvQsOw#VK`C> zNh~Zr0kwxeeil$u$4RqW9CdPbWOt4#G5J!ouDnbnXm~F$T0t|~=6*zj+%(tVKrXx2 z7s?=N>+jj5QhkDt5RFx1-B3}?nDkQ3jw~gvdbqR}rF(M+0~P~+gQ1UPbkNokxG$wM z*U`U~t++(K&6ag<1mam$ztjSE@{OrvP{}@}8Kg%~#fH^i+&v)?9WMIKmseIGSnKcV ziq*T3d14LT0k<_|`ou}abPT;?FSRJ!a&@L??B-$c?CSH0J+0pNBBDp{*yrA#Xrq3+ z%h4q1pAyfbaUr{oO_Ct+uK~T+`nN;zVR=O_?HsLn+3U{omWMKhV3MV$6`AV%$*AeIZD`i^M>x zHF&OjB&^?IxJ!Iz#02c&4&?~b*69HvR}H+ICyYzv9EZZvl^uyA+|!~{6!#Ee)plhR zBvuEemY1Qvq2fBs#2kOR!N#6L3w-MI2mpu0s1?>&PDq`oTFCu!j?e<7BVaZK#-h}SvDsvOg9+v*ADH!`);SMJ^Deg?ZV)NE?Na3>)kOfNbD z`FLI*72Aky_I(}gQSW%pQ+zftD{>1FZ-Zy#MRY0*=u+*prTIT8F0dkKyp=Ni8W!!| zhg;n5tBro5WL10JR+P9Tpxk%Qt`WCBKK||FJiJxv1U-|<8ywM!mVqYVBn@8h@EEgq zs>(Gh@&r}}&2)#ghTZO_TWz6c?CjMxR~w*!=^MZIO!0kZTjF_147+$&2XZl?j|W*< z5OXIcG-`fj&woZ3Ct}@Auhh+^JqV{7FtzCci1#5Nj;XiL-WPt5=OO5KFDWxCAA8s> z)?Ge$=x@d$MwbhFo-#C{$ogy)goaUDlrh(WO#^JfzG!vGq=&0O>ewmb{>zcL$EH=? zJ0YJO$QoA0#>YUBEXZ^8DIJ&8iR}{m{If9>tClnAb~$+K*sxZ9H2#J4^S{88H02eo z)^y0g+V@>E0h=h-B}!g)FY?2Xtk9Aglz%MT+#4q4>;KNvPHV`;xGT{!B8n1ap*Ft{ zd^|)nxRRv`E8%6SPkEjX80(Q2Zgr@&CshApl!@?OXAr8M`-KUS(bTWjI_Bu3`vA56 zsyn}M4Fn!nT)krq=6-elLyK_!kSMQ?%EjHg8s|Ml=xKk(k}vDWa>ZL2ad+jIowt7R zH9hY`o`?I*v;59;!9|)Gpp+s(n^>+~SAx0x*wCSWSpaYcp>Lsq=7NUphn2U~m3P`n z49M!l?=)9QX#?O$@||WZ2qx?vAsXKrBt<0W>#1+m9x4YLHd=*E0fxB!S1|&;OSLakJmrt1LfpHStq>1$V30sc`f9 z7?3^RwhI_EtB=X-^tojHQldrxU#b!@T9{%_Ncb6-H|b|-cCSE8S*3@S-lcnI*gz=9 zOEXV&*bKFVwRavzwK4X+GF|Fr;_A%hhvU)MM8KFM5t$Bx>adtKv3+Eohj4CxI_|*13ZtC{x zy0oA?%@c~d)EPF@ofnzcO;gm-YEidLn;oAYAg0jjP$C(>A#bgnja^I>1{Q4X9w6$r zhQG^iKi*mJc`^9(c?4kC2s9)~&wG8uB3uXXF&Jq@Ft4gJ$kH-IuArqhmYC(D1L|Ed zk@riv*yefRJ3bT5&3Nz=X8B$v<;uz=)O%&UQ%cDBBOa9#jC^z)Yd@RS*o++lY$G({B^qCPUAbrPGJ)uO|xG%7kY z@fNVgmCEkM%n`JON8y25t#GULqy=8byfmW0SUa_QK?~T`&y}&PVQt_xW)7ZGLr!Hb zgD0=?A8z|}vwTbCUo{^ihK=&A*ENjopKKBBpS`%C#Si`- zefoyFcoWKl&?Wh`KR{@s)f3w`b~w4;|Gb>qgBDx zDG$rC>6LpJ4hIX%p}u<;O1n>s52e@HzIj|0=ig0;zt_UFAK#8Nk#i#TsaIF|bB z%Jb;M!p1Y1FZknLu8iymk_!6AZaLF>FfG>el8SEu%Q~>$uu%>g+N60=-t7|kR(A|s zV#{Hy$NNQo?GhZ~Ut#K8UO0+4lnzHZ^5eVjUHSSz7@R|fcE}4R@tz;WOrKA%H^mF$r7W+dA!Z> zy}YntP8pX-DL9!DI~xsox)PkY?|hM{T)-KUiY70&9JV4ew>CQ$EbbC#E7RrrI)8LK zAnaR<|EASpV&hWxQ8_YPGT0_kk~gfk6N%n?IG=+>BiHm%Sj5r`rtgnZ)eGG7?qG+k z%w#-C^w7tuYMRCFpsi|hQpD0hK_Q0xtVJ>|nD9>N{*0wqRi5A^6+~m8 zH3cQH-xVK-DOA93KW+qmma||I-X!lBJQVXmvpSYMJQtke8-5+}6kNAuV-9Dk#El$U ziOUn0RURZ1Pw_PdKPFF*YG?1Dy* zl(b`E){S=G!f zcMBI=98G?HG2Yt9b_GHigq5^&bg4H67x;w%+PYi26me#Qd)mFSc7&QPWGpz$7?~|t zikE$oP!n1`7w{p#P9xO{CUK2k1ticHu$x=1TKHRion7MvffBRfSV%~%tgJTyyE=xg zoh*p%9&PXV(VtLaP=%Qrh4tl=t_!xDx;_cyY0VneMj}}>dpf!ZiV@2`e&bb}2N_Qd z!?-`@E+q)J`fJv_vuTx0RqA2=R$mt*XHB3^iBnS9pcoFTsF(K@qBK&CH4{hJGVUyp zlt(Zr#)s#W$%AIrgx5v2?;$qmh0VLC+Y%sB0hgjdi)s@n`4q{K8@IAu!qCu{Xer-& zYee%`qvue_jk*Ag>j_;&C8@y{pc>b>lxVmZeO$H_nFj(~X6aEMwHm&Y%rShGT&gA} zik!W#W9a-NPB=Ozbo)~K?)S%*&e70kDY73rOHjh88ih#bz3i=Rr*5Wj-@?(%X%!;V z=QxWV`UU?%gmPpO-&l{>NNoLO1Mr8gb^7KB39cHelKN z+0VyKq9Tn!0e%w}gJmc!$PBGzGZY09YHjK6$1(YhUa3$vvox{xpRlaWT2?cKbEqvl zieCEC0i7%_HN%7m$GG=w@kt)Bz_670ZWb}+UO|byd8CJqbjEl$0GTqY%XD@jD$_d& z7kOZh7giHDT>{p$JRTK1&osHi+obAmB?Z=B5;l~UoAb!C8jxtsW&#linVqXnVV{;V z$EE@z09GD^K!1bTlRf!o)JM-S;W0g-(;l(?Qi@rZ=^ePMXX#m#PI&huvdB__OFrkN zr3w3Q5hYpr52JQ5<$ce}5}G3A4X&en-%7UL5t^4KhD%&;vBb+KM0n8a=e*X;=kRGQ z_Qm(zc`KVLXc8uz!{f9h-6|^=t7l~aOMG?|C^74Zg!#xC=2y5HuCZ?5WxFn6+rt}b zVm&bRqO6!jG&zl9jLimt+6r_NRL66~2TCYt-SPtS^51+Tb_PCQ7`{a_N7OF?!RFCU5GM}h6u0j}u70bdo;0MC3aD~TiL1Txp z`F4r?1>1H{lfTC|s^%Zq!)#gFOo3s>$?^R86$Ml5lJlzO}6a9}MP8K1)d1#M3)f~>k5vK%0sLxMPT zAkS!~IeBMHXoAr1VYxAtd^bRR<>J>% z$;z%=f>`*S9RUfB^3Ts>D2jGhU36w+mvzsHuF<4Mr1Z%4S%%dosyT)+7$mT|U=I&6 zYf^ri&L`T`8Z^QhguTip@@j|6RuV4f7-KqcR%^w?Dpp5LAlw?lD9Y6{IZ~9WHN1uuQ4@$5i8V>+k{ft?xTv*>aVyM%-o4;B>s#~kyQ1GG6sYO;Dr}k!)Pz9{mbPVKz zyu7c>$%8-wGnbWf0}jQtjN7kt@a+#oA9__O7){2)|{k# z<3trBtMl$Dvg zdXLnE-{lkBZZ>0ISeIPCx!hu<)A8j}hH_f^=euz>qhB@3Z4-)PvkHH7$=Ya~2igTy zMSky+6_4?cVEPo?nb-)6N{V}!xHb;R$&-jjrTE_K!Wk)E%XCB{w$2NMKiYr4j|G+7EC`k(0V8VVjgwP;)DHR^a+^C$iG4>6bF zRR{M%g32v|54imwz(1ok+cBJ*4v^-^6Ht%N&y$Mb?4-z8+)XM)W#nVkd&Wi9A->i4(+o zfPBcMBmO*bN(3a3>iAB_THDr>G2^q~mQ0jH_~o+PEms$?# z&HTyZm{Rong~5YjCgK)iBOFH*c}I_bA?gxAZ4u8OiVFzKVRWv@E}`IGbjO6B2N9^P zI|F@Y8D(JO^O-7_qa6w3GV;9*%jJdeQ)=~LUMfKPg0rywxgzId`s>*wDG-eAz<3s} zJF|{aq%FWXnUsSq)eoILUs(}iX*4PdQys}HbF_vWFIc3Yx+@dq+cI8+#Ug`?tzYp# z1}^a$B#6SGk)=~#%Wg7kIr+DfobVo(aMG@ zl!-1EhdxcFNn2jWX-!3+9 z+};WeIq4VPK(7H9d=93s%sh#>n$VP#tS|==VAJ%Tx)pR9eu+_!5;_tCm3K zh}yv=R;$cqi8i=!MLK43Na@HL>$e^0VcI>Hh3etPLGT+7 zF#==8beak)8%!AH;UDoEx-tj25mwQM1yAk##GC_QuoPTFc77*WileAF^9@77LKBRKBS{eD&9dFtMA2m zq3e_Sl`pKN&jD?HU9OP2h=lyD=ny*wjcrDMUTu9O@po!uStI6yL`5TUsq!ca0bUh{ zX>e8)cy+C9y}Gb|t7)$i4hS#~oiUI?>p>;jm*RIyq9-UNkP(*``{z@M&TiR+(Yx38 zz#Q7;7qR*WbF7X#7_GfMFpW`i&>z|QYvOyC7pyGEbs4Fm3z zL8d=ymWc9=73QBXeQYPve2_4n?>PdbOlXWyZb&2MO8jnC0bBIIyi$Aa=3?y_R78tJ z;YYQ4K>hP?25l(prH)+}8x4)?fw5BH!r)a=7@)1^Jbl25Hv|Qsy*9Ez_}w-ZgI_JI z1QL5cw#jOBuMAtLjb9DGfX0JU)m+0tKv78p+=jupJ#XKHwO_Y;AX5zfENqJxtS9eQ56B-@W;0IPzI1 zjpfR`GE0U}o3_+_bVOI)GOIBQBByh1^j>TCLEDX}6h8v;tnzreZ&^6e2M1hFPG%rZ z2+7XQCL7HmS_NKkPYC+UtvGUeYYIPUNIP8?OVvc3>532p~Cr}58o6^{evaQgu&at30<%+alcc@=<{MLM@fo;5$zuWvcT7{f5 zL^MbjwG(iV_36>MH!08ccR6SzGH;ghhJqlrhNvYe?p1dXMyffo0XKy?*SKHf0R*4z z`{M4mIe)cWh)@l*C$1AGL1TyXw?pc`bqtF)+2s0Vk4}LLBe!K2=j`E&=CyG+Ed(J7 z2Za1&6zgnb1Lc`&HO3*Ia*aa3d0V9stoA_kTCTm~NyL65Z{FaE#HZVFCRA!1i}Euw zQn=KH5pHzcd;+8T#xg@)`X^VKNC4N$Ipb?*zSxctt$LQP-T&%?)JW13Zp#gNR2FGb zF%HQsu$Zvb-w~LPG}n1zRod`Nq&m9K9uo}u+PHLc!vTmpN>??{_b*(3aHHlEpuQj+ zQUV}~fPQh$Z|SAJUXtHoCXKg}=k0O`fY z37{&QR7pU^`cWm;y^ft4DWAr-zfJ8wu{ZI`iE<4!?z>oBuTp!W-&|JV4A;aZe-W~6 z+hgU8Adj$o#wo=6pkIj-jVMqpN_%4U%!*{#{k>N7#KXpAPH$!ZbDi+|UtKjcF|ZKA~VN_{RUW$STV2Z30Nbl)uC*oF0^+2^&h-ds7v;&B)P4 zN#qax6@9*LaL0|oiCR<9#D$E&d^l|)h;l( zCrEuJ|2&uwApY`8P+WKKLqnU*w9XPpMP z8@xL!OakK=Utr+Ku-jIMC-@EG0AVU&nr2d7ppEDUzc8l8>Ye7l{w*f#6U@{e2!5ge z%*Gdg?%tUfqk-4%){Z+lR%4(ZVgUrH(ltZ)t6kW0>qeARWubk+Px_nlzopx1oU1mq zeaAQa^YFvC^+KPMfCU*nLoiPz&|2}sg3g$$XEBZuRTiB^0DM3G8^iLE2x{d zpk>+H^~!hPpdQdW-R((n?{$<~?b>J|G9YXm(b21Jh$%5ot_%3l48HvhhW zy*xT5Bb~`w*mK-GYLSD61juxOj91!S5&nKrjvb;QeQ+W*e{cmgSFl8Hv(M3tB(y+doqnUt5#qT|ETt_xWm+j%!ebTCQIVBe!` zBx;&M=-ZG}d&w2x4b58I_CCnE7(?+SysIidU)5kR0yL>||Eoc&cR|f8E9yv&U>CPD zr?x#btC=b#OnyDLpdKx)X|o&>zK|PfcWp;y65`=C4e>yo`#26h1a6F$xu4w3xo}jb z!G3+v=D z*1R8m84Yjl`hW7Hgbmk$4jHB1+yy~K1zSTox{xSo@9_eg#El+^#2<&mu_Vxq(p$&!?)48be7;g)-IDQ*AoAeu z&GstTVf!#NKmIv{Cz6Z$PPX7Uw3PqD6vck?Bzaml=)=dQXIg_1A~Na9`ZHrXJCNq-p&F!g)%BjOWVwx<<&3aE6*5<)hgaU2&+*}oM%dh6$QIo zBd(3}ZG-Wt=X)?0TNjSlu%VaQFzWI(owNVbF=1Z z9M3nQ+TD1Jcbnk2g0i^PhbQbV{X{EsPJnf6+Ap5I>{ane;t`T=?ya~-dqP%JL^;B- z-49X)ja$ymQ-~K-QPYqcD}wI+L1|?DQ`~8W#zBe3=t2AEqKB9-HR>LKhp!&~ zpmGQcwY;5Y?xiyj>^AyODbU>BA+0);(YckTzl+vWCG+ zcrgDtw8Plf)ltYC-L!a37=ZbGbAGh8vhqC(Db;HdGB%Pko zc;Yn$1+oa^%IAmM4-v4tT<3zDW#qOho!Pn0$$kFPK7{?eCYte{@6M}^!`JhQ(OMf{T&yi|DHkA;`F4;^wd_R{PxP$ zfy_qm+o1q%BWdrX-U?Y?s;j&`u&<}qbumaG9m3- zJ{L@dnT@3^7WCEt2e8uC40lRknXdfhf7$du&7=6sJUUZ$wUeeRJi8MJobq4)-C#Yb zn`(m|itG6DhE793=Hj;p4>cy#^FH@S(G{l&Kc>H}^Uz)|=gs8`mB&kJpBA}SGY1*( z)Q&_BDLt?V{2YR7q`NnH6S#9gpt@@2k4Sn1)Im`mJ?Ok)g9Ccqb8Rx_!qvMS86=vB zt2FYBu`Sf@0YqDNO_7(0`D&quI|PU92Uh&bc8mbC#)Hh{eO~}5(Sl)E_Fz+E9s%`m zHC{dzvj1n^kJOJOq$z4}Ggq4b8P0#2{^kd04j%1K)Ty<;mVYaXinEm_KC8S+ZRcA2 zgS(%n9#?+n4inJSxidOQCv)-ff;Rn)X#G##PQn!<)vgO8Ziz8^h2JjHl!tAFP|AzS zyL1VF!s*3pX83$trw^Ja+X(m$t0iu7Z&r0!<7@a~%Y(U;eeSx|p>A;C`$a`yICv-@ z*;VUWXSZnX3IOS(x2HFZfYDzx84)a{R##q-{VxRmbIL5|$f&5~CU_b@F$$;I(g(|d6$QfA8p;Ddr{rf zUnI-nLIr(vCbEgwXwmP@sjU(BCH31FZcnj{>s2sz<*}-0s(dv#>>56#&t5`;dW47b z&BX%n2R7J<{w~_nFqr2@N*-iLxamrIN~A)5z}ICh5^J9CbT_?-qKST>J(nRg`c4VZ zpYV=NS;O33SvpUdGdiYhhTB2UbV#%KAy;()hiM6gD#|#2?whNBOS5?f+8(GWcbCw_ z&?p&z-tLm~y(b$mKWE?CSa-P7QFqYxvzvXB^T~aUXx;sL<6rlKevuMG=o-sB^1Ih9SiyTPGG(`}A192zLgJ-QWwf8)ojNDWOnTDd zK&7ugj1wv%08$&q7G@U}xh`Q*AKh=4vZebAP_39_SZn~Hk8bP6ktynEDblo5Wyd^F zsSm%-m*q&$rFZ4qjL(H%8D+*~qOCT2YfNxFln9!rcAlog+cG*BmHPNCb84|nyY3pY zax?86G~K?|k`-6>+wLNfoL()}kn@~`@r_X2!oahF$*nuuyuOn|BQ=Dcy|tTK`$>_J zH#VvyLU-PsWI7U3zE~0<+tZ&hZNsnsH-2mcw^5p{Ps*J5d7<9s7`qAe zyEGB|g)Oq9G0VzQU$~K(UMj<|_I|Ss0+UtTaG~@7Ryb0w%KUdm4K;XY3fFoyVEap? z^wuZxiBf0ce&AKGwVzb8gx&kpESLi~p+zfEOn)OQHmz5!wA< zO(Gs)NuBwL6y5J~_&PpKmVa1vt9taLgE4)f9jPDDdPny9yff5)&1=1ba>FcN@xo~Y zVR-!vnKB=$^|#O|kW?pUu6Jtk8ea!-CA??jyjv`+%)S$2lg4;4^F0SsS|-^Y0p2L8 z^!d`|xfq+oq?LlNV*S@G__XSt6?{2YmV&5uXiL|#N5?o$xgODjlEmcK2(_)9$Of++ zN#cBrCN~{4n7I0O{|3U3BLsc(Nkr&ADJm{0MQ{cim5YGbhTBo1Gm#02NmEF~R9(YP z>pq$xQCPgdY+z{l6gV9{qxtstX{S0XmGwjorGGERf72aFAloKEk3|CF_ZySWfBU+Q zeR}Z6Qrp`qiXw(V*nRHF2O$rh^02D~5b2ziRTrt1zf6B=-^4GECayKC+6#WL!h9CVI}@xch~UPON=S-}ap}{`uy6 zgTfp7or%#*!W+0Rx7wcOwymn$Seis^#L#XiBD^xAO8p0F9qB|8FRqN}p&e~YLtD)4`UoJSkqP&a{SHbYx83AjuSKY-tY9q) z_KQJLfYzjQRR6LFiUymNUZwWzOYKI6-@r|M$lOh9wMI%~CGTrjRpK6da;8_M10jre zGVE$94}N$}>Ul=CG5Z@?_1-@%7~j-L&h&NGih5i+iAx2l-$g#*jq+t=AINU%dQ?>| zG_BvuG_xpQ7yCq({`FSh`>^!ETLQZ)KI$q;k8%v(e2+j*xyxm5SD)kd4&P7d@h`@z z1JKznUH*IS z9bS=6zn>#H32v>N4mC_N1wi!b4J^zKKcGf{Ue@&z5ld%IPM3ttknXQETCMrbe@Yr@ z%(%;Fv1U3N?XQNC-85WlR`SnQe9H4eSo{40%DGQoy!qhUj5?-7^;^Mp24mh)chpqU z$8Kj>>8-semAX_N5Mo%zollz{Fe^lK_1hjcVbHshy>$*aB^rRSh`B!9-0*wfoZ`FD zN{XAroWzzhCmg?zgseX0t-0pXu$m>6KUel)qrvB5YexC6xLm`C7j@bE+hMd40#@5VBtM5m~(JeS($EMeoK2zSzhE$fxTT_ubclP9fLio;_nZn z1R1XGbtX6nVqa{boQ zC;hf0P8mYPBCJ^_KiF>CwpRFi`oc}PxQ3aLI zqj)l}UIo$Y7ogfA8E(3)^$(aRfBuz7x3#P;d}}?(I{BeW*S(i&FH*e6tdoPc9f0+l z<#C2t?^54$7z6F~buKeB^Y37pQUuyF@N3~vR(yA6TmIf8x2OR5TD9kf*UAMUMqj-) z3q!^DWx4qMl{eiZ3+P_x96oCB=wqAfqLn{wSLF zJP)HI_zF2V89Sm$X>p4B>~f#tLHBr)gZW0YU+)L+KGaT;d~)Zwc40S&ox=20OX>OruApuB)NAbRPkW~U^R|Hpc} z;Ss%_J%;)vIaplX^Y975BI%_K@azhu%XZ(Xe7()}`n9e1^wru^EPWRE!`>4julcm` zTP;Bb9GvGbs)hPItr`f9V~=`B?lT8H#21#`&cATcSBz5wQ2jwJ{XyKY z=VOZarw%D&0=n4cCr&IIwR0f_kHA!cz}n6DEr2{2l>F^`F6s5^eJp#5JydCxz_8y& zsSUa2@-p5t)inJ{(DZu(jm{WdrYA?dcpuVUUTm}}>b~BDo~PptFv6uxL+8?|2Dx${ z8B{$@g*(NdA7q-7UcbG1A_iDvRfAP^FTW5|vz4BMo>Pp|z5eOpr_XaK`tNNgIKL** zmuLwGm)$CP#IH+@(k}b57!5?eM0dL^#&%rE)Q zU9E4C6h@d$MK)IDYWQFM+$fZ~erH2yY{PZr}rE$`jytbHvD zx8AIv;BxNF#V+~mFHfn?6`qaK8tof&luYy8IE61}sJJ%Q_Xn(y3+o8r(JkGr*%)PI;#bHU>czzoCrhMX_~eV;iidgZ)V*}Qfme$NitD-ZxKWo$ zGf(%sc;Nk+9nT550PIyE^Jfs?S&@yIY#9_nU(qvJCRlv(n~m6r-0wJ5Ak_XLkG^<4 zZ3y4}Pcobx(YFFtCp*whs|&Gw-&c7ymV5r91piLOYf7hbg5O0pwx+wpbPk^DphpExu{!64TE$L7!{7)lKP2ogE{Kk~ax&Y` zkn;nNR-fpN$s*BHjD7PXW5~X>b`GhuXP>_N%7*%rB}??Xs!9drUr{un-3QqeIu4YY zgS8PV0H!!`6TSjoBWD_q>KAKbrIy24Phmo{okO0}a^~PZm7Qyh{u*QfnADgEKBrpy zJ7Alo`m&&0UlXL+C&jFd)(mr(8oo*JbzA{nQ{Vr9Ych%}1Rcp@R~%32R_GNzz&D+< zFKW91?pW!oEcSCd6>4$R3JPW2g6~lOlA-_B4@F;pAUz?%9);6o&9-tM#F##ZE!#Nd z583Aa%0mX-r+B2hkSy6FT99G}N{$|6tGL5Wb|;;um`xe;s4FbdGB_vi;X?hPD3rw) zvz|mLij60q2sr8i&9h=di~m2$-ZCocH~JR;ia{wLt#o%wm(nTSB`q!8AV_yNjC3;s z(xt#KG?GII2t!DYLo>i|$Gg`5ckf!x|HXYbYt5@C&N+MUv(NMCQC9~et9~Zonmt;LuC}a=-d$Gt+CSL(tQR8a~YDO zsV)D7ZU4n=CtXB7XvBus&qZ9Ime6_ew3MBhd3wnTLA;f$%40&l!#V3#*|}y_LH=?pcI8NM>D|+0l4F02EhvUA5SVd z^ux0Y4z5?LT)dw7i#wQ0_Yjg%wKyF4oqE1K{t$pBCTPDLqCmkD*QKMxXK29o2P`7L zjpyJ*GRlxcwa@Yt`{x4K3Xa@5cj?En6XB_pL+!YW(BW6tH+)Q#HNTXrHX}VGF;#6! z`r$h4>DA6pyF(6DosQy>EZptyP%PVmto;57_RlW2d%x>w?w5g=us(~(?s>n3yWe;x z3bR{IXWX`@}XAY7;3s@LPe&aq+V@+^U z^5P5kYyAHc7ym~p$RY_t&W|)L6X&B5Qh)tm{^EMR4XqWDd;_a2j z+st-ZF+9O|1&`mkKi?+XNBQss`W;&Q9?QC5FKf{&%O|asfSj$_jOW2RHc#NyCT`~i zU}244v%*I&V2IP&@t^Z}J23In$U#ciC@()kI;zRF8#Lwh(G&F?M5*t1c*i{L z>2=xY`!H1mKOW;Tc)a{c>6aOxJs=2Cv0~QPKsS`O!};^Q2qzwn#(F&AiR;!}S>$U6 z1Jj$zz;g^PynT#@GQ|w{j|b=b4$78kx3dT>-N1m0YQ==Ukc;WbU9^-ZiwH$|#`c63 zanVE-G{>7_h{C7PKa>#JuaPq!O+K*sbVa5$^*&R*znC~#X>bEL{+{~YqafJ0UrQ|I zkYxMtaJ#vL(RmhO8NX9~NtjL;^IqffNSfC?oR*0+9)nF~nirC+L{d%TZ7%Qr{0~RAg%Ecf55Y9` zON>zX_6k^BI%HcnXcOS}5e70K!aqL^OpOZRspzUBC&`#V9^0B$9fYS(eBv+nVkJxV zRlG0Bf$(f-D9zhzPoFTmsotdUp{=^jQARLDPo{CPEphmc(~XZGUBL)2E%;(#-NNUJq*f# z7BtF_q0FyUmO_(~B&Ho*3#B$oJ_RKqt3#gdLDTT3ZNHgzewbF=rm2Z@$X(N6DEEb* zu((iB^u(Y2Buq_6{6kv2h2ZBn{Mm)mRnRArDs}GG`01H+(6he0o#*p-0+8sE*n# zS=v?s4PgEcV=NNIb+$c-4*%ueA7Y5EERvQ5i(0pbKe3iw^;^*fYF8C++!ki%WaJDW zl1|tvO2yV?=&D6JtGiWezJ*WIr<$7RXX{B-2uA42!YEPq0qUu|>~gDcsBKtWJy7(4L36dgc%}MO`C8GSLp1TphVG z$qB(GTPe-21e zHR5IF^d>>9kT!<42DZfL!e)swqg5){>H)TtE}Lg%Z~Pdwbv-bvkva*0JdA`M2j6(~ zpIS0}xLgZ{!b1OScE@*4^-8+P_-0-L+|-k|r~NvYm)+N@k2`9VG`DzxdUg_Nw%=8ZfjVm&X4 zmqf|SiDXCTp$B=jU_j6|$BW@pOO`)i$U1+>LHNO`xp(IDNs?qu$Dk!Ox2fl&==uf; za6mfo?_Xz^H&D6x4~4{-w(^OmR0mc8p^h9ay((gSGXuNw&Bzt=4<{ndcX^y3v<)5! znZKwsKTVzBK^*ZOLu&WAI@&thk6gEC#h=e3@*Y<`Z9ESg6uQaoz&b(x;$5+ z;GR=rjjFR~WoN~RZ!_zYlJq9;w9p(5o*stAO2F1t5rZ$MWJqk3%p@PSZ{1VuEL9=^L%OV-0&{fJ`8%!TR{@&Q0 za76Pjaaf=C)+D@aAj$7PYPO*-3Jl$Z!CPeJ{nQFeF12b-QZ~t9<&;!B(Iz1z3bMh8 zLysA+J|rcG=71DW#klB4&IR55Ihu@3PN5Hc;U)?{yh%4C@F+W@myxlZw(w(%Ra_JkEM>$} z-iVTWLB#`77*ZzM9L}+?uYUb#cvhO}@e%a!Wj1p$a=7W|6Ueu*ulk5 z$+Zg>19gnzp9a`tj_I8axV{y>bWcg2MJnQnlhk#DOP-j{7HqTHUmsUT44fk!QX>~& zl}?e(2dL1wZ^$m_OaT%68{!YJB!d1XfS@`f?0^3aqyM7=2JpW%?Q>vDp0P31wR|2; z{DQxtlRolIZrZ|$6QMgI+ahb4>|Ik10RH2v8rxcoe_Xikl$MTtU~UB?&-3#E@ao3R#3k)xacc10dEjT?aum zX$GarTzH4qQ!)NK#;p$!8ifFW(l7!R_a&h^I(3{Bi5@gLu_{g zf1xRz-v$)ksn?xlMY{-+hX1SQ{z_r_bFsRcQ0XRmf~1tuN-c>aw%cN~rD$sVC6k9Q zI92%uo1YQa!&yO8{3#VhDRH7w%d`SS^G)uITej*MqN8%XeWwN<2r;WnAX%SW^jQ?S zcdtwmmO_4om)ak`+@qc}Y}=f=h+KiaP;@buF8XR+J2i9J;kR8XDAv1+ zrDJg^ecp*|Qn%C_gsIeqj_&;+H&F81y;M|K>3KV!IC&6IGsu_pv)eUjd$I=#g&e15 zKS4|0NHGwZ@3YqSbsWsCZ-6xj!NtD|J}qHjoi&-gcSM^E2+YU-B}6CFBer zd=z*YWxL(VumGfhT`dR6OcM0_@%6hrH0%l)&Vfw4xOZx!f>^cAp=uy#g7GSB>b$#3e zEw~J_`WXZn4S@uaQ=`d+byyfdVejQliSqvyO(n#zZilMZ`6qw2+ivg{7ku%P>BmkK z90{3sJb%&o?rmF1#ScWfc5dstDN|{)(d5W*y|qa81;KO8yF;eaA6NFs&3<_9ifiq+ z%q7X~9EPFLz>V}Ffuxn=hiVw40++>LqNJZF{BuSHwH96#YUqO=XZrtGJeRz=NTxXM z_6?fKRooSacA2$9a(2auKLy;~_Nu$%DrR#T_YtkOO*GNW*XA5=yKQIz1$*@4AadWC zC{LoSdL8ca8bglu;h5P!Ia$zqowgn!tS9iVWjOzjD)B$(|E*a4e|KMb#5NZ(qu%ME zMuhoC_+*wnzBN5{Vs|8OoikCoqVGd8=H5Kki)!9XUD9HI^db%r@v>-+j2Op@6Y4Px;e0_#)=?v#aGIKvQOD!YeWdwGA`=@@TItr8~OdV{JL1k zRze|FC;d&R=kzmZazj@O&}*ao2kwkp%vxf=gA*oq)4taVM(*DIR}O|jUhZUBn?KCPAwVO+kb~Ua1cO4~nK%hg zHw4Y?cP49#Zb4V~Uefa`+q|`~En1)jsX**guy6U+94tBK8eqlF71)#ig2GJb**;jD ztD$L8zTHJjpM+q@@l#S zcgnU^zxa>E(JalnEA&Ahj-+AOZR z2lO|gyEMMbSLG}Psjs~zk$vg0#dt3B@ysJW*!R5Bp%5+RlWCrYap_9$*}}_2lwe7r zvD$LB9*q7=uY&a#HFvz3x!ww0$9EdeT(! zd{WBw^y-IgTf%{BhrNm=np=yaJve`94^GY8zmfd<9sL)F^E|lQWYFkhliiU`^NCCo zF*YlyJW*T>aLX{^Ier&sQ`MKI%#m|u_aT{rXn0Np4f__r7znP>^yjXS^uIH`!M$7) zFh}fZB;H)WG%j%hdoO8>#~C0>JEf1gtoOEAQ&uK{z$F40`7+Mn6!OkFfqYj!<7RxMYV-hO zJG%_}jLd?vKevafwFE&U4IP9puoM&pl0GcdP{;Hn`b7S+X0j)#Y!*HNGC~D4N)R3el@~ zttsUhu6ucZH)iqj9v*M;9vruC;nCj+eW>A|kbIP=@y=?2k~1N;Bgoqh6c_c_EKg3y zaCvj8LlSxjFInZ#89xa%_Zqk=b-KY->4bNB`&xaTwOfBbnkF&MMZNPpHIu(D7Q}{; zW`UEWE33>6NcRhvHl6h?wIV5IA{~kgI*8YJ=>*}d=gqW2f72iRz3Go)GSE0xe}!TH z1zpxFo2Wp7RlEmJL?Qk@2N}lexEC3)Hk-=!XWLyxrQ=~b#Af%I+tG-@b=PH{kzQho(p_#s+)71tDa$j`WZl7?aqybp8+EHHxTdoC@!d+h2nfP zn-4rO>6RBf@x@>dLnYqV-?(orl>gX-A+exs=J23_|4 zHTWzatU>8}qD`(X_m#b0Cei3o+3Q%It=1^|CpgND3Tk2+Vbhc*o6o#Qr%PW^G=Gte zbvZK(n`h_g!!M09`qc*P3Ao)pYV)0o+w*l^6G5&v19*jiMv?%FpQwlaB!%#)q^1h! za~`YV=+&A0(5k{sa9>;&gs%7ffkUq*@c-EFiP`2}0D9mTaB;x2LHQ$DU#>?>PGi?9 zlQ5e;{0T5N2qfaf85)69^XP>8fisQ0tSDlf6fXQ%fhU5cd~}oqBOU z%Twng=wa$70lW%lS2n{nHcJ9B9wFwy-r5SAQPDjYlvurM9IrzfWI0hL9)VT z`U-<{-ucbKMk}VOB5Cu5cZmg@^PLWETo9QL^ENi(Ylw-R!%C9N0hj~O;W=9pKH@$^@;X3BB^0YAZC#%A8&G+UGXzHICibqTJ5#{5KOCBmo|WiQ>Z6Z^l+e)tGN`pbVess8)EUtJVA7H%kt^IIP9PDNh zm?()_zI7#l*W71$Qo^lJT3+8f?$LAbgbvFKcUK%+fM5Lh?R+8WmolzM6XQdY-NTpC zK|4vA5u<^3;835t_LHox%3umriHPcTfV?)*7*>jz`;wJi{_uOw4Xwah8I8i~x`bMc z6 zT{=w#jf>n2bMXUnd|bjZ4#4YWm$TK4>He;KOPIj*9NL;^SO5Zov zCWRY|etvi3vr%RX3>xc$>cEik!K9axDb zoc{~M{5!9K8O@;gZ^Da~2y3a;PZkDzxX{L<^HJK6&$%`d+C(?x5`iFQgJ^}+cf#JlUBTYqY`Ji({96^q?7Yv ziQ0j=U~i_QJ&L^bo<{QKu+eEOinCp&$PGE12~E1W*ft6xr!wL^AHS?jIwWFZc;@{f ze;o9Bd8?Pj%6wx!zif!VR#;VihIZv45D*ww1>f{+O|~!cX^%qdiu|KagzA5&GnD;b zu=js{=KmEve|rA_d`VlDo4~+UKdF^w8vF8I#x;;wpyhU1MViDdOmol+_yYuI+|Sup zO4XwHgD^4`Wm`<)x$E<|E{CdKuH`@A_|;)|UIQ0jzgTQ^S$!F=R^eGuV!!doz1NO( zA$EFm5h==a%?LxzB+0AnkP1%+m9`CoaK|~@+zbVfd#6)oO$(;M{z<)lH$70v(4cx@ z$SzUzZT9Y~>=;de;#;?&DT^m*ZmuBtH|N}W4wxgW+`IBrEQ&`lu+UE7X!ce}vPj}O ze3fNlj1P_G_8-RjBUI^Iel0sy<@J zL;0y?VPwB^x?%Zajx-G$Pc`*zUk@)*eO)FBJzb=0ky9Ey^L0k(wwZ6@dN*P}$@uvl z2aV^9-|{r#WSq0^#ONkrH9tCu@e>wFJ7Fc~cOtqyy}BPHH#zKYdx;6X3kI4hFibf) zB%C16p)53kGEeGKb}^A>%kC2{mk5dA3)(MV0t>b7w{OzA@OW{ARW^toh_g+i&Kpzsq@~Dsyj!d>e1AtrWjKs~m zpl6?6e>Iig#EktUbNy~FB7*P*`!tBrsnMb&rq#Bn$T62js@$NL3U4;sr2l;vwWU`H z4PL%y|BiAUB?t+bGLtx7?OW&L*l^!z9T>`|4h^8@5&CJWrVg%$l6@4@1}uH7pp33` zh|9miq`00>>yYCzYO&rr2s{$O1Z~x8NV^nxTruYw$aMw6kZ@d@?tWNm9}+rnkV<(w zI_E6b{Ee9D<~+ym?HNCF@5{_aOJL6Aq*CAak;TK)J6-?lo1z=;eqt_x^^?ujbm=1r zG>8828$<)O4UnmXr)ai;6zld3jxJ%Y(pJhyJA4SM-Q?xQGX+A)f1t*7o+W+y37 zJqGUY!~Oo&_e4(s($omxBmf+L#T(?Ga?BSM5J1a9-$@)t3=FLY^=s)xqIDMrS^tGe)<1{Q#1Ji(GycX8 zj%4Yh+Ak?GGNYJd40Tz5Sk>z5HJj+qGTzA`T}g>s3`-{FO-!fdD|!XU5S&HcwY|Nf zXHi#(A1aQBSz8UM0261U|47;9A9&|bXQhC`v%b7Y4#sv1@Cnk>!=Bgl-e#4y*16!v zw&`E=*%jg8tf>T$O9>z|mNW|5oIHRL->2>%9Q&pnE3vYMon&@veGp@_Nt3vipWhTT9^5rTrX$Ta^-?@bLVFiDp_|Tn)Yi)z6ajy|Y}Y z-F$z(IAZwWGJ7eFz=a642$%*W+sh8qI$z_Iu07s+14vKwW&uW#r*8GuK#5h zszB4~I&qb_TbOx4a&im8Hy1r#>snVMT?gz`>LA9wCzIfC2{ybZWN&ISa$8TXdYsh+ z`mhr3xx5krGIjdSr1lGeEd?}h`mWN5z@2`I@BhIDC|dlBg6^9eN$+#VEi_FlUh}@w zghv1KJjQ89tO;g$5a$!e@A8*yaWR@8u$<2rr;OJ|PENU>%w%L5JHV*0{Rj95XiiZ_ zJyt|w{8`No&?0!deWNJQ*#bKmAm()Gx6G$_#VHkumkJ&^;$aWks?DPG_^pv^=DQ*Zr3pSfT?@qx^&$oQ zF!gE=0+N1E+kM*};KtCt*5^aY)Kd;mhqVXQNcY`0Yq+xu)LS%;!q>JEQp4X$c??`N zR?={gp=A(3tAEqN>M-h?EdTVf-$4-SP;j!O!xOslPZ3Xb(yQp0nL^&vX+ZtwCs+DR z3A_eAXKpp0F)V3o2X2 z#gFV_;A!Sy964IbAMbqggOOw>O9o!rjpO(s2UsNSoQ)|$J2_K_lHw-@S*P|(bF_$v z(!%w3i9cP~0Ya8Yocc)9u0PX&4Mcr0f$O)siCcwwlMCl4FL-iotRFvwY1Yv>$hMGv`IcG}6Xl|md7B~kIL z`6u-8Tl2+{?`clR-9Ua09hzGc`?%klvf^k9YHk!UdjNjcwoVq9c&T;RavH5(^d_`XyOzXS;jsu=YPYwzGh!z*>rEb5XrO{60`UbYU~^Aj#f9Nj zR|p7q@9Vrv<7HIRI{3qxLke1=q2n@btULzgo(Re&lW3je#f|l3XpB(N1OxApy9J^` zgJhZdGF?!V56djH3P`Yh)9%=Urw6N;oQqCdN|2pSf*${aD`ct9 zM6Ka>f)dPgeO*5S!Wex6-S;^<^{F+ss1B;`-Zwz9co-)}ULx7&eu86Ni ztGguEP()XmJ3DnXin2_2sKF@q3Ac$Ls8-J^&NPTk2;ehV0qiPDN~a9<9MYlwEJkl!0A%zv!9xMohMlt-pCq!#Ax^M zRU*IoZ7t~Yz3)s2kmxwJ88-$Hr)PJ`UJ8-eIa;UQEH;pKtCT>`RRvKqA!mY?^jK&h zh^LSnMW}V)odaVmb=?HpgV+q*)}@^OXv(OnH}q-5vPy^_B_!vhSn4Q8MZWGbu`o8X zE(j+!(i~D!;%L17&>$&wbLeWkND?Z&`bR!czaQ0#k+QEdskd0#66Jh4GxSVCqup;u zqQ$C9*(+1C?vzdHXlj@j(MSC7+{{Og=Yms1)x4 zO5b0*{3#IFjH)~kvY#T{o$#cf%9a(0szBTzn^XVv@>?k<&`5c)3-#{Z`-adoVr=W7 za&@L7TfsT;pu8O9WJ8`R5;Qn7lO)gGadd_Ev2KgrQ( zOUjLLN8+-TDe=jL@Kr_<;3OzLuJwg@f~v}SL9QL_+xYk)35*#_*mBviNwH-cjpp{J)z!q@R%Ya0 zV<=SGyFA`P!0QCNeO|hFmc>^$sO37PXC+r0jUozJs6=}&$E}@Bj+5_h@DqfC|J1~4 zZCtzwlB3aKS=g{D=@45G^<4kT#Tqb&V$Bx=o+=D-p z$&oWGVn$DWB3ME@Dy_vc@npdm?^q(9x#_K)-JLXIG#ebnsnN264!~`nt+VvJ4l*t5n0O)x6|(Fflaa=t=)9uhmeF0oR$( zGS?m2;>kWXl7eJ%guDv5Y@Q;|U#Qm_ZgRW7-sDM6wrI0|vQ2fP%eNnbjb}ol|4M=Y zyU?u1e}2)KebGlxa4aXXxy1HdB0cj5m%)fwO$tZ%iKzG$jut~n^uK8ASM6V~s~-Fp znoW8AXmZ_u;i*jjlRXld`jqg;)wDBqTAD8hDrrI68Wm;aGV4~kkGNC}l%jpRpPH$9 z&%J82ht1E<3dc(r!vxI%DmO#uBsf4Z6cfi zk=T>#(3iUb-TP!tZLNYEPd?7yP^TRQVZNBz^(o7(ln**(IqBa@%jIw8aN=Q!j+Ey= zOU4PjyC|1!X>&0aFds39QHw#BUo8qz8YplQ^WPU7P%f-5TL-cwbnY?6*l)DEX+3f1 zwW;ZABM7fEfc9xal!i=!Cfc|gc?~8;8|Jq-@pthmxYyz%PP+@8$FOz3fvaW{*S#3q zRX~&N=~Z>J57~-H*yLVTPb%3(qw%NK-K*Ev#y+ohYn9?6`5D37W*2q3ms;M;$1Q2c zZk@hv%p6<1v6o`|EBr9eUTa7kRtrROyR6X@r3AK)1MZ=5CPSD!T_BjhtKifxftMP+ z_rVD}HU34S^icE4M)KdGveR5^z!L;A%^I^R?POk2=d%f-IjW$6VCv})0H3%7vfu@J zEHC&sgS?~)Lc@8k4rCWNGd@^q9j1gwc`2QxV8nhTWi~S5q~jW34Eh4};GfGdxk%|S zdN*pp`Yu0SoD0?aK`C$7OjZ5|<=ML5PGD=-gDCtfSj)0895l4`iwG-avfeIdWJRG? z(~APb>^MR9i{go(h5(M!GXD>u`sek~9pjB3FI_vLq8zH#V*`(@M*%_wjdyrksCHIG zOYM+JAM`6{7e zd@Y}qg70+RjEWmXE8fdNbYK$)*1cg z<+{83&O7NwY#_4j2h$vf;Jt8WhVE3Em=cLupW%wD?2hdNd+&yO79yX!7Xqjn!;Y@T zAlXqj1j)|7h(ArZ5C4-|_11i=Z{~x8xPg z3I#|VKhcSCp%?14W;iE?G8yAqdFh@Y@*1y9e&u=1B8e9@pF1DkjG8I?+c%RlL$pJN zI?`swQeZML*;-0+nE&zKMMDJG1o6RR+e2?0c!$~-Jm!8hFWfvJ`T>dV zy&Nu7hSGiye~iOK>(D5J!$kT^K1n7ck1#$%#in2okInUiT6w)OS0Gs4!l_*eG<+nI z{o`ePi+*CL&x9Z}uj_dKx9w`**<2wMuIM5FD5q#)v=!Qm@iu>z`w)B2u@Dk(FMu!Uf7?d8)_db4Y-4I)2Ntb~yxy3-IVoTt zUUSk-sJiI-+-TgDabL4bBaOG-?Zf^Z%{&WgE*VvKzAAm|OLd)s&dGvtbv1h~9Y; zzM16lYS%i;fv*H}FFh4Aux4^sy!I2vFqhi^r!{v78{w$0@z=cSesOMC|KkeKU>B?t z)^48ZAboP6k#jfhnGCcML&pSB!_1?o=c{HU1<4!_bg)jdJq(Im`OcVYD)tPrLkw_-T-0F1V$yeKeQ8xnMggV-QLLTrUv4GQBujHaUKA ze@i4hC`I(+ETMTvaPMqs(5zYFz_~^8zc!}a(dBvxRW*mxmm%+q%EZU4N{073%_|o| z=TChTT<91}(89P+D3&aigXM{4U_~1>#6; zew4E2-CrHEVdl>;o4jf~ltacH^ICH$;F!%&W_WvX6{a8fZfzpGEA^_NJ!PagpIr8B z6Yh6{{cH4UzHE9{O58R|Vdu7ffdSzY}TcfdOeUn3} z(GlSf(8Lq{2gDE;^agPtnN0U1)F0c@NMl}R3LNr|g)$9RxM--4Gh}4mse|B)!@xm3(G+>WI4#bQY6kbPPL zh9;$ct_ts8aOd;Nm}PgJUOErFV-v%%5hYQY0U{=;tjC4~xk3L<0;2Zo6{?-59**vX zNg}_A$ys}s@HtFZI%h*O>v+OVtr9F;YMc1>EVi%jK)re`3 zz+7goEthkIWxLZo5+23@topdUTG(xS>bK<3HLkHsCQLOPB#9ljUr9qTOEA!zMhwkZ zx~OB~EPTG^h-;Pc#ZZNxD}CBu8V5kxVMwM!BRwGn$$ryn*d??RsFz#Kre(S0ba?K4 z-;~{PdTu|SwBGc_a;&#!x6eZS;+V(0(WDWwp zMcvMO|DdF>(m&U>RNo4159fTX1*SLL<8U_bBc^40`j&Xu^pZgT;CARmh(z zA`f%=2-4SQ5WB52ky}Fk_lHsu___4hpCSmBUN!wHt`p6wCru%s&+}Za2f(8)@E)+r$Uo-n3BlDZ4pzpiK?w3gmOC+Sh#ZFpDYRbVI z-1G{qq^Yc3?lsZ`7OvWb-5eyE5za!6)lJ(UtbkwGiBnyBTA7S zAWTy`99H+?QEn^s+GD+DfvO>qtfE^TK?tb~ax8}eM(iy^%+pnp(miSn%?cckR=d62 z!gG0s?_NQ52P6^`Uq+88uRZU6LY>UNSUY1)qC+^eKOSAFze)d$hCsdR-oKh1GR7r( zsZdR0<@h~0gWv@6lOHpd_EnVx=-T3pRNCh2T`n6R$SPfrJ|h1J$-1DyeBLhQblLyI`jUhQ+Wqh$FDBeO=F9tE%AVtX zz!pvI+nI_t+an^|qg4?IcTLjYE$n;}-gsSl3{PAG9_sRgxbLL=52t4H!#SD?*^IUd7yTK{loWa`&4x#y&Vh;c(g9WPhDc7%i`yiSUR0mu=*0kd>nu7JyV*w4dBXn%ZcpV9Zx4>o4u9ovGHfsP zYt}BD9K9l@h-_RK_CDQv2i()D2S80li&A&F6bcqJJ$(`cbvhBI7O73q^2pz&A(n|u zg7mH~LB)Gy0Dq4yu6v(}3E$-PyTNBW8=g6DiVPITFQxq%vpera@^VF3nRhJXC8av( z0&RSr+W=q&v>uXs8-+R#bO)c~X#oZ1%^a~iDzeC07( zuXPIUIIoiGZ<)j|^8G1tnKK}PQfz!fua?~{g0P+7l)>3tN&5niwyEFtw4arev7hE( zWLQZpiT66&Q9M~nyPol-gTMrL=TWWQfh%Msr6dR+GKiR&=fa$bjLegl<_KPEM30ceNY}xL{(=OzcE{(r}I0$FTPUsTS1FYB$ z9`7vURo~qndqa{a^oLQQhqw~3^AU?c<~K4GNL2ihQ{~a6jTkaeoCswt+skAQ0SQyucE~)T+z2~8Sn%4??yKkliWIa+1{19(GAT?{s zWW}LW={MG_Q5~_pYUX(=3B5$#Ryd@Kc_PQ4IYyL=bw4YGlZ}157+FP_4#=?WITEi z`=gKvcViBDVq-6ht2GoNqH3(Wv8VFg@*8SY{QaNZD{Pss2VyH$0Q+ofSJKe;j_yjQ z%H~`z_kSzb5i#kGX}!ohFnEWnlGQ)SDTC_IeUtFPV6ll^(h?XzLZSD7cMZ!m}(3AGIG zi8~Fwon0M#?HsszTxgJN+LskGvLr5?*asgxil<9JLqA32{>GUcPm%S%)5Lk-b_nq9 zyl$`g4_++4PmN(tV=QAWv8Q6GmtD5&lf&f_)H07$Yq@)z$<6D}F?yk`62Vq~t-D$$ z3_J%m^tqb)Ld-g1ZIKf9jg>~X)0{WX{te4P@rwIp>aW*8?L(C>C*=7&kA6w5TId_e z)fV*Tf;zdiK%SwkYTl=WpF;0)oBZ!0MHIn#=6xDQH+8l1gcovs?V+%dgJ|C{(DizV zHqV#3n=#i;r`u@UUWsP1hg3{HW`;-kQ=A%Kv6?KBt#o<%3h>+~*%P6aaj^zST+hV} zc8K#l>u&JW(6Up6#?kE+4thC*mUffs-{vgk<|A{T@niS7<#ST;ve$GUl~M>~J}LVV zXh&qQV(BMq*L=<)LR*k^UgxD*_+I;!A>vo;Q_=Hf4>plVf}R?B+t76q z1Hbm4G#b)&H&;p4Z6*?F(fRV4v;GHa-q`-fb_BhQDRx9eq)U;tS5v`5wu5RDg6upn zy-ZWuK&C6H5(85p46%3m@_G6-js{%ym~H)`nb8eHt!vv`-g;obiGq%dT0wJrNJsBY zUFncN*i~z*$*u3C*y&Vc+2QoSOqh(SE%)v10IB^Y{AlXd&bn8=X;sJQMM><3dl(N_ z=Z!}|p^VvMN}3Cnq9$93`|bgONES4eEt(Sr8>0{BJ^wX%d?PYrNYL$1fW7PYb(2N&#d?`sBEM%B~aRi3hJ)@H&Z7ts0q_}PMlVMf|! z)J}E%j*%n2gY>~GMrFb+`>;7J`(u|8$ z&%p0qYQ!a7^Ag?1WnbCQ&3AAi2~aO7KR*rjPvpH}E}f#pccgTp?hfh2=*VSHIj|4T z)dh2x2i}pFtz?<9T-LP*NoN?i>oItGT^?ce`K*A(ZhMkN0}8y)>_oGJ10m53@kdTj z&snb~(4s_K7fiw4XLe~9y7D!JVvb`ngP&oa)x>Gb?6)g%b_;P?hkC>O!B{#J<~P0o zKND!J2t#{?82?_OtrpMs{~+vds7G<=3uzp+{M(Y}O)p?;iuqf|Qy;H~Gekw(fNt{e!N6IP&`}A#?8J zMWHU}c+z2M^O8cIDLPYd|M60(RZboJ7CF8w;%O(=DvZqk6^UWvqmY3tE9VO9M(T+7 zuW+|md7!YS?Z<@pa^3orhKtt{Zcp_kc&{x@UgC~&*^=JLfLjIeX79nLGuM^P%|G8U zSpH~MEz>!DQs3$dJm%e+We{!%Ft|CnUvD7z{6Uxbdtpq(c%_wH`{e!l)b2BsUP;Jj zQO|qsJ=ws%S|5tGQO|Z%Qn?b>?6Nvp0V=~LQR-k`rNuu)sInwCLZe7xn0*J5SZW zi>nzGe`8UE65pw8=IP6QAuN%`&=9~Ms_`e-&@kr8825jp9?d&^MKbsC$-3BMmu2h(;dZ+;je#PuZl zm!@A*t1}Mfe;VdW2BF_zRNTW-U%fS?)r-NKUXnr4aj=M)v2uog z+pjFf`<7y4@6d2ao_(B2;tlhlds$h;2g7GXJrn!o7sh_)lyl4FP?Bqa=8c~0?4Vao zj>DnHP`8D9>0ZD4hg-|)+h~Woiwb_t#@}L971IXum>)#HykBo`iZN-0W{I5?V#w{9 zlzR)D2n^l}SLe!8@ePQrkd>c4*WT>(q?*k8tsMth;a2aq@Z!Nqhw#IPAc(*r^-N{S zy=Cm{p|?sdAbTID<)-tPb_m#f_wAJ;kz%y=YutKHe&WIfE~8m@aC7tflt{t$BPf&-A>jzA9V9?dIR^W&^N&wAECpz zS{Q{44>#@RK5d>CmdKfq>)oIm=LCw-+55QkP}O_S1ttM33&d;_p)!i z>Du%QrFKnz2%-N@+QR?c1wh26T`NOWR$~sH%TG*2mM9hPMyyVflb4;7s9BKKltrgl zs;#$}jkIbS$;ru}IWvDnf~mE+r~dMs)YDGB>?^g~Cx(gkI29g$qTfhi_zb+!Z{e11 z!|&?K5ifA5R#>z!Gm;AI&~h$%}4*wd{M;9S}@E9kLNqs8h?asW1xA^hZRZTI&v3OLj7%&h6dF8ZR50bkfguZ;tUMAF~$q8BQ*i zCCC%04^c8<^Ph+qWa>;KTaO-Xi_qNU<=`~9WE}KZ8zi)?q5eWCZ|rdPv(d+-EnXuf zzxW)7>>Ayx5LF^*H=$lb9JA(1UmIx(2X;oZ-(}}MLE-m?T>q&*jc!53?M#gl0ms0H zJ9VnbTg$_%945SA)gmf93)Da`b{9k=m2NQbV}2rz6}#j-*W(D`M`K^zAc;Q3#@To2 zgEYXuRgG?L=XX0QE9t@L|NS15(3*oGkx0`P|3#yUxgi?RQ$6SbuL46`sXGKwhs%{* z)(xIoCn>lUWmq$!*F_AyWWO*5{@!l(96rSN*o_EY$o}_HKoF!i=k7-y{M=2pWks}^)IMF+{bcNB9Aj9n!6P;|H>z}P`D`eb>9J_F;#{&*R2#0t#(XDAZy>_cL$|7 z(rU3?0!BqZRpPt`YWU2)VNdN`IV?XEMh&OIFjso_fP6Qy9Lc-2yjJ5~hQG-CiTvz7 z@#F(!dr+J=Lo{l>aBSn#)CFz8H-5iOrir(JTgRBp#!I`t3{3`p6qitkd=Vac(P5An z`nw4(ZUOa43-uZD&vzDR6@kW=<3YcO-24+DpzVk!CnqBNpHB2AiCN;yL3{kDf_m;R zGdL^$>`F*dDD{0|17rlDvA5#zTR@s__ZnxJB14FH(91I(KkWzer{n z+5Nv5PwJoX`q%;z{)grM{g{L#S^p5znDhmq{J=b1ni$u*_U(cUb4Lt@hFP!-VG46x ztYWL`U`h5nsh7EMB;D6ap|kA;Iu`GSwNQS1%C`YnC+3LFL(j5(inpwVUqrj=%N-&l zGvjXuI22YbPU(t}zsO@(R-MDI#mG~i#Wez3sFQjGy`p%o%YuXpz;g`?B!0+KZ~7dE z<+0_I2%Ix>&->nm2II_c#dme(n^PQ9>XAhx0=?3>E=sUHShU*Q4=e*N_?!6Wi`IfR zW>A;P_;&@|&DoXgTDqq!6V56uYtvb`?NNzW35CuW$ovi2!{p)K-qKPLzCX|KyDY|# zf2~B(Ukm}ZSuXt(N8;it4-+kyTQ6yOQcUm;L@_^^z6Ev`C% zLFz$FY+YCo{z-n+r9PTi5c&H?Fphiu{yA9)hkRaD3}B%*Ne6vT`z_tB&Nmj#d!D*b zLg?xJuFq2*m1N+XBj&a{$d8;<4kb=hBM&oZlw~3>#V-RP_5OAYg*;SlNyS^kTs961 z!eRbzSm$)%{qYnzpS>!xH;XOy*WQ`0YA@eo1xN3{+0|{4ipU~6)ENma>L-Ystcy)s!MUIbi3J0 z9`V-4t)Vk*EK@WN+wOSt=}VMTB+l*}^g;N@r1&}%<^|nnT1P1O-O-to4dd7o0nlr2}g#s3Lx<{_h7)oHLD+BzPuL1U3?zu9A zBx@vMeP+oBv34T(N(}#nP#SPC^22F@LsstD2ASy;O^nxMS{&D9G)2&FS4v7@taJ&j z&FH&Du)BtK?%5_CYPIGjbU77b^*t9mXt$&`C&+yqZ_MJqd8Xoqp9m+tM|*esO7S5taf)fv0-qGswgdh-h=u0FGQ0wHu$r2IdedZp~j)S9$jbG4| z?lZ@=L6H*cJRQS8z0*=93uDtLr)R3~a)W5JZQY)^g+(8MwlhcTsAWA2guM863Ac#v zjS;W=YIfq_E+ahZlt{CX7r#-|Ddw$%m7cXD+47 z3!1HSrNdCsZ_i`HyB<~hi@g#24q2B@j_{FBf2F(?exm$Ca3(jo%`saN8qwBsZwl~X z@-+qVvct_0X4?d|&q#!iS zyP1;q6aa&q)>ez_W0J?MXevhghswdC-!iWD{!mKX!+i-2QFGDEcVXS)bn@30x^)$g ze;JK{T64UXl=my^Zb$);yewe~^ zxZy$YZCNmGs~;UgUl=u$z=7LD)4aHgM*!63V05Jt#wASeX8U(Xb=sSAGGQDO!UsKQ z5aZM+Nqs@k){{oXj47X^z2r&e3i~cr3P;p1Pi?I!lOmAk`pwb@w7?H{RQjPbDZJgC z2aqdEd0$Nm4v!Wy_gOcN@+DXhKCmFFpL{`e_23thh;@Bdc##Os1Pxm zBx7dvs*4iv_>p={Qd}3>a+_A^)8*O}qI&z()EQJ1xZ6o!{A!iw!1piZ9TXL0%sTN(`9j2pZg27H;6NVa_oN3LB*QNiMB=eptS zIvH?u?#1#k0r5zPwB8Bd_Q|J@NxDFaZ`8a)d-HEh8@N%T5pwNZ4?J{AM$3XZuS#bA~xW#q~2lo2E&*q&FuCPtQH(DE{cB* zZ%Kyr%d8+>G^3w9_^limSN|-Ac$MyhTS8+TBu&La>|Regb3Hh7@Y^miACCj>p~vzm#ED=N28Bsiq265$F_OOFLGfDnSZO}HS}H5DM=BC+ zWun+PWuu8^h}2Dm?b3iFTI?z>UYZVg!*k@IBK#&2+i-CvO7b*@-K$SLlGn@Y&bH^B zBwyOjcb?G;tE?zoD#4@7?1QEFG$)yb=q~7hEp9_0^Ed*Fr~{uN;#dU9E)z6yLu8r` zp^8zBDKHy@iE}ez_gxZa?T^IAZ@MM7eYQc)st@ZGK01s|FcLCzgo>14%qZQxUVlRv z$8ZP%J0#1AF3V}iv>oqgI|CWn5bK7e!b#cWl30{q6_f{uBN-ghmW>b(UZJxICF#~q z(;zDKnJ&N?41Q4)Wl4A+MLs%o-2OwtUkHPTVtf;(E%a-0`xv!#mjeVo)mn@1*q zE7Y@ohhHEjG8n>bl$N9Va~MnX9=XJq3*YctR6>{`?pc+f)p!m~&vfct0NjX$kpl+E zaD*~p1ebN?egP%)m4zvgo1U8LEcItd88E{5B2r3sxbl$=cu%2q&MC)2eQyi$tY+$e zi+$qv%R|&QJ!>eo+x>VuIo#x@LgwE?B>|61K`CFR5UcjdqF+|$k->L;JE7Ho7I!{8 zO++E>e1!qM@9zK9j6dI~3L#`8wbD@hBXA%&mNC6=yRP!fO}faUr}Pgl-(f9Z<9Q@i5JS{u z+~gnVqluHfg%IaUqBx*Vqb-5UME#lU!WK|8+fUi@Y%bWXHdoZ+)$N#1+)zi=K@v<{ z-RchzpRU%&x!cHfAP9PB{MFR7+FVKB468&Z&=3C?QZYz=Yw`Uzq{8Fr>x<0yUiRwAW1f=vMLwc)6EhB*ejpMaA$B)D zeQF3eaqhiots9(TM&g8NedP3{rHGzV;B`m6QPKC z(#%V+WQUFC*s-PDOR@#Bb`=Q{|5a34d{6OCyfW8h23oOuLK&I90QET$n}YVu<1*h*8Gr0w zC!9|o_N6+FmwRa}QPEMx@IKs)1)&s$rhMwphQ|v`!S3EFKr+e9b^%=6uckbF_@9;M zzw24^2E94h&a0}z)&|D$k<;=`1Jw@?#vT_^1A^D^npnY|7_X3`1rb;yk&wwb)PqAv zFy37zsd5`9QDqS|9iEM`5u!(MA;evbemP^m26SGa?g`%gYO7wUXmK+ouYM<1ppMc< zdAi_^tzSb&SkLZ5JXB}jUAr{qBux$3XZ@%T~JIEKBO4BVF;(c>q5AvPWMYTP^Z}pO}`EmM$ zW;@HFRsf``{h)qJyJ3tj>j=K+y$Ursdo8C&XsqU zs%X1**CEAdSohwC*|nv>m+pmQeHS05)#x+y!UHO)Dv6@V-~TBbS}vjX%{yRfxrqBk zvGhaODav4gh~V&trDlXRZGxZGW<5lqtjFX2J&iZZoD>aU9hsov6CI=0X=+`43Bq7A z8_9ZPltZ_Xc$g}PJ1kRky3?JlYmhIFb+ec1%w=soYHDb_^N z{KNZ}X#saT%9ugQjqi^GZx=z^)886F7YNi$(EDH2RQ5j9lHcAA*oi*dfvfaAUKQF} z^k>IA)Vapm1tx86J@)QT8(91 zCKKk&=z{_YM;|6i=vb$V$3Mtj@v}{1SYkAD=@95VL-FXL6=iOq-zPzo2-0;WDn=SO?Xo+b?efgn8II;b z*OY}g3FfrkghOVuPYV>E!J#s3fF>mfkfr(Uo53>(>APhYSkUmw6#ERE_X?Kg^`{4I zMpQbjHTp#Zg<*Iy0(~8%{ahT~-$mkNFp`tz1#}?knj|4Id?|ssv@|93hq+<{8V6w> zwLBu7EIvFYvCKj&+ADe!!qNxnfnHQ3>EJPKRnqrGn@9>t221p)j*&9ab80yf^O8aH zt7sBL^G4ju;pkXazXe3ORf+A&NlQ~c5i$Fr#%uT->sQ>C34%G>&&oZwQFe2v;mwol z4rR1O-*I1m(sjcbJ3#(*{&r*l)_3&&A8cdegVD{dFIK#EB*ag z_WO|`@sIGS4y6KmE)D3|lMv6Mo#vrW_Q-Ke{sdpCU*~e*-85LNs4oBxw~pEngEZD| zg!GljMXD-fnAgwJFJ>pn z{&c31YIuXo;RsRk^n(M%rQ(S7>N&Xf{ZqaSr$X!A&A5}NkxJ=IlubljVZ4^1s2&+T zE224s9(ABDBbIDVyix7(8koMn4slY38xnOJ7M-wpN_R91g;lME#f!zDA%mS}%E4=hf+lOKpL~x5ouK|Q^fv3OQmU^?E-zM__ zVN|SO9l7r3hOQXm87*EIn8dr?TTK&wLIuPiXvYQ11hXlaS4zzy>T zVxVh_bXy|a<^#b4NDv*ss}e_jWMuOVMKpT~9juWuAr1(N-s4@Jean3lF8VLKg>?KK zB;@$0=mJ&fbYrQW5C>pv!G1mQT) zLOi$uq*8h*UTI>??%*qw?_3(S!5D6g`mF-0 zUL)b7-5q2IxyiO2mg}%v{H=Hl#gzR%K=nBWbE^O^@NF3wYu@U-?;E=ffzLbNP@li^ zD>_B=4C!$i!?lUhZWg)tWDcb2kTZ&F!1c-=tMlEei^NK2;99hG*%>0jjwVOTV4*>* z9GU{(ViL-Vm(4O6FH=^5FIubrH_@N(BUVIHCs`Y9p`Wy)Obll(q%rqK8xmkWMK5GXgM#PP82 zFz;)4M|N2=5KCeh7wN_Z5EzlCSm~{*AHk(|mFJ0o_@~bsp$jGcO1ztSmoRm-1x}y8 z^PV9xS}K-51pn;f8A^QWp*w>xDgkm%5mhYb3_ig(N2J1)vtSOE_0Mj^Riw-7JtR`u z`O>M~?AH>RwQfjYfwr5kW3GVbzeez zVqKndOA(O6+xjW~;Z#~=(7fX8V|`%&TQuvSdvH*G}XHUbxkmF^&J~xb#L2 zjH)ZWdzRpZM4#o(XZ}y$=H)`upB`R)UBael8k9{z?56{zI%-6Rf{fV+hl7X_O6|ZO zb#bwBWUC+X^#bL}(}4W)G3;%QBeq%WGfitEo~5gxeQg}`^RGtNgSo@y1u-9a9aW<6 zP@LuAH~Bb;U8TDmr7*%7n#+fyo@(-Nbq37H|Bgy#suZNlTHms}q@PZt*k|xmxt*b( z_c;t#lh#xyyYbB5enViGV8P_5<`~j;$t(BkXP=x zyB?`1E(wNo%a$yG9`9wdDt3w&t#$PA$G`>D#x*DFY z2N9Re{y~?2jRt6b_hR)`UR6JO#(%BTtvD;;83J1iGS!pef&YHrP~gy~Co9PBdJN? zL0-AOf_m?NX!mtX<{FC+jU67lufgz<4{i$+Z82Q_V5#BB5}_rw&0x;^$#^F^MQJb_ zuJ%fIq-iM}s{X+5<^57S_?wYJ$#Vzbu$LL|ViMGTA~}#A@=$!Y=zUduMQQ)5@K$4? zB-bJ7aahpv6s)k+t=r8{|8=@A=lg4U(de8$v2CJ4-~v6s^pgEytnaZd)rEMoJIFwQ z@GcDbD3Sx?>%>%CL~&koUsS}a-?xI#aib7fifnQYc<-#V zP+Lxmaj!JKmF@S$c(scqDR`d`LGXwmWqLoFAhKDk6C6m24e#%>UJS?g@@`|NG0NU$ zUhOw^>ko8F@lwb52zR`VnDe%zfT1yp!N~e%lSxIwnEc6awQ_(r5O&4=UQ)M_2uHpT z`qQO@)lr+;wduL}>@??kG{?Kkhhv%7A%PTR4&=@y<5>>5w=0Oe?j0lo&r|i5{)i9T zJvZ4q%Fa@>KnBXq_nq1A7wAaz>9JOt)uuu#&mA~s-=i>eKqyunuDKh(=Kdg*fL-s- zsJ(>Yna&XEE*Q=c34C+X8As`P3ZN}(jd^pL_JQSFuFXi~p+q^qo~ljut^!SyJ9fjmlm`)6eP-^?-5+Zn{rsKbc9~Tm zYS3WZ2{MA2q+SPV{i{jW@qzlKbVskzI*+zs+{aOG>@~o-IkeM1uf$6$Xe#XW#l;!$ z;VYDw9()F?=~|rilI|4);U$1D(w1iDt<>vY-?A`&&YVF#PbN0bB8voM3Er_Os%Ficz z<%3W8JFL^PG#-&yB)bzi#`>=iBvdAYah-a)tYwYHl=V1>q`ckqsIVX1rkY!cXs98w zxlCUGn93hHY6=bZXTpPk>Y87LcQ9Bjhn?*DiY9VvdDIr&Oq0S@i+5{yJ0*AjOx#%M zYtfts=>(zGRqGP#IVLt_791%1NKSY9&!0&mtDt+Ju(-kVO4faAoDh?1O#v^dD|u7?qmXH*EOU_(PQHf28vXSeW=1UecHcx2(>+-(c`N^m&IVrQy#h654MGa}{b&V#L~=7u=z%;<0?^FUUVU^jr?@_p{L>?^eK zrk2~$Xwa697|Zpq|Ad7Xb(6XOKRVBUew+aYfdFpw^RDV}8iI=7?v{07@PuGHNYtUp z$|EJ^V=-dBSx^=m{+okLiIx9nu5B%o;b_jR=cRp^C$3K~-bW>mHkKGfNd0&a zfFmWLGas=?7O(dipSX_VmjuUV8NYOwQeEubXOx_7bmLNKi3n;I6~BFJq|jzNy?f)f znu=ymMUAIvWWLwzV(&x{zGHF`ofJ_~{LH9n<>`mp%qWZ$HzQxQQ>y_dFhPbBz4x?E z(EA~Giqwajscx5XXsqkvzvlzgGrxr!vx}+>JU!p7AX-a(Scf-t`+Xnv0^)?Jf>@F& zBu*4V#Hh2C+-c;jzr^Ijw;_z*l}Ti5PV)P3B6wt>c6Wv|lBY}A)8YS%SjY39Zo;$b ztD+MOY%-pXQ>E2=IoRqm2KRx8t-cSGN#?kgc}j(&eX7ZmV(O5BlSiD5Fdo3z%SJ{Z z;!KJ2->BRi6+e#CV_3KHk*<1n-_G}*FHH1atoJ1DPW?O^#Y<9SQL*#7DpA92Wq`{@*5&}GT{uqdOVCjCR>*6pG1+q zMKYld@YYuMe1uNzBDYa~6jv^>Y_L!funH)cZ_BCh>HlR?OR>@G8w!irBgImg~Q zOan;b7^Cm=G-+D%DF}onD2fCnP--b@^sT&QB>bJQ6LsfdVV_NR`KJ$2RtFWA4Dpc2 z?2$2%^rBZ4cn%wk|A$+CGykhl2nKWT%J-y7IkNCkWX6^Z zE=KMgnA?C<|GhU3i3DR|n#tG-1O1VX<);o)m8d9#V#R69;3Q>}|!( z3gXqQ32wIJSF6GAG3uUHY8)%;K%FAQymZitTWp)*6c~$RNaeM z+Q_Z$ls|99(-smIO16{H85;it_@`4~(MTFN$cL7-JdJ=_0P|r#rkj7d%h4OiE`D3Y z*Aur3{E6s&3MN%;*Khv92RW5BxDU6XiM)3mk2SIGeSP;}b^x$qqV9y{;QpTgJi4P0 zYT6yBAc-q=4zb?1GfUTQ=Ov5}^VGI3Dgfu7h9ILF$RRxEf7R3kc6U!%0AgiHwFZ#l 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/top shelf.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/top shelf.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f1dd19943bee7e84921bd5a8053f66ad64c132 GIT binary patch literal 102829 zcmeFZXH-+&);5fYieRA%C<1~MsRGhVkg6iR2vVX_r3#_9h?S05=p@p6?_H(0gpTx1 zfDn2DBqaH`-*fJBo(CA`IlsT*4+a~ulB_xBHLrEexz^sn+L~&YDXvqHkdRz{_&`~g zgybR>2?=R0`T3*&%yq!LkA9s2>8dG`6u_8Qj{Z=#GJ0sOp+UlXbWKij=Hp8evcHBL z{aio#At5>Y{S3+3qu*!#`rmibzhAvb_5JMM*QC9F4YUnqgOiXbkUUhrukUqcZPIts z24TjqX#@71b||UlPPq57&*FD9)bG6HdqW}ZdPC@Oxv1oo@1&i}tVSxCqHn?s znC{+;`^rYgfLn(fvO5F9*2lV?J;>3LO6TCH2ovm^#gx zX%GwqHb>w_Jg4Lu@Nm;H=|4H^Z#TRqiQ4#Y#*qZlQ<78V@6V1)|NYkg__j0b)Bn{tQod_cY)`kE zD&7B!2%kA}Si{->8wp3>Y{<{1P&W6`8Tnt0CJXYr@PFd#FMINg6kgl5T%8`i_HlOqj>`(miY zC*}iAG8>0I=JPShl5?_!ZCWag_`b-pkve1&N^Gw#6;I%}Y9q>e{0q*IA~KG43J#%MD(g8?EzXC(} zC_mMJLJ=$Rxt?`qpV~c7eAuf9if-ULSRZQi+CTRv|8>6OSrRGGb<_Zrpe37Y=D+z0 zoT**^TKbnF6HN&4-BO|Aj?eQ|0c&INf)HPM!ZY6%lj#YddK)0&g#0wg8Kmb6q5 ztxjuij+;~D8fbszrqgu5z)ciLuYX48^eEE4PgXKV)x=sgEp3K~(lD;z!4`-t`@a z(&A96zN!R7RXEZG3MO^544&goXRY3w!j$73mG=OLo6F0}|BA}r7n^Q$K~OMR5F|ni z7Jp(gW;4+oh)UvSUhSC1$H*{=D=m?7TbN{QANQ1E*@T*^Eg#jruCpSb`^J@MP@h9B z{q>N$eaxa*JZxinnlOh1PEWZK@h-@dk@UJw;ecn~y=Pj_dBR3R{>}F>%+5sYlFWEi zQvE^ncPu!#2Vholk)}t2oYUa&I-MFsO~f|ZDlBVt)lsRw0l0u()&p=2F^j%-BXUGm z6nZr|myJyM0?S-aM2%dwhYVY&j{2rmDrO>h0&telp_(QS(&x0UB_hG zaMRZMP4uRgb9ttOoVy)anDtw~bZvBDQEyg|o*QhuXP^3dr=UU9$OR8fnUGvSo&Rp1 z+Bi~v|K||k2FYqy$5AH9{6n~4|(L9nV*!1;Hprr?@9 zT>$-VwklrqtwK{S@X05h&NjGG=8zEHI%fIHNJ8aRt4~>ba0zO3O%}LEW_q+?J>1#u z>fYU`lPAt*R&L!r`f?xsVcrv8ZhuX(#M2o!WwLGu^_;c(hFf7o+cc{NasQIVUsj@D zTlqFGFREzbIB++Bz7zPt2S+%cJXO4&D$+Sm*FsI%c?K&*iTn!M?czy7EsaMKkiJvn z<^*J8AB)#QRNwF5<9Vwv<8ZAV8Vp-H_w>f`V7ykaXV?Jr2J9OP*$PP#e{q)43Nj%_ z^=2XDo0c7tPbS;XhHGoTf9s=BVXWG&DoXM-)e@KQg2Nx~*oca z04t0Q_+Vu0Ba06Ym&-{|B({)l(Q4so+^z}r_n$aEb>x(Q8ExFwxcP4{)t% z^G0;x2&NVS5B@grTR0wz#v$^)zi~x^a-o%1OasQYLcXz`3HBAUE0RwU5gKI z=1jr5c~8PBse1rQ(U;Y5lUDSYxa98x;{t%|=q=1HQM09*`|YZL@~E_h8vV79gH!{6 zM~{0>J(@7>4Bln{r%&Q$-VSwepK$*VW9}l*aDMxn6AmHMof&(pHl{U6NV#-X<*v<# zk8`HU$t=q༘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%0AgiHwFZ#l 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json new file mode 100644 index 00000000..21e50b6b --- /dev/null +++ b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json @@ -0,0 +1,28 @@ +{ + "images" : [ + { + "filename" : "top shelf.png", + "idiom" : "tv", + "scale" : "1x" + }, + { + "filename" : "Untitled-2.png", + "idiom" : "tv", + "scale" : "2x" + }, + { + "filename" : "top shelf-1.png", + "idiom" : "tv-marketing", + "scale" : "1x" + }, + { + "filename" : "Untitled-1.png", + "idiom" : "tv-marketing", + "scale" : "2x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Untitled-1.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Untitled-1.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee0e6c47f65322d728cc8485097d82fbccaac9f GIT binary patch literal 271255 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%0AHDC1h00i<`;pmP(?+&Ba)V4N)=Yo0nbZ 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 YcewN5P>7py&0g)Ny{>z3yH8yCUp3B}mjD0& literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Untitled-2.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Untitled-2.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee0e6c47f65322d728cc8485097d82fbccaac9f GIT binary patch literal 271255 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%0AHDC1h00i<`;pmP(?+&Ba)V4N)=Yo0nbZ z#c-EPSz$l?^YVsyqp@wegf<$g`lNr`?{AxzRDk>(MK_(X^C0HM36|en)xKOMQCG5I z%u+_?K8Jxp_yo}u#re9SQ^9+cDlclsE^g*#T#!sl=(S$wq~7lX_{Qr2Fmd2#5$*Fq zkDAwxmI)lZ2VIL}=Rc2`b(agH(!ga22-|)LnlQB<{?%-1{TXmC8etp5^HbujP4dO) z=YN|fPZGr(GiXl(AD8#Kk>z?pmFYSAO+`ge%CY-VK@hFls?TB8`dFGK&C&dE(ueIh z7!!%J#w^hsA*tfXqI@F=NEX(_QdM~(4<`jO)riUTx+$_EwJi!Jt(>`w@y75m!?>kN zt8mNbMJ%V8VUFvcHKB~0e3_Q4dPrvMi@$>_x|BPrs}-q_(%X-t_Sf{gCr6*bB&zQ+dtBia(x5QT8G@k zkfOxa0pa|TS`@iL9tF^c-CesRuoIw68SB1%?N`&CzO}|^@*t^5XB&6ZG{-u+|F#fP zGhP|b00Tehf>;4O7-q7c?FLHW!4xiP8v%20a@6Je8pZJ9Z|5j*vw4-W*H1fhsUJ5L z*1@45Xgr+gH2km$Hp0yrSHn)?9aQ#80S>=GNj3%|Ul z_Z?x@IcPbDpH=&IijpIEZ)(c}ov z@Gw2=8l-=QQeHWIWJ!8^iI!rYA0L?a0x2N2&cml${J~$Id|N}FjLgB;8f6P6bMq_E zM^Reb)_!IU_be(z~j)!u1m*i5(57VzL&> zQnu2*Ysbz3@R5e(5k|AWYbR|fZs+^$tI5ku{`j~aoKJrO8??F9cgw8F>Dn~gi}E(g zdh^30+Wn*^-Z$4npvFcN$Fx!JmppfmF^Y2}F8wB0S3Y7>Om~0Tj=$&m#gti<$iSch zn6HrWMyGm#XZjUoPe>g|x4hSYL+Kw)!r^r=b7UF;75d!t?9AC`{ooo6_x^DzB8Mjv zJ9FGmaJi9RIazh!(})ioTVfa%UL(kYj*O+4Q znl=pgt`!M)fUZ{Nkk>xa{JUfs{P=mXNx^c5FRG0XVTcKHY+SIzpR{gmY3AzTN<-r` z_qaB-L(8gAvGUA}Zg$waR>dr{FK`y}KVV_jWrQxzk{pW-7o8?6yM(02PYZc>QZm>_ zScc`dC_m#kQjd%QKY8%UCGibfCH)FF>|uknvc^3<+hvb5&quO&(|~{|?2;Nea6l~2 znsj8e{goHsGc1dD`UDUQ@GElaZW2zB_szYjajsjYct-#dv*{&T2?!}rJ%L@=CJ^cE zErO%7MMkJy>f|rftbpKY5S%kPeD3vq5WHs7rITA5Fyq{cDKX2xVY-!*?~BKxWZz)x z8p6xbdKy)ep8EEWMklT%r3q((Tv1w_N^l9;A%ik5;W2XDb*+rBOL%4do%+&>W2fEW zRHbHnipZS39~{&6#b9*f)&fBQdKr?1Bv%mMI*2|n+7Ot>cuyuv@v=f2>vAuwr#fwcQ}4rUhFaKJV&)-;1=(hlaL{^$sA?7Vj>+vqG;0HU|51%yBxl9l4XXny9= zv84+!Z^JwL%a5{Wj`SM{-l4p$fxnmw`P&tevRe}UY%~Yi-_#IL<|-E$iO|@_W`!Ih zY%Pa@x7^X5}Z3k}LZM&@$)i9+ys zU$8Z21P@1A&}gpa4{TU0@k(Mow9&Kk*i3D%x`8OZVthMJN~s8qQO771-(gauESwlm#>1}PkB;hwg99Zui*wZX7@TblTXl6B>-Ptp*>0NbZKpgva5c2sZQ0pB5}q~$4W91&&~fsgaJ6~Dj;NRBx&H4W)GFU~=()B3*z_m5 zXmU=<3H26FmXSiLGI3_pJy&yq>!?A{CLKgrwtkS);S zj7@K#jkV-*8a1`R=sMFGu@m7IFbNlx3dov}$Wb?Wu@B-afz#ngEXEWj($vgX^)@30 zgjI(1w7?m{Yo1i+906ISw;6R^Rua(G*w=GM&fl6t<-hYbMGEQj{9SA2>!bxi`Ph6+ z*vjc|>0g!8k*|b+>G^79@}C3CawPRarOv9}`GK)r<1E!t$NV(x zjApHrlg|~oop0r;7*{1PPEgKnu6kM(;(CaEYxP4W9@~bVRGlAXx{YtjE$!rhJajQ` z7>!R-^DbFJcsszME zoU_{6wkYAR8^6sP!BaSkaL^a5OT<__(0-b%zy(F=C zg^T!(;lH3fmaixRYotHJeNA4e{w)o<=1-u;b0Ig^PCL@+A8x!h+Jc9CC$IDkeJ3xh z`t3kVjZI^F95qt%g}^P$CNmReS@3kTuB<)VKpja50qYIaG#Z}$5uqHm!Ij(~L&IT9kCh-Er}Qa$z`j8S<-doyvb517Tffs&u0o?KlZq|&m=VS>I2a=54-TNDOX%%RIdT&6`sdOFSMZ9f;IzMnF zB>y#6G;%$rmD&?{n``yS{_|>?{KLe2Ijnm5i#vq(d3X2f3Ny}KVvHa9)y#ED@&Z1R z`s*?dwmgYJ#MzVbFBGC<8OXq(21w15O^1Pkc8UR6ZynF|9dx2p@Czqs5QDT~)*BA> z@0H#nCMO#mO79u5&%ShPvg4Q1O-Hx4R5dm^q80ISJ}BhGOllT*>&l#;-FO8zmTsNG zyqVln<5)IM8OkUlc6HKZrNs89BPnc>=B)kmN=t>*q&hvvG8E&>0Bm=2k?Tb^RySLW z*=LEidHRw&COm}+ESk_gN=yMq8}x5HWchv&Plxx^QZs;*v>C)JE3b~IkOySRYNewn zV?_>;SAN?)0xj&+e`M@K?+AhZJwdr`1+}Tqt{9C2U$OdIBf`1SbE7E#KUOGBzUyVh zoZvRTO55F0*&47`b}P%m&1gO&Ua5o`XVusrj1>f06om7Zp53<5?0{6fP=Eo<#)Im0 zx!{A!VGl6E*bLODPX}%>#HoN){bCS%FRbCZAXy3zG_{%jQ7{!_c`uuS<_$|5+_V~9 zB`N;z7-`OrCj}3iZE1tfWO}+SKcMsOg;&AS4KDp`l!wOkzR)1Q9^O4iQ_Y*r6~eai zHb)IaW`*86f2D}q#GJp>a@k&TgQV&Fyqg-cc9gvN;&3rwCR*C?t3k|pl^`fuG<^z{ zT}l%31Vo7ravCJ)8PA_?nF^eRPaBD`URdx{CAk^Kb%k)L@~W5#6xqy4jP`R= zorK$&YvabpiYz58S(W2SR?!>(S3148h)V0*oWn@4aOD$#!*M%&lrq=C)(i5kjVjD` zJQE6Id%7DDjhS=Lb`_$(g-AiCn%8PR#l0=pBu@)K^}Z`onHGvpUKBL25vQL){vovh zU#yk+_j`WT%=({gQ2&b%H`&p(ij!VnOr%^^WDKfFoxTLt=mz?7MN!%{GFyM+<;` z;ipnI5vAY{e@sk3I^W0`S2J(^@H(@hw$9+W4u{2_%@0R^U_7kC zU^Afk06m}Ot^|&e1EA4OjCeEF1l_fl;?^cu96g)wqdA#kn#N6!1N#$*Vpr(K5MhPl zIAGKL#Ky5FwKZ7QrVb7)5JriiPBhb+O&R1XepkttUT&)Y3l1OoWR1Y-us*wHxc76C z#x-bE9V_?BP!l>_=*kEHcI?2l-d1ombQ7y!FU24sZu@2$}gsC}`vbGv;pSy1%V>{y~g{?NvOX#!$yHE{TZ7A>9b9j0k=0#pad|(@$0-m9`Y<$DyaRLNR;sWa(fR_3c={o z>Ch^F-*Zw{O)Oql%t>Q+rDp8-dHAI`>5=NF+fcVO--ez;VE(RfYUL`@&7NbZ9hEcSLB zuJs?jA3a@~_Ot1N6)Hd3EDyhL$vvt{9=vCqTG|`Wfl*E7$$V#_M+`EqgJWY`Amx)> zrkLEL9+gM3z`AeQDH5PpI<4@B-o#o1)7JvJ7^S19Q0&7m*uydO=7m<=do3WD`MD<8 z+okR_Y9uw1k_yam-oivJ6fbS$mc??74hZL|n3{76d#k1we9PFskS!oJ7R%|L^%af3s#x8zB%jd8lGHNt| zSOsG({q+wp@jU+-y@~Ja6mjIALd>@Eu&3WqBcC*fWPP_86J!{7WnY-z3FYU!=f6-N zlv5k*DwY)8PbI{Uz9)m$ z4~Fwkd%f1NKAr>wMW&K>b4m}^+-kL8dREMkHABB@TD`+5hw|=YJHn>US0MlQEPyx@ zS6xr@vxh|H8K#^pIyDIecwZU=Z%otGy`_RZ#`km13lk2TvMx!?Rkp z%qb9s5qb>r={Ab~47OCMX6JRyBN}X8v8=Mc9fl0L*-wZy$~kGo6wCgQTy3wF0+mG$ ziJR(~%fY|qj3j)aYMA_6{fS$Y0E%aO8s~xF0{|^O7@yRX_U-XFB7W!X^nE#F^^^MiS8HFL^nNxlek5S(@0_|~UtJ1*c z0?bz?*Cj4w{)@iGdUk-@_OixyF(JMb@2Z!ssM>YCVft|er_NKYgFZ9rR{t>CO+hUp zyZEN&FNZe=v7$WYWUwXkK$#RpYgTyVtZz3`7-ZNQNqfx4y95y8H2|TOFHjArCND3{ z)TtMhp4}Cd0ojo{xrPaD$|J{zU+^@AF?eM&j(IcQv0AmKe%6zgnKO1Iz>#qOLrbr? zVw_@BtTHH+9mX?eJoqpp0NS=)xTrH<&pdKaxoLMX6?S#tcDC16#N0|Hwye{CAkjL~ z#Un3uuM0-lnV+;WPD!6vP15P9(q(4IsuFV9F5wiBPkT*CduWGx*`ytqtAr1&)DqKN zqs{d+8+|`f>vKP!yW9>R@uWAUM7CtjuL^EF3srZ*Z9OG>GzVl(&F2<7^Ena0)62~q z1qxx`IFX*D_Cy#`#*(EAsebZLw{x;>c`vnp$*W+pB} zIz~u8A-6qQN>9pV#)eCLF(qzz+#VepI1=#W;P*NztIfYgppBk(7*duxYKo*uu!`S7 zv7P^vOIR*#o9= zt2cXPhb~pM@>TDoI((h9fE`zh)a@;{WmHj`IcP(_Or%8>M-m1Tvnh6ur=S6-XW$@i zYfyll_fc76S8l*=g;0WI`_~DqCK%LM6~DLhV6V{GAr)Zm z`&$l_RZc|JR4EHMBiIx|oXS|xt~qgT{<^-VT9L-AY=_5kzFFKYPN}kfX0pgZ-Vaw0 zul`e6y@fyTW#y{Kr|nqf1))x=8t~&^CwKKiwuom0!OhE2R6m*)uI>ZpSF61S80acH z1=7`VDI$?w^VYKs1r9a!fkfi-Va%|XLE(%bWtwws={{-%;WSTAwWPPVR0-W~bE`ZA zcqcbHd{=)tVVsm^oSo}p);m*sWCj?JWG- z15+}q^p3dv%LO6cbN2hfW_3mVGK(;bT=oY>oe!asZtdUuK zn%jCYbi3;!8m9C;8l|TZ^-C{ZKx^jE&8l&6AKZ>aAn`>g`QC&@?ta|N1G#@MTWdns zBXxDugiW=hBGhmCPF_yle6O=nPMO8gJ;rg2@XMth3?eQ9k{d>ysU$JfZwvNp_c_Pe zOK#Mm({A?K!{1Fddb;qcziD^2V80~J3_$4$?-Lj~Hf*UDI-69@XCWEt0uYE?lzg3c zW=GW;WpCGyiZq{s-CQR=TcJh8u(hH1U{Ht+XVDn>)|^6-R5V51>=`EKPk`|hpl-Fa z@nxf@VhE?GpjSMLUiCw;iWFD~Y<`yjO_X2X15;2`FN7);d7eBg>b+jD+T|GizvFejS*aJf#`#%r|S-^yn~ zUS77<+Rb}dYU}U}vlOpjmiwI|$YkrBQ7!`ufz8?KM;fY@f;6P@ooP2#ZOeb*s-TCx zI~xLt*DB4lagtD&=6*-ep(b{d47+sbVu16*U5hv0Gs0DiNQv}{N|jomC?aiCN)b^*7XpMNDpjHg#Gan0pfrI*Mfx;Y2vNE~(L@9i zAwZBoAcQ2Of2niFbNH&fhUYosygSa@e;6w}J3A|Lec!j{oNKN{a|DT*N6s+?ud8Go ze>gy6(M!t9ic()zy5cx{3sa)nhhnU%>Dc6qVqqa%E?3st6z_K-%3-% z@2L{T`ExIH&{^Rf6My(z+%vw7ff5>-^(6!cxuuU3*X52{=ku(TkyVTd9W73>kh%TL z*{K^^@FUypDVYa?Jy_vexq|1_?dAv%mTaX;1>o{f$B#bU@gsD;|vGysl*MIN06@^r~on z;r;X=a#3!yM{_VakWW6C+ynC5v>%-wdb}rv{_VDMOz3`IQ9T08AagvfTeL}px4GYw z9Mfr!2P+7BR_h0Nz12B2o_f@t=DBY^yBM!Onr=TfdJDfoBs(0Le){}I!LGweL3>h! zdU&?j^(%<>RBNc0e z#)>O4m*mD#;uLKtoG+7ylX5IWX=P9DV=rufp{zpD9&;x`h-^26gI`|l3(VP?@2psI zHoP2D#$`hpY?YYYG zuym0YN;q$X3G7P*>P^kjX!}4Ev&1hrI`V#)qOE4efH2aegw1VP-~lfNK25hg3*SbX zu=)maPkNHM zx5iCDs9)eCQ(lJWeYD(1)%-wCJ~CzH5d-o3Vst|;sdWZJlJ z5oFtI`HR5W#dV{kt~Ym(`Zuts#d;Hc!LA)xT~2HgKRZQYBej-bG!#|CV~R{?_yKv7 zFAXn2vQNE3$Hp!<-$+cYw|QD0!?5bL|6pZ#myg0pn5r$i(sCk~64{UJjBYna=k4DTJ;eONkW;<+tlMO+55` zFN^fV4Qf7|@@?aB$+;gSM+{|cu!C_iZ!S_4t6v>Y-t01mFZ1Ep6?IgIOU5^ub?BHl zvZmnU8)Ub0kbW2nF=ku?nkyN#sxQG7Y9F!3-t9&)D1q7vs4EJWl`}}1*g$-=fay+e zp4mWh6y9R@Q0pKo8)L;mUq9if9_Xy{qG^+rxn~a&uY9f z_edVO;6>(7HRqxDYmEf5J2c#@>o05$735r$wU^oy4XcM#$0aAc`H5VAz$kaD79PWK z4oS$;SjL<50nIA{nZ3quAatcq6!|(V8KLK~r;igm#pg~j$aC3+`a3Z`qu)nAHJdxV zNsf~oDbrM35PB3Z)Z<0^zPoPzn}85@VKCOd?s2L>dHmpJR+S^=JJJp;p&}C$;PC4R zpY?K&nWea~DQ#t?N3A4T!m$*Bc?U>gJwFOd@(2@BZ4bU|tgfNyO%}#>M6MM)e0~sG zk`u?%dSz1N`C*mNm$($gf112EM2NAl$7EM~H*|W40#GajQoAEN8D^P=3%oZX@8a8A z4zp_tNa5T(cxV`*f^ltph_b?jBTjSV_?_5#RJiT^UD1Gk&LeEnf-bqHw5q19|7~jP z6s|%5b0y_jffODi+aOENS#%anppM~pCE0>?UYzswD`HsXRzNc}$GEA7F5yYk6D$uI zcjwVu`gX+_ue=N+n{4EI#>e6*lB98GH!?vvkL&xY2n&7d*P9W~ z>`H5a9qzpT>wbJkLz|m0(o>f2#`L$&Hmye|6d&yqr0)LS65Qvxba>rMf5)7zIFuxN zRrz4`8IWCbEwXg~uLS+_n1-KECxf6V%$PrPjEU%y)X@C;urjTK!&uU7`LHyNLK@(-l{?!$NjOB))m9mFc;L zI<)Pbn_Di-t5bX*UDVn+-pF*COmPIo$1!CHu6zR|Dg-_wZ)8rMH1cn% z4dohF+N6%0g3?=9YKZU6a`<*yX2WyH4!$WT5BRR~=DGAa)Uq!7!dg1f3nT>as@Fz( z+nBCt@n(HTigj4}%&{{aV@YOyaO3Z~XX_vWSBh6)vlb_S;JE4QFIGU)brst2CqV z!;1!dn%?OAuGqc%@LVtr10QV?rNyMZ4*5_xLD&H1KUXYnT@ldacN9s3Igt|Ya!Of8 zEpQe_&61g?mZUHMTeIs9E&p&}O{xwOc*$D`;}F zk<$1SdDvzlBWvUC`9^gu@~X@!vD%Y*vA^t0vBPpNKbn8_i@ruO&t+Wm`6G~K%(xTf zC!34=Tper%uf*jTBfQ8wzm5J|?1Mk)j+hu% zMd2gPufNhIzZZVjkzx~3-yy^c!6L8Sc-a~q=cUCM%3GfyAuB!E;e!(6lkd%9x6A7xi{)2bjG81AP%j-ho`9Y++)s)A0k5SHQKAux-6q&* zVeCzOeJpv4ji!MAR&HM8Vw|TnA(%tv7F{azG95hWga;cRAo)b>2hBiZhS*4h`iR7A zNzHJ~M1BIUCTcCMQbHSR>M{Jbc!u775tq=SEH57ok{zr9lW7SiZB~?H!Oe8Y);nwb zx12Gl4`<8V%~(}c^=u5tX!RbMBGQq zpc1Ls1$51+@$$sej#(=w@&Q3A#*gH1$9g>x`9pN-4k2^uR%?JOmL7)Uzb_vR zebzFQ>PsnnSgkD&rjnk^Mj=FktO3GEgvpX5QHl^d1_4U@K={;O`J6XXW0ZLb*`e!L z#Z<{D>Tfl1q1JCTu1HRV5XhS}7n3EouszivVwIo0ZI5Bo^!44c;iDKmUu1`8plphQ z;@(7!#$VRXi$fs2S@&(KXBL~?bdYwpA&x&I#`sg&FB>vxuSwaI&X$TQGH*&JSEN0b z5q;=+y^Eszaki6u<%e2`2AO`DlBa~Q4E*gK1%M0|(5S{Y~FZFL>y*$*1 z4jyFh`zif;icMmghP&0B;0R)ZKtEl1ltqV7LsXb9gWua0eiD`JaW|o}QzS|?9o~rD z@pA-$MwKQcz8Q^(g&5myq|l#-Bty^A!Xu5YW;LEAa;zAgwPAW)qL?=x^#R3JVt%-p zep?#~iEIf$=FJeVmMF5*L?TgLc~QIHE?zX0-uCkJ&n_)97l^?m_#aLkq5UyPUGx`qerHI(B+ka4T?nho*A>MWe$QR^n5>b1>M{Usbqiu&Bdrk)sQ? zWQ&Rn#6sWA51g;KIn2}uIMxfLI2X{g1U_)$sip?mRyk_2ho(KHje!nLI})~NXoPRk zS`uUJA5qgvTfwTmX5*`uauuPwBVL$3;ha&OX>&K95M6Vu&8x9pbUYyXn=-ACn1|_W zu-jxo=lrM-v++7ihiWP-b3&4Nn1tgf%NX8eIUW-xeXj{0i)HNzO5q=988q=XxzRc9 zYbJTK*Tczb$~-JSS@<|L<=XWo+;0fA?OGYhq(|>7(6M#ZO@HK!vbmE_3#RH>v|XjA zE*_2RzMRlCRq3>hbt>UTSBYQ03~> zw$)M6QCW{Ih%``JW3yb^VeDB}UMJ}ZXku!C`{+^pKejw*ziQ)~?;OXaXk0<`XnY$^ zLVqU?c~rvMwXg5HLZ09Eped)JP||KoTP>^6?iA;MjZ0oBw+US7y;PrNK@Y#Tvy19? zZp?In7pgF+5>$grErbym(d=LI~{WHr>B?89Xgrle2C=({J^M=t9K zFN%r!ri^z^#7z@96^Z#ckBhQwsKRT9Ai9^9>`XDK_P3dHc+7-b8^P)Gk$7 z*t~JCKc5A)ZP)U0FVBgf3`_KqGYFn?Jwp)@;o12DcWY(2)ej}mJZ|*zC{P)cVobTL z34%fI*e9!3bF(55W=|?z8%n1{53UA0ca`T{7qy`0^?^VG9{W9tM7}1JKNMn9SQ#V6 zm0Ve_$shI8Krm%H9B;)V9mUe(@rx=CoKd>rwDKCUWj#&k+HI&}l$44UvU<~MOrmoQ zq*72L7!DRf-0bqLq$Y?C zCnKcAe z5Ftgy-W(o0*Ihm^X&;+;xzuJhNxt zsIhzoIfyB76=DngH|qA-S5r?Dj^WQkPP}4V2mdY^TT)&Y2qqBib6|>MiS=tq(~@#~ z!NETA^i&qE$ySx+dYN-&C9mO`m&aACU|y=pGY%P=O4C{*oYTK);7|xiFFCF@^ybX< z;1u@zNm9JKhAhOQSN9-J5Rm2W4qPZCdnLrwPt^p_X+@zRA8AhhPKeWlrr`8E>;dpiGl}dORtQ1+5m!;U9PWW0W~kz- z-rCTFB!-RjH~~zI7_Q9>@KWSjDswPe_9^P6(SNjSxFQ}{W+R#`=SnnknOm?62GZl5 zB+;Oo&C&L(OfZwwa=Yav6lt)2Jg9hi%8ib7M|3Ao5Q=2MTb%nmdp*nA?T7h+XvBlg z2_3SadKg>wjo7>x<3ess=wlyhBqZW#r>To4ps}9IHm^r_w@3{dS)>VRGHp&j$%d@8 z3{SSI2)KG->5I11Ms2bKis@?5L^O<#;(NwNLnsgFLk`2)Xl~+lQIs;ndXa*k9-4&# zmngB?LH*r*%jHj1_p>pAls*r1O})lu;h6d>8@(clwY5}PgwY=lvc5r1DGL^|WVKqp zbX?HbRAzfD<@A`B;i9bgy|N5%=B9kaWQ3hdBhM*Fb`6^SbMvw~p7o)ga1D)E-lf9d zbG#|j{oeNQTfU57Tb%m6oB;gdMtEOy+*45xT<5)a_pdh2X zJjK7V#1Adeg({}{^r}||@a0osM&!rB$5CC1HRTk&l z$5vMAPGeUR9A4{BIE1V%(HX925gvD|sCNKY!X8cbc}`q}4W#tcNB2aL)=uc7VM%-G zS=PO9+qsZ>NKGf?C9y!_!^g3D@WT}o#v6yhU4;6ar*uQ|E0Tc_f7Xr;Cg~{Wn@bQ- zZ<0D86kl6iekxg|Q?Qv)A=MG`W}k(~$WcU2(O zifXGIUavKS!Gsp9X91S0yRrvaM z6NIRxPW=7q|NV3R{KTg9HFMst6q}#@^4ids%gsK0S5u8=_>V#U=l{I_b)L0a>~5n4 z#b5W^{$}o)IVVW!f4i!*!dG0&y!j{QMrt4E{EIMWt=0tl)R6zgV=u2<@m_6m5kl{U ziVD(M|8k8>BF%r%AcX9mYoO-vP%G}33f{~XK=0Me8DCznoc+75KPs8OY5HXA;;+HP zXDno(Hf;NK0Q=j+Y8EY0s_?H4OTAT8f6f*~e~O&Ozi1Euk(;g6|8gH7a07P!KQ_ElO14QmG;x*fsfXD$N_ZKdG?j_*K&6ZGqxexHV~8sU9HJ1EhL@RL@6E00Py|c?*D50IST_hXSwy zU?xfSV1t*&j6la1sC~0dNukC*h+Y08YZ^1Oc!LV3pa*B!CqF zD*#shnJE=u5WpaSK>&k3jnjcZ^>do=A8nPEgDWf4)V|&I)1F;NKZSyFdYC;o{-Z4f zSmh%S{+*faQV3c6vdKv%wk6~F*}PE!G^09H{UC;w0M zS4E!y*aEOs0TBSUpMwZs6~HR9B@TcU04o4ifb)U>o{Rx9F8|+U>b@f4{;&B1zzTqs z*{<{eSOKsCVCAFV{S^&>K>&jQ27Lu_K03Jog8&8r3<4PRQ4o|3V7cLQnXvysR#`q_ YcewN5P>7py&0g)Ny{>z3yH8yCUp3B}mjD0& literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/top shelf-1.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/top shelf-1.png new file mode 100644 index 0000000000000000000000000000000000000000..6f204dfad6fd48abf031e85d9a9342ea3d52977a GIT binary patch literal 77946 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 V7I*hHR6+VVdc@^0{@b$&{|1ggzUKe{ literal 0 HcmV?d00001 diff --git a/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/top shelf.png b/JellyfinPlayer tvOS/Assets.xcassets/Dev App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/top shelf.png new file mode 100644 index 0000000000000000000000000000000000000000..6f204dfad6fd48abf031e85d9a9342ea3d52977a GIT binary patch literal 77946 zcmeFZXHZjZ*EUR3iYOo|AWcODl`2Z;SiuI^0Fe@k^b!H70RoDm(ySC|LPS)W5FnI5 zkQSvRAU%Nu2oNBI76>IId2_wrJntCp`?>yqGtPv`hHSFexz4qYb*!@Yi<@R9yM+!4 zadC0&zIx@-Z7weUC@wCZE`gowzxeI*NoK!s2i!Kfz*UTvnPLBO$>rWvS5s52lk8&w zF78+lF1~+GVgDRt|8Q~fe&pujWxsR(^S6&Y|MMw-)JNX`Ip*p5=fq*KLk}0%Ij*ah z&fg8;o*N16^&PO2r$w09*(F%LIc81O$1W>LKS?<3;_i6thFx>s_s6_Bf>i}wu2SyU z7>&G7$B(Ce-+P5O2CL!oW`B(&*6A7FxMYk9hIeo|s?^1_@)+&|Xl-E)N7u)k`n6~9 zO&%DJsSd+@N5PCp8>FQHQp8$$eHm6`=pl7J zz6L{~e?RHoizu#;V3cJus`!TqJ(e>1p$B@}-%ICgsemv;Z9-T&$(e1B>8U)ue*MESQw z`M28rx7z);+Wl{RgTIZFsK1Sqzdg9WJ-EN^+<)&u|Npn0OHn=+lg~igd%(Uo?5cAd}jStlEJZZ}O2p*+aCQ@*ysKiwNPj;2&-3@5a&M zYZQ>0E_s-y;+9Rw3SIsh@xmk^&4liU$ufwLNA)wO(MfO?@uIwY$>t(I&Tfr>G#2vO z_T5Td$mK*(W9`GGh~H) zDE@#Gfcn5S=5Xlpm#|nKd6!yAJ}<8f)++7bo?rf1~S~r>1;rAd~sBR#_>a3hOKg` zxMLjpN@z&qPx3N~*yzDpWd*sa6^;Us(=@xOng{@7l`0(OR%#5Z?fNLCz;d|C#l^q!*0x4++t|4TX}s_MhsU|+%W4ls&U|yLkjU`g6o>%dlLmSz zeD55HpnkhBI$wcUk|so&)IN~$ahsNw&HYk;Xdq;$c!4=03x|Uu8DyO7+6W*{=1=2f zkE)1Up5xkzi8$jM&ml+U4pk#&GYw)#&j?!bLz!UpcyM9P0Bk2b3T7UT>+A}aQ|P7a z*iZ@KL+H&y2g2!ad8lLm+AaE$x#7|;8W8{RB6v;FP;9r)HZ=;K5(T=ES)*Gqb(aCg z96MHPHyWy#-ESY!xk~xTdcZdf(;%*z}>q`K*#{Hj}Bt{b#ny;qO#r1n;Cy#0$c4z7W?uuMb*d1rHF?x+&J?Gaei7BT=3 zGpX$iH6pvf%xS|10VXo5FpO}9TedeoScGPcq_)D#fnls{*E@O~dv|E@lIZi2##Ot` z7Y_mR(HsH=)iuB~N16!Ni^)Jsg_V(*3Ms@hGqt#yNuQCzFO^RvNJO%)%(!BuiGIKK zS^U&4|3@Vo#1TSwFin2#EGkZPU4o#9U7 zCJnWnd;R9tB_JtqmL4{#bW)>nC{pJl4l!sJ51Sn9EYzkCu&?(8vj{jnq2X?i8a>OB z@w`E>Us}m8FVPz)d6K1?$gy#Y>q7A$Ski)NY9_}D1;YD0+$yZ>10!$}CH*uYF=NR$ z+>3%kE5r8=f61Qg4x<+2K#zn?3Ix`lMY|5m97cT^4bik;Nph%eoueeHYwyG!1bm*k zye1d%J%R`czew*)2ff(Kxnj|fVLk-+R#kU;D#z77H%Mgr8`Gbj%IX`x?pg0v`@Yne z_Q6F8;d(cHWOnz+OJ`CjA}<}MZ%iucsPuG33I;njAG?B|t>uYcUPhdM6!FCeSH`o#knE9#{*e~mcKV& zH2`u42RAi%hY&vv`|3SmcW4U(ntXD^%eC%jc_%gQYo$ZoQo7Y1PfgzkNhB==FhA7N z&YG_pVa;?xJ~G;NWsRsB&BRcQ(HyIdY9N`iF*+2gCB|WL-n%j)7H`rA47Lm?4bjI| z5*}(*3fv_smknySt81x_Bd@qPw^RMPcfnB8z}-hOieRxcy_%8WGrx39Qa%`{wpMk! z-pGiR1fa6Sdk^`s+*U-_3E|x^?At`WdrxT`CU|a?s&t5psqd8jlEVnDjV{(RC@Cd~ z`b^x#Q6ZaCKv^lTo%O5rzVAR620MaHrgWReg`L2c>%Z2$F+5Fk`)P5Y?*)marXE<9D#FLgV`w zhn^hr8}M@Pmv$e z2tP1kpf7gba!$Gh&X$^QRmU+D+!M*`@D9m@DRW`DCoO@MGm6eksRtOcuidO9a0Ul`Rx*H=YYv0g--C481ue*M)r@&0+Aq}%kXQ-v0wUFFeoR`QLC{q`+02b!X}TqXAv)_yP&lfSOe2Cns;!N(A+Yt zarUtPa1lMJv93Lz>3tL+O8%5Jk%PH4 z9C_F`_7;l)F3p(;Kr}TvgZwIE${9y4VDpqOjve%^Z?PHkE>Fd2Cq?>wNLhkI$b>m~ z46@soZsUhUAJV2L0$!22{5qD#B^AYZOjt$K!jgwoQzd{zqSdtpa$rd~vj=xfQ8w|l z_cmYB5FccIqoYvhaz@lAQP*B6NE|1 zZdhRo%5SKQ^5q2pWFlFsLxb7d_QVGbokTkqd>AyT6^?*;*Q@AHC2hKA*<|<>8#|7W zl!`BkL_l5SwUg>FwhJftX>hAG(e)Sx-7T1tWFA`lvP&RJKJYd#r>^!rKet9w1-sVH zt&3|8CoEPpjtGDOx4dKWt~VT%U?^Vf)t86F1;1N+DP&<{7bIJ&)HYF(ed)XOZp|pl zfRw7*WS=V8INKCaE9m1!kU6Tl2}!3H0>Vk*IyVvtn4pe3Yoa41I;+hzO-$YK4_FQg z5!K+#Ht@(B_jYqK{KJdE=-RS~$rI+YZmY$hXZZ#K3F=xr1M4pw&JY?q%OaCOn8Z;n z>Uv zbxd`5OvNq99N$Z2V$Y1P)YSD^^rJjjFS^cD3VWN7hmaTWI*t04bocu`mxgtpjL7)E zvy!waDp)vuAtOHfwKOSkM@^j*nThhIqFWip=^Cv9;bdk38NrfA%$L!!4K`MEViY)n zgJ?+aKaulbUNna$9fWNCwysjL?Kk5itwF7pp-Ijr-wx)u$H2srEw9+1Ox10<{hl=p zxyENOpukUseUN~7t!@RpYO(XX_!zD0x!`{N2Y4O(UewQ0i+;UbxmGNxHKa$mR0%rQ zF2kn;d`FYuimweer*Dve1FHH<>)xR4c&Wn1OXx8V84laO68(0Ko&VO1ZwCFwN2KLi zN@AV+)_B?ItsJfA;b1XuP2KF9%LbR05#tOvJ5uYJ2M z`_jMm&przNR_EBqn>?(EH~H{(5n1$^z-Oha#`6Le;3K*hyS33#Az4Y5>FQdV19(qF zy)?x?=7tx!{Gb)aB?Di=GbZFrYOhUSavnVhh;0jXn#1OTo}sPrCKTRgWVK4q+Onq} znXHY9C;FS$1ti>xDAx0L0=EQ|q+QhI@IS6-j5V7B=!hTW1l!LI*U|N#B356+PH$z7 zdGcjxDkl*2lMMCHnm$F}ADu`VK0DrH|H@^^NPGyd*XI06w>hLD;anxK16Zw3cf}!| zU#SEI3>Q@w=&xy!#a@5DA&H!&s$s*^z%ZF+N zU!VqhwL2n1c=u93Hn!Gpi;gDv^BD}G4>G*tyndUTwVXS`e2WTr!g|<}by%HBEg`NtvTxq=F zSzvg7$|YkWS>Z0S+vrKZy+o5S1x@p_i>4I*oN+F6m#LdV=v=5s`cOR?5)iK(FGcnt zNEY;qE3B49+JTt;p@~LxTH8hXS|wzuF~3rL&pNoFXMnS$VW`J;5jWCj2@aR`7TmhQ zszs9IB_L}6A(O>)w{)tofr;b?ZVzMV{@PYU-rsXTl2}Ho){`E@mp8*!6y>7OZGnSL;!R_wn*j`95DfBdQ=$pELUyNOG9BF? ze3U9QzWIR!bFo8N>?jdS>rV}g|4^0aOmHPcb|f407QtUCh|aszskfO-eQ;*eGKQ1Y zdsrm3f8leFH{p6&M7$Lh%?y;)YzfzR;H?80u|P|&wtvVad*3SxU;$T={96O6MgRkSxK1J0~;rW^800-difSx_AR9)Vrr|1(JWy*RBYfs?mc#e(}$TC*a}68rnGWk zj`|L^Dw$g@7*F~dtt440-1kC9RpP@l7d!EXoA63;uQcKAHWHfa9Z_1i=HmOET2dM4 z8jZ%&mPRjv&YG+y)NIa7GW46U%95E1hy-%|B*qr*mm#C>VTQef3;x2JhS04lmB%W=BH9%|V1+k4OpRi#-t!uJ(s zC*lvqoNkcOm@PnjPN%N@ZnFvQxH|^A8()NcZKKc|=vof@1c)PdMp%B)!#zOW0{Wc% zSp2&3!m@Jen$6mN$3SnZEdQ#yxm~lJvnNXx|CEQD2V%(fqioF8Qyig&P0hXB><5|4 zuVJ{XI)&1?SfO*Ly5ivw=Yo&rxxJmzuv-A^%2(PF?6OSFA(#y1^LCn^N zI>sVSUW4ArDx2&38(ZrxHFcJvVM;;)@j4CuB7MhP<;iib``0a5?&|YJ*{-6pfF8KJ zReI{5ITe}x_wXP zAah_>@rxMP^6#bO`Jk?Yq}N~3&Y715?%TBHq`jpbNFNtAbsiSJVd7vjV6pG4wZVmf zi~x36{1&QkGm~m1U_0g={|btUUY1K~obH8q7Jl%+WBjwN5!Qsg6xv$>UlO8QZ9xrX zOgECsLbp%Lur5b< zw_kl)FciEGHQcS$G~z9@zdNtZhE;*-tD73hQatDin?}Cp18w$)YuI}SK8L4ywG$CP zGlFfK4?|{a!oQi{2$=oBOL0R^U~5ns$-Eq*iLT%H2fsc+6FGAefvwDd5^s$5*gLUz z#uhPoV)n)%HLK)g=r@o>541PSbqX0-h=B26((+ute3OfIq`Y*q-plXJs zqVB})fWfL#dr{&_qYNZSo>IU5E5C9fa&|{Ima{a<$9&7PYPw=Hbc2_}E(R$)7^97N zT7i`j=$9G!!Kw8GP^vSohqcg}{{7Jbnsen>^+3V%ZphI1S7(@&4?ll{nae_db$i3p zf}fQJAmZ;r>3b_(OElKdOPhWE=I`5#7wq3LOzhBBF4jZACMaBEK(Vqs#R(sazf%nE zwZh>wK_NXs;P?+l*k%YA8(|{vt+oXRluLscAzH9)nOC-1gLFf-nXwMX9w_tV&o3Zf zuD@|>23;*yY3vYi2W#u_Vs5?7aj6qaPbkyIP9W`H*M(UGWoPDk^xvJXjzQL)DKM^` zHMr2DajyQUG;vbkmK8~?5v?-o)b2c&+lh$QcFphhTq$`$4}p^IotJk;1J{z9CPFkK z`&x!hvk*xx%ac1jCkz{YYh7#Ix^9ic6L^;(%#>mu)B+(TVs2aP$QKvog6K+3ayaLA z0mN1=8C%US;$l{_&-gSJGQPV{>a%gb4#ZVbH)#lA)v5tk{?apx>R`i<~buESNjegJOx9L$8vkLwRDm|F2P|N2!bhMUOP=BRVK^Xdgb4*bX%=KAr zw^5r@q4xZjq_(P9jqV^jiq!C6@Zk zA40p`%bbLo@(p!=Yb4I5AAVT!d>QH2SxqTW)mPXF+lC${`$V~nj>KKyFlmA401-Jt zk zw(>mVZ#aNNi^nM9R}c0Von}>5y>Bg5lNW7TCFSTElWncvh>`M~l5T)THbXUeWyjo) z=I_sRZMmZBHmXDV5aIk;<8n|OHLbMO)>@7pUtk zV7zx5oXD|Ta*>iRc(!RCq({!BrIOgXmMqf>H~2%2pbur_Q>3%Ep7`oN$XmwlOv z??JHK?+{(zcB`SC+vlC*^F{>Tq||m)2FkaGL%r=ulS9tF(_oAK1+Y+rI^&!{ih$d z3k8Gy)LxED-L`CJTF&8x9AWM5KnlB3Q|u7f4@#1Eo||C>Plgv%0tV+LsD{g1BC_y# zjm^mQEHD-~k0=;f`DI>76_NKG$Oyl!x3Erh`hZ|j&IL!F&kAUrpz0_6P-m9(db}cM z2du`ud+vt{W%m`@P+T6c^7IxLOBH}uhvTNI^5?57NtFKD1)l-rW*}wC9G^b0t;cwX zuN81xk^^$iedMFj8kPo%HydeB6*Db&Tz@{KmZBa&eR?{e^UG|Y=EuyO+2coxa&q;X zI@}TQ`xV7r`C^-gWYpS;x$s|Quk)tvLG8**$fhBi1pvq=#tImZV={{1ZmYC;o%~E} zJ$X3}JCGINibDp2@M{^!sSzCr8Xp`eVPQofb?R@yegr@GpJxFuNg?UZAWf6!rJLr- zbK3n3Qk`pP`CyjXX1rD%lT|;HOtXS8Oov)IqpLv7IaW<70pP*W1mlX{7xHT;r4kAG zarUCZlXKtF31=%vmos0IS4PftJs@Q@zTI3QW`8DCw*=xmKYr9`9(lX zZBVQgGwvUda;25T*XciL55E(5caktoA=PyXpLJ8Zj~uUt40SLqfIr;B88X0&(4LT< zidkceJ-`6;W^97ADR|BFRgEI6ej&~`gpo}yB4mt<1*K$#T%a3ev*LqVuEwHFQ4#Sy zhGS*LVq72$GNv+M_?~O{NTTzCbnK9!rTt7ObL z3(TTWydo!C5#=1wFnUC#3weB78S$JKficl8x0f08{>pt#|GD!nTQ7;XR=OURoeXQ2 z+MCp+S?lIPD}*W8HWCg7+>y@l*nu9Z$~GCT76hVHTw>kf`3zbSyh4JB_cF>~1Uv(; z*=4%}mp`xuBNh$T;ki<@Us0Vt1}xR>#ADcO>ubk09ql!<$=x z*0#5Z#N$I{5*9ciJIH**0tiU2G4h5Jz@Rf58So@RFofPps4Zno=;3X=W))iBX{=o& zWuLts+98+Vd>yVoQ+u-GA>ifmX|M~dr39mXk+A$y$D~%je?#VMqRzRjavD;fwH$oCn`j(o&s<&`?yX-d z0?CVcoQ0IrN~$+1Y3H)1p1NgL7HSUsR{YYSHLv39Ul>k~3{bJQT1)eFmbI1u43VK% zwc6VcI`mY^XbnJ@BmpAbc{P(uRS{sUi^(21Fmj+%;|V7W1bt;cE+oY;r2Wq2-rr$n&SKI=@--Lb-qOjhMHiQz|rD&(*5)xvOdW$IFGCOwz{O-Je5+@iJ5>mVG`HKamm95Q?^1nW6#-`2#SC09;mx*?|Gk!7rmrQ3+Nk`wiUZN0$ln{3 zV{Sm*Vg-lzUO%QOE;8~_Ork}`590BRxshCb=4zvqt7}Aj>WGQ@5XNh+$hrK53VHm~ zR8r}3zSX4+DdMDbDPt>t(*|j@BFVy%s@|GlnWOzltKcDAeHF`e6hXo(`7(0Wxj zZ|QC24&8I>OCT%DM~>(+nM>XS1W`}DEesYreCS0)rBt6>u)KmQYlELz&Y-~SRnm>@YatLS zh4Rynj)R#SxtQFvS(64x2Or1*W!zn_U7s{HLKHJ!E>8ch&GSyYQbxwtzX)hB}hngp*FiwqUP|A+9#%F6QqdM>DZLVn{mtTv( z7ea{Xr)4_Ll8EyFqetM{tqE~#MLrFf&JZB~v}s>1{jM~fUyZJhBbMJo!`r^G(7+j6 zh`9E_zI&m=8omiq80h9exT5SZ!Az$d$!Il&TU2w-OUwyHZ?NF_{c#mnIH1>^;$^0n z&zMwj11W|1R)vaJJZ=pW4-{8wT^&wrEjcyM8mAD}CC*R%hAOY(CIM(~cpPP`%qqv~g#f0z5zMZ0QY1no}K!dkMDJ|Nm&v;Z4S*GLsb6R3x zqhuDUL^d{)s)HRp`OQ^4(bam#yR+uow#{PhY53BxkwT;^wR25e!gW&WPUvgV=BQ7MN<*An+6b(g$68@)dra zsbQHoY$N>c&C8k(WsRFENP7+P>^&$j6e~!9grIj24P`kBAPy9Em8`0Pj1cZbjo*zO;`HM2Mj?3x%M3@Ssb;9*g*E{>sCkB4dZY$!N{Mum!WbRLJE0h-o!6NQjJwehFgDVGy{jcv{<0G(YMF@ENP5yzyCh1T{-F8 zY0Y2Q)$>jn!^Q`#2Mh)~=1!jkL>!sl8jxo`1aE-xn!2*mvDu+?I_?yKIwl+GM{>Ex zRa#j#5_Kb8Icd*}(_1?qRHoT&`q8XgaWpccAmZ|jpJBFJIqUZ>b05MZ%8?#az6gz#M7@iJ@ zO(kA(c{C(un|PpG@f2#XZUi@9QxHK)Cm^K8C3Wc_Ruc}F03WF?Jkf7^-{9Tu$62ka zk=Eb8Cb_td+z5s`n6D=G41V)`-WSzw>!*`_Q7bVG>{wnbC)PY5jWVL;rBo`!?zyW8 z{!>8FdwFcm_CBdE_fKR0E*3I$+1w{~Z63Gpl9Qy3kt!&=by7gEAiQ@iPE1dARWm={ znbrBbdQw~AQ9QHGkM&h!lWPfR=Vo!Yx6%!iA@3s}G0LRn8f`*pFX#)|7O38(dAhv2 z+GY`;g6)}V3*h4KH%@hA*2e)sIwNI;!S^F&AB|sr;-rKuyN26a#O(fL)gp;IA6|~v zfq0qghJR!*)T%%2toSn{h{Y zK9o_=jt5+$4z`a=2o2PJTGjHRr7O^aG!G@hmfB;zqGS%|zYudv@{Kc9L5R{g z)9kH@i&z<(6!|Lh9ZCz5n%r`lcSwCkv2;_wt?5jqM<$8;)!A+>v+MN-Q|@fK)Ot!W za_h6M+xKabBcR{}Af~7ooSym_MA$4>gp)FZuWc)tHO#WfP67DSflGgMz@qnRhZ3S` zLtH}lSMU7LhULkBq>!(;#_Kk7VpZ3qOQ~Q){y-- z&|PIU1F33|1yc%ZyM+%1mVR5W0f>ACvs1ovFtAuNSysz=KBu!DUev!9pOR$ zUVlscm-ALfuSSW&qxqH%0OZsc1d&O{!to)_wX7ff&;id%emQ+?{VJR=>|0I83qJ@L zX*$Xn*RNcZoSZq^;JV7A%|DF_Inb^37%v-PvO%LNF+Bk|S60TBJH4I+>{ZpCylKCU zfQ7M*gdCb|dErkZ+4ua_f{TPxI*&nmW_E!ymYbmZ{pjO_HDNugJ>6O!wH0 z5Ff4BJZ`@s={7FSdpAAf6xQv*kaK&{2CFq4-)p%3)!c=G4T8{KfU$4}+6Gm2WU*K! zF;p(nt)wr zy_^NEeueK_3*2PuH}5&DBzRYNJG=N!$_RPzM05uD={du#p1Ven&n@I$C)Dt9laL6? z=CgrgJb4yKagx7Wz1k+EN$<;0ICaXsV+O?)z=S;N0b5doA+e23dypIX@QUmZB0X$l zaaY!&luEwGK3}@a>K>%jpb3k@-5OG-v^fBaOYHkR>{XU=$_xf6e?jeMw!L>NS3^#e z*HmsplYbuMxFo6a_|K?w?BN5}584wFux?B;)ZxI&tB2xSz86|Hc6#tVW_RRIJp()P zy^Dx)m%yFA_W5Pq!#x>+;GEoGqN(x*^MEiX2=_X(=i5V9B0G=L#_3yFf9F> z*EnWSwP`!ToAhYeIr}+OEViDFsV&RIUmSIbJF4!~D8LOKl}H2DU;dCMCSx4RXwGqJ zlv1J<2qzSbc-t@nMrAZN-Rx-cwFe6~K|7k)R;Wm3t2D0e6ulOSyG}4fmXuI!fYjum zHHL_4e~%H)v`TvqjKUPd_Tzq7$Va%PxWga4n7t)t?wX9+2(PUgpD?Z6vR&D{o+Lx4 zCxw#MG&$#|3(vDlIM4FkcmK%(r+Lhc#(HT!ZuaG+&-banZ5VXfS2gGMe2_Zmy|<#Y zQ`9fZq*msLmsbkt%@kLim2ek)BWOkj(6+44KZy9T$yf*hgHd+Dmsg92nCsANZ?ya40U9;C2bP_1m|=7%s=*0f}1D;MJo+@4kk ze008c^xZ{RGv|;;q9eO;uCcW^tovtH`uSW;xLWP>SCL&_1%|neApvK4kjiausuFY8 zXKZ3#>{m*BaEc!u#c2+OPmBB27~BmI6~(>1xwL`kSLUk*$BmR zHRn@ow{~7-@4bLqL0?Fug?(V@f|0_}J=7VQA}3s=E7khJ<+Fu7IuJt`l;Tya3yo;W z%Xi7-h$#XxwQO8=UK^?o_>-P|YIw~AKp@jw1;Or@&{iiLE>$wVDL(cqbWkrY2ov-% zS(nUlViXN_Yw;iS3HT|bRsa+}J@vxbTj6fJuVzSmC~&zSUT!l#Ge%Oy`!ag#D96~e zwdG5=oY3j)zLmI#fUI8vp>%5lsA)v}&8>}3q|1inx%Zd{@vr2gHg0;&&)WQ8nQxI& zDxT1{%y%5)810RAzS97&ai&&Rd;KZ1G7n?{QGoR@;KO?>jJEHqOrdp^T&NckgN{7s zC8u&b@+A$O;YDd&09EVYLJduxAMZP^IWgQ481veK*=9s{pjV`W=3Od*kcA?O1YslR z@t*8(_3Rq8smcF@Qh{T_Tz zG?nAa)_)yR$G|))2-2A+y*u`V%JsB_FpgCEJ(tmlTdrx{g0bsk*9lCTr&~6U8l%q0 z7ZNrwB8?1J-`~8at+0S}+uZ|aUSODIf96F&*d0AHx6v#grvZp-`ms;hBB$tUcHVUX zhAbH`bMVYARd-TWxNYAMXCXyHk!{UWa%s{Wl||!Glp3PaU@OjUM~svJZQ?r$tRNtB z*m36*KRFzG?)SzXllVal^fP|Xh|pfJb)~eAa|||&+^twbPyf8M0IHibr8u*10h87V zicTVcA@p=)-^HaXfzIj4vO(`w8jA_K?i?Bxk*8-km*2*>uNC=+$R$L*))TTe^K4 zL=E;t&hsvSkb&eP*jHk511MsYMuUMEqpc+a@4*I9kCGlU#d9}oTSE=r76mPNqXt(q z=ob4XcwfA=-|XU-ra-OrsoD!RnFCd7HS-;`9i(jA{T%V-(8C+-TeXtDq9$GctcTv@ ziKWeZ8TtP>D?)nSRl5A)iaD65vl<0TTZtj>Kza;emO6F_< zolER!{o0*uZ&r^Up}J#gVvL7HTwq&XIHJFzjq*2Ok#n$OlQ0+ZK z!G;A@-yUkegqn$ej+}**G1U;acNt$e$_+6wjq^b5s-4HuzS=PQFcWJAzS%EJ9y5F5 zKs;BMuD5=rywMb0Q#|zAjx>SN$g&dT{YqU8A@M`fayVaDjs^+#l<)tyVG^tB3rz3!&vsXLprq`m8%7<;@g z0&H|;mjU{SntS!7J!nU1p|yu620R_3Ab=lyi@jo2oSFE8&k(DOQA$_DH4DWPC5 zp5qRjuSL;A4&3X9A6~)d3Z_PJy!J&094K*DyH}d?%ri&kcIQR@mt*JFi%xVldv6Ke z61_0GNCCE*C{3L>bfj3fd*J;>w}U~w$IIi+xe=5Wf~TH{%oPY=?OB5?eNXv7`0{D4 zNnrCnC)%<;c}_c)`a}U!cfYyko3IW*-?*+clawT!mX6`gebBc0ezY+FP+4?pClDYP zS^uBVF}h?Rz0kpF6%BmG0v&sfEo9o5$(P>ZiZL@869LVRo8Bs)F^(2-DlWh9 zvgWLy{NNbx$g2p+zSz+(m-?pE?M8tbq6b*yPCx~+e#7+{oyHJbFE|xc&I;SulPQiq z+<2_@`gC7fYeZ0{${yvChx6!{{F(f3-L7HIBxFFIx^1cNo3CKr-AZ{9Y#88GG}XUd zsv8a+g7>)OsJzRx?Th&+ur>FMh=m?dF3P!kA@SPBrw^E=)1d98Kd7XA1`kF4ZM#ReEGXLLuvNuq6wgb2qKy2sFRKa zc3eFYBP(`7FnK)H@kGEt#dc8GgXwqH^O>tGf7U3IDroJ^jk=$dG>Bkj>NE0D)Uv(wXN# z6l(n;;w&fnaf@?BCj?Bvt%{76Ht&?+9OLtiwT?vXyY$rg(yXdHCCC?EN}AhO6Bv&+&N=3d6YiYHziNa298e~_&qb+6=> zM2yBr4%}tCO>3q$Ko6*T8P)mUG3Vj|dW3#m&YLnB+jHj_^L?tx`J}dwm+JRMwu}6t z1FkCYDt=3t^fb^NPqTwjU14 zz5qPfF0(;2q;8`;@@8GmXiB5pXQjawnKKQWU1k+GE6qBt8{N3tb@`I*&(7)d(poQ{ zsyiB@BqGVuK7_H0-xF5@nVat^=4kLG`U(u~3t4W;hf@KCGGvBR09ZuMvt)BH537jz zMDPdPI4pNWtyq_(Yj{7@{$i*RMrTXxnMVd><49~4zs@@Y)x z{~9mB&9ng_Dknz%^RuW1SW1Z(q?%G{5Wg;w!4%`4EN0c%YoGi0^d7)_MyB%Jns#hD zp6_Wu_^cB!G)<5=reB7#5^IWC7r{Te2%Z^0+IKq-`P!dB){*9Vuy?eIe=;m0iWrpL z@JcKDM^|fI*Ro27!9KH?Z0aISJil-!LmxRR|JX;7=Jd=h@9hj)`Pui;pd_mKqy$Dt zt$YTBu-&b7<3VJl#^FuV%$h>edE}%qV4NCCzcvd*r4N3 zs~}eL0sh0^i^J}`1^F}z_$8(wR$TL&8^;!2tEjn$?cM?)BIQ{c7ZJ`RGg z@piWybiB)q_nElbJ$v#mmr4ej+_YZGIK{?x|JVrq92zRRz=91e^fc}XSkMhON63t&U zK*zMbpQ&4^@inCet?u-4oWBAd@6V%{m`SrrdWtEvXScy?blL^B``pm+81Ue9pT$>) zzkBdkl^@C_}#1Y=`!4Ol_b-`vQ2zB&^m79~gCR(A2_DKbsFbU_8)$;qqQg z8#1zg$;Uqz<{4#*KH`HV@2aG zp7nDdu7C}WW?Z^)+&Hd!UHIw5+kp;{njY9LtX5;2yzJn||4;B6+lS!a9{jHGkVze0 zYC!M>jKUd!V9>GJmgl+|G1~X8_c}}W?2QDE9WZQ*wrzszmkKXmZuFi>1EG?q@~0Ij zya0QGAsFYwz_)%`L#TM+ko258zjjvKy*hkk=Ys=K_X4@)lZ4bTOlW?kypbbC(xMME z*<(e(8$S9Kl;r~y7O^o4jn^d=8o91iU>1qMmz&x?%P*2K*Uo))`#c>bu2%W;Lw2~< zHEq-)AgiWYB~|k^_kYO(KBu!;>Wm?G35e759C&znkflo#TA=>XY|pNdhj~r|yFiDR zJ)VU*?4C{*e>Zm_r|CN%@@4*B?RYn%BfqVghu_~`Oz)f5fAqa>2}dY?Uh0Xlt}A5F z1LSiK7TlbBRq>H`?_M2^Z}9tf+9#C5MK=}ABSYvp71zhKf(A+;%P)i0euU5u209K{ z%U@44{HDM8c+igOUSLl6kxJ``Dz7=Mz}s|Nu*wq2tZBJJc~44MSh!W}IsAb$AxLew zaaeu5L`XC5!FGRg;2~ZeZ4TXq!xYJFsoq!egWYa`YV+%u=VsvNn!^PkUt9dNb`WwF z`NvfA5c?j9eFQu|apd&*w#b>EJ0Hs@KcBL*vhDW8!;^@9HJRT-&eKQVqP+tYS1>k$ z{ex$M(po-7jVk@P8wfj-S}Vef%~+rOAzw3k%cp&OgLwD&ntxL!9b2nfV;ty6d;)Va zShPf(odZ+;x2BzhU9ZUN#oi zZPnFmhy6!<`2WM#SB1sZHbDY`0KwgYySuv+AOwQDLvVL@hX4Tv4-kU84X%T`y9W2* zzLUNC;oH5OXRh9J`t7c&uI^L2|AUKk`zzN6Ys%G7T%2Npwe@_FIRq!vEsEP&fmMeX zo^Juen1RHLz>yCDiNyt>88bYY5BoA7mP)Tz1l<~L^nB{P`}W%G9dn;{sRfG5GS~<1 zHHni3^0*@SHkl78ru1fm@t~-L;9%BNFQ}GavwfwsQSbVW?;G@6%5`fH!~{mE@Vz(b zSaBXI_%7u;*sTzRN7WU34>cj-hqsc6%L5>1#Y)_3FL%VM8B_V2pB59j4F~@N4{>0C zPdNg+zWtV6k7@vG1^qxu`gsIU+LqQEkOQB^C?8p6KO@iX9hQB$+?QVJpe+L=Yv5+e zLgZbxo_)1lH6~(u*_@PHYU>W;;Z|r6_FV2>>P}(aTzxo3u`IebO6YQ%)ij$P_Fe9e z+pN^cYBN&uI>p#>`w+KKcLUzt_4|w7fUb*6B@ z!9zE4;VSvEic3azg`oP(9|ni!Y(&3Sv!*!izWX|ny3B@I*ynN8@@X8jw1iW>2I6xc zzLTGJLX!kN=LOylP3`i8+IOsd1BqDUra0x2^S5!Ok0FORKt`Q;@BE2it=MA#uuu4I zSp-$ERPZ*ug@h<{|6~z5TV}J@iRFgE{$w-h*g|gZ5~Ha2s_P>nP-XzT~Z_>^{jz8jrDJ3;bq zhp99K+3>gT5QRU|ywfc93f8$C-Y-%r_bhqLkJFy3FVCPhUwa*M9nil+!1>am^F;FX zUtmHpyA^w-+WmcpVlEmCbJ=t zGZf8kN76G^R$pqRYhjePt{(hfguwI19S!y7F`Ah4VvtJO9D7A-@by=ZKg~vSZK3@0 z-0dT$pmU&c`@BKMKbJY^g3rr7_cT7vvU3mZG`|i&Ku0YqI5rvQTMJ+R72d&~Qek7x ztW_=={tb1}{>n)EGE9GAm^Z>JftD1MKab;!{)kzT8hQHk>z+ae*;#aECy64}&Fvq%a zYh37j$U%PR5%f!0x0xL-)jaKst}nw95r)iF88%e`vdg+2&mX1z&W5kX$R0uPwpX)u zj9P~;e^N`9_6e}r67BvYDuw<SCk>{HT?R&K4KzCXC)kOTOJ1K7e^khJK4DAzGPOmwSGGc zo&PeBx)+JW4Ub()W?d<*kC;c`6b?l&JJ7s(f9#V0Nwz%=YQ3F~IrgANYWvOa{rjQG zcCPKZ8ArFzxJOTsxL#1ePstz2zDK;v=8hB{XG4+zZDZ&@Nk%h~;P2%*RyTAs$g^gv zo#XMkrs2m#+3Pn2=m`1;zk(2#hf-fvM-jB!h$Mog?p@|`Ls@&pMT#XCHgf>YdOn=A zbW_Mr96yqNQYbP#0M;n$pB6wsRr8+#Lsu_R=2Fr#-5T>R4?!huOOnyzySI`Ei|tQ2 zQ&J#lxF4zn2y@R$;t@@f?>ReKE3kwrMK6Dl=#JjVpXnyM63H%`lMk z2JidB3jqG3t?Gf92 zuf0GUu3Y?Q2SjopXLd$EQEf?uvnajGf?h*zWAR9|ej{{;x$`k)X$2O!j@xguSt;RJ z8iI@llXcHBj&C|_JyV_UkQadfVn(%UU%ACm#+%$vrRl6nSKguZ)vei?@YXG|_F~l*DbU#2 zKvVPg{;xWn71CHlw{k4;b7_hRY+)UwLUYJiOdmN10kNsVEdeRxYNDts<0$lLY0^+S0AtkL z^>+opYC~>oKnPOfs{H^ZZp=uX>BQr8y|fL&`*~AqHpyYVj3mvv92PYUx2K{6v{ruJ!r2hwGU1vEq`{QmDHqLwSCzq*YbRdA1!ix`V( zMVP2^x(L$FIl!cj_o8vwoV;H!V1Vd3{ zh?9zJ-hp0UG7#aEIemNxqZhtm}!(wHy?U`Wr|dt$D>neoV!Cx5rr~uAcbd@ z^?nh=*4?dhWVyo5#bnLQc_9edim@!4SH`SrB z)p^O`_|y5!SgS@V|CpdtHiJl)Nkm+op8`naJd!dI;Lpr3Lnh^O7a@opSv9Q;+>4wq zAa1XIIx0FGV#7Wr5Oy`?x7T=>1LMI>DLj)-ZEH@Q{tw%PE)xo23Rg{y zKd^QGoQ)EI^Ban@wn)T~*?cSEu6O=xMRfi=;(RSBlEAl^Jw@19c*8jRiNv0L_CAA7iTGVO<yX9K7#u zJ|pbbHDu!HClV5vmK7qUkK&gg+hVz%1)#0miepfrb@4cJ{Fc5o4)@)SvOsK7yPJ%^ zE+;-e_3o;#x81n)#=4wwJFvDi`YA48hFlJvpUS7ydl0+aja z;Dce=L?S9)W^qW5#;1nUTun9L*Nl%5IC8f?)+!5pM@YnVtWC%-fQ;$<6RYRJolDDq zGiD!7A6Gb!PlCc4VI303ed2aa6tfOQWpESAienL3I!T2d6C;{x`Yq*9e`g1Run&7~ zKacU1kEH+g3zX4$Lx$HODcAjc1b@0`F25F%J)!L8&nmh6>Lo^Ue#!(SPK0$N zYiU#Y<3RJ)p)OBq+fX+tRf$7Ix_%fP@TDI_$_Dxh_pE8(oDvT!*xjTOs5k6>Y@j-P z2YZ~2)HKhv$Wh7rn*~|T{;>T7kBka5R7o0}IN20NMQ}chA1ymb%GP z;X6Z{(VpAKi~AcPH{E8RF;e)Mc{0~1zEI*t2L$rN__0!&cP`zkV-%K*^?*eC)ev%V zoC@<4cvKW>DzSpPIbk1TZ8pE#tKI4c+t(P6%Kil%H`^~~wcUmH4JnJp3RqiqcT5ki z?v?wS)6>f$((-u*$te9fSnz4$Qti@Nm9MQ+GsqU3Hy)}15o}?L7qts-y8wf~lOWh3 z!^I_T0dFgQ--$ZylKy#3ly|0`2*ktPFkO5L zj%1!0!}j+Fng`_D9hVwV*+4Z0z_$vY!S_i2m6JRE<>ZcWzN*(4DZHb5huKoN$}#Uf zW{-X1cWtuN;QB1w<9$`A3UA86{P)rhWf&gH-x8aOAlEj7oyvz?*zP#JZfalbM>wBy zrPg-W2fU_u>f0`Kj;zd|&S!um;5>Z~K~xtq1%|(E&dXGTs6T z|Fx&3C=-A`$@?g1E}3uWi<22u&Jo)1G3aw7eOJDiHU3-kgDXy^UNA$z*CjPo`*^nyH)~Wqovx6N>{Ui&*s{&g+A}?sAPU>9Eqy%e{Q{KFyz6W%X$~KxFkgD&_1}&#Z?%^kxRuEt=2|Y4d_&h zj?c>yu8j<8mx>O+U;^Cj@8XQ4f2;5x4SoVA80qFg-D%MGgCyE}@cTC}qz#rdeMs*$MGLM<< zfO=EL_I{noF2`YW40))dkzs*ca{XFgTYjDOH%YwvHu(NaczdBbXHY&aSq5%izHs+e zvQ$|vKX5YR4vz048901*>2(iJzgY7{hx0v0U5N10;OFDWrJKLJxgm8@%uAj`gNV{< zMDH)pV1-OVD+4D$7P`o8?F z9$MVc5mx@9&2DFu`&7c-;P6r`3=&I5zsjM^5KX7cEB^d-pE{N`yd9M_tO~^4t;z1g zH>*J|JmK6D&vZOEFn;o0I6SBQq9<`tr3FaSGmxAVDIUG#y`Kw9)cGd?*6!NEpp4O+tG#A5)Wqwv_& zFP&tc2SWhuYaY@MCFyo*{kY4_(Q6OQ7M%ho!Cqy2EFwshDmWiwRkJmU;gaZc;+MPP z5GU9^_eunLoR?r*AqCJARqMa<0b^mzi*}hn07NqlAyC4BMy9iFQiT z0!u1lIF05U4A;(!`ru}>5RTl<2C*}NCdy@hxQ9jUcqTY8E-0GX03hv-FPd}7cW#i> zG~85>rfh#9AVeTONr~a=Baw%GW&r@K3dV}IiS1N%@#7-^v4rNX0O~^#PaSS7HGY2 zkF89q4QCtO@3$G+**(vzE;6`<>-I_}A9NMS+xGyUon5DCZ_Xf4XLO%ANT|z)=U`QW ze>>>ow9-42Xhpx2a1d15b zhSy-zuL?hW`d(b)N*{`g1S107>+m9r5KdXB_m{H^?BmkrY zk$v3UpKMG#{=7>R$6@U76enkAmHlv{07ZvA?>-ZVd|&vT>&H8S=W#t3Dc=3Cu1Gl$ z$veERj*rff>GK2F7_}T9I(!iTJl^cDS}Oq$Nnl>|fK`zA=2^f!ULY+=tv)kWMORaB zRH6=$L~V3c)=ZI+ey&cv4^QDH#N;rFCr-?ddZavXctU+zWs|ad5po12Tsvu>y9{X3 zPEP}66*1YD)y8ayuar_wckS^@$(jaHcaubtT^S-)o^sty6EvGoK#y*eUyLt@SeCs!) zIedjM!Xg>=9rjrEir#jEKSJ6Y77ttlm*KWGMZWmAW%$ztc3rkk$!`lGT=~YAviIx9+_PEV^>tF_In^FO=hXXh zVA1@@p>}rp=Z`sD2_;&JgTqKtt=xVVw>nu9hJbh{w0GPjq&a)+UpTPV%s_}4_NGBh zPfnk2RaTE^e|6R9J8moqaX>;p@Z^+OgzIX=7)_UN{9Y8t!CrM_Q<`Z%s!<++AgPdde~g!kDsYsOb852HqH;1EabLswsMh^wO|mf zii{LfcD$HBMOnmJ%+MqsuyY!cc$46|T{&&wBF#pZcjQcHjt80?^)NQiLxy|?tVi8x z#FeMwKX@G7gN~(%>+x%h9a^94Dol~)sjqch5Vhx7v-80^)6nfS_~RF;BC!B!Skp3( zYD4StFkcfUv;GF_X9=&n#M#i5|L9dciGoGfC(#Ms*U>-%SDMXU(fV!1VdC&t&7Ry@ zAbc*45Rd{WS@5I2);v+j8W7` zpoRFYA%ovHuQ4kYIuWK39_7f?i$`6eNHhXzJc_c}oWz#hyMZONnT^Lw^kGn!;>Q1J z{Y!a=dpWTK@L+iLzGsVI)srafa7ul7Ldb81>Eu33d-5f^!>8A^r0JwF#=kg%Gw&B& zi5!)9>HziAdalmk2A!6X7%B?f}lPoMTbH)+DBecPBqunlL{b|y_Ajcqc4k7b!0Z%=~fUX-mhF(4>d zdwNJnyt*mWpaCbU)ZW{otu=e_O_b@3N>NRV`>>hE zHiTgvQTq&jGalq^!~X8K2o{_{hyxsBAKI*vM=hA2H#obaPhKl_;3_Q*X3nSNJYlbk zR>${_!6MX3HM^WW$rS|dqHmbp6qvsYLmM9z!=kk#I?z{)*q+&1uye>aIl|W1mvqlU zT0)Be1#-*ZFPs{{t$nZ`AoI}K6_gPNlO7Ew&b2VVZE+|SF6CfueRKc< zGsuw0Ps6Ln&4ZtNgxs(Fpd)Gp2=Z=k+d*S%YMU*ZUZ$TzLD*~zHEXsVZr^X&TFQtx zzoowIV`^^o*D%~Hng__05=;S{79T_fN0^73e<7w66O*84UdGJk{q_?9 z@8y7WwIbq6zh!G9!My*W&QMxGcbd>}<%Yp&q7&8c6vm3>8xx5dlGh zIotv`eZbUgjo$nI;zJ5wuSm~fo;+)?Mw*ruye+zTH%6e&aO*|n&_AA4kAqXuFtBb+H~w$YV`bMa5X)(CETe`_>Obtg&$R#2yYe3I8zXICM?yr= z_1J7CNnO-mT*@-QCtgG-?Sur9(B_`XYNs@@bhGNE?Vn;)1$$$(^&*&&~v z$eM_jMh01g`Z#ZZxIE>Px$s@gj&|PT68Zu*(iX&43&yh!=@8JbQ)c5F7%uOf8fra^ z|Arp=wcplXUlE)b394G1QzdK$6=R_9ZmIc}qWhi~@h*~y-jU#p!C|mW;)nwO6wc#@ z-pyszwTqG=CiQo0K(df23^UaEG;LGp^@8$N7uU9 z3Z{Odkl3ItmumQpDovqT@)tt-!{CODJ}=Tyq`XrIEnf6`YL$k+xrozA99L+}>ZTR2 ziioKmZ|L*n>L~)U6^=q(N(Qfx9VFNkpTZMWf6$-M59@NCdH@(=MiDzQ`sps%4hT}; z7H!ErU=ohDT=D$%MNhb0@U#?bIqE-pi8nF-z-#Y_(rW@P0(G%vm95`+(xcLRR&Np* zf&45ZfItvjdy6xVR%oPxV0Zx11K_5?%Z^Kae8B4Cy2wXD!s$rEdzsN~UVK?@%VeMO z(dOY@(DN8Hn=R8a>RT?UkHNnqg&Yht4CgwcBuYT)+KjUG>8l3;=hM!>k!*%fK z;BMppzIhR7U*D^pde0B-bJ%2>k%qLkoq56H9^DWda<0QJjvApU01YzoO`43(s!R4- z2i00fiPhT!oe1mOmG-TR>(iln8_SX%1&0^RM@3FWQ^G=tlA1?!_9leJpEom}D6ufDVCVUeQRx<>5BKX_-6Z$jO|-O}1G>#T8j-G^ zb)Nn?%Z|!gKmac;IyVJsA5)ePXGQX1pV1ku@bHhyfst7XLXMI>;4Z#)@`#V`pNDc zO040UbBuVC;J%KGgO)48B8;>NhoI z3i*ACrtnW%r?!w+K%Hj!joZ6c#Fv3&$goTLGl`fCD+IapJOUbXfFrV*3EmZbmTm{7 z{N9#-82C4>?YbaVe{FUwn}DDnADBeL#VNF47`=jG86r76o`=(iPpShi1pxUY(g|u& zY=m6R&_`8YleLVJNy_%B38+Ox5r_?;(QOv=^3a#Xtq1tsJJ35Qr)eJdU|lT6Wmd}$ z{J!%&8;`#}74q@vlf!buG84R6rZ_}m9}Qw1p!yOhupZ>p0q$y7lN0nN1#vXHmtEzV zGubW8j!bp9{V(_d3mgGnpTSR}RmxQQ^Bwv{Z zK%+fuD_#J_NmPo8+i&-8U{VlEd4B(N+A+VA=|JY{5Hj!nT_fvM9%sg(wMnTSH}Xx7 z2ru`K207xQl4(EJTuMhwntOuIOP3SZ_RjD2yEuJd1k;Lo-3kA7pUK-(@Ac8deNd2l6y$6PN7zVDk*BH5@l^RR~S8J*ZUdPGz z4svWJn=g9R2|fefsAZR`4X70~#z@fO(WKTJD4+_KUjlHF->=aZDZ)D;i6TvI*VXP= z*4lZO7GFHBRBgs`#NUnWA7-`Nn)3TBkl8>Ot=iLB`+9hLuw;rpjia2XN$U=g&>zMVh$B?#vjgk$-)#e4FlzCh` zL@h0(pJCr!>bso?PCwt)aQEsN2Q9PQZfiF)@RgkW=2UyCda0aBaM^5>z^}Vq=g&~u`KtGG*Hqszs?>aXh8dw2+Teb6VWkzz3*^w z9k|2?8H$}}DO~_6n#JOhMkcvPBhHjSfCTTK{+3K#kE&;|d2xwY--ojaOkNMB85<2F zGRf1sPTM3Im86-IrP?1df$QI)$h`3B#WkF(GzFG!fh*e`p~# zvGp}t@Q3Ca$z027cNAwf6V1=9resarB$hvmC2%QKYzg(F2%QlBs_l%I;z5CHX8#Kh z3$>02x^^(4@}^H+c&*w`_=abtK{=Vp631F2-zP8n7FD8d`R74+b5F-NP4n9yWzane z3`d)Jjv?$AyM`hrY$n~T*yGX<<4c7yiiqqKbA+YD*u$L_Mhix&wh)=XZ>3kJU1^m+ zx1R@*ydqLR_?;A$EGC<7oqO5Z%{R9DtjqBO8;p9fwbeK+Ykqq^7pobF=<+pWr9J|n zlcQ{8yAN~?rugcac9Wm#Fn7ZzG zk-g|L-9%&=113bisVJu0sk~y<6%{4=cs|v4fDayB7FjwKNm1R6jtiDR-=?SOp&N zgIM1cTfuVG>$9@3fOFl1=vWJgaHN~_4Gh1k4+pnNHQdN<{AEvTPd!)5Q-WLpF}xLJul+NfpN{ksy{;7^ zP;%4-i&5%w%RkmBJ7w)SzYZptVXb1`?5PM}=JST~aa%?%FI@Gp^aSx$UQxS$ifV#Lw+DxQ~=zL8q6Zh&^H-LN6ut z>yld!%Drh)eVh{_(8o~|XXscr>9Lg`|IB?s*~Lt1J1Y@r4DB6U_)@Gl;!vPfVq{c@ zE?LF$we7al#pZnZ6C?M?O_W_r^V6{@e;vZC_HJ0BsNlCwDD&KsSU?T!ZSI%%{j8U! zn2y(D6+H$_$#_?ZKcSs%Dm-SJxSAg#&qhZGUsnf~0ONlw3Xz8Eb&3F+gj(E3lIz{s zg8AsQTf=%-!nM-6IQ}q17|`B^#9v!uW#+2S(;OMm6o~%qf0rNQ%7K?igxhKt?R#?? zCH9ypp2M`=Y1_Q%^rb4UniQ*@jxf2&;IMbk9Dmr&^%fz4hn0u0QRr_7$pFda!bIjB zTKU}x18Wq-D2lq60DC8S(_qZw$DKQSj__Tb9#-W=Jk$nBC-7H$vZ|Uwr&il`mANfZ zK$v*~ABFr3x|+6UGnJfgy)q_x3xrGb5Y<|4_p=&1nHx!nD|EnK2p#^4r(5Hc-C%;Z zPvGTWhIrxU%X-r(pkU#(a`n1f+{$PF3J5Hu%>MwT8ljc|Nea8;4OB!73Q3%iRW`l{ z6zZU(vm+P}FRIB1AE70$cc0&Wb?Lw5%xjGK9o=VDkmzKN=`^P+W-w8`03<(WT zF^Jb?0FrbrfS75d8^-%PjveH~8$BH3cJ&{Yw3E7i!zivZunre{c`u|T%JgobNcvTP z21!4M^x)L-3szx7>4nf6aYGe-*xpsE;CSM1;{B+ilvJ%uB;Sve9ARkuf0;*^%C|`J|SuzMUqDO z!aJ0#Dy`_omeX)MPCdqMS(^PFeM0(z&BJU))1d8{%$`P@Hg@u;|99vtr6aHT#)g&|FX}A5oh)mI}D>L}-W|*aPkN3;oH?joD`3@4P z`TFnxDA<84!hB_|2Y6O9=Wn{d^6SKu;0i%3xds3Fo}dP><1kr)eb`KBC{&i}cgaSV za)W_vR2#B^8nJwxM?{%(X`*5Jeq1b#&3&c zMH#kemZUD`R=Ylq5W2`OAs)G5f?IPIRbYha*FvL`n%o7POi4Wk;`4 zLZGV_ndT71OC|;}HOosG3NJNVu0z&5Df%Pu{wkI8aQ|@JQv*7X8~eUUy4?1nfC^V| zrGfv3$kOjR(-gY4)(*Es20DD9*oQi`4QN4aPxajVnCJZAu-VZpzpJ+5%LxO;!rGYXt z@ah1#9E59dAq9LDo?*O~s{AT zEdr2e8tj}6f_~e*Dy<~$U_3{v0$#phpqjn6X(Ro?jHNpz4bOV8fcMXYH_p&qWw-FX zHSTm&A|+Ms(_Sp$ahjml4`;*^;Z`ht{R~MXVHyba87#tMzx5!#?h4~Bh?x@poj*ae zzlXg6r;aFJ*(7&Fp`8v<9iN61&-;t6um(7DhaOoRo>mvjQk{mA4@>rM;x@nYr;KTl zlTCJ(9Q;Q4EBO~ElUHbS$F2U<0=$reuxf3dh1WmndTizI-Jg2iisC3f_Y-FOrN@ zq9y&mmZbRX#As)e+(0nT#MD{p9#>=^&PKXlrG6i%YxB+qx@cal6x#-2SFFpN!T;`DRg`<{Uale6Q}W~(0e_Bs=P?l$|_l*9!JPm5^3f2 z5S%~!M@cXZRT2?+9T)**Eaulo*OPU9PBN^Kxj81q=*O~`L50-W_Hn)unvZmUSdcL#@;2|SoMj7wzsOsd zF4uW2o6hO93c7oJ1OWEjl^_5RXlIhyH1tA(=DUZpUFuke~fgRF02tp zx{Sb10k22M^7(98{w~h{HmVehK2gHcoxE*_#dn*1F8BORw}R^bnJ^#%cFX3+XXQsp zqZRrCD^vK?n9uV?W@xq05(3pMf-x(;V*dD!h0MDHMb2FYDH@%tL6O+;zJUB#SkKFb zUnfF(^SAlg@(AjdQ2|6?byJ+>FU?4zLsW!NnQ7%(38C4@kLWKw8oZ#-P7XM2I#Is! z5Pgv|sSf5^)IN1W*Ypm!`hxP4xa#+N)2U8n%gzn3_z&8|aUvkI@UFvA7|bwS8(iaK z*j8fVytQ}UXNm%L*-KdrmHfIiK@aBe=zfOXpqhRnA1H~j>g;@kmQ?HMSTrM#U#u0o z!ahcidu0eqjRg#9AO1tTl>&Pbh&nd{UQ_h{%RlIU6tE~p9!RhNWXp3aVNxDH9+r(W z8SfNl)OIIVrAh6e4%5-_Y3bUD5Wz_vjg>don-#R`^84BHyB#~uDsEq;M`}%K=!{o) zmEyIPa@tb8*0d=QL3?k072vZ!y_><;!HDXj+~suprF;8Nw_tm# zThM^vXP$t-8&rnwKAgLKJS=(TWkc$yG-+I-%^WT|ofu4`4X=vcL*i}95KI(9O6*G<_os-a?eC>}~EuVyl=ywEeh@RkbDCat!U4HKcR~>!Z`pUsK_$w_* zdY9N~f5@KKnas=-l@Bz5&6?RiF!1pYdTM7Qt{#(92_~Qp|2|>g@sn00bC^T?f5t>>5Dzk(?#e zX?J}{r3ICt=8?e3M(4Vi#2TsXB8n=jM}%9WMWaZRWthXh!JZ ztLryd5m26H6z9RU?3X!Z&<@I{#}dN*W#?j<#i%<;il5Mr`)5lTgHbcoZtu@={ufO_ zjhVND8<42DkID-ouRtjHr-;GA9~CdKJ}`kW03V0}E%J=CA5r|Hmcf}-nib6^QrVd{ zCyJ4R-jf_cZajq$$>MbOgZ|}EMXudqLxqobAM#?~1{d1qzK2yxQgQ*~c3U3AOf*|@ z@^Y=rM_qE%ZZ(VhTch}m35wb?(>T^ov~y)O{_7gN?Cb<(Asu`T8K&g|#96A@{!kR; zp8BN~PZmC=Dui%-8W*yqUdLD-leEo|Jd;_@lhx7PJ(v2#cfEu*59L8s+UNL1ypiaz z#~4CQ8b0znz(qhQd(Nqnd9Tjd01AwAZ>U>st$ARIfQ?H!z#sJ1;vfQ^Th*a>Gjc70 ze!H)lz8JWG!5S!l<)}iZG@fxF9#3}+NFkzhC>CME4g&l#Q0v_AbJn|6q*Bh66%|e+ z+hML~&uWjVOV8LDB~NCyl`FVxwrtjFq*m#&ghC>b^i!-ki0_C3Mut!`Ns^fukP>f` z9;JPiSq($0Yx`^Xxx9O=vE*WN(76PQUNg4p{al0tsQZWOak?fQ3$+u^+17m~MC5Kx z1;*;4wlgZm+<|1`@iZp_2X4?qfOyyvY#WgLx(w;BUu3wgZG%;n>Z1EQ=_+IR%I&b= z{i$7CQgkOtY%532+S|$PSS(o3Kn~%5jW|f4m^Hn;KRA9Z zlvR`GMMy}77HEsnuq&4BDC0FLZlFkV!HpTX?dXxRiylPn1q9tDX{BduKI6>ku3h!z zIL!`HE=qyF4K6w>(y4Hy5_V4m*XkLC(OKyXMZ9AWr0h)-DWx6?8K)ovGPz@~G0No^ zVE<#RSJrzqls9Wc&zYz zTEy|%Dlzd9jb!`!@-NJ!2GU;ZF@_Qfiy4JDc2SfI@RMTo$9tcND#%lEhi-%(;V~1J zFY7%!`yp|h-@dWve(Hd#B!+o|%Te7Q6OxX9z>u~i-AV+M;1E;lm_l5Z-HMdcZ^T_# zoc6HDm|$rze*HzvhhFc=ie~%0q4;TXlz%b5*^S)Nx?H*f4icC1Oe|)e8L?1j^P}}l z1s-+?B=g-QzjY~25Tf}r`jaJV51XEXQ5ZYAa8GRMrv{)T;?eS^0sI|3_03ut4wnw+ zP8zEjk-~a!O-YNpxN7s}w1H4lmHnMz?ghb7oE>oTP{!-B_Z;27-D73txMXfQvtayK zXiVPt?>lNSWP(&xgc_3TiRz@vsQvqJtVfr61GRHq;or>e)03`Ui;XOIZz=}{9GIv) z;l7%&0Cf0w$j#Y)GGu}&Q>-MBv4H;c0cR0CzgSo%K^LyOg~l`Kk7`*k6K^o14}cN6 zZ&gnDwB5C3^%>OGz^Gezyd^a6hiEePJ3U!dfV9|1XtR3X(yW+8_UQ2G022^;&PPBM zO_C|Wd`32gMpdEH7@&dHRtN40_;Sbm6i8%hqv}r4JuY#yXPh_IpJA>--zt`@LXV(V zgJ;EP9&Gx4U}&|IhgWhqc7|<#68;d^R$n^UA9E4pR6;wg?leI!RMv>Y@JdWxV=pxR`bq z7KjO-Otc=gfMT<=H@;V~1n}85!Y*W^QuFS0(TiSr9%goBk)$Wi9f{WqqxAi z=lOWy7Q9~_ER(tXMh4*$x5{-SEz7Cs@9rIYG(e<49DzE>g&(93Xw5Dl0mR;e`|-84 zMdYyJQLW0FdFoWN)a*kgy!%Kp3OjQV%on!t%%3rlEv`|p|#9^I`ZbaXR+i#I=__=!U zt5~~Yldr~q3R(5w;$+#cgpI-J(8WO;&Y&0(j=@PVFx5K;pyg@WTqQ(YFW00vta883 z5P*Mv$+1i7j;mMgr0)>H1vnKe8R)8jpNt^lNaeF|g#sH^C}VgPPHGRiMD$t;g^4cr zVl}+XyZ5{-O1wXMrhL?XlzAn$43Zx&jF8n-ieFjouqQXTD}a}QCV(eT>eI&OAPNW1t>>xEBN-_bTxABJ{6WA9A!3y z5b5)9fZ(^-izFN&8Ei%-LGpzG5c2936#@+597iM#&{t4^F2#IopV(*nL!_(1^)h{C3lx#L*(UCCL!`rOx%& zaZH8Zb9#Eikm2x2!wLU){;#?wVNjb>Gle;bykX$4YgU22PvOl+h45JU&NJzYtLkXV4qI5etOVokY3&k*J)?kKW^*X;sI8 zgd2?V2=sR(dz@`Xwq!B8LGjzZu75F5G`9JL#?K(i9aVU5{M%PgMe3e3@Vt6cZ|o)h z_Q3h^k*4OcWUPixf&8%HI(RCj7Go}MZO-fltLe>RKNMszMn^$5uQ2-GM8mQJtyk+g zC1M|#0kiQbJ@gjZq1Y}D#|gm9Sga-C8j$2)5A82N>zxF#keAbvZ~r@WMyT4yYstr6 zAf&@?wTi!fb&j8byR@Z4QdN?`MH~u*djUdps2%rDy(f|MAZ?R+@+O8=zq3>;*;}qG zpCvXEan%uk<#Cp~x-*^X>Yp!zNCEO`_gc*W`^?T^y}r_)+9CxH_W2;-GskQ7gi$L0lTBC~B%DC-w3a609yvm=b`BHo1GAzA=0kYBgT~ zN}zi9*N@8U^!h!>dK*Bd(hm()*d*xTqbL zuj~AlZNY}TI~3?Fg)%gsz*3z?w#=XvpgDaC^R$xIx3V1&PZ9_EE_2w`a6M`;jJUOh zq*^{9oqwI`I!gXmR^lHr?*Y;W3cY^`DhUQO-<8GY~zwI}WZ6d@BE=gsIDm*j_1t+*|FnzGnJ9*)#b^7~a|1fUL z1u#%i1P`J$-VpOH3)PeRt%M)TC}3RcWV!a!Bhri%Mwm}jOMpoT;%$UC&zO6M*Cn-27^;P zuS=#^W34~ITRqdZa?{1W!X*Li!-!PHu!8B~RniK+jLQ9tgoL3TUhguwmmNy@l=ycK znzVFdGQ2)s=}|FP47O{uFlP8tJsyL=fEh0SH=nb0gkq}Xfz??(g>T`O6y4l5}}<$S=!g)QA2bssZ}5ILJLgfeuw6 z_K~p?LiIEGiSGLhWYGE-LpQD+4au1m zW)EYyG?{v1<2reo8GUr%LEbz)2!n~AF(UHOJs`3e^I85|@4R7>`bI(Qh$jD+Vh9@% z{tsjC8P?Pmb&cAvU_q23NKvuSktPHPhzKYkNbf{Nq=O;!l8A^%jVK7xf*>6d5s;P; zED)tdYUnMH0HGK{s7d&8?sMPo#dGeD`zOzS)}QRX_SkccIp$b%-S~Uk4qIaHUSKUv zoSDCH`R*qJZOId-UwVp^@=QGLxc%8MCGTjkf%L|*(Z6HvBVEw60X1PQtDj|{q`z0R9z|i2-QZn z(t%4Fd;vTq>l3FBjeY)b_U1RSh5$=xveZGmk;t&;T9qP?z*J-b*oRY_t4SX<5e-33 z00W;NU0T_8+!<-qitrBm(TE*&+GH6Hx2TLodvV25P}sn*#kc)cde1LHY+CdK;#fyF zp4t4IHGFnUhi(S~S#$ioC5dRa~uhO0LOr<^Lz~OMic80dY^UD%9Hh zU#n66v5r$8=BKN2hHn^kF8wIB-NOF5W%wqTycI|6s$rXc#vM-O8 zr900GclB?BhU%+;Q;G=J^_XezOR5?^OP|*hI;BQ9a1|b0pvu>wQl7#r)X&Fa$yTSP z_P?l8(=vUlcCP7H@Qd@0UdMmSJM@EFYeqd(Cd(k`OZsxOe%84z%!@lO6*YAZGmV>1 z6fIP>u$+%ESk9cy+)*lp*wF8eOZgM^n24E?+AngBwT;4>S@eg=F@pi!_9ER~Y7h4h zJ)+Rds}dM$^l2L{{qh?&r-6VtczX2y-%mfpQ|9<+pITfWV?Gf(xS1{Ofwj2Zg<9^V z|FlhbBD5cNttUaiMoF%2kptm}P zw$!s;+#f$8W-a4UM#eu3xpLwRJ_I9nnsWH`X}LI?`vo$o3`Fb+~d|? zHhQJKS>#)zG3LY6K>Uf!BwdeH9p`;nJ=ILUu#;ZVN0?wcKbBg@mZS(PJ|J|Ub>rNE zqxVLW&eT>EIAVrUYq+m9`PuQ2N9qswdmkTFdGO;JlKX2;?sqBD+`%K;5(+wQQY1V0 zd;e2gG|2j|_+j@lqQYd%&$E+pv$}Q(_?ty46=qmy zd*0fo=|1$F(cwGt85=OqxB*jeLU3FUzp%g|dj0#k%PrT*iWj+`%Z}ou! zAZq-=I{menzFk>-l=|5;PnGeSji-&%Um8bdYnR+7>Rs5Iq$`5-&ok{esvX0)NXyXc znI;bCGR!=VNIu&4+|qGwHQ~XXFwJS9DC$$AGzNRikL(Xhk=`x8*?9%7)o*XftsfU_ z__MKj7^(@%TH!x(^@GFQzp=lb-2W=u|F_ZjA1Q8pF*b14SeZtk&$7gCwP>a0 z$;f~4{QlPW+NDbl;`dW0`)Z7EA;+vDM7k1QS+yN(97uawv+;B43l+vTLu!SmUsR-i z@n3#y-}u1TzV@k)J^#{h^c>#Zldr=&o@`uQK($qJ{VWq32>x=sa4oxABd+f5%|oM? zU%g{aYN*O_wt>fUVdSPLZvsolJ19JGS*sX~u546XR9{y6?K6zQ?u?%E-53`l0*^qS zj?djQ+h};t`2mXC>GC*E;t1RK18;)k`*Z{k%RV@o2h!5&?>Q6r()q}m=nTb6nNXVw zm#^KKLW>yMJ$=Enn*I)X zTUvKOiTK!{h4U8go03SrLKP$Wlf2t{^#&dm*RA92uRYh@%@eN0yHWWcU#Odg3@rs6 z@59s)gVgZv)5i*@H=2z}t{#`RAL3Rnzg&6{u1xCE|m?EOrHc6?^w*3W-37F|@f2fg|tV;6vB8Cff&?Tzn5H(56X#*AL;FL${i5 z8tJ)_nt5P_dA%($F0=)}QkFSija+zGE#K;YO5{(D{zLs{avcl*Mg7Dh`OEE0!1H&S zwj{Vq`LoriD!f-Xqb@3$zLb0z2az~ec#gN>?8F(8$3gA51D5CJvo()e`^))j!x%GM zg9I)38`z{?%)#;TsF>mLBRyP9_v&b>okTEC#>M|L`mxA+Irau00+f z5!;y6^8$L|x4tU$=5I1r+-g6byC+5929x2Dy+rER(xsguy%|OoXrs)V?-!}s*hYC44>`^{n3m`8qSZzHP zX(~A9fUa?jg%Tsqv3$#rszrXydAy8TVAH3dp5fj4i) zqil*WcANK&3NJe3>8fZRRD3ReAm7ERLw|Qm3ytn<#h3kewbTBGFy(#^EcqA8F8x_# zTT>WA+vNLld>{BPnZ44za!98*Z@@nV`lD6|5S6}p->YpiQjYfcz^mqlzVBIi7vFt= zYk=Wj2|>#SAeF1vS%+9t8I44#YWhworNU7Ie`Rf;s!Q~}_z^9w&0nQtP#`nBIq1*9 z;%WCj4VZD?Y!=jKZ6~Mx>Ml7!(~G%Uvi?z#ul>J9yN=WUB-1~&8;$k6U?9 zX1?r8RjY!MQ9s6b9!s>{`ebnJl{xtC$I??Wbr)adSsk;>KKkz1g;(HuA zPphwZg`E;M)10_BdGY3hiOBCu=Lu8swZzyJsEumdZoRga;u!wCuG8Scymc}UgyxzU z!Kl7|r}a$A7L6B>vQjL>lSYTwXnAUF{g~z2ANSuQ4Mt(?d7gktXaD*;*8TH;Eqz(* zeY2i*y?q&e1gh1g30CTzk=Pn}bt%^DWo^k3 zA0)!*s9n{tbgKl?tM5Rk&j8`kslVoq4%~h?$GFX-9>V@XvF0^I=du z=)38YA&I(rTIzJg;$UQ|=Qn=-ro*8gXS4$TYuI_h_O59tb`4qns}OxTQj{${D=B|W&Fq++7ez*2b<+3Co6O6bc_8^V2|%fz->-8I%7wlsyF2Xre|rIR zx84F_z8|=LXEW4|dvi5tC2!OYua+|#IzT0wX&rYnJkhEl0&`#h9>BX6QY5(d4`1@>dR~wxt{=ym4 z^th5UA1674=XYIKoSan}kvmPkT}xX0U5Qx&r|#P3i4Ubb*5~t6&PS|-OXbe}kU;Kb9#R)~42006}VHbwL1Mu-${D|Gn%vd#Q;d2Wi zi^vi|BKpj29h~b_$#Dlsy^=?~_BeH%Uk(`Pw8WJF3S+*xG>7C93MR6ex!&-T#h4ou<=f@rGdz4{SqN}>7k6y7SMHh9G>xE5L2HJHARj~= zPd~Z;(CM4|{^zF-bVz*Pgj`St<@Wy_ySXotI{8(H7{=Z#_k#1bq~yHy?}g0gOmA)F zQb##&4+81ZTlK!Vm;Je35N(49Xvw+M`n)UCRYMVyCiA29X$Rg5BEpEDUshdwYI00t zXSzQ)lrBvsw}_^ycCcG@K-WTEy=*|v)(0hIQgrf&?=QqOUUlf)&ie7QEn8l2c_5Ci z1Rh0H!dYK?i8mQ>K{xi^@Xbl+>D+zcTB9yV?*Dm+e;!Br&q3EN_;<@^W)eR+@=H4! zf@e)_9XviuGi0ML>xMvN+yfRl`&TPkJ4EU&5Plau^tysOXHLl9B>L#$U1dSPpyS+i zF^4oaQYplRlfX`B9>x#Y8~Tm5MR0Yl1r^aNOX>n5zo_SzX=)jio)}j8jNPJKg7`~! z1KK7IA-N{&dt+K-CW5|IqAxz%ci`xS|M{`!&)tWnt9Q`%4ztgHcjf}ERdSlia+iFn zW?AKOR?6REBCnQAT(iC3mb3u5+OnbDVi_xmT}t{3E_D=rC&C{=gOq%lgBasH@2`3A zqr9y3lOQ6neZFu})}Qz1e!Sd!uSdN=xx3~q>!=i|zu>TAH~D}k5&CB_I#rv;kqF0L zIp-qQ54X@X8~deiN$Z?W73{yCsBG6*E>nUz?zmlp4_Ra^bgS-y9VP8nHF|HG6hv$d zD{oL=He1(A%Njy`n|(K-rAVmg+tb#%h}7H>6#JN& zvOj^ooDNM^6HXu?nYq=iIF1Wt?Y!S`)k!N$uP<8wE6)rvM5X-E;mCLRlqhT8r1!L$ zx*)A4mGPY<=Q2~FOaB9b{|5{sJnXyd+-bA?>n=4T;lQ<5Soh49BI&Cx5)$#I+j@`q z6Q4xhIRD6|+U+LHlF%ZZ?fUXW$D_(e*=4IG$bwIdjXMz37ikSCU;ol#UUkmq{oe!e zoDTKSc6?LL{8qxwP#6BT#_ZP6Q&&)74orEbNxwlQW9+PBQX+cUI_yW^`|kneN<)Ru zIN8ku3eN4W#ux*Xeg7A+?5pN?9OC0A2mbMeo>AofI_^X zt%})@xRa@^U!p;jNA7V0&GE!+_dF9_$3*jT65VN+^of|Fvcr?F$zo2F;JyOIpEC9M z9x}smw8cl|abH8%DWPjwVYDN~Nd$E|uAR6*d;4{p(I@rNKe=8f?C^?Ij3$hAND^_1 zm55LmA#V60do>VTVdV6yGOz>vk2g!~B z*D@^&R>DlpW78W+6o{e}hE?8jO-xIcE?{cJo9euxMc?XvdU7d(+?zgU*Ru7viD|e3 z(Co_ARKf%PH`4xd^+o*V{^0naRCdz#zp*P)IC2F5>59I@8_$sWmOURc?4;-cum;gigi^>#jylx&5 z(R_ms(ZFwCMaEasx2R;jB{h_{NCS9FL)v+5tJl@A@kAHi)b%H(VfFmit*y4ZN-!_r z-6hdizLT(t-fKZ;pZ+T#7(F}ir`1P1EoyI^2;vO)<#}d#V&PH+oPO_Xsgg^i#9{x+ zpArk1F_ys#<+744?j_Ut9lXar-{ghN7(rKV%v$a=m~453%5+en;k$B^rWSF3 zjjY^;6q(`RN)pZ8CnWwiBwYT1L{p=~`Mr>+`?Q_h%jHt}v;Q)0Qo|)4jt{C?(RqK` z4!j-qOo%ftJ7Ae)2}*L{53#ltM*6*tGk45g7&KlQ$-ki7$2uYkAU_#DU6*#KX$Nx+ zSNVPG*zarkTFy|GWlF!;va3Uw@LVsqJ#c5c^-n16wVMqLs-VvoO|~H?sKk(Kq1pAl zEwO%eSkgAjS4;W(|1V5P{9&CfYW*Iwof&KE-*&+AU9QFXRjVCYhx!UmJy{V;nCnju zE8ZaIPw_^TE8kM5g++Y3N^X4;B#!Oa<}UoG-?g3y?9LC?nRGg{Nt_57Xz#BYhkw!B z$2u_zzDO-E(?Pu0-nU-#y>sZT&ZBg{Ko|_FWQ;f$v8-SYg$9!0`*}t6D`(TMi2~W} z<-u~9!TNg;yZ_LQe}EjNl4|%DkaaJ>m{oDNEnih!daYMy^Krox^Z6%_?xk$c(ehK| zbXnsP>&$7z8yk{x^Rv?_oK0%6ogvB}&!}S5{I5fbr`9)};W?r!0D7)5o9SFT)HF3Z zzL^Z4Bb1XxfdnXt=x85tVl@N=>JDEgU%Q0cR#K>|Yvh6L(0V0=oB%uu5%->OGASd&J_WE?R5M~g_Y!Y}g>jE; z{Qa_T7S%G?IxCJLAxd_BsYIZ`YbrDGk;+1+y*}k~`~#0)AyxNQD&37y5+*c9XI${^ z`?o|GYf?1#XqGq{tIKgpkGdhp$TUgNT5EdCa&Uhy*+z0L$=M43$V8W6wPILa^II!; z?M0wJlv0Z$k(IS-J<7nmWcX`1Ff3p}^@|(+<}}S(}-4T*az9iB)bNPYi2FW>Rb_1PgDO z@qK(Zs2P+TtlV@)%D+ZJR*~(@a?XJzzZMu%?(|F?;jn&(MR<`(6ddNoYasxyz#Q@AK@cIqQsrdAKTI` z6Le{TkM*JLk!4{Nv@EB z)V;RU8C{Q&%@WqyiP2JmPA11FKRX#&`=WV+o$ym3TI-!exMsvKrJJmeVu(sCDCQjj zIJNKgy+$Cy2Y9W>YUP!28~V4v+eGw`Xud1LIRe=n7b^za2P`sv1aVRpx1&kK2r7O* zG65OI{hP6#Wiyo;^)~wd<*@%S0-pQ(2cw52ua=zXi@v}gGn!dp7>007E`IAWCH}c& zB>FOaC248e5?4IoY!!Wt?sCjPUl{dHHOaB|@yZhQM{GXPHyj_7AiDdzHYpyr-q-Q6 z8GAZ1-Zd!!ySjq)WURsHIn+L9eWurj>jOUDu?9P*T@W|x>D+u58Lb5qoX1DCT7s>- znOffBx0nk(l`1N8Xjl9$x7brTJ~Dx-fZAR)4q*w z!nM}tHoI5UwboCev=jqI@pU<~!O!Ty_|9vrwZ0=J2)UC#@lmHDc#dcWUbGQ~ZaOm6>N;PJ zq*g3*XA92w{Tl`Jdw4g@eNM(nmPh!fXzZGfDSukSgpTKEG1$W#8~;U8Nq3bIX`m}N z+Xf}WbF#tmpW-cYbfS?FA?o9l0G4ENi)uwJp%4ID?M0l2QLVKUS@ZnZ>FeXCH!(cF zt9Hg#000(Sdwt08oY=ar*_hFc$L8!nN$k@~aahd*6lQ1^fxIcb+y&m|snFDdvUX_1 zh_0ez8q$7`om?%}P6QdF@*&7|!R0MQR$^H#ZU_zyA4Qj(`0Ht(H3uGAbLQ5X_aa06 zuI%N4_Yc7S^bJviH2+MM%h!8+ymdctfzZBve@XKotkHc-5Ooff)fG1;Pi*Jo z6F@AUiNe}rf6?+!0{fvHYfpTx@IT)hh&&^UOmcn=-?s=U&6Aa9z6MsM)Rtujx=AijJBUsC?? z*%ZVu=&h&r9%d3L@n@WPE$v%!{QYj;F#d-T%CyPC;|0T#!j`+z9xXP^Uzgsz zec}|2@(VU9@Gsx-yXmsNDXUk1Q<=z{o^SO~5!+fiW*C1^81`qhg!+|M)Cyxp1|{Mh z>lbeQnTVL0rNW&UtHIROnsZ-YHlH)enm9kf>?@%%C&E1#ziV>@$i^aZ*JN&Jxv3T7 zZ!I#ibi-DFKgqT;{kw&^F~7s2Ti+o>ge4?zXnhn+D;jRZk>x|l=++;|JVgg>7A1GF zvoITN=r2ka^bknCEwi;1@c_L$rXO}8Z12~7^MT?4o@Xi$sru7}2to*nhAcehftn=YMB_k9qj1n7^G66Of6#x?cjgJ` z#yU8uTTvOexrH}nj&65|K5HAgTMfUuTT0s=1(?8~)kyV$6g;*ezBC4be;XK_icz@PnjrN?xO zu(4&@{mWEMt0^}D0(LpD_&P64K^9k>q(tO73wt8prdu?Z2+|pet`N#RTWY`6aJrzW z;NHZ`4zR~!764l{^WaE}z1(eQBK(&6D1pH7Wp1an_u6zoIAhKn9=0e&@JRq|_IMI^ z<3Z<_nEW7NEOo&JZ>w0@h&z-dq;`FrfA{4|?~1B?(^BkN;=vVF%_jO1S5kfq@fPF3 zTzxOik}K&H1>9Rzs2SAQX;Ok$9$u=%M~wx$cKn$`zDO0Lm6?APK)Si!w?}W&h(rO@ z)()ho&ggYx$0V`sJeSW^xSsNuRnc(X^-;u0T?zQQ2v1`WFlV=`GGlNr_1YI%adeZM zSK)Ai5V<#`9KADnlPAP!`=_X|eqJ!;796@7TXEdL@pMCedV#j`jpNmZ+D7urNl?+U z-!qj%Z#hcO^-{AvbF4uKoD=nZfU>UooSMb>6G@vh*0Ni4qeaA)ANtX5iTH^LbgFGi&Jw7+nJRV!r{bugHoh}Q zrRL!LcE`mTO*`MZ!G9iM?hR%x7HumOq*p3g*-_1A4N-0RdgfG`gN zA3i0BeH@3PZf6S3GY5LZn&<&VT^`Re@TIod3XzO3vL@52@TC21Mb4ccsG*d(te~-t z?b%G?n&?(=;gs^8V*A3VJV_O0-%O)%+-e*VHclnPDWA(--{8wUEv8qIqHHa4D~Tj zPz}s_Q4|mmtSQ#;fr;+esUSP<(sb6`XpjLi-JuRRzRhX`yx9tgzrGvyq$Tu$CS0T( zSKhj{)mwkqUCkHZdPCekD+t>f>HzzaQbMu-{qS_-B8~mrxLE22-6Kc1K!zT{Xm!i&+z4*8Y-heiWp5mZPUYf5l_e1XNE|5p{A;9B;B~ui#*odE#*5L)z79{t%WE-Rc z&g)p^SwY=uFH+H2-elY^HlG_iVt3aI46HBI2+*sj=lfi)rNy7Ls_c#yV{5>)vZY_R zb@6>F*Zx{M24C#sn7lWtCwpKox(5!xSA-oo%}q5Ho)1Z1w$yf);M4W5DM?DP{PHU9 zMt@a<1kUX$S5nZ)r?Kt=Y08CJy-Y#TL_tBAPmngA+2d zAPXm;tnE|3Dfmuc+b#v_gd!>%>DG<*rA#@h_Qvsi46K>0v?{&f>k&`GY_=|(HN60x z?sHo2WT_?+>&sQ4TWyKroFHM80|wxPg+kDRyL?nnLMT=U8%l2t1`dz$<4~=Yc;aR# zLv3LK1-ct?fipUW7;qU${faqAoaxpfTJZRp2=`O&XNmsN#B(+5`mc4aJIk{MBf%Fr zF}P`Kl@XI*1v@~AJMKn0z1;29imA|G4{^0~fS z0$y7)G7kTHaRjs5HYcOTJY*TA$Cj1ybpE z5tQ%QiKA(h?gCuX?#4LehyuaFB! z$z~vXtQ1`4&~RVoHm$*tJ0ypY??Vsya*jX+w6R?ijZXzVlpK!GSP(C!>3) z`-U0SEHf&Q+>_N-ggIVo`bm?I=mS6KkpbEIL5`ciST`6HtQSUzHeSSSsFbI6OUmof z*0-}2y9}k((52{>R9`2=YUsBJ+Q1J%DIg_e7E@7{ycre`L&t{ zlhn(Q^{o1VH;&2TT~ba!&LMRLb>*{vli{cMe~O57d#1`DW-st(vLhcl2*d)0`Z7r3aDYs ztF{W|*@m{uCN#4?@{}Rs{3UJj`f09q&o-Lnn-hN;6vv=ghoY6_RdEaXVamu4R?Pqq zw&Q}0=@;a`T%(shoGR`VpV%0VgpS3Fkn9&GE$29T%KO?k zQkoDKtd&Jc8SweG0Of>yF0SLM=xC?ORC3i}H6J917}lghHNSaKJjS^Op8$mtRq@r^ zXpx=%Pj*eXj}cJWlrE~;pD*k7Nf=g6F3F@Sy^~;-m|F1eMiTAh(n?5pVQq)weE7++h9v9Ewm8|- zq4zvuWsCY0j!$?W_N(@>dtMC!p07j1xHkY`j?O{1cb2wa zhHi+De=h>9S%kw)gYiVRVV-*FwmhH>Ls1NnAozGCEu)*9xK=auaL>kgA2WJZmd_Q| zJHCRyT&8D1Zgyd>E-(PFmPRoB29d(~h_IzBsfFDRFM@S7CETwYUSH?I|EuDp&sJ3f zm#f+u=7`5~owT?jK!30aoH~IUOcdw)Wp&%5T3S7DImDTB6)bsk8vbUd?rgipz9#YY*}C7FIewGL|EtVMVj9vxAIFzv{Pid59#@ zY%0u;VESu9!&Nq%#A=>oKw6rRmC~lGczc z(gJ8Y^&){>GonRQgFpGj;ReE4T4Wt=6L4HA%3m~(|EB2Ls_*-wu_P0NI-#~+rbeJf zWVxrg=zf-UD0C@&HKksXB|jd{qyRih?JB5_cxlw&fa}p#<%FdvW8(^O3@M!dY^z{~;;lsAKx)RYFZI46~BfiX- zg=LlGlNJK%?iXi4M1+e~s%GBzs##58%=lFz@>(Tx0*Yw#!4rO6bUSAwC&LwrnsQho zWh<;FpfUc1L2gYb>P1{}dxuVTJr>o*?Gq>U>MY80x!u>5E_U3c(UWH}@} z_sBY^fF<^cWIl>GSFfRTMqD4MOM7f|5)S}=v9HFD(xzq zkTp?RRx5z|xlWrxpCZc~cXZ^7R8C6@E1!0bA9Hm=zr&%${+iMA{{)8Q^S@mF3JjP2 zFlxm2HTLv!RL*5a=S!>2kJc1&LZ*7Z3(Zkw*~T>9LWiuloBVIo5UZ;7XDm(c#u%R^ zFQ6(hLBG7exIa4(SS!6PL%|QaEM`@$`k$%^f}->yMe=ht&ytr{=B=p0WZ4?r9emj# zO?crTis+rUykH{c`U*V!S!W4oMO7Xh8}rc$swPV6REH%EZZHJZoFf#9;u!&m>KB83 zODdvsPem-kvM9cwJ10P$%Ma)QP6fU1Jlh6Y^iH23Ul7?tw#M4DpO|uCSMAaJrWNPb z1q@+8cj!d1^5&1I=?X?QWz;V0%F1TOa5BI!$vSFVNmhraajm{s9j~siu}bArcPu>E z&vUFtjuvWDO`Z#1*(nXi6KLvAi3_n6%<1s1G$7yy@w+e3*f~{+wT$#k;CE_p>R#MS zy!J(UA7%5g)`%I&y~7W#{9&ZFm#)_h5;0Pmzzd~jmM6?2*mBM}O5Wq8GM{(4;)$`r z@G^{9kZY?{?P{r573s2vHF|>VM6^g)Ky%WvYJ$3s{(7D*SXQuMP*j4Jp{W%q%8Ut; zZrM~gzVCZi@9C6i8djm@N;#Hw@rZ{e$Ot)Ms);9|PwBc&T_;nE9il?39cD|`ob1UJ zTLHt&;cFlyo4vWly)c+XD-VbfZI-~M3!OsB#+`~-0;<`6k*;d=y>HeHPjYt2f(8KN zAo2?9B3ftN6dWT_mo~apDuA%{P~^G7U|}i5$mpApl$Hp)+g|lf*|$xu-H+jaABMsK zcq+hxrLN`07)n3nyov+%N>090`BfbC{7=AvfT|sHhn1-l0>KvUC&fS zz0_Su=s4O5#FZ+VhupPu9X~G9{aiCB%;ncssuT^nuFKh6@>P9r^zhQ1{B0%sg0iO$ z$xc%2Cb!C{Cnv|PTEvw*zghFvkMj9So}LHBn}Un;ELs99?`AJ-%q>$EdPiN$Y2qcV z>V=OKwfRb>>kJ;rU$)Nupc!|N|FdM1Ssz3GPUd+?QF_50tB6Xyv@1Z9gfa)f=lBGG zRl(;`f1V-#h3LLYHDLr%Bkk;yDIZs#lL^>$bDP96Qiu7LhHs%oyN7u`|9xV++?%-x zq4m@d(eGB&GI9Nln&3NV`glDC=@#FblgxROepvZ{3a{<>~4p-ohomq5AO^uz_9gCsF;Nim(`mZI!R@K zRVTd|#IBc@D4ulHvri*g?9ALqcf4uG?~r!le!1Ic2Ml<`&dc5MhV0L2#apSk1AIDz zMfE@+eNa$sm=-Nbd;j32zlw0pFAr@V{`1o3YT93`pv2QHQYSSYh57un_<#j(p0vS} z?#@I@@wQ7=)oXRHa$1lAInh$rmJgUOs^hbM$Rz)aXnX6NVn=KI)X#ym6xq;6kpm(- zX4_wt-hQvQ(*F@qdjH+q4oydWB*?aA77f6DU$q0m{PD_?_rH6he$xxr`vv<`3HcE@ z643V(iTwoUyiR9@Zxv3kY=WKNy&5I_8$vF%38d_x9_=~t1(Hw{bW4<8eB$RJL!*-= z4m1}2XBO6d)iy4{Fp7*1&|jukJ7u5I4NC~pHV1o9>ocohyFhwKpv#Lq1>^;ym$I#B zsGJmhU8CWE_tI>RThHr;hPD*2VWf>%jfB&Ffe&Bnp(by}ls&dPk?9wamI8jP44qRV z`K-CM0ZP)_1&ANl+*XzEFMjee3V+)%_9~@%VI4fvXP`;Vw8oXC`Go3??~ND#=%4H` z(w04=ws-h}{^SaV(V}5Zy<;i5M5H%IYRo-;S)hDRW~v;~dPR`(jo`s-v!$$H2Fe)i4T>>c zicJGZ4tj3H4*H8^afyiz(X!W-pb=GnAB46=t58Lq5(iXzvMy-MA)W-GRp)OXg{ zPk8U}C$T>S&5a?+&Ef@fN7JKiw+am6Ec^OR`CpA@I9CN*RNCrhRLb6Px8W`QoKH4I zt(IxUxY>M>i4gqoDAW3kui-=FqkP;voevhIqVJNRFqh|HwC>h4D0zcCZ%Nl|R5p?U z>>5`?NP$`ZSR&X2?UIwD6(1{rDgTgG{_e|9K-LA)t9v2z)u`HXV`7hn znA*6mIhQr|5mAOEsX-<*C5;vl1<&g*_@T!0u;0YSE4m3gb4k0Ga;sdJU?oC*1}Fs6 z;DKy`s_*4w0py7?-f5-*q9K-~pWB%LNn~P&tj>hcEE#B{>AVRjeAeqNE{O zm(I;(!Dfq`0#E%5u>YSr!~;$Z$UOan@BScdspDYF(`9X@e6e|I7SSI^OKOgrfoC3B zrofeq4x$N>1_qU#Uo^pf~QrO76%9DyYn{ z$`@qi8Fcr`7I`5%2>F5kgAzcutAb-wZG~j*oUcW8AW=M%wWA5)YUaLPoC`L}o@KH% z`ZvzEb|~H;|N3yML@4L>)JalT!p7XGa*Ut4ufMUV$@o$ZhD5mFN*#2{vn#c|E3{-< zCEvA}b~1Ej2SE$-e_5x9vUTRuD$1d$I_;_=`Mb}yG;yU?BvCj?Sq)C0rfsn%aSa$k ze8~%5Lop$>145aULpfc(aY(XbGA|p-(b#AdxYDIfBWc5fo&CSwLSIO<%rhv=$wsH@ zQnH~rS~wT4*;kcXJMkzuXmjQ~Z_BB@Qt0WyB(_4jG-`-Ew0C&@7=w)6js@#nDX_ib zCt>I!!T(AL9skxb*etm?{&}3a8)K|Cplh)4X6nRKi>)@@tFwt|MFG#3tpz)gV8D~E z6%E_0wk?lSoiH3*XR8_%sJDtnIz8<|02;N(AipPQzI@&wrwYXzofJY3BHxcGn0NhT z$?VQ{7)EA@EQsn1`kKh?5E&tid2+?l39Fy)9G;^us6sfiWEehP_2GcKcZ7-1)JHr2 zC-|Dj=u4mP*eDXxbING$$VD@MvYG$b?unJ-#q~;EQh)5i?sSy|3ey>yMuxSsAy|AE z$+H9f9xzQehhD)ex84=7 z-_l+o{(RM+gHv#lJ@c6#fll8YEc_x3t{EEBU9=7K)snQi%eV!w3E3Q_uU4#tU5u{c zor~fQ4Q~uOnPd^zZHeUt#+((5mjHTzY4IbL;rbhD5M$We>OAy2H7nm7%4(WTg&Z06 z9Ky($SYD!Z_OCH25mbN~F_Z%6@1@B^WXO;~7TXz$zl;;kl7%v=c0!r`Zz(~W3WcaL zoaz%SqRaUi%?gzD*csi3LDk^;wtVOz;GLTh8-Z;R+ z8>L8oBSs7urz*pw8^+YGre)$ECp7?}(?uYG-7(NM+W23>@IB5sav|NsC=-20mUC~s zSoV#KGCj8)Ke5W9UK0%~=e%uc!}*SNwGeu}P4snX@GJ9{oS_|X(a; zO-9SEBzPgbdxGP;NdBi~^JPsqMr*kTbqAt(zkb5G^5Yna{tOdp9!M!NdtPhkIaUjD!p1`Q7K(!DmRX17vf?+K=BQyz3 zyMS;)NPpVF8rrsJF~rhdON?eWKywN1`Vi<1kqua9EQ8bZ0Z69O6AARdn=D9|Ezxz^ zNCi8;=-C%l0TyXYTWO~xm?)mC9nKPyimsO(+FtX`0S*7gK6bQC?$i@WeIO*rfT z3x8syQ5t!4@ARIwIpm|qJ2$a43x{j%EEYM4o8hJTTEMWg7Kv5O^V&OcCLZ>_$Oc)e zteMqzXf z`RDsS9)D^LFMrrwcUu||kfN(P+wBQJ5XL3YcpK4mjmi~IcDj~5mO~8VNc}WTVt6FI z)j-KtW&+g0kyV0{Cec!{&OC%lk$Ld@TEe_~!FmY$+7|K{qhICRP}#Lq)UD`LMc%rU ziVQheY8jRFsmr>vYcjljTbPn=_v{f7MWREL$oL%%lN!G0K6c|yzS*9EUP5>kpsQb* zS(^V+Zc4cu4NdGVTMc>cVV~1H2bYO)X9_yKch0seH6H8n733L#GdJUjCQKC`n0eIS zrnt|~U{=Gc9DiHhDd!KN~?E?Gc7)p*_RlDuTeyOK7Yz97k;(I{!zPR(5& zUhgF8U16yUIy@h8!sF5OPCUTGqImm!y5IoO;fvjFgX6V%Xy*_IG7Ge&ls2tgO(@=S zxDE+V>aT0WBbWxnPI>UhEUF(AQ|9PR#YJN*u{6CP{7SLlO4dSeM(AWmk#-{u50Ju6 z13`;Bnb{DLXep;m2+D6MbAq@g73Vz1q6Y<&JDHNMEo;C=d+b^DL1-oR%W=J(=_kFBEFxlVDyO}t@i|vqi}En4>7?W8S9jVTA#m*s zK&=`&M0S8To+mPe*U1>pcbk zRCjk~m!3)$WpLr){GcWg*ME5cnHO_KQ47~fcZkpH4ffifZsu}muKyGx;>I^}sK~Q8 zM~rXU4+#DBU$^9ZS??pmuqQr4iMcrNhDPu1O#@0?GKTdWa* z5$IkNso>_&vS2COJ-{EtmcRW_q{(=8 zL(Ts*4AL|x)kY32b5_QYvOJR3a}-DNE0?KRRjsoJ`ULGYs=7*u%Y=uQm%~2D(klpv zZa~p?Amh;{N+ZaHaSg_bruOd6SjN!)R^CTV4wNCPmy6m-c6*KH`yzQ%!zY_Jdsl*Y zHccj&Gr==+$zJ~2CC7~|ADc}XWZJ3OS7J1$bN@lifE`Z8wpEkJ^2OQ1EnKgQzH7rKQab}^wc-)W`hV(7eVaDD4y z`_}-VM+V3A?O_C)1HaK+0SFg_1P$aeJZx5!ZEuhp)NeZXC95x~lZ6Sk$38n=6CBx4 zz(a(wC$UFqX3pbe%^+{a28@23D97wf!*yobar~GI$>|&Xy;Ip zh=wYwZ)D;I>$~_N*!N1zV!w&e@IaU-0d5M;YN;N#z9@C;^G(v+x%}K$-Lg*0y&s1A z2O`wg>Q6l?`{vXIcGd21mqI}AuCPE$=$%f>S;#;zrRH|j$UD*Fj%#b5=*mdW+@!8e zG!mU7%eKQFQ^!JnWEunYSJKcPhgmLQkyWqt?Ty`SaN@=QF~E#EhFk=sZF>}+ zQ$#Gq%{TT^2wRHSkO0OIA{fl@h3(9OiLIfjU0wg0QqZwEoD5W<0p$bWkKa3`*wp5) z#eU2``D|y!hNDRW7tsG|yam(wE%bR$VV*?->L-Qx4R2DTM1e^%5w#l}&gMOL+oh|GncfQ8ig`bgI#QM3 z8<%*OJoek|5xj-Iq>uPN-Y|qi;nM%34&-$+^NjW@3Lgl zf~X!7nvjUvU}-2bZrv5rAad1$cT( z2rH~O4sl~6_svZkxVqd!gE-<|Hpre4k(~)8!|6JOmLXhkeA#4Ly5`GYI{-UtT7E-? z9p(PUGJcHp9NT+=qGpTdExaxFBtay7Qn5k1`B!`*&j^}Httuy6s{-M!KZ*Z$n4lz8Kf^;zKFL z6l2ZWT*%iZbQ_Pp`hG0k7egrLS=x~H(Vn)_X=6`aN_@iJ%)UNByc0n9+9>9ONN^pP z3s^{GrY?{IoL|anm2FcymF91?n|m5$)zG*kck4 z^ToAqOTJ?`mkmnK_^ok68%tjw6D;LNPGYscb35J;I&;?|QMrES0%f(WD|Vc3UDf0? zmE2+zF@MI5V5~t9BRWx(2M62jXd1f^&S`)jGL|xYJ)DTZ*P#cSUT=MoHg_wp+A4OO z3D(5$bOEdRd82x}kb$>prJrXFODQkLR8ex842ANyXQ)=dZ?-pSh@E0mr5EmbG5KEiEHM;v?*7-oU(6xA`p&KtagrmrcREXqO52 zLsH#LEg$ZR-|@56&h6T)Z0YLi*SivQCa;(8%~+Thuna}>r^J2rdB~w+CE3NgqH=7O zlJHi4sL8dV&v&V%j@ziUJ~ox+vHKHW&?AQKbA6c@E zhKfVV^5uQ}x?&S`>i$JrU|sb58sh^EV1~}4N{iRL zGai&lv1)iSZ6x#;N9h~Q{4e1z|1?vT<@*Mlc=y956ZiXltgwbBppxx0T^&EF|B9;HM8 zR}n|Ad~Tnt-d5`RZiu*@VQrMHN#{;I;wl0z*mc~{)u@OUk7I4J8p|I%tMtBs%O6N? z)}0XJ?xyW^DK9Nz?ClH)bJ6kYkEkE(O7?n=o3Vf-MjeCP{uyU`fVCgoQ`*qxmp_Nh zwdh$W0nZY`XMyTM?X?-XlEf*fWYhookY=cj_S6*EJPFuunBL z6LZWkkv&EXf8X92imo%O4jvE%rf8>I-fl}TTR4+%ONelPOw)?kp*n3k7h~(VCXLNu z^#{__aEMt7GlU;iuVqazsR?NSXmhPlyfnLnZ!Q)=^Xd-H(*>22{H>~mdXte@G{WTp8&&9# z+JkoU?2#~`0YL6?lyM3xC;=2D9`hBQiO7)kS2(+91f#s&4Y+HoQUD~QOF(53un^(L5pFA#knGwp?`ek)5cjV06#Pio zx5SGe&GO|jtE))ir&T@=RFEdDX06E{u(ruPdE&InP&ASCv5ZT0Ya&^LY|OB_SOR5y zS6z445x|R$vs?eBj55GlofGwS*uoYKOaYLTjHOlwU6quaABk{p-|@1QU>02F>B(<6 zs=iP16*Y)ptc6E(vBJ*mdKH<{9BRVyxy8mt0h#=8h{RynfK*%o3}v!j+qjHe+uLbi zhYVk<5*R@q1bV~+_%KAt+KIWhmg#6p(Qr^o3Db)JU`-1r-SPHK1R6m=9*qP7eaT={ z4oyELmEnEvV~>&V);y7z%6(+yqXU2%2V5U^Zw1K09t!|b-sKtCy~H-C<134pFRBJ# zpWe6x658I2T)|+pUg8Ub)c~)volEX$V!%6tQ*&R1s@Cdnu~+#q9xj|cXL@}+&S0Ws z)_3nm!FWfU;dujm({L>0kg*p3D{B7}BOdECh9y10!)bfeC}HMI*_;|vXmY3!YnD@7 zw637MkCATI3EW2SaTKs~@Jxz>>2@kEC7;X>aHVlJJSnDqDR9J^3 zvAqkCZWGc4*s}9~%I3crbV?pQGi`Ou7dpzWVCypbk#5m-K8`uGqBVXx-Dm-(H1%uf;3%T#;dkLkf{u^LPlq&VxWS4?#u5M2B)h1t1$w>*LiuV zdeg!&w}qGOMKw5#dU?4~b+qe$|B+fB{?<{K_;R43LZp)mJV_(vVDfEXli&Tk5f#gnt zY-XA?BM7D_>27wtI?Lbwyiqo`4ls$og}O@WiO#V@UdXH2nMQTu1OiS>-Dx?6TJ#HX`$$3i!VM>BSSaed5(ACs#yR03R|%WhmqtxQN(T&&px1#yL!v5c>1 zgTp)4wu`44hxC>0qYtYLt@59I6Cb8uugIpo_>weaWw)g%$l7NvXFjB_CpAo;yuOK0 ziM`D@+c20M+C6wJv>6O&qKNOsqBiNFFbq+Nce@5Ek71t^Ln9UbU%<|=5pF92@XEN*X9SW_^Ahsru<>9#i!S&$ZbPegXR+-%aj+usVXgr^PSfBRBVNqO~# zZ4Pk?p9;?pKUcKbeexem>lZKhqhJvi{J&jfoBn&ZO^RPm{rbJJ?9G>6`A(to)3{5U z{yU`~l(nDV(rf&DhRd&vTh;x=Uk|i@<3$D6M77Jy`+i=ddUoqy4&N V7I*hHR6+VVdc@^0{@b$&{|1ggzUKe{ literal 0 HcmV?d00001 diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 85605874..2fd7fdb1 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -2030,7 +2030,7 @@ isa = XCBuildConfiguration; baseConfigurationReference = DE5004F745B19E28744A7DE7 /* Pods-JellyfinPlayer tvOS.debug.xcconfig */; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; + ASSETCATALOG_COMPILER_APPICON_NAME = "Dev App Icon & Top Shelf Image"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = NO; CODE_SIGN_STYLE = Automatic; @@ -2211,7 +2211,7 @@ baseConfigurationReference = 3773C07648173CE7FEC083D5 /* Pods-JellyfinPlayer iOS.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_APPICON_NAME = "AppIcon-Dev"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = JellyfinPlayer/JellyfinPlayer.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/100.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/100.png new file mode 100755 index 0000000000000000000000000000000000000000..5f412bcd34f560588fbe73f972a1718488b15dd0 GIT binary patch literal 7906 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

-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

Dce9c5$%ZCZG7Cl0xesLQ5RVtK>;1%dp<3 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%0Dh<4dgB8IeTphKJcf6hN)c{ZNTE`^piq~ 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%0D;o*o@YIk($gCm)QUuay&}~U_QcVFU$x0=5 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%0Arv%(sYi_m1lHTtqFDxHlfZ%qO%|kw}0{qfP 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 HkJ$eMQ#P?B literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/114.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/114.png new file mode 100755 index 0000000000000000000000000000000000000000..b4caaaa1c0c86a23792d1455e29dd0d1d0b5423a GIT binary patch literal 9391 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 BbFBaX literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/20.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/20.png new file mode 100755 index 0000000000000000000000000000000000000000..53baa4a81c5b59e977abafe5c97be19e5699a915 GIT binary patch literal 893 zcmV-@1A_dCP)+X+`zlmcDNOi&_ttTuj) zbuw@CaA$WHzjW)|XDdUAps5mpN(7TqC=ou3G()| z&o*cuV8+NZwAI6-J`aEIH{e*7qdRKWf-Y}@5}~$i12 z#`ldW7JB;lv?W@~L_tLO;#7!*sW?Bp8Aj6trHVE5+RFK>ql-WDS!M<^e3OrJHeSc! zh8l)Ko9Pa^=n1>nyVK1PeG9KW=Ht85+nN2aiT^I|V(zP*)NHmC4pJgGEf#)C>9DUC z_UGY99-hs?3kJNDhO_N3o`SdA;9?R!X@$=d@MRRPMEUt*n2nXDf}twvyR23YJ>X>` z*}&KRQLY|H@cT$BH&3*3>y;K}&L@~2k8%BtMy|cSgKy7;dFT0Bp6uO((@~g}cYk@c zu$eVnb_+F*GW<>(ewU5vjaFP0X38wu`twkUU{(rq@x`py5Ty!THJj9;86v{}WPMhB TR4)y500000NkvXXu0mjfr?#`$ literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/29.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/29.png new file mode 100755 index 0000000000000000000000000000000000000000..e9f48888c409dc5a22435aaa5ff00570d67b6880 GIT binary patch literal 1523 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 T00-fu00000NkvXXu0mjf8tv9b literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/50.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/50.png new file mode 100755 index 0000000000000000000000000000000000000000..e6991944a862055485e50ab27c869a2ea04d27f1 GIT binary patch literal 3454 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/57.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/57.png new file mode 100755 index 0000000000000000000000000000000000000000..57b02361b2816c4ff1d1e3398869439509f66b54 GIT binary patch literal 4017 zcmV;i4^HrjP)?R&n#XI&h6xY|5W=3wB7%e@wWRjFDz#)~kww{&pe)L2v#NlKfVPMWh+>O?s37fz zOY6}dr_Y=@_R-NkXXf~!+cR^f#dex3b!#X2&4*jJl1d1M&1I%Pyyv}Db?=+!fB(<> zf0j2gnM}t2gYlCa@DGr`D3EfQ45eI7hFp$PF8{v=Qr^RN7yJGf2~r{JU~Nv}2%eZ& z%8a4II)49gSiOFWOKw@1mCe~HI&jv5yB2)4oKdS8n3?%w0liKPCJi5zeFJ||Ilx}W zd8?NuhnFT-71Y-7N1K_UIoUr3(CYv&>7qk2v-zsRLA$k%zgxTn9e#ptAHgaw=e-`7 z7T`0dk^Ia|jI}fw{i2&DS#0)HaiPW!)2c~K^U*TRjc}`*&}=uM+g!BHbJD)d z!>9EcG8ET*e_lH`-936T7#ldR_Y>^IVzb)|wKaTZHL>@WiG1NU!CXHrx4H<;brG89 zBDBy+%OVG?u41dYL|j*K&DgxU1*H9B>Q_KQUq`b(KÍ}PKM7iwxaJhhZQN+mLx zjJ%8tj_ONcfuEMSPC^S@gcdmoEp-rTbP!$Tq@u82+WJ2k$j)y1MX8;*p_XQYKP5Iz z4lh*K@@#2o>X}T1B6a81gKRzFR4FZgPBSF1&ljDeDvD3aHi3OSzyG|=dwb%~wuatGlRc3M|hVUwG+no-xv zZLjP>$>7O1^h40r(5eg2Y77vx_-V2Ehw zywXnSZX1zxHk#L2D9P_5W<&Cy0Hnm?I}`P^8|rCFicPD{Pm9Ax!dH#0U{KnmWOWY zT?QioeZqPZtasD8+Dc@djmQQo!o3#QVaGde;MD@Xya&WYT25bO2LDm!BC4+u#m4NX z+2$kespbolg&d`#n`m_2ld1LO;^)3uO1@sKC$Zj+u+B>4UMs>TGi?vp_;RI+>bK76nCBj~DAV$)>xg0GfCw@m2D2a{LPuS__ zTZfyW+1V&$9krqKOv9)`SmdRBiHEjj9=xN{MM;q~esupFnm3w>ZnF^CZYH|Jgs{U1 zPuO^*y7)@j>^(raOva>(gp4Me$l|Io#a#>+=W+dVX`16CvcN^td^@paF1}lAWn|x+ zwD2Gqztubj9(EvXHxb=wBJz-t*d8OTd-RMc$Vu+w>jY9JlW}aE8jKwwqs8hY?ylxb zla(Arhd4;tkU}o!L$?MNc~hB9%Mv@>?cvRuscCCV#^+@z`SV&Wi3cr&cNvN9HX`gc zz(EU#W{WMwBC-#J%*wZ>9hjf?AW^ebR3QS#Ctg7Zy zogtNQORURfGREZfp?Qvr@O-gW?95_#rJeBIHbQHx#5UUapLHgN=4GWsNSZU1a=zSH zPTP|vB9H5dJ*g-3R3#iYa&SS(<*<2aHn|M`#e=}LgQYcbtDy3Y7eX{x6EIZK!E`&v0+;pX# z@I5xdYpp~!SP9>2A+gQMf3Me(pOb-1CQAi;xm-qWmV&?RP|(^iL%h}+LOmzyEkVvAp5P?~@5)6%}Air_*=H?axdBf4p1qm{_7EJU_g2yHXL zZX53{o|2~Kk{ga1m`(7hN)pfMh&^9P{6#I17d7yfjz-TA(O%^x+3fzMF?VWd1ZsG0YH6BFO9qY3>%-sYIuI5*5f(c-#HJgI79yK1sr)p$)5PDl>nP02 zO1W%jVL5fz1UO+J{JfU^{g{h<&zf}?WZ3XTBq~V1Pmvq_guG&wT$v2g5qP767osQg^eN`~M zniXTk1v8UCucG(zgUn_qm;bD`Q&lv$yJ5*Sy0WE|Ut}mcM%Vi<2D(-~fbU+Y zAaPnl{IrV18!8fSSCBYc&V~2OY5%00^6^P!R$Kz4;KDl< zTzIdX=zC@GnTmzJf}ZwecaVF=P6BrwO-^t3gVX6Af-~I&XS-oR6)g1;U*hJ!Za4Gk zG!4f*lX=)Umemy_xoy%=YQ_!1UOWKPsC;xI`=J@x5B=zVm`nQO9G_3!lmg~!3t8(N z&b}FAc%^Xy|GI4o-yKlFaUHy_htrkBURD!-O%xl6#S8D2bK!$>qVG?I&sFTaqp0^F zpPo2{wyIj1-Cps0KTwrA{+13-LvvlU-tMGjz5`*glX#;OR=HuV8#cOOlN+`;VVeW) zv%>>6*lC3aE%1m19yP;$GdyjEXU%ZL3@@7Cs1c6pX+K&?>_si%qiUij#E_9V-HFAs z61z@AeS%dl71?5b8Y$(>-Yir=j_sj@*_x z5bm@QT+uzV32inL+GZkrzlq3B6XA!9gm)VW@6{82Oi$=>9iao2gr2G-d`L_5IW4i@ zXoHQ0d2G6H$YnA{=Jerfs~zfU5vr?b zuJO>);3hc3onlcsIPEBg9X(bVk!@xo_lfPr=z}JryNyKmiY<-Uez6#iJ)>l1603~Jb~DijOhk8?h(2r- z8&i)O#FoYZJ+Y^B#14wJV*H3$WyD_65IdnEc2Z6BRTYs_6-3Tdh#}*574QcYe5RuH z!%_}z8b#rNj#~7Rak48=nM}sGyj<2!DB)e3ns2AuX`e5O4UJw{?xFoI7x5JiA}j5L zR@)Hnu_COq5ZquU_$xEPEhdERCWHr!2)m334;ctOq9?RZPw3Y=LQm*KH+@D+z-tw!;Cz&j`6UDLE)4P}=!P$5riHeZ7mb^V$68H}IYfPa9z7UO>b X9nR#cFO>r2Pd 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/60.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/60.png new file mode 100755 index 0000000000000000000000000000000000000000..5f466f042fced8a8f2bb2bb8ee6d98b6012e4b20 GIT binary patch literal 4374 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 Q#Q*>R07*qoM6N<$f}0tRN&o-= literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/72.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/72.png new file mode 100755 index 0000000000000000000000000000000000000000..dad26e7da5190e8c0edf503570b06e91c80d6dc4 GIT binary patch literal 5488 zcmV-$6_4tPP)UYV-B2w=>I8R*otf3LeHN%HzefM8RAZfuX%Eo}TnUL8}i^WUO;U(zu(o*Lp;`7oz z&Ck4wk-aTa?})Q-*eI|x(`NF~X7LfU`v^L{1nay6JstvHH^BxsO!qUhysS4xy71ym zD;-X|aT)=mk2bT9pv{-2C+PMN^m+*S-2@ulgqq#NXLxW7Ek!2l6`yor9waTSs&9YV zbPa@!4YZkj1g#nL)C=^4d>%rLZbH-C1e)uK&2aO-)18bf>5EKu!M6bC{~-#Qu(v7A zE8xp&7YSn%Ek++fO9nl4B0WBVo=}sUP;)(@>GiZtchPZ^hoAcm^vhFr**E=D3nZ6y zn%1imG+=7x8-tgiS)xZYt$L3@kH3?i&^7ghuB|70T^+60IpJn6&zdG9lU-1MbbcQo zEo5!k6=1rCZ}dKbCci*Wrel`qX%OkTTA(L1qmJs< zi|||*fw>Mkmelj<)oSt-a+K%aADy2YOQv;i#bhvE%{Mw9L8HHmV{WN)Lt_J9IIJwc zd=$5i9nJ53R+#CdZH6mNPk4@t@H{8sTb#7bx5FwoTU29&XDQArMd$vel4)5>29wlH zqgCf4VDNWw%z`+Lyr!;YU_pNR`XPM^c*mxKIX>EEItkBq5uWQLe6y4Ad#{Q1Z*E4&wR@(~{_MdTDXGp`nqZH8p8Jk}sE&FVaw;Q1GU` z25#}tHp`KwC$hjnWU+(b5<4AhT>N;Z>U^8p`Jv}K<&(gWVOkPB4lgZE5BM7RP^Tkb zq3BZok?v8Pr{uE+Ei7;onCB40S>zzH#6e`aoxpM%Y^r0ux&oQ(yqVg$7pJQ403zBZ z0$RUdS|(pQthYHl#NB>=Z+9@Hun?IncO;VTHL`CX{&JI*_(B&Uk)FshJCPN3!nfLp zuCWnVYvqc8Mdz!~c5Vey$mM)A$wa%pnHHUoKt@;(h+#eI@u3|!FiVJBLvr+v%Lb8J zQb%Z!o$wMnk>z$GD{Vwp+X$|j<>MbNH=~P-&)8Q; z-Dty#$?JB5og3OG>iLMHlFGIfO-m}I4J^#(XN`JT=!L~zK50_ZFF&`ll@@%^ zHv#T+5Zr7gy46fbRpcvA?fB1| zK+=R)4!^uJte-?r(%r!41{3*;t`n55uN+iDbXGl~*)Bp-w!Xkgc%g&HQU`%$HpUL< zx-AeQl$_#x1;1IPCbio_WS5E9T_$388;R{T65gwaCoJ5g9`bD|I&*sDG8qGu`TU`} zj;Ovdn;yH5R)+_?jrfNQ?LvTLS_-+GkKGzN=D7*Xb_(>&cM@4B9Fh}^HI{ShO--daszo*`3f>1wS zSxx(W79x9$#O^f^zu!Ro0Rxc-bnuLsn+-#=L_Kc;WzzFib-h53!A~F~-)eJuNO>Eu zmUcbplNL3oAfG=@w-TRIM{tf*2ovd9(wVJ?R@z9eckr8qI{M~!J?@bNn>MKw9<6FprGAk+k4xlS|=YGm-oC#1H6+KcpxAh>qx^S~{N7^UGaR$yc6L z5_@L!EE+nxlb(#Q-s%k2c*y&`0p}Y$P zlG!R1a(=d}&!sC2DNCgak=0{%9`Mr=+eJ&^^@YbkWZnN^$YN4DV zmu34BX~DBKL*Ss9$N?SkM|H#>*O7QqOZ1=yj_CPx+oZEeVtY={)um-%Y^Fu;%L?ml z4i8C>pP!k`B7DBh1V2_Q4?owc+-VIcOXAWq^bEs19|#Glo`F&)-PXPl#*{!0q+-}fgOXg5vkq{o&~gl}kK z>8Md%=#dtnl*{>vUq|ZZdV;42>yedqBCBmgGU$nJ7P9s57Bd}pS@~$e)U;2_`Vqth zZ}E+U=S_qk)si@dS)3ly1`0xlU2;t%|xYq>pLbU3@Ps7=On=@N(%`- ztR;C+M_i;Q@w|q_AvMXvYNAI}j4SJtQ{-BactbT{M?|*-cZ% zzydFAa~xUcTPKJ0G(8(T>4|O=vh~moBiwIenZB%xnaN}_6yo2nEFBLo8i^d#ka$i* z;sp(f7u7@#so;c;J+s6ugR(~yb?=yEG8sei3;CPcL&Vr1bcAJ`j<(f#NcsKPE-g)) zQZ9jy*(*uSchfT0PUz&YzA}TJ^%6anPI|VRiS97bw%tJLek;#hH!i0@d7}Sot{w!3 z4Md;rq$lx`n)neF9j~kT!TFbczTLX@0=G68!gh~%{mF$X)`6*>Kg^z4!%C4bppL&qU4@#obfUR0Ajq9*yWirCAw@V=HAra?WW zsC$CsG8rFDF_JPj(JJ|#jBZq#8aXiesw_df+(Ry-C{Mw%N#%UdSj%7LT1YH&z-kw) zuY-+saJvh(xL~^r?sUQ~2kf@PZX1bRX8wG;miHD+VS#oy1RUp@*g(MKBXCmFQ)|5&ni^;tJ}jsI zIn@}{C!fl}m*5?JDRU+b=hm8$Y}Sopn`ty#O{3XltYD>P1hXrL;T|`LDZ~0QpeV0L z_s&xaW;Vw>7+%v8J)|OWL=Y$Ws*1$xwX`3vCHzJ;6+;TdwVs7Q5)F5hj|XcrEhcYv z(^I{Nuuo`u8dY3;+6PIkc;Du{O4>1ZmvBmRm^7l888fXjsuSq$g%}>IErea(+~4CS`4+)#A-+dJ4EbBpQ5t>9W#CncM%I^4?;>ODUI= zr|5ntrGi@zg_XY7zgWp%AFqa2G{j#P=t;g&OY(RvvEw!HeH9z zd3^JH4ehV0NxWK{rYHGU4XJl(h@Gg0&s5ytIBhiR`k#`sePLn^IHu8J^JaCUhQw~v zw#Iteul4byYI0g6=~v8?%gGbX=v$OKPiaPyKaxx_^YfA-C5KmE0mrq(j@6QUU8Lu& z8j>e!NWEK4?42q)K3DPB+VV3KNLomqT+T04R+5ee+A@2Yz1h9Yfvf9brjK9xOx!wg z6jziKcZi%)W21e z{GbXxspju*PG&&AZg(1RL!m+3Bs|!1T*`e)c%tUUnrv**ul6_S6u3L<7(1;iwUg8Q`dniV;$$TMq=1{Exb1AaSQ(q{ov@&$NtA_>+2> zLvx%2=Q#-6VkfY`PI$4M*m4K$tDLaT2^(E-hZDBBV22ZSIbpX0_Sj*s9qzNi12#Bd zg@>*1s0E&|z>{V;Xo9B`*M4nL-dqGY7aOaLWO;3hnPQ544llriV z)JIjc|DckNPb;}h%xg!kzP@7ED| zNJsP$EwRV7#HCtKMz)?1^R4778K(7S4XL+lNWELrNzX@BB)?xt>XS;MA5W#M`%s@F zT*?H8_?}7&4b%9#zMg>3-T9Kq)q-iI>AA_3)ytgKjhb0TU6WA=%V=APZttx1WS)*n z=UeF_d`1~nDuktLJsJ5{+O$qVPvU!3L_U}bU)1vU{bRbL=M(~o=TGHDMSNy7LUR*| zCNFJ`^|Vf_BXCXjOD1W0&ajLswXH~<8L{2M*?MfRvGaUuf9DB>RD>7Gs2TJe?#$M6 zIp*ZM)g<1lCiZ?6i4QB`vugOyT0VJlEW<9a%t(!;YlIHZRoI(S77Z|LAn zJ)F?N2`#*-CiqGX|NZo2KG-vk2bPXxmaCLWql>!il$FXJx5V^pbC%hTo9px9JSAgF ziZGQ8;KuR8SYKPgKHE56^k2oh*H!Z4xwZUiv6`=L)$!N$dcNLlAh69yc&AbDJ$D<4 z-)kfxnpSMTp6~%3fdd-8-mm6w`)c{>zG{AT*Hk{+aTOi zbQAhfKDdCw{M>WQQwlrsGc38B(U;R=Da2gsOlmwzg`DDiB?F7{7=B3sGoN@vU;fv%WBg zXtFLf9;p}ToF}VdekO^~nXmQ8uUvS6dMct+uaQD)=a6TN?9b$x;{wk2f(!IdI(mHq m7yIb-30&->*C%jMkN*SIh#j>7V@SFH0000at=8spex~jXnfmUen%pdnab=SM^zHfhizxTV} zd#^+yk?{ZRs#=#1;AU%GK7gC8b@>2pw$|kXxY=5l4Lj#QfZcj@5aoG(-JzFftEAw%1I=LTpuhFBxJ7xGD&4lL7X zw$_5Z7CiNQpinZTpx{Olt?O={n-rk3XEA?PI>A)WC4-Ablbc4Xiw2t$YHInt)y%|R zJ#Q4zx|Xb}p2hrK?ICKY<&xfw-{iq>b>p|Y@jG2KIGr@rdHB+8y-`H#I_Mh||o8^6ts-{HdVauM*jXsmXSnBn0M9y7xWyCacEkaeAC*Y}3v+whjW zZv3X)N?cb*gH{wPldgc#SU-(NZj^wYVd z_TblhveV^p5vUR93QThlnBgEW%R%ET8!Ys&W9q1kKEHK>iFxa;{w1KDPJ`NmUsv6h zE~g8>+eM%{ldix_2Z3330(aT*&$iLL$c4M4e@5Tm8o|W8HKw45e<-R6sB7?Qsx#@b zx$!&PEuolB*Gz$~;CJi#CSvM(8rw~TiwEZv9^|@Wm8kv=1HaG$yywYw+&^m$c^`IYl^Pmy;ed? zErga^@GUpNMmuZe$DbwPD4?^RYN-*nQ9kdh^7 z$&*Pr@2rG-o%j}52rU-q3N5n`y3b5-rJ3*=Gu|~uMiuu+^>tGSCWc~;RLUn4bR^XE zG^jlIw3%f@qt!*iUBfT+dV1#Ow)>Fc&-!)C6W=lup_Kw%p|vJL>rDhV7>R8*@rTuF`V{0MlS+_& z^9AiUPuEK$<(YJ)g<^xn1)e%ynmpx-#cD0uyY9)b&W>+|DMeR!gOTt?BmRvB*lpzr z`^alW**7beu2(-32!zKe%L^Go1Wk{9qctx zJHB7WHC-;4R3bqpk>j?f*csTZTk4wj#40W7&d|d4 zSBk{Y9NxP-4eJa<9yAi#WFY*If$&xX;q7{YJ9IQXX5d%rD#*{3U3K_hGr`0M+Ey~I zRT<$C=rSki^3-w9(DoPVre;|Cp)0-s?pNFfJFNIO=?OnZVhxJ6Z>xt~t6L~~O=us{4 zCv^OIyMp2#-&mRP_31iPIwgZHpT0Vk=zSJ9F;_LJ;^M3iE{5UgUWHtmZ6!S4j(@%d z-$Dzqr8d4=XrQF1Th^I?n3r6m`oV59!L2$$tlc^ykLrkgS4ZHx8aQlZr)yZoHP>A* zk*@LGd*WBr;7ih#EzuvFGPOfWa%ECJbtzzx3-3IO;6^OA;#+Kn)eg?qmbDw2q5!97 zPlE573GC1jc|=EKkB-P=TEcs^#P(^qv{%KDKHZRZ@CLr7f{BBFWmLI9SF8D=&+H~( zbJJjRQQ9N>gjnoj)5H;QkB7#)ttsm!c&{*D^er{P1_#R~mt+-9{5*M35s}>n!YR76 zL>|`?c~VR82{pW6VE@b!-vniy7i(%^Z$ipCyvpkAWrU}Wz2nBW8;VkigfYDe@h5HP z!2G0jljcSQ?=urwZQ<`L43zZDPKYSL%QMEpQzinBB*l6{OXMjHk^LHC2Q~PfR#Dpj zYg5*F!QLEQ37Tnb+z6l9O~~fqFIGE)+9@N%K2DkBLMYB{OIK*Qh0sbfzLh3;(8jBt z3GIk4B=eE|y5oODOY|`v;m5T^p41TCry+VkL-2qKj_Nr)`)gCyIkC!;URO5TS)4CE zJZf}@VdNe%02aFN%}p}~MY=@mCh0~5*BVJ|vY;vHoxRVb00(ME!a*Z}$2CNs(h%LR zA$m|vlD?SB za%EEf&7&rD`USJ!)c4X^HI95IvwK z`aLz#XVe4_DdBY;hwlDblwF-zQi+5KJ$eyP*5VWCYVAf;*Rdr@SL-Q|_<7EV!LZ2P zimq11py+k2Hxa(yNZ@`0Y`5SUoqf6^e%@a{0-iMx+@~gbP)+oZn&@E_k>^yzkErlI zr=X;7erGAWdb(a1S(bJ6+Gi1_Kwnwy4Ct2MhAxq?e3^{TYcwPlI5O!R`b9?-O^clPl4V5eMU8aZS)@yJBLWZU;ZZZE=1fdd)mAX6M8cGk zLSlzCM4wR+eNLb&dPGU=WhJ4PtKg)D4b``HhO*0lNervv+&unR;UJ``!K?LTtX_+@ z^J`_t>6A@K#~I7}}|4On-56UF*;k?saa}?Qm2} z=vgJP7nQ_bQW86=Byvna^Km7=dwL25d9tjj<7){fhSIV@rI~c4tzLWWE)t$<^!@s! zraamD*jG6Y7Q2NhPzPm123<*GQ1rU|+jQ`xnQfL~SqTw8*G=sU$Fzi>QxZEOh!uN9 zLF_dJ;nynRw2C{_!sI?T=ZY!2GQx7DQvP*{k+`moMy)3!6umYV33oN0X|-8bp2g33 zGAaL2uO+d_L1009iQd$byB=suS9piub@8~7&sLUY%|YV*3i4$9ZjYSiV`?HVDTp0Y z5PMZY?DZ1Q$SJJu(@6r+5qoZM$nxTEVWqn|gvPY-i25)Hz9Z{s{ioH=q z?9D1-$192dpo*!bJyQAa8x!o+G3B72ChSLTwKpQ@bmMh78By3HL!j1u7zXu)rEa_n zEO-}L@ZW1DuvC~Y2Gi-o{EBQHQlpI_#>}taD^2vTsegS_~x(H_38{xIPXs)T@LzO}pXgmE# zB@+7N=W@{2Zjx>`7a!)qb{X61=4%@@f^a?^h9jtBUyBl|3XiIx%?K@-qNn-ZQ8VV;h zgkBXwF@C&?_&b%vPgD{)Q4SXr+^O#?&}68iQSWZG2~OBC7_0T5 zDDIOHewPz1J-_uW$YXe~0w(k?qsum`ke4InHwUJ`Nd?g~y5grQh@UAZaz+k6sp4+S71d-N6Lw~zl4esKjRtq- zUV4`cuiFXJs`;^Al@Y=>QWI(U<=%<#UQ#fTuG1C7e^^fBhjN;KTFILamkJbj9G30> zW%}pk^Of33$XJcfb`q_3^FJ;Vc`}*s*OW=G=N9mGn@lPpFIRZ*o&`Dl z?WmmQlU2mt%@iwfww%~GIb1B~Psb0Gdp7G#cGm4^0JXoOo*; zG~MCmNY!Ktb8|98&rJ)h&VkYdsAncg9}&)JcsxCxK~BeA68;+rxiW z>sT{>I3s)Z=-@9eB`59S#Fo=RYyDmE`yG)yZg6)t)eqtK&rF5W%9h-fMpyi7If?h> zBtDcA`JfDbR>AUm;dDs{d8~cHj*XXtt)2$6tHVQ6fte1xci2eGal%434Rfq~;;G_s z#TaId9K@77Ys#?fq24r94|2zO5$#Psn4s2$rM_n3azNA<-%x){&6 zzSK?V$IQw7nO8ZGmHNSKaSY|a%n`h?XbczDPvF0HmGSq3l{6ny!Ep_|tAV#w#J^uf z_>D@UZ;53@3tfq1?n- z?Hrm)9c!6uBQW2FZ-E8hA`8C7W`fHs#8z5htrhOK!6qAQvB6dwY`4Nr3+%SQBWBoR zg2#-o*9cD;;eY|YXM|@A@Vo(DG{8%GII4rAS~#kq>17qsmz0EGt|D}-ipXneQ=oU+ zmJx}w}WuA<3NgV!#I<-g3Ksf?2vt!(Gu z3NwL~Cj6_7_}3couQ%Yo-++Ikfxu=xfh~FhTXh7t>j>@A5_&{SaF3SYV;X{cH3Xkj z6WpgJctAz)po-8TC81}PL|zbV=X9?t_WiVq{@u(nB9WHp1-i;eTr4AcaVkx}DCb8{ zb%HQ4>2Du77OJQ5ce^8*=$)B#-Qgf`XC__21=iHwi1uw~V_UClo8Watc4h93i0lr7<^fo)s4uY>vTF@@)o)-mJ$DP8KIA+z;7#fVD2qfpTkn_ zLS7!9sx(kvpE`T(t8=7UGuZp&dJs5Hny|qb!}B@O6kVq(h@Yv*C?gW*<-{(O5xFpx=1?n$Q$S$`ns{Q&# zB9Ty(o6G)*6Yy3$VP*}98E*X39e8Kj@y)UkNIR0(X7zg6mD|qZCb*1^Bu}K#mA1Yp zE^4IcYGn+@k5>wGoy;sFVm~S;dR9*4{W204%HW^N;g=P7FHYgHm4hkBziiRkzF_I1 zNhA`+6czF4gt7d}p(lQ)3+8%YuABH=2f?{EeDkb$lZoEHIB5(n&$6h|#&$MjY=X-O zMUk$jTUM`AbhQb^mfRIRUP9Q7FYDkH9lWlCH??qFE7V*k zG;l%%?P8RXo+*RbpuCOUrcw^LM)P9bSl*a5o)dE>aAv_o&MltA z2TLb$e)%NMub9XOD<*Po|hd|X&6dcwJa0yoV1qqyUrSoH-uo{;@0H@xY=5l58!5NT|R)Dt#$bTZmRZw X0J@Ee9N)*$00000NkvXXu0mjfb=^zn literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/80.png b/JellyfinPlayer/Assets.xcassets/AppIcon-Dev.appiconset/80.png new file mode 100755 index 0000000000000000000000000000000000000000..9f9bc98272d1ebddd7a63042c6418231fade4664 GIT binary patch literal 6012 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 eZtuWt+x|Z-@$|^O-A69~0000 Date: Mon, 18 Oct 2021 21:08:13 -0600 Subject: [PATCH 55/88] Add home screen refresh --- JellyfinPlayer.xcodeproj/project.pbxproj | 8 ++++ JellyfinPlayer/Views/HomeView.swift | 54 +++++++++++++--------- Shared/Objects/RefreshHelper.swift | 23 ++++++++++ Shared/ViewModels/HomeViewModel.swift | 58 ++++++++++++++++++------ 4 files changed, 107 insertions(+), 36 deletions(-) create mode 100644 Shared/Objects/RefreshHelper.swift diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 85605874..e565ebe3 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -328,6 +328,9 @@ E1D4BF8C2719F39F00A11E64 /* AppAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF802719D22800A11E64 /* AppAppearance.swift */; }; E1D4BF8D2719F3A300A11E64 /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1D4BF8F271A079A00A11E64 /* BasicAppSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF8E271A079A00A11E64 /* BasicAppSettingsView.swift */; }; + E1E48CC9271E6D410021A2F9 /* RefreshHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */; }; + E1E48CCA271E6D410021A2F9 /* RefreshHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */; }; + E1E48CCB271E6D410021A2F9 /* RefreshHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */; }; E1F0204E26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1F0204F26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1FCD08826C35A0D007C8DCF /* NetworkError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FCD08726C35A0D007C8DCF /* NetworkError.swift */; }; @@ -576,6 +579,7 @@ E1D4BF862719D27100A11E64 /* Bitrates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Bitrates.swift; sourceTree = ""; }; E1D4BF892719D3D000A11E64 /* BasicAppSettingsCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicAppSettingsCoordinator.swift; sourceTree = ""; }; E1D4BF8E271A079A00A11E64 /* BasicAppSettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicAppSettingsView.swift; sourceTree = ""; }; + E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RefreshHelper.swift; sourceTree = ""; }; E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoPlayerJumpLength.swift; sourceTree = ""; }; E1FCD08726C35A0D007C8DCF /* NetworkError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkError.swift; sourceTree = ""; }; E1FCD09526C47118007C8DCF /* ErrorMessage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorMessage.swift; sourceTree = ""; }; @@ -786,6 +790,7 @@ 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */, E193D4DA27193CCA00900D82 /* PillStackable.swift */, E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */, + E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */, E1D4BF832719D25A00A11E64 /* TrackLanguage.swift */, 535870AC2669D8DD00D05A09 /* Typings.swift */, E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */, @@ -1705,6 +1710,7 @@ 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */, C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, 531069582684E7EE00CFFDBA /* MediaInfoView.swift in Sources */, + E1E48CCA271E6D410021A2F9 /* RefreshHelper.swift in Sources */, E1D4BF822719D22800A11E64 /* AppAppearance.swift in Sources */, 53272537268C1DBB0035FBF1 /* SeasonItemView.swift in Sources */, 09389CC526814E4500AE350E /* DeviceProfileBuilder.swift in Sources */, @@ -1803,6 +1809,7 @@ 6220D0CC26D640C400B8E046 /* AppURLHandler.swift in Sources */, 62E632F3267D54030063E547 /* ItemViewModel.swift in Sources */, 53DE4BD2267098F300739748 /* SearchBarView.swift in Sources */, + E1E48CC9271E6D410021A2F9 /* RefreshHelper.swift in Sources */, E1D4BF842719D25A00A11E64 /* TrackLanguage.swift in Sources */, E14F7D0726DB36EF007C3AE6 /* ItemPortraitMainView.swift in Sources */, E1AD106226D9B7CD003E4A08 /* ItemPortraitHeaderOverlayView.swift in Sources */, @@ -1873,6 +1880,7 @@ 628B95272670CABD0091AF3B /* NextUpWidget.swift in Sources */, E13DD3F72717E87D009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, E1D4BF8D2719F3A300A11E64 /* VideoPlayerJumpLength.swift in Sources */, + E1E48CCB271E6D410021A2F9 /* RefreshHelper.swift in Sources */, 6220D0AF26D5EABE00B8E046 /* ViewExtensions.swift in Sources */, E13DD3D7271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, E1FCD09926C4F358007C8DCF /* NetworkError.swift in Sources */, diff --git a/JellyfinPlayer/Views/HomeView.swift b/JellyfinPlayer/Views/HomeView.swift index 15c3001c..51b3ae1e 100644 --- a/JellyfinPlayer/Views/HomeView.swift +++ b/JellyfinPlayer/Views/HomeView.swift @@ -8,12 +8,15 @@ */ import Foundation +import Introspect import SwiftUI struct HomeView: View { @EnvironmentObject var homeRouter: HomeCoordinator.Router @StateObject var viewModel = HomeViewModel() + + private let refreshHelper = RefreshHelper() @ViewBuilder var innerBody: some View { @@ -28,33 +31,40 @@ struct HomeView: View { if !viewModel.nextUpItems.isEmpty { NextUpView(items: viewModel.nextUpItems) } - if !viewModel.librariesShowRecentlyAddedIDs.isEmpty { - ForEach(viewModel.librariesShowRecentlyAddedIDs, id: \.self) { libraryID in - let library = viewModel.libraries.first(where: { $0.id == libraryID }) - HStack { - Text("Latest \(library?.name ?? "")") - .font(.title2) - .fontWeight(.bold) - Spacer() - Button { - homeRouter - .route(to: \.library, (viewModel: .init(parentID: libraryID, - filters: viewModel.recentFilterSet), - title: library?.name ?? "")) - } label: { - HStack { - Text("See All").font(.subheadline).fontWeight(.bold) - Image(systemName: "chevron.right").font(Font.subheadline.bold()) - } + + ForEach(viewModel.libraries, id: \.self) { library in + HStack { + Text("Latest \(library.name ?? "")") + .font(.title2) + .fontWeight(.bold) + Spacer() + Button { + homeRouter + .route(to: \.library, (viewModel: .init(parentID: library.id!, + filters: viewModel.recentFilterSet), + title: library.name ?? "")) + } label: { + HStack { + Text("See All").font(.subheadline).fontWeight(.bold) + Image(systemName: "chevron.right").font(Font.subheadline.bold()) } - }.padding(.leading, 16) - .padding(.trailing, 16) - LatestMediaView(viewModel: .init(libraryID: libraryID)) - } + } + }.padding(.leading, 16) + .padding(.trailing, 16) + LatestMediaView(viewModel: .init(libraryID: library.id!)) } } .padding(.bottom, UIDevice.current.userInterfaceIdiom == .phone ? 20 : 30) } + .introspectScrollView { scrollView in + let control = UIRefreshControl() + + refreshHelper.refreshControl = control + refreshHelper.refreshAction = viewModel.refresh + + control.addTarget(refreshHelper, action: #selector(RefreshHelper.didRefresh), for: .valueChanged) + scrollView.refreshControl = control + } } } diff --git a/Shared/Objects/RefreshHelper.swift b/Shared/Objects/RefreshHelper.swift new file mode 100644 index 00000000..df2b7c3c --- /dev/null +++ b/Shared/Objects/RefreshHelper.swift @@ -0,0 +1,23 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import UIKit + +// A more general derivative of +// https://stackoverflow.com/questions/65812080/introspect-library-uirefreshcontrol-with-swiftui-not-working +class RefreshHelper { + var refreshControl: UIRefreshControl? + var refreshAction: (() -> Void)? + + @objc func didRefresh() { + guard let refreshControl = refreshControl else { return } + refreshAction?() + refreshControl.endRefreshing() + } +} diff --git a/Shared/ViewModels/HomeViewModel.swift b/Shared/ViewModels/HomeViewModel.swift index 88eb4188..bd2c1e24 100644 --- a/Shared/ViewModels/HomeViewModel.swift +++ b/Shared/ViewModels/HomeViewModel.swift @@ -14,10 +14,10 @@ import JellyfinAPI final class HomeViewModel: ViewModel { - @Published var librariesShowRecentlyAddedIDs = [String]() - @Published var libraries = [BaseItemDto]() - @Published var resumeItems = [BaseItemDto]() - @Published var nextUpItems = [BaseItemDto]() + @Published var librariesShowRecentlyAddedIDs: [String] = [] + @Published var libraries: [BaseItemDto] = [] + @Published var resumeItems: [BaseItemDto] = [] + @Published var nextUpItems: [BaseItemDto] = [] // temp var recentFilterSet: LibraryFilters = LibraryFilters(filters: [], sortOrder: [.descending], sortBy: [.dateAdded]) @@ -32,26 +32,42 @@ final class HomeViewModel: ViewModel { UserViewsAPI.getUserViews(userId: SessionManager.main.currentLogin.user.id) .trackActivity(loading) .sink(receiveCompletion: { completion in - self.handleAPIRequestError(completion: completion) + switch completion { + case .finished: () + case .failure(_): + self.libraries = [] + self.handleAPIRequestError(completion: completion) + } }, receiveValue: { response in + + var newLibraries: [BaseItemDto] = [] + response.items!.forEach { item in LogManager.shared.log.debug("Retrieved user view: \(item.id!) (\(item.name ?? "nil")) with type \(item.collectionType ?? "nil")") if item.collectionType == "movies" || item.collectionType == "tvshows" { - self.libraries.append(item) + newLibraries.append(item) } } UserAPI.getCurrentUser() .trackActivity(self.loading) .sink(receiveCompletion: { completion in - self.handleAPIRequestError(completion: completion) + switch completion { + case .finished: () + case .failure(_): + self.libraries = [] + self.handleAPIRequestError(completion: completion) + } }, receiveValue: { response in - self.libraries.forEach { library in - if !(response.configuration?.latestItemsExcludes?.contains(library.id!))! { - LogManager.shared.log.debug("Adding library \(library.id!) (\(library.name ?? "nil")) to recently added list") - self.librariesShowRecentlyAddedIDs.append(library.id!) + let excludeIDs = response.configuration?.latestItemsExcludes != nil ? response.configuration!.latestItemsExcludes! : [] + + for excludeID in excludeIDs { + newLibraries.removeAll { library in + return library.id == excludeID } } + + self.libraries = newLibraries }) .store(in: &self.cancellables) }) @@ -59,12 +75,20 @@ final class HomeViewModel: ViewModel { ItemsAPI.getResumeItems(userId: SessionManager.main.currentLogin.user.id, limit: 12, fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people], - mediaTypes: ["Video"], imageTypeLimit: 1, enableImageTypes: [.primary, .backdrop, .thumb]) + mediaTypes: ["Video"], + imageTypeLimit: 1, + enableImageTypes: [.primary, .backdrop, .thumb]) .trackActivity(loading) .sink(receiveCompletion: { completion in - self.handleAPIRequestError(completion: completion) + switch completion { + case .finished: () + case .failure(_): + self.resumeItems = [] + self.handleAPIRequestError(completion: completion) + } }, receiveValue: { response in LogManager.shared.log.debug("Retrieved \(String(response.items!.count)) resume items") + self.resumeItems = response.items ?? [] }) .store(in: &cancellables) @@ -73,9 +97,15 @@ final class HomeViewModel: ViewModel { fields: [.primaryImageAspectRatio, .seriesPrimaryImage, .seasonUserData, .overview, .genres, .people]) .trackActivity(loading) .sink(receiveCompletion: { completion in - self.handleAPIRequestError(completion: completion) + switch completion { + case .finished: () + case .failure(_): + self.nextUpItems = [] + self.handleAPIRequestError(completion: completion) + } }, receiveValue: { response in LogManager.shared.log.debug("Retrieved \(String(response.items!.count)) nextup items") + self.nextUpItems = response.items ?? [] }) .store(in: &cancellables) From df0b3af4eef01759f4a47b6a53c113403085aa29 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Mon, 18 Oct 2021 22:20:56 -0600 Subject: [PATCH 56/88] Move RefreshHelper to only iOS --- JellyfinPlayer.xcodeproj/project.pbxproj | 14 +++++++++----- .../Objects/RefreshHelper.swift | 0 2 files changed, 9 insertions(+), 5 deletions(-) rename {Shared => JellyfinPlayer}/Objects/RefreshHelper.swift (100%) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index e565ebe3..8e1820c2 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -329,8 +329,6 @@ E1D4BF8D2719F3A300A11E64 /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1D4BF8F271A079A00A11E64 /* BasicAppSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1D4BF8E271A079A00A11E64 /* BasicAppSettingsView.swift */; }; E1E48CC9271E6D410021A2F9 /* RefreshHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */; }; - E1E48CCA271E6D410021A2F9 /* RefreshHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */; }; - E1E48CCB271E6D410021A2F9 /* RefreshHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */; }; E1F0204E26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1F0204F26CCCA74001C1C3B /* VideoPlayerJumpLength.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */; }; E1FCD08826C35A0D007C8DCF /* NetworkError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1FCD08726C35A0D007C8DCF /* NetworkError.swift */; }; @@ -790,7 +788,6 @@ 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */, E193D4DA27193CCA00900D82 /* PillStackable.swift */, E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */, - E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */, E1D4BF832719D25A00A11E64 /* TrackLanguage.swift */, 535870AC2669D8DD00D05A09 /* Typings.swift */, E1F0204D26CCCA74001C1C3B /* VideoPlayerJumpLength.swift */, @@ -839,6 +836,7 @@ 5377CBF3263B596A003A4E83 /* JellyfinPlayer */ = { isa = PBXGroup; children = ( + E1DD1127271E7D15005BE12F /* Objects */, E13DD3BB27163C3E009D4DAF /* App */, 62ECA01926FA6D6900E8EBB7 /* AppURLHandler */, 5377CBF8263B596B003A4E83 /* Assets.xcassets */, @@ -1270,6 +1268,14 @@ path = Views; sourceTree = ""; }; + E1DD1127271E7D15005BE12F /* Objects */ = { + isa = PBXGroup; + children = ( + E1E48CC8271E6D410021A2F9 /* RefreshHelper.swift */, + ); + path = Objects; + sourceTree = ""; + }; E1FCD08E26C466F3007C8DCF /* Errors */ = { isa = PBXGroup; children = ( @@ -1710,7 +1716,6 @@ 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */, C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, 531069582684E7EE00CFFDBA /* MediaInfoView.swift in Sources */, - E1E48CCA271E6D410021A2F9 /* RefreshHelper.swift in Sources */, E1D4BF822719D22800A11E64 /* AppAppearance.swift in Sources */, 53272537268C1DBB0035FBF1 /* SeasonItemView.swift in Sources */, 09389CC526814E4500AE350E /* DeviceProfileBuilder.swift in Sources */, @@ -1880,7 +1885,6 @@ 628B95272670CABD0091AF3B /* NextUpWidget.swift in Sources */, E13DD3F72717E87D009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, E1D4BF8D2719F3A300A11E64 /* VideoPlayerJumpLength.swift in Sources */, - E1E48CCB271E6D410021A2F9 /* RefreshHelper.swift in Sources */, 6220D0AF26D5EABE00B8E046 /* ViewExtensions.swift in Sources */, E13DD3D7271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, E1FCD09926C4F358007C8DCF /* NetworkError.swift in Sources */, diff --git a/Shared/Objects/RefreshHelper.swift b/JellyfinPlayer/Objects/RefreshHelper.swift similarity index 100% rename from Shared/Objects/RefreshHelper.swift rename to JellyfinPlayer/Objects/RefreshHelper.swift From 2b888e9b82a14abaf9d6b1d1212cbc5e15c02aa5 Mon Sep 17 00:00:00 2001 From: jhays Date: Wed, 20 Oct 2021 17:58:45 -0500 Subject: [PATCH 57/88] Additional coordinators and routing fixes --- .../Views/ContinueWatchingView.swift | 7 +- JellyfinPlayer tvOS/Views/HomeView.swift | 7 +- .../Views/LibraryListView.swift | 42 +----- JellyfinPlayer tvOS/Views/LibraryView.swift | 129 +++++++++--------- .../Views/MovieLibrariesView.swift | 82 +++++++++++ JellyfinPlayer tvOS/Views/NextUpView.swift | 7 +- .../Views/TVLibrariesView.swift | 80 +++++++++++ JellyfinPlayer.xcodeproj/project.pbxproj | 36 +++++ Shared/Coordinators/HomeCoordinator.swift | 10 ++ Shared/Coordinators/LibraryCoordinator.swift | 5 + .../tvOSMainTabCoordinator.swift | 36 ++++- .../MoviesLibrariesCoordinator.swift | 37 +++++ .../Coordinators/TVLibrariesCoordinator.swift | 37 +++++ Shared/ViewModels/LibraryViewModel.swift | 87 ++++++------ .../ViewModels/MovieLibrariesViewModel.swift | 99 ++++++++++++++ Shared/ViewModels/TVLibrariesViewModel.swift | 99 ++++++++++++++ 16 files changed, 645 insertions(+), 155 deletions(-) create mode 100644 JellyfinPlayer tvOS/Views/MovieLibrariesView.swift create mode 100644 JellyfinPlayer tvOS/Views/TVLibrariesView.swift create mode 100644 Shared/Coordinators/MoviesLibrariesCoordinator.swift create mode 100644 Shared/Coordinators/TVLibrariesCoordinator.swift create mode 100644 Shared/ViewModels/MovieLibrariesViewModel.swift create mode 100644 Shared/ViewModels/TVLibrariesViewModel.swift diff --git a/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift b/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift index ad793923..fd59664a 100644 --- a/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift +++ b/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift @@ -9,11 +9,14 @@ import SwiftUI import JellyfinAPI import Combine +import Stinsen struct ContinueWatchingView: View { var items: [BaseItemDto] @Namespace private var namespace + var homeRouter: HomeCoordinator.Router? = RouterStore.shared.retrieve() + var body: some View { VStack(alignment: .leading) { if items.count > 0 { @@ -25,7 +28,9 @@ struct ContinueWatchingView: View { LazyHStack { Spacer().frame(width: 45) ForEach(items, id: \.id) { item in - NavigationLink(destination: LazyView { ItemView(item: item) }) { + Button { + self.homeRouter?.route(to: \.modalItem, item) + } label: { LandscapeItemElement(item: item) } .buttonStyle(PlainNavigationLinkButtonStyle()) diff --git a/JellyfinPlayer tvOS/Views/HomeView.swift b/JellyfinPlayer tvOS/Views/HomeView.swift index 8642a1a6..6ab1d03f 100644 --- a/JellyfinPlayer tvOS/Views/HomeView.swift +++ b/JellyfinPlayer tvOS/Views/HomeView.swift @@ -11,6 +11,7 @@ import Foundation import SwiftUI struct HomeView: View { + @EnvironmentObject var homeRouter: HomeCoordinator.Router @StateObject var viewModel = HomeViewModel() @State var showingSettings = false @@ -33,9 +34,9 @@ struct HomeView: View { VStack(alignment: .leading) { let library = viewModel.libraries.first(where: { $0.id == libraryID }) - NavigationLink(destination: LazyView { - LibraryView(viewModel: .init(parentID: libraryID, filters: viewModel.recentFilterSet), title: library?.name ?? "") - }) { + Button { + self.homeRouter.route(to: \.modalLibrary, (.init(parentID: libraryID, filters: viewModel.recentFilterSet), title: library?.name ?? "")) + } label: { HStack { Text("Latest \(library?.name ?? "")") .font(.headline) diff --git a/JellyfinPlayer tvOS/Views/LibraryListView.swift b/JellyfinPlayer tvOS/Views/LibraryListView.swift index 7096ba08..051dcbbf 100644 --- a/JellyfinPlayer tvOS/Views/LibraryListView.swift +++ b/JellyfinPlayer tvOS/Views/LibraryListView.swift @@ -16,47 +16,11 @@ struct LibraryListView: View { var body: some View { ScrollView { LazyVStack { - NavigationLink(destination: LazyView { - LibraryView(viewModel: .init(filters: viewModel.withFavorites), title: "Favorites") - }) { - ZStack { - HStack { - Spacer() - Text("Your Favorites") - .font(.subheadline) - .fontWeight(.semibold) - Spacer() - } - } - .padding(16) - .frame(minWidth: 100, maxWidth: .infinity) - } - .cornerRadius(10) - .shadow(radius: 5) - .padding(.bottom, 5) - - NavigationLink(destination: LazyView { - Text("WIP") - }) { - ZStack { - HStack { - Spacer() - Text("All Genres") - .font(.subheadline) - .fontWeight(.semibold) - Spacer() - } - } - .padding(16) - .frame(minWidth: 100, maxWidth: .infinity) - } - .cornerRadius(10) - .shadow(radius: 5) - .padding(.bottom, 15) - if !viewModel.isLoading { ForEach(viewModel.libraries, id: \.id) { library in if library.collectionType ?? "" == "movies" || library.collectionType ?? "" == "tvshows" { + EmptyView() + } else { NavigationLink(destination: LazyView { LibraryView(viewModel: .init(parentID: library.id), title: library.name ?? "") }) { @@ -80,8 +44,6 @@ struct LibraryListView: View { .cornerRadius(10) .shadow(radius: 5) .padding(.bottom, 5) - } else { - EmptyView() } } } else { diff --git a/JellyfinPlayer tvOS/Views/LibraryView.swift b/JellyfinPlayer tvOS/Views/LibraryView.swift index e7035067..d4f05aeb 100644 --- a/JellyfinPlayer tvOS/Views/LibraryView.swift +++ b/JellyfinPlayer tvOS/Views/LibraryView.swift @@ -11,80 +11,85 @@ import SwiftUICollection import JellyfinAPI struct LibraryView: View { - @StateObject var viewModel: LibraryViewModel - var title: String + @EnvironmentObject var libraryRouter: LibraryCoordinator.Router + @StateObject var viewModel: LibraryViewModel + var title: String - // MARK: tracks for grid - var defaultFilters = LibraryFilters(filters: [], sortOrder: [.ascending], withGenres: [], tags: [], sortBy: [.name]) + // MARK: tracks for grid + var defaultFilters = LibraryFilters(filters: [], sortOrder: [.ascending], withGenres: [], tags: [], sortBy: [.name]) - @State var isShowingSearchView = false - @State var isShowingFilterView = false - - var body: some View { + @State var isShowingSearchView = false + @State var isShowingFilterView = false + + var body: some View { if viewModel.isLoading == true { ProgressView() - } else if !viewModel.items.isEmpty { - CollectionView(rows: viewModel.rows) { _, _ in - let itemSize = NSCollectionLayoutSize( - widthDimension: .fractionalWidth(1), - heightDimension: .fractionalHeight(1) - ) - let item = NSCollectionLayoutItem(layoutSize: itemSize) + } else if !viewModel.rows.isEmpty { + CollectionView(rows: viewModel.rows) { _, _ in + let itemSize = NSCollectionLayoutSize( + widthDimension: .fractionalWidth(1), + heightDimension: .fractionalHeight(1) + ) + let item = NSCollectionLayoutItem(layoutSize: itemSize) - let groupSize = NSCollectionLayoutSize( - widthDimension: .absolute(200), - heightDimension: .absolute(300) - ) - let group = NSCollectionLayoutGroup.horizontal( - layoutSize: groupSize, - subitems: [item] - ) + let groupSize = NSCollectionLayoutSize( + widthDimension: .absolute(200), + heightDimension: .absolute(300) + ) + let group = NSCollectionLayoutGroup.horizontal( + layoutSize: groupSize, + subitems: [item] + ) - let header = - NSCollectionLayoutBoundarySupplementaryItem( - layoutSize: NSCollectionLayoutSize( - widthDimension: .fractionalWidth(1), - heightDimension: .absolute(44) - ), - elementKind: UICollectionView.elementKindSectionHeader, - alignment: .topLeading - ) + let header = + NSCollectionLayoutBoundarySupplementaryItem( + layoutSize: NSCollectionLayoutSize( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(44) + ), + elementKind: UICollectionView.elementKindSectionHeader, + alignment: .topLeading + ) - let section = NSCollectionLayoutSection(group: group) + let section = NSCollectionLayoutSection(group: group) - section.contentInsets = NSDirectionalEdgeInsets(top: 30, leading: 0, bottom: 80, trailing: 80) - section.interGroupSpacing = 48 - section.orthogonalScrollingBehavior = .continuous - section.boundarySupplementaryItems = [header] - return section - } cell: { _, cell in - GeometryReader { _ in - if let item = cell.item { - if item.type != "Folder" { - NavigationLink(destination: LazyView { ItemView(item: item) }) { - PortraitItemElement(item: item) - } - .buttonStyle(PlainNavigationLinkButtonStyle()) - .onAppear { - if item == viewModel.items.last && viewModel.hasNextPage { - viewModel.requestNextPageAsync() + section.contentInsets = NSDirectionalEdgeInsets(top: 30, leading: 0, bottom: 80, trailing: 80) + section.interGroupSpacing = 48 + section.orthogonalScrollingBehavior = .continuous + section.boundarySupplementaryItems = [header] + return section + } cell: { _, cell in + GeometryReader { _ in + if let item = cell.item { + if item.type != "Folder" { + Button { + libraryRouter.route(to: \.modalItem, item) + } label: { + PortraitItemElement(item: item) + } + .buttonStyle(PlainNavigationLinkButtonStyle()) + .onAppear { + if item == viewModel.items.last && viewModel.hasNextPage { + viewModel.requestNextPageAsync() + } + } + } + } else if cell.loadingCell { + ProgressView() + .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center) } - } } - } else if cell.loadingCell { - ProgressView() - .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center) - } + } supplementaryView: { _, indexPath in + HStack { + Spacer() + }.accessibilityIdentifier("\(indexPath.section).\(indexPath.row)") } - } supplementaryView: { _, indexPath in - HStack { - Spacer() - }.accessibilityIdentifier("\(indexPath.section).\(indexPath.row)") - } - .frame(maxWidth: .infinity, maxHeight: .infinity) - .ignoresSafeArea(.all) + .frame(maxWidth: .infinity, maxHeight: .infinity) + .ignoresSafeArea(.all) } else { - Text("No results.") + Button { } label: { + Text("No results.") + } } } } diff --git a/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift b/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift new file mode 100644 index 00000000..4a78d1cb --- /dev/null +++ b/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift @@ -0,0 +1,82 @@ +/* + * JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI +import SwiftUICollection +import JellyfinAPI + +struct MovieLibrariesView: View { + @EnvironmentObject var movieLibrariesRouter: MovieLibrariesCoordinator.Router + @StateObject var viewModel: MovieLibrariesViewModel + var title: String + + var body: some View { + if viewModel.isLoading == true { + ProgressView() + } else if !viewModel.rows.isEmpty { + CollectionView(rows: viewModel.rows) { _, _ in + let itemSize = NSCollectionLayoutSize( + widthDimension: .fractionalWidth(1), + heightDimension: .fractionalHeight(1) + ) + let item = NSCollectionLayoutItem(layoutSize: itemSize) + + let groupSize = NSCollectionLayoutSize( + widthDimension: .absolute(200), + heightDimension: .absolute(300) + ) + let group = NSCollectionLayoutGroup.horizontal( + layoutSize: groupSize, + subitems: [item] + ) + + let header = + NSCollectionLayoutBoundarySupplementaryItem( + layoutSize: NSCollectionLayoutSize( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(44) + ), + elementKind: UICollectionView.elementKindSectionHeader, + alignment: .topLeading + ) + + let section = NSCollectionLayoutSection(group: group) + + section.contentInsets = NSDirectionalEdgeInsets(top: 30, leading: 0, bottom: 80, trailing: 80) + section.interGroupSpacing = 48 + section.orthogonalScrollingBehavior = .continuous + section.boundarySupplementaryItems = [header] + return section + } cell: { _, cell in + GeometryReader { _ in + if let item = cell.item { + if item.type != "Folder" { + Button { + self.movieLibrariesRouter.route(to: \.library, item) + } label: { + PortraitItemElement(item: item) + } + .buttonStyle(PlainNavigationLinkButtonStyle()) + } + } else if cell.loadingCell { + ProgressView() + .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center) + } + } + } supplementaryView: { _, indexPath in + HStack { + Spacer() + }.accessibilityIdentifier("\(indexPath.section).\(indexPath.row)") + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .ignoresSafeArea(.all) + } else { + Text("No results.") + } + } +} diff --git a/JellyfinPlayer tvOS/Views/NextUpView.swift b/JellyfinPlayer tvOS/Views/NextUpView.swift index 1db5d360..8a61a3e5 100644 --- a/JellyfinPlayer tvOS/Views/NextUpView.swift +++ b/JellyfinPlayer tvOS/Views/NextUpView.swift @@ -9,9 +9,12 @@ import SwiftUI import JellyfinAPI import Combine +import Stinsen struct NextUpView: View { var items: [BaseItemDto] + + var homeRouter: HomeCoordinator.Router? = RouterStore.shared.retrieve() var body: some View { VStack(alignment: .leading) { @@ -24,7 +27,9 @@ struct NextUpView: View { LazyHStack { Spacer().frame(width: 45) ForEach(items, id: \.id) { item in - NavigationLink(destination: LazyView { ItemView(item: item) }) { + Button { + self.homeRouter?.route(to: \.modalItem, item) + } label: { LandscapeItemElement(item: item) }.buttonStyle(PlainNavigationLinkButtonStyle()) } diff --git a/JellyfinPlayer tvOS/Views/TVLibrariesView.swift b/JellyfinPlayer tvOS/Views/TVLibrariesView.swift new file mode 100644 index 00000000..725a13d6 --- /dev/null +++ b/JellyfinPlayer tvOS/Views/TVLibrariesView.swift @@ -0,0 +1,80 @@ +/* + * JellyfinPlayer/Swiftfin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI +import SwiftUICollection +import JellyfinAPI + +struct TVLibrariesView: View { + @EnvironmentObject var tvLibrariesRouter: TVLibrariesCoordinator.Router + @StateObject var viewModel: TVLibrariesViewModel + var title: String + + var body: some View { + if viewModel.isLoading == true { + ProgressView() + } else if !viewModel.rows.isEmpty { + CollectionView(rows: viewModel.rows) { _, _ in + let itemSize = NSCollectionLayoutSize( + widthDimension: .fractionalWidth(1), + heightDimension: .fractionalHeight(1) + ) + let item = NSCollectionLayoutItem(layoutSize: itemSize) + + let groupSize = NSCollectionLayoutSize( + widthDimension: .absolute(200), + heightDimension: .absolute(300) + ) + let group = NSCollectionLayoutGroup.horizontal( + layoutSize: groupSize, + subitems: [item] + ) + + let header = + NSCollectionLayoutBoundarySupplementaryItem( + layoutSize: NSCollectionLayoutSize( + widthDimension: .fractionalWidth(1), + heightDimension: .absolute(44) + ), + elementKind: UICollectionView.elementKindSectionHeader, + alignment: .topLeading + ) + + let section = NSCollectionLayoutSection(group: group) + + section.contentInsets = NSDirectionalEdgeInsets(top: 30, leading: 0, bottom: 80, trailing: 80) + section.interGroupSpacing = 48 + section.orthogonalScrollingBehavior = .continuous + section.boundarySupplementaryItems = [header] + return section + } cell: { _, cell in + GeometryReader { _ in + if let item = cell.item { + if item.type != "Folder" { + Button {} label: { + PortraitItemElement(item: item) + } + .buttonStyle(PlainNavigationLinkButtonStyle()) + } + } else if cell.loadingCell { + ProgressView() + .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .center) + } + } + } supplementaryView: { _, indexPath in + HStack { + Spacer() + }.accessibilityIdentifier("\(indexPath.section).\(indexPath.row)") + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + .ignoresSafeArea(.all) + } else { + Text("No results.") + } + } +} diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 85605874..63a1911f 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -219,7 +219,19 @@ 62EC353426766B03000E9F2D /* DeviceRotationViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */; }; 62ECA01826FA685A00E8EBB7 /* DeepLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62ECA01726FA685A00E8EBB7 /* DeepLink.swift */; }; AE8C3159265D6F90008AA076 /* bitrates.json in Resources */ = {isa = PBXBuildFile; fileRef = AE8C3158265D6F90008AA076 /* bitrates.json */; }; + C40CD922271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40CD921271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift */; }; + C40CD923271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40CD921271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift */; }; + C40CD925271F8D1E000FB198 /* MovieLibrariesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40CD924271F8D1E000FB198 /* MovieLibrariesViewModel.swift */; }; + C40CD926271F8D1E000FB198 /* MovieLibrariesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40CD924271F8D1E000FB198 /* MovieLibrariesViewModel.swift */; }; + C40CD928271F8DAB000FB198 /* MovieLibrariesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40CD927271F8DAB000FB198 /* MovieLibrariesView.swift */; }; + C40CD929271F8DAB000FB198 /* MovieLibrariesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C40CD927271F8DAB000FB198 /* MovieLibrariesView.swift */; }; C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = E173DA5126D04AAF00CC4EB7 /* ColorExtension.swift */; }; + C4BE0763271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0762271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift */; }; + C4BE0764271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0762271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift */; }; + C4BE0766271FC109003F4AD1 /* TVLibrariesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0765271FC109003F4AD1 /* TVLibrariesViewModel.swift */; }; + C4BE0767271FC109003F4AD1 /* TVLibrariesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0765271FC109003F4AD1 /* TVLibrariesViewModel.swift */; }; + C4BE0769271FC164003F4AD1 /* TVLibrariesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0768271FC164003F4AD1 /* TVLibrariesView.swift */; }; + C4BE076A271FC164003F4AD1 /* TVLibrariesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0768271FC164003F4AD1 /* TVLibrariesView.swift */; }; C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E508172703E8190045C9AB /* LibraryListView.swift */; }; C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */; }; E100720726BDABC100CE3E31 /* MediaPlayButtonRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */; }; @@ -522,6 +534,12 @@ 62ECA01726FA685A00E8EBB7 /* DeepLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeepLink.swift; sourceTree = ""; }; AE8C3158265D6F90008AA076 /* bitrates.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = bitrates.json; sourceTree = ""; }; BEEC50E7EFD4848C0E320941 /* Pods-JellyfinPlayer iOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinPlayer iOS.release.xcconfig"; path = "Target Support Files/Pods-JellyfinPlayer iOS/Pods-JellyfinPlayer iOS.release.xcconfig"; sourceTree = ""; }; + C40CD921271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoviesLibrariesCoordinator.swift; sourceTree = ""; }; + C40CD924271F8D1E000FB198 /* MovieLibrariesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieLibrariesViewModel.swift; sourceTree = ""; }; + C40CD927271F8DAB000FB198 /* MovieLibrariesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovieLibrariesView.swift; sourceTree = ""; }; + C4BE0762271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TVLibrariesCoordinator.swift; sourceTree = ""; }; + C4BE0765271FC109003F4AD1 /* TVLibrariesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TVLibrariesViewModel.swift; sourceTree = ""; }; + C4BE0768271FC164003F4AD1 /* TVLibrariesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TVLibrariesView.swift; sourceTree = ""; }; C4E508172703E8190045C9AB /* LibraryListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryListView.swift; sourceTree = ""; }; C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibrarySearchView.swift; sourceTree = ""; }; D79953919FED0C4DF72BA578 /* Pods-JellyfinPlayer tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinPlayer tvOS.release.xcconfig"; path = "Target Support Files/Pods-JellyfinPlayer tvOS/Pods-JellyfinPlayer tvOS.release.xcconfig"; sourceTree = ""; }; @@ -677,6 +695,8 @@ 62E632DB267D2E130063E547 /* LibrarySearchViewModel.swift */, 62E632DF267D30CA0063E547 /* LibraryViewModel.swift */, 536D3D75267BA9BB0004248C /* MainTabViewModel.swift */, + C40CD924271F8D1E000FB198 /* MovieLibrariesViewModel.swift */, + C4BE0765271FC109003F4AD1 /* TVLibrariesViewModel.swift */, 62E632E2267D3BA60063E547 /* MovieItemViewModel.swift */, 62E632E8267D3FF50063E547 /* SeasonItemViewModel.swift */, 62E632EB267D410B0063E547 /* SeriesItemViewModel.swift */, @@ -1050,6 +1070,8 @@ 6220D0BF26D61C5000B8E046 /* ItemCoordinator.swift */, 6220D0B326D5ED8000B8E046 /* LibraryCoordinator.swift */, 62C29EA726D103D500C1D2E7 /* LibraryListCoordinator.swift */, + C40CD921271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift */, + C4BE0762271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift */, 6220D0B626D5EE1100B8E046 /* SearchCoordinator.swift */, E13DD3E827177ED6009D4DAF /* ServerListCoordinator.swift */, 6220D0B026D5EC9900B8E046 /* SettingsCoordinator.swift */, @@ -1120,6 +1142,8 @@ C4E508172703E8190045C9AB /* LibraryListView.swift */, C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */, 53A83C32268A309300DF3D92 /* LibraryView.swift */, + C40CD927271F8DAB000FB198 /* MovieLibrariesView.swift */, + C4BE0768271FC164003F4AD1 /* TVLibrariesView.swift */, 531690EE267ABF72005D8AB9 /* NextUpView.swift */, E193D54F2719430400900D82 /* ServerDetailView.swift */, E193D54A271941D300900D82 /* ServerListView.swift */, @@ -1632,6 +1656,7 @@ E193D4DC27193CCA00900D82 /* PillStackable.swift in Sources */, E193D53327193F7D00900D82 /* FilterCoordinator.swift in Sources */, 6267B3DC2671139500A7371D /* ImageExtensions.swift in Sources */, + C40CD929271F8DAB000FB198 /* MovieLibrariesView.swift in Sources */, 531069592684E7EE00CFFDBA /* SubtitlesView.swift in Sources */, C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */, 53ABFDE9267974EF00886593 /* HomeViewModel.swift in Sources */, @@ -1640,6 +1665,7 @@ 531690E7267ABD79005D8AB9 /* HomeView.swift in Sources */, E1D4BF8B2719D3D000A11E64 /* BasicAppSettingsCoordinator.swift in Sources */, E13DD3FA2717E961009D4DAF /* UserListViewModel.swift in Sources */, + C40CD926271F8D1E000FB198 /* MovieLibrariesViewModel.swift in Sources */, 62E632DE267D2E170063E547 /* LatestMediaViewModel.swift in Sources */, E1FCD09726C47118007C8DCF /* ErrorMessage.swift in Sources */, E193D53527193F8100900D82 /* ItemCoordinator.swift in Sources */, @@ -1672,6 +1698,7 @@ 62E632F4267D54030063E547 /* ItemViewModel.swift in Sources */, 6267B3D826710B9800A7371D /* CollectionExtensions.swift in Sources */, 62E632E7267D3F5B0063E547 /* EpisodeItemViewModel.swift in Sources */, + C4BE0767271FC109003F4AD1 /* TVLibrariesViewModel.swift in Sources */, E193D53727193F8700900D82 /* LibraryListCoordinator.swift in Sources */, E100720726BDABC100CE3E31 /* MediaPlayButtonRowView.swift in Sources */, E193D54D2719426600900D82 /* LibraryFilterView.swift in Sources */, @@ -1706,6 +1733,7 @@ C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, 531069582684E7EE00CFFDBA /* MediaInfoView.swift in Sources */, E1D4BF822719D22800A11E64 /* AppAppearance.swift in Sources */, + C40CD923271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift in Sources */, 53272537268C1DBB0035FBF1 /* SeasonItemView.swift in Sources */, 09389CC526814E4500AE350E /* DeviceProfileBuilder.swift in Sources */, E193D53C27193F9500900D82 /* UserListCoordinator.swift in Sources */, @@ -1731,7 +1759,9 @@ 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 5364F456266CA0DC0026ECBA /* BaseItemPersonExtensions.swift in Sources */, 531690FA267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift in Sources */, + C4BE0764271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift in Sources */, E131691826C583BC0074BFEE /* LogConstructor.swift in Sources */, + C4BE076A271FC164003F4AD1 /* TVLibrariesView.swift in Sources */, E13DD3C327164941009D4DAF /* SwiftfinStore.swift in Sources */, 09389CC826819B4600AE350E /* VideoPlayerModel.swift in Sources */, E193D553271943D500900D82 /* tvOSMainTabCoordinator.swift in Sources */, @@ -1761,6 +1791,7 @@ E1AD105626D981CE003E4A08 /* PortraitHStackView.swift in Sources */, 62C29EA126D102A500C1D2E7 /* iOSMainTabCoordinator.swift in Sources */, 535BAE9F2649E569005FA86D /* ItemView.swift in Sources */, + C40CD925271F8D1E000FB198 /* MovieLibrariesViewModel.swift in Sources */, 6225FCCB2663841E00E067F6 /* ParallaxHeader.swift in Sources */, 6220D0AD26D5EABB00B8E046 /* ViewExtensions.swift in Sources */, E13DD3EC27178A54009D4DAF /* UserSignInViewModel.swift in Sources */, @@ -1781,6 +1812,7 @@ 625CB56F2678C23300530A6E /* HomeView.swift in Sources */, E173DA5226D04AAF00CC4EB7 /* ColorExtension.swift in Sources */, 53892770263C25230035E14B /* NextUpView.swift in Sources */, + C4BE0766271FC109003F4AD1 /* TVLibrariesViewModel.swift in Sources */, 62ECA01826FA685A00E8EBB7 /* DeepLink.swift in Sources */, 535BAEA5264A151C005FA86D /* VideoPlayer.swift in Sources */, 62E632E6267D3F5B0063E547 /* EpisodeItemViewModel.swift in Sources */, @@ -1789,6 +1821,7 @@ 532E68CF267D9F6B007B9F13 /* VideoPlayerCastDeviceSelector.swift in Sources */, E14F7D0926DB36F7007C3AE6 /* ItemLandscapeMainView.swift in Sources */, 532175402671EE4F005491E6 /* LibraryFilterView.swift in Sources */, + C4BE0763271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift in Sources */, 53DF641E263D9C0600A7CD1A /* LibraryView.swift in Sources */, E188460026DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift in Sources */, 091B5A8B2683142E00D78B61 /* UDPBroadCastConnection.swift in Sources */, @@ -1828,12 +1861,14 @@ 62E632E3267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, 091B5A8A2683142E00D78B61 /* ServerDiscovery.swift in Sources */, 62E632EF267D43320063E547 /* LibraryFilterViewModel.swift in Sources */, + C40CD922271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift in Sources */, E13DD3C827164B1E009D4DAF /* UIDeviceExtensions.swift in Sources */, E1AD104D26D96CE3003E4A08 /* BaseItemDtoExtensions.swift in Sources */, E13DD3BF27163DD7009D4DAF /* AppDelegate.swift in Sources */, 535870AD2669D8DD00D05A09 /* Typings.swift in Sources */, E1AD105F26D9ADDD003E4A08 /* NameGUIDPairExtensions.swift in Sources */, E13DD3D5271693CD009D4DAF /* SwiftfinStoreDefaults.swift in Sources */, + C4BE0769271FC164003F4AD1 /* TVLibrariesView.swift in Sources */, E1267D3E271A1F46003C492E /* PreferenceUIHostingController.swift in Sources */, 6220D0BA26D6092100B8E046 /* FilterCoordinator.swift in Sources */, 6267B3DA2671138200A7371D /* ImageExtensions.swift in Sources */, @@ -1848,6 +1883,7 @@ 6220D0B726D5EE1100B8E046 /* SearchCoordinator.swift in Sources */, E13DD3EF27178F87009D4DAF /* SwiftfinNotificationCenter.swift in Sources */, 5377CBF5263B596A003A4E83 /* JellyfinPlayerApp.swift in Sources */, + C40CD928271F8DAB000FB198 /* MovieLibrariesView.swift in Sources */, E13DD4022717EE79009D4DAF /* UserListCoordinator.swift in Sources */, E1FCD09626C47118007C8DCF /* ErrorMessage.swift in Sources */, 53EE24E6265060780068F029 /* LibrarySearchView.swift in Sources */, diff --git a/Shared/Coordinators/HomeCoordinator.swift b/Shared/Coordinators/HomeCoordinator.swift index 31837271..e30c79af 100644 --- a/Shared/Coordinators/HomeCoordinator.swift +++ b/Shared/Coordinators/HomeCoordinator.swift @@ -20,6 +20,8 @@ final class HomeCoordinator: NavigationCoordinatable { @Route(.modal) var settings = makeSettings @Route(.push) var library = makeLibrary @Route(.push) var item = makeItem + @Route(.modal) var modalItem = makeModalItem + @Route(.modal) var modalLibrary = makeModalLibrary func makeSettings() -> NavigationViewCoordinator { NavigationViewCoordinator(SettingsCoordinator()) @@ -32,6 +34,14 @@ final class HomeCoordinator: NavigationCoordinatable { func makeItem(item: BaseItemDto) -> ItemCoordinator { ItemCoordinator(item: item) } + + func makeModalItem(item: BaseItemDto) -> NavigationViewCoordinator { + return NavigationViewCoordinator(ItemCoordinator(item: item)) + } + + func makeModalLibrary(params: LibraryCoordinatorParams) -> NavigationViewCoordinator { + return NavigationViewCoordinator(LibraryCoordinator(viewModel: params.viewModel, title: params.title)) + } @ViewBuilder func makeStart() -> some View { HomeView() diff --git a/Shared/Coordinators/LibraryCoordinator.swift b/Shared/Coordinators/LibraryCoordinator.swift index c90234c5..a5ef3495 100644 --- a/Shared/Coordinators/LibraryCoordinator.swift +++ b/Shared/Coordinators/LibraryCoordinator.swift @@ -22,6 +22,7 @@ final class LibraryCoordinator: NavigationCoordinatable { @Route(.push) var search = makeSearch @Route(.modal) var filter = makeFilter @Route(.push) var item = makeItem + @Route(.modal) var modalItem = makeModalItem let viewModel: LibraryViewModel let title: String @@ -48,4 +49,8 @@ final class LibraryCoordinator: NavigationCoordinatable { func makeItem(item: BaseItemDto) -> ItemCoordinator { ItemCoordinator(item: item) } + + func makeModalItem(item: BaseItemDto) -> NavigationViewCoordinator { + return NavigationViewCoordinator(ItemCoordinator(item: item)) + } } diff --git a/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift b/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift index 82edaedf..8be5a5c6 100644 --- a/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift +++ b/Shared/Coordinators/MainCoordinator/tvOSMainTabCoordinator.swift @@ -14,12 +14,16 @@ import Stinsen final class MainTabCoordinator: TabCoordinatable { var child = TabChild(startingItems: [ \MainTabCoordinator.home, - \MainTabCoordinator.allMedia, + \MainTabCoordinator.tv, + \MainTabCoordinator.movies, + \MainTabCoordinator.other, \MainTabCoordinator.settings ]) @Route(tabItem: makeHomeTab) var home = makeHome - @Route(tabItem: makeAllMediaTab) var allMedia = makeAllMedia + @Route(tabItem: makeTvTab) var tv = makeTv + @Route(tabItem: makeMoviesTab) var movies = makeMovies + @Route(tabItem: makeOtherTab) var other = makeOther @Route(tabItem: makeSettingsTab) var settings = makeSettings func makeHome() -> NavigationViewCoordinator { @@ -32,15 +36,37 @@ final class MainTabCoordinator: TabCoordinatable { Text("Home") } } + + func makeTv() -> NavigationViewCoordinator { + return NavigationViewCoordinator(TVLibrariesCoordinator(viewModel: TVLibrariesViewModel(), title: "TV Shows")) + } - func makeAllMedia() -> NavigationViewCoordinator { + @ViewBuilder func makeTvTab(isActive: Bool) -> some View { + HStack { + Image(systemName: "tv") + Text("TV Shows") + } + } + + func makeMovies() -> NavigationViewCoordinator { + return NavigationViewCoordinator(MovieLibrariesCoordinator(viewModel: MovieLibrariesViewModel(), title: "Movies")) + } + + @ViewBuilder func makeMoviesTab(isActive: Bool) -> some View { + HStack { + Image(systemName: "film") + Text("Movies") + } + } + + func makeOther() -> NavigationViewCoordinator { return NavigationViewCoordinator(LibraryListCoordinator()) } - @ViewBuilder func makeAllMediaTab(isActive: Bool) -> some View { + @ViewBuilder func makeOtherTab(isActive: Bool) -> some View { HStack { Image(systemName: "folder") - Text("All Media") + Text("Other") } } diff --git a/Shared/Coordinators/MoviesLibrariesCoordinator.swift b/Shared/Coordinators/MoviesLibrariesCoordinator.swift new file mode 100644 index 00000000..9c530d3c --- /dev/null +++ b/Shared/Coordinators/MoviesLibrariesCoordinator.swift @@ -0,0 +1,37 @@ +// +/* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import JellyfinAPI +import Stinsen +import SwiftUI + +final class MovieLibrariesCoordinator: NavigationCoordinatable { + + let stack = NavigationStack(initial: \MovieLibrariesCoordinator.start) + + @Root var start = makeStart + @Route(.push) var library = makeLibrary + + let viewModel: MovieLibrariesViewModel + let title: String + + init(viewModel: MovieLibrariesViewModel, title: String) { + self.viewModel = viewModel + self.title = title + } + + @ViewBuilder func makeStart() -> some View { + MovieLibrariesView(viewModel: self.viewModel, title: title) + } + + func makeLibrary(library: BaseItemDto) -> LibraryCoordinator { + LibraryCoordinator(viewModel: LibraryViewModel(parentID: library.id), title: library.title) + } +} diff --git a/Shared/Coordinators/TVLibrariesCoordinator.swift b/Shared/Coordinators/TVLibrariesCoordinator.swift new file mode 100644 index 00000000..2ad50744 --- /dev/null +++ b/Shared/Coordinators/TVLibrariesCoordinator.swift @@ -0,0 +1,37 @@ +// +/* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Foundation +import JellyfinAPI +import Stinsen +import SwiftUI + +final class TVLibrariesCoordinator: NavigationCoordinatable { + + let stack = NavigationStack(initial: \TVLibrariesCoordinator.start) + + @Root var start = makeStart + @Route(.push) var library = makeLibrary + + let viewModel: TVLibrariesViewModel + let title: String + + init(viewModel: TVLibrariesViewModel, title: String) { + self.viewModel = viewModel + self.title = title + } + + @ViewBuilder func makeStart() -> some View { + TVLibrariesView(viewModel: self.viewModel, title: title) + } + + func makeLibrary(library: BaseItemDto) -> LibraryCoordinator { + LibraryCoordinator(viewModel: LibraryViewModel(parentID: library.id), title: library.title) + } +} diff --git a/Shared/ViewModels/LibraryViewModel.swift b/Shared/ViewModels/LibraryViewModel.swift index 1df7ac24..f0839708 100644 --- a/Shared/ViewModels/LibraryViewModel.swift +++ b/Shared/ViewModels/LibraryViewModel.swift @@ -15,9 +15,9 @@ import SwiftUICollection typealias LibraryRow = CollectionRow struct LibraryRowCell: Hashable { - let id = UUID() - let item: BaseItemDto? - var loadingCell: Bool = false + let id = UUID() + let item: BaseItemDto? + var loadingCell: Bool = false } final class LibraryViewModel: ViewModel { @@ -38,6 +38,7 @@ final class LibraryViewModel: ViewModel { @Published var filters: LibraryFilters private let columns: Int + private var libraries = [BaseItemDto]() var enabledFilterType: [FilterType] { if genre == nil { @@ -48,12 +49,12 @@ final class LibraryViewModel: ViewModel { } init( - parentID: String? = nil, - person: BaseItemPerson? = nil, - genre: NameGuidPair? = nil, - studio: NameGuidPair? = nil, - filters: LibraryFilters = LibraryFilters(filters: [], sortOrder: [.ascending], withGenres: [], sortBy: [.name]), - columns: Int = 7 + parentID: String? = nil, + person: BaseItemPerson? = nil, + genre: NameGuidPair? = nil, + studio: NameGuidPair? = nil, + filters: LibraryFilters = LibraryFilters(filters: [], sortOrder: [.ascending], withGenres: [], sortBy: [.name]), + columns: Int = 7 ) { self.parentID = parentID self.person = person @@ -63,9 +64,11 @@ final class LibraryViewModel: ViewModel { self.columns = columns super.init() + $filters .sink(receiveValue: requestItems(with:)) .store(in: &cancellables) + } func requestItems(with filters: LibraryFilters) { @@ -95,7 +98,7 @@ final class LibraryViewModel: ViewModel { self.hasPreviousPage = self.currentPage > 0 self.hasNextPage = self.currentPage < self.totalPages - 1 self.items = response.items ?? [] - self.rows = self.calculateRows() + self.rows = self.calculateRows(for: self.items) }) .store(in: &cancellables) } @@ -125,7 +128,7 @@ final class LibraryViewModel: ViewModel { self.hasPreviousPage = self.currentPage > 0 self.hasNextPage = self.currentPage < self.totalPages - 1 self.items.append(contentsOf: response.items ?? []) - self.rows = self.calculateRows() + self.rows = self.calculateRows(for: self.items) }) .store(in: &cancellables) } @@ -145,37 +148,35 @@ final class LibraryViewModel: ViewModel { requestItems(with: filters) } - private func calculateRows() -> [LibraryRow] { - guard items.count > 0 else { return [] } - let rowCount = items.count / columns - var calculatedRows = [LibraryRow]() - for i in (0...rowCount) { - - let firstItemIndex = i * columns - var lastItemIndex = firstItemIndex + columns - if lastItemIndex > items.count { - lastItemIndex = items.count - } - - var rowCells = [LibraryRowCell]() - for item in items[firstItemIndex.. [LibraryRow] { + guard itemList.count > 0 else { return [] } + let rowCount = itemList.count / columns + var calculatedRows = [LibraryRow]() + for i in (0...rowCount) { + let firstItemIndex = i * columns + var lastItemIndex = firstItemIndex + columns + if lastItemIndex > itemList.count { + lastItemIndex = itemList.count + } + + var rowCells = [LibraryRowCell]() + for item in itemList[firstItemIndex.. [LibraryRow] { + guard libraries.count > 0 else { return [] } + let rowCount = libraries.count / columns + var calculatedRows = [LibraryRow]() + for i in (0...rowCount) { + let firstItemIndex = i * columns + var lastItemIndex = firstItemIndex + columns + if lastItemIndex > libraries.count { + lastItemIndex = libraries.count + } + + var rowCells = [LibraryRowCell]() + for item in libraries[firstItemIndex.. [LibraryRow] { + guard libraries.count > 0 else { return [] } + let rowCount = libraries.count / columns + var calculatedRows = [LibraryRow]() + for i in (0...rowCount) { + let firstItemIndex = i * columns + var lastItemIndex = firstItemIndex + columns + if lastItemIndex > libraries.count { + lastItemIndex = libraries.count + } + + var rowCells = [LibraryRowCell]() + for item in libraries[firstItemIndex.. Date: Wed, 20 Oct 2021 20:54:45 -0500 Subject: [PATCH 58/88] fix iOS build with dud view --- JellyfinPlayer.xcodeproj/project.pbxproj | 12 ++++++++--- .../Components/PortraitItemElement.swift | 20 +++++++++++++++++++ .../Views}/PlainNavigationLinkButton.swift | 0 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 JellyfinPlayer/Components/PortraitItemElement.swift rename {JellyfinPlayer tvOS/Components => Shared/Views}/PlainNavigationLinkButton.swift (100%) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 63a1911f..814c1754 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -232,6 +232,8 @@ C4BE0767271FC109003F4AD1 /* TVLibrariesViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0765271FC109003F4AD1 /* TVLibrariesViewModel.swift */; }; C4BE0769271FC164003F4AD1 /* TVLibrariesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0768271FC164003F4AD1 /* TVLibrariesView.swift */; }; C4BE076A271FC164003F4AD1 /* TVLibrariesView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE0768271FC164003F4AD1 /* TVLibrariesView.swift */; }; + C4BE076E2720FEA8003F4AD1 /* PortraitItemElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4BE076D2720FEA8003F4AD1 /* PortraitItemElement.swift */; }; + C4BE076F2720FEFF003F4AD1 /* PlainNavigationLinkButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */; }; C4E5081B2703F82A0045C9AB /* LibraryListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E508172703E8190045C9AB /* LibraryListView.swift */; }; C4E5081D2703F8370045C9AB /* LibrarySearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */; }; E100720726BDABC100CE3E31 /* MediaPlayButtonRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */; }; @@ -540,6 +542,7 @@ C4BE0762271FC0BB003F4AD1 /* TVLibrariesCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TVLibrariesCoordinator.swift; sourceTree = ""; }; C4BE0765271FC109003F4AD1 /* TVLibrariesViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TVLibrariesViewModel.swift; sourceTree = ""; }; C4BE0768271FC164003F4AD1 /* TVLibrariesView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TVLibrariesView.swift; sourceTree = ""; }; + C4BE076D2720FEA8003F4AD1 /* PortraitItemElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortraitItemElement.swift; sourceTree = ""; }; C4E508172703E8190045C9AB /* LibraryListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibraryListView.swift; sourceTree = ""; }; C4E5081C2703F8370045C9AB /* LibrarySearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LibrarySearchView.swift; sourceTree = ""; }; D79953919FED0C4DF72BA578 /* Pods-JellyfinPlayer tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-JellyfinPlayer tvOS.release.xcconfig"; path = "Target Support Files/Pods-JellyfinPlayer tvOS/Pods-JellyfinPlayer tvOS.release.xcconfig"; sourceTree = ""; }; @@ -820,7 +823,6 @@ E100720626BDABC100CE3E31 /* MediaPlayButtonRowView.swift */, 53272531268BF09D0035FBF1 /* MediaViewActionButton.swift */, 53116A18268B947A003024C9 /* PlainLinkButton.swift */, - 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */, 536D3D80267BDFC60004248C /* PortraitItemElement.swift */, 536D3D87267C17350004248C /* PublicUserButton.swift */, ); @@ -1029,6 +1031,7 @@ E1AD105526D981CE003E4A08 /* PortraitHStackView.swift */, 53F866432687A45F00DCD1D7 /* PortraitItemView.swift */, E188460326DEF04800B0C5B7 /* EpisodeCardVStackView.swift */, + C4BE076D2720FEA8003F4AD1 /* PortraitItemElement.swift */, ); path = Components; sourceTree = ""; @@ -1279,6 +1282,7 @@ E1AD105326D96F5A003E4A08 /* Views */ = { isa = PBXGroup; children = ( + 531690F9267AD6EC005D8AB9 /* PlainNavigationLinkButton.swift */, 531AC8BE26750DE20091C7EB /* ImageView.swift */, 621338B22660A07800A81A2A /* LazyView.swift */, 53E4E648263F725B00F67C6B /* MultiSelectorView.swift */, @@ -1790,6 +1794,7 @@ 53F866442687A45F00DCD1D7 /* PortraitItemView.swift in Sources */, E1AD105626D981CE003E4A08 /* PortraitHStackView.swift in Sources */, 62C29EA126D102A500C1D2E7 /* iOSMainTabCoordinator.swift in Sources */, + C4BE076E2720FEA8003F4AD1 /* PortraitItemElement.swift in Sources */, 535BAE9F2649E569005FA86D /* ItemView.swift in Sources */, C40CD925271F8D1E000FB198 /* MovieLibrariesViewModel.swift in Sources */, 6225FCCB2663841E00E067F6 /* ParallaxHeader.swift in Sources */, @@ -1859,6 +1864,7 @@ E173DA5026D048D600CC4EB7 /* ServerDetailView.swift in Sources */, 62EC352F267666A5000E9F2D /* SessionManager.swift in Sources */, 62E632E3267D3BA60063E547 /* MovieItemViewModel.swift in Sources */, + C4BE076F2720FEFF003F4AD1 /* PlainNavigationLinkButton.swift in Sources */, 091B5A8A2683142E00D78B61 /* ServerDiscovery.swift in Sources */, 62E632EF267D43320063E547 /* LibraryFilterViewModel.swift in Sources */, C40CD922271F8CD8000FB198 /* MoviesLibrariesCoordinator.swift in Sources */, @@ -2072,7 +2078,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = JM7WWM3V8C; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "JellyfinPlayer tvOS/Info.plist"; @@ -2102,7 +2108,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; - DEVELOPMENT_TEAM = ""; + DEVELOPMENT_TEAM = JM7WWM3V8C; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "JellyfinPlayer tvOS/Info.plist"; diff --git a/JellyfinPlayer/Components/PortraitItemElement.swift b/JellyfinPlayer/Components/PortraitItemElement.swift new file mode 100644 index 00000000..9a63b6f1 --- /dev/null +++ b/JellyfinPlayer/Components/PortraitItemElement.swift @@ -0,0 +1,20 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import SwiftUI +import JellyfinAPI + +// Not implemented on iOS, but used by a shared Coordinator. +struct PortraitItemElement: View { + var item: BaseItemDto + + var body: some View { + EmptyView() + } +} diff --git a/JellyfinPlayer tvOS/Components/PlainNavigationLinkButton.swift b/Shared/Views/PlainNavigationLinkButton.swift similarity index 100% rename from JellyfinPlayer tvOS/Components/PlainNavigationLinkButton.swift rename to Shared/Views/PlainNavigationLinkButton.swift From 64c0df33ec6440075551d57cca5b7f5815b56367 Mon Sep 17 00:00:00 2001 From: jhays Date: Wed, 20 Oct 2021 21:10:40 -0500 Subject: [PATCH 59/88] remove dev team --- JellyfinPlayer.xcodeproj/project.pbxproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 814c1754..6a3bb58f 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -2078,7 +2078,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; - DEVELOPMENT_TEAM = JM7WWM3V8C; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "JellyfinPlayer tvOS/Info.plist"; @@ -2108,7 +2108,7 @@ CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 66; DEVELOPMENT_ASSET_PATHS = "\"JellyfinPlayer tvOS/Preview Content\""; - DEVELOPMENT_TEAM = JM7WWM3V8C; + DEVELOPMENT_TEAM = ""; ENABLE_PREVIEWS = YES; FRAMEWORK_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "JellyfinPlayer tvOS/Info.plist"; From 992361a1cfb9aa1ea191692699a74ee7a114d27b Mon Sep 17 00:00:00 2001 From: jhays Date: Thu, 21 Oct 2021 21:18:18 -0500 Subject: [PATCH 60/88] bugfixes, add year and rating to items --- .../Components/PortraitItemElement.swift | 16 ++++++++++++++++ .../Views/ContinueWatchingView.swift | 2 +- JellyfinPlayer tvOS/Views/LatestMediaView.swift | 2 +- JellyfinPlayer tvOS/Views/LibraryView.swift | 5 ++++- .../Views/MovieLibrariesView.swift | 9 ++++++++- JellyfinPlayer tvOS/Views/NextUpView.swift | 2 +- JellyfinPlayer tvOS/Views/TVLibrariesView.swift | 13 +++++++++++-- Shared/ViewModels/MovieLibrariesViewModel.swift | 6 +----- Shared/ViewModels/TVLibrariesViewModel.swift | 6 +----- 9 files changed, 44 insertions(+), 17 deletions(-) diff --git a/JellyfinPlayer tvOS/Components/PortraitItemElement.swift b/JellyfinPlayer tvOS/Components/PortraitItemElement.swift index 37c611ab..e2290ee3 100644 --- a/JellyfinPlayer tvOS/Components/PortraitItemElement.swift +++ b/JellyfinPlayer tvOS/Components/PortraitItemElement.swift @@ -57,6 +57,22 @@ struct PortraitItemElement: View { .opacity(1), alignment: .topTrailing).opacity(1) Text(item.title) .frame(width: 200, height: 30, alignment: .center) + if item.type == "Movie" || item.type == "Series" { + Text("\(String(item.productionYear ?? 0)) • \(item.officialRating ?? "N/A")") + .foregroundColor(.secondary) + .font(.caption) + .fontWeight(.medium) + } else if item.type == "Season" { + Text("\(item.name ?? "") • \(String(item.productionYear ?? 0))") + .foregroundColor(.secondary) + .font(.caption) + .fontWeight(.medium) + } else { + Text("S\(String(item.parentIndexNumber ?? 0)):E\(String(item.indexNumber ?? 0))") + .foregroundColor(.secondary) + .font(.caption) + .fontWeight(.medium) + } } .onChange(of: envFocused) { envFocus in withAnimation(.linear(duration: 0.15)) { diff --git a/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift b/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift index fd59664a..0ca800bd 100644 --- a/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift +++ b/JellyfinPlayer tvOS/Views/ContinueWatchingView.swift @@ -37,7 +37,7 @@ struct ContinueWatchingView: View { } Spacer().frame(width: 45) } - }.frame(height: 330) + }.frame(height: 350) } else { EmptyView() } diff --git a/JellyfinPlayer tvOS/Views/LatestMediaView.swift b/JellyfinPlayer tvOS/Views/LatestMediaView.swift index 4034892a..92be14d8 100644 --- a/JellyfinPlayer tvOS/Views/LatestMediaView.swift +++ b/JellyfinPlayer tvOS/Views/LatestMediaView.swift @@ -48,7 +48,7 @@ struct LatestMediaView: View { } Spacer().frame(width: 45) } - }.frame(height: 396) + }.frame(height: 480) .onAppear(perform: onAppear) } } diff --git a/JellyfinPlayer tvOS/Views/LibraryView.swift b/JellyfinPlayer tvOS/Views/LibraryView.swift index d4f05aeb..ca272c9e 100644 --- a/JellyfinPlayer tvOS/Views/LibraryView.swift +++ b/JellyfinPlayer tvOS/Views/LibraryView.swift @@ -87,8 +87,11 @@ struct LibraryView: View { .frame(maxWidth: .infinity, maxHeight: .infinity) .ignoresSafeArea(.all) } else { - Button { } label: { + VStack { Text("No results.") + Button { } label: { + Text("Reload") + } } } } diff --git a/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift b/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift index 4a78d1cb..9e388718 100644 --- a/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift +++ b/JellyfinPlayer tvOS/Views/MovieLibrariesView.swift @@ -76,7 +76,14 @@ struct MovieLibrariesView: View { .frame(maxWidth: .infinity, maxHeight: .infinity) .ignoresSafeArea(.all) } else { - Text("No results.") + VStack { + Text("No results.") + Button { + print("movieLibraries reload") + } label: { + Text("Reload") + } + } } } } diff --git a/JellyfinPlayer tvOS/Views/NextUpView.swift b/JellyfinPlayer tvOS/Views/NextUpView.swift index 8a61a3e5..3de41d6b 100644 --- a/JellyfinPlayer tvOS/Views/NextUpView.swift +++ b/JellyfinPlayer tvOS/Views/NextUpView.swift @@ -35,7 +35,7 @@ struct NextUpView: View { } Spacer().frame(width: 45) } - }.frame(height: 330) + }.frame(height: 350) .offset(y: -10) } else { EmptyView() diff --git a/JellyfinPlayer tvOS/Views/TVLibrariesView.swift b/JellyfinPlayer tvOS/Views/TVLibrariesView.swift index 725a13d6..3ae4d8df 100644 --- a/JellyfinPlayer tvOS/Views/TVLibrariesView.swift +++ b/JellyfinPlayer tvOS/Views/TVLibrariesView.swift @@ -56,7 +56,9 @@ struct TVLibrariesView: View { GeometryReader { _ in if let item = cell.item { if item.type != "Folder" { - Button {} label: { + Button { + self.tvLibrariesRouter.route(to: \.library, item) + } label: { PortraitItemElement(item: item) } .buttonStyle(PlainNavigationLinkButtonStyle()) @@ -74,7 +76,14 @@ struct TVLibrariesView: View { .frame(maxWidth: .infinity, maxHeight: .infinity) .ignoresSafeArea(.all) } else { - Text("No results.") + VStack { + Text("No results.") + Button { + print("tvLibraries reload") + } label: { + Text("Reload") + } + } } } } diff --git a/Shared/ViewModels/MovieLibrariesViewModel.swift b/Shared/ViewModels/MovieLibrariesViewModel.swift index a7c1a678..17bd4567 100644 --- a/Shared/ViewModels/MovieLibrariesViewModel.swift +++ b/Shared/ViewModels/MovieLibrariesViewModel.swift @@ -51,12 +51,10 @@ final class MovieLibrariesViewModel: ViewModel { self.libraries.append(library) } } + self.rows = self.calculateRows() if self.libraries.count == 1, let library = self.libraries.first { // show library self.router?.route(to: \.library, library) - } else { - // display list of libraries - self.rows = self.calculateRows() } } }) @@ -76,7 +74,6 @@ final class MovieLibrariesViewModel: ViewModel { var rowCells = [LibraryRowCell]() for item in libraries[firstItemIndex.. Date: Fri, 22 Oct 2021 17:12:54 -0500 Subject: [PATCH 61/88] omit music from libraries list --- JellyfinPlayer tvOS/Views/LibraryListView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/JellyfinPlayer tvOS/Views/LibraryListView.swift b/JellyfinPlayer tvOS/Views/LibraryListView.swift index 051dcbbf..d7ecd279 100644 --- a/JellyfinPlayer tvOS/Views/LibraryListView.swift +++ b/JellyfinPlayer tvOS/Views/LibraryListView.swift @@ -18,7 +18,7 @@ struct LibraryListView: View { LazyVStack { if !viewModel.isLoading { ForEach(viewModel.libraries, id: \.id) { library in - if library.collectionType ?? "" == "movies" || library.collectionType ?? "" == "tvshows" { + if library.collectionType ?? "" == "movies" || library.collectionType ?? "" == "tvshows" || library.collectionType ?? "" == "music" { EmptyView() } else { NavigationLink(destination: LazyView { From 5b4505185db32bc8ea81b2db918f510e5cb74aca Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Sat, 23 Oct 2021 21:43:42 -0600 Subject: [PATCH 62/88] Add launch screen --- JellyfinPlayer/App/JellyfinPlayerApp.swift | 3 +- .../Contents.json | 38 ++++++++++++++++++ .../swiftfin-logo.imageset/Contents.json | 23 +++++++++++ .../swiftfin-logo-1.png | Bin 0 -> 27014 bytes .../swiftfin-logo-2.png | Bin 0 -> 27014 bytes .../swiftfin-logo.imageset/swiftfin-logo.png | Bin 0 -> 27014 bytes JellyfinPlayer/Info.plist | 11 +++-- 7 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 JellyfinPlayer/Assets.xcassets/LaunchScreenBackground.colorset/Contents.json create mode 100644 JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/Contents.json create mode 100644 JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo-1.png create mode 100644 JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo-2.png create mode 100644 JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo.png diff --git a/JellyfinPlayer/App/JellyfinPlayerApp.swift b/JellyfinPlayer/App/JellyfinPlayerApp.swift index 34e5c3fa..27440a56 100644 --- a/JellyfinPlayer/App/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/App/JellyfinPlayerApp.swift @@ -19,8 +19,7 @@ struct JellyfinPlayerApp: App { var body: some Scene { WindowGroup { - // TODO: Replace with a SplashView - Color(appAppearance.style == .light ? UIColor.white : UIColor.black) + EmptyView() .ignoresSafeArea() .onAppear { setupAppearance() diff --git a/JellyfinPlayer/Assets.xcassets/LaunchScreenBackground.colorset/Contents.json b/JellyfinPlayer/Assets.xcassets/LaunchScreenBackground.colorset/Contents.json new file mode 100644 index 00000000..04256378 --- /dev/null +++ b/JellyfinPlayer/Assets.xcassets/LaunchScreenBackground.colorset/Contents.json @@ -0,0 +1,38 @@ +{ + "colors" : [ + { + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "1.000", + "green" : "1.000", + "red" : "1.000" + } + }, + "idiom" : "universal" + }, + { + "appearances" : [ + { + "appearance" : "luminosity", + "value" : "dark" + } + ], + "color" : { + "color-space" : "srgb", + "components" : { + "alpha" : "1.000", + "blue" : "0.000", + "green" : "0.000", + "red" : "0.000" + } + }, + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/Contents.json b/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/Contents.json new file mode 100644 index 00000000..e708d061 --- /dev/null +++ b/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "swiftfin-logo.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "swiftfin-logo-1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "swiftfin-logo-2.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo-1.png b/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo-1.png new file mode 100644 index 0000000000000000000000000000000000000000..efdfe42824a67c53532016ee29894e7280daa375 GIT binary patch literal 27014 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo-2.png b/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo-2.png new file mode 100644 index 0000000000000000000000000000000000000000..efdfe42824a67c53532016ee29894e7280daa375 GIT binary patch literal 27014 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo.png b/JellyfinPlayer/Assets.xcassets/swiftfin-logo.imageset/swiftfin-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..efdfe42824a67c53532016ee29894e7280daa375 GIT binary patch literal 27014 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Info.plist b/JellyfinPlayer/Info.plist index b8c7ecaf..8ad4f31b 100644 --- a/JellyfinPlayer/Info.plist +++ b/JellyfinPlayer/Info.plist @@ -62,9 +62,14 @@ network. UIApplicationSupportsIndirectInputEvents UILaunchScreen - - UILaunchStoryboardName - VideoPlayer + + UIImageRespectsSafeAreaInsets + + UIImageName + swiftfin-logo + UIColorName + LaunchScreenBackground + UIRequiredDeviceCapabilities armv7 From 095a7cd7664f9f774e3e211094eb0ab8da5ee306 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Sat, 23 Oct 2021 22:25:29 -0600 Subject: [PATCH 63/88] add default scheme and autopopulate scheme --- JellyfinPlayer/Views/BasicAppSettingsView.swift | 11 +++++++++++ JellyfinPlayer/Views/ConnectToServerView.swift | 10 +++++++++- Shared/Objects/HTTPScheme.swift | 16 ++++++++++++++++ Shared/Singleton/SessionManager.swift | 10 +++++++--- Shared/SwiftfinStore/SwiftfinStoreDefaults.swift | 1 + 5 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 Shared/Objects/HTTPScheme.swift diff --git a/JellyfinPlayer/Views/BasicAppSettingsView.swift b/JellyfinPlayer/Views/BasicAppSettingsView.swift index 286f2163..ed73b75f 100644 --- a/JellyfinPlayer/Views/BasicAppSettingsView.swift +++ b/JellyfinPlayer/Views/BasicAppSettingsView.swift @@ -18,6 +18,7 @@ struct BasicAppSettingsView: View { @State var resetTapped: Bool = false @Default(.appAppearance) var appAppearance + @Default(.defaultHTTPScheme) var defaultHTTPScheme var body: some View { Form { @@ -33,6 +34,16 @@ struct BasicAppSettingsView: View { Text("Accessibility") } + Section { + Picker("Default Scheme", selection: $defaultHTTPScheme) { + ForEach(HTTPScheme.allCases, id: \.self) { scheme in + Text("\(scheme.rawValue)") + } + } + } header: { + Text("Networking") + } + Button { resetTapped = true } label: { diff --git a/JellyfinPlayer/Views/ConnectToServerView.swift b/JellyfinPlayer/Views/ConnectToServerView.swift index eb546920..f44975d6 100644 --- a/JellyfinPlayer/Views/ConnectToServerView.swift +++ b/JellyfinPlayer/Views/ConnectToServerView.swift @@ -6,14 +6,17 @@ * Copyright 2021 Aiden Vigue & Jellyfin Contributors */ -import SwiftUI +import Defaults import Stinsen +import SwiftUI struct ConnectToServerView: View { @StateObject var viewModel: ConnectToServerViewModel @State var uri = "" + @Default(.defaultHTTPScheme) var defaultHTTPScheme + var body: some View { List { Section { @@ -21,6 +24,11 @@ struct ConnectToServerView: View { .disableAutocorrection(true) .autocapitalization(.none) .keyboardType(.URL) + .onAppear { + if uri == "" { + uri = "\(defaultHTTPScheme.rawValue)://" + } + } if viewModel.isLoading { Button(role: .destructive) { diff --git a/Shared/Objects/HTTPScheme.swift b/Shared/Objects/HTTPScheme.swift new file mode 100644 index 00000000..28152234 --- /dev/null +++ b/Shared/Objects/HTTPScheme.swift @@ -0,0 +1,16 @@ +// + /* + * SwiftFin is subject to the terms of the Mozilla Public + * License, v2.0. If a copy of the MPL was not distributed with this + * file, you can obtain one at https://mozilla.org/MPL/2.0/. + * + * Copyright 2021 Aiden Vigue & Jellyfin Contributors + */ + +import Defaults +import Foundation + +enum HTTPScheme: String, Defaults.Serializable, CaseIterable { + case http + case https +} diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index d803e8ac..d5fdd1c0 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -58,10 +58,14 @@ final class SessionManager { // Connects to a server at the given uri, storing if successful func connectToServer(with uri: String) -> AnyPublisher { - var uri = uri - if !uri.contains("http") { - uri = "https://" + uri + var uriComponents = URLComponents(string: uri) ?? URLComponents() + + if uriComponents.scheme == nil { + uriComponents.scheme = SwiftfinStore.Defaults.suite[.defaultHTTPScheme].rawValue } + + var uri = uriComponents.string ?? "" + if uri.last == "/" { uri = String(uri.dropLast()) } diff --git a/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift b/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift index 53ce5f84..ab6a28d0 100644 --- a/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift +++ b/Shared/SwiftfinStore/SwiftfinStoreDefaults.swift @@ -23,6 +23,7 @@ extension SwiftfinStore { extension Defaults.Keys { static let lastServerUserID = Defaults.Key("lastServerUserID", suite: SwiftfinStore.Defaults.suite) + static let defaultHTTPScheme = Key("defaultHTTPScheme", default: .http, suite: SwiftfinStore.Defaults.suite) static let inNetworkBandwidth = Key("InNetworkBandwidth", default: 40_000_000, suite: SwiftfinStore.Defaults.suite) static let outOfNetworkBandwidth = Key("OutOfNetworkBandwidth", default: 40_000_000, suite: SwiftfinStore.Defaults.suite) static let isAutoSelectSubtitles = Key("isAutoSelectSubtitles", default: false, suite: SwiftfinStore.Defaults.suite) From 113aa128c7022835a975373bef212ceff2d8c6c8 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Sat, 23 Oct 2021 22:25:58 -0600 Subject: [PATCH 64/88] update pbxproj --- JellyfinPlayer.xcodeproj/project.pbxproj | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/JellyfinPlayer.xcodeproj/project.pbxproj b/JellyfinPlayer.xcodeproj/project.pbxproj index 191aec31..b29b0224 100644 --- a/JellyfinPlayer.xcodeproj/project.pbxproj +++ b/JellyfinPlayer.xcodeproj/project.pbxproj @@ -290,6 +290,9 @@ E18845F826DEA9C900B0C5B7 /* ItemViewBody.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18845F726DEA9C900B0C5B7 /* ItemViewBody.swift */; }; E188460026DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18845FF26DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift */; }; E188460426DEF04800B0C5B7 /* EpisodeCardVStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E188460326DEF04800B0C5B7 /* EpisodeCardVStackView.swift */; }; + E19169CE272514760085832A /* HTTPScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = E19169CD272514760085832A /* HTTPScheme.swift */; }; + E19169CF272514760085832A /* HTTPScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = E19169CD272514760085832A /* HTTPScheme.swift */; }; + E19169D0272514760085832A /* HTTPScheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = E19169CD272514760085832A /* HTTPScheme.swift */; }; E193D4D827193CAC00900D82 /* PortraitImageStackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */; }; E193D4D927193CAC00900D82 /* PortraitImageStackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */; }; E193D4DB27193CCA00900D82 /* PillStackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E193D4DA27193CCA00900D82 /* PillStackable.swift */; }; @@ -575,6 +578,7 @@ E18845F726DEA9C900B0C5B7 /* ItemViewBody.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemViewBody.swift; sourceTree = ""; }; E18845FF26DECB9E00B0C5B7 /* ItemLandscapeTopBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemLandscapeTopBarView.swift; sourceTree = ""; }; E188460326DEF04800B0C5B7 /* EpisodeCardVStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EpisodeCardVStackView.swift; sourceTree = ""; }; + E19169CD272514760085832A /* HTTPScheme.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HTTPScheme.swift; sourceTree = ""; }; E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PortraitImageStackable.swift; sourceTree = ""; }; E193D4DA27193CCA00900D82 /* PillStackable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PillStackable.swift; sourceTree = ""; }; E193D5422719407E00900D82 /* tvOSMainCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = tvOSMainCoordinator.swift; sourceTree = ""; }; @@ -807,6 +811,7 @@ E1AD104926D94822003E4A08 /* DetailItem.swift */, 53192D5C265AA78A008A4215 /* DeviceProfileBuilder.swift */, 62EC353326766B03000E9F2D /* DeviceRotationViewModifier.swift */, + E19169CD272514760085832A /* HTTPScheme.swift */, E193D4DA27193CCA00900D82 /* PillStackable.swift */, E193D4D727193CAC00900D82 /* PortraitImageStackable.swift */, E1D4BF832719D25A00A11E64 /* TrackLanguage.swift */, @@ -1734,6 +1739,7 @@ E193D549271941CC00900D82 /* UserSignInView.swift in Sources */, 535870AA2669D8AE00D05A09 /* BlurHashDecode.swift in Sources */, 53ABFDE5267974EF00886593 /* ViewModel.swift in Sources */, + E19169CF272514760085832A /* HTTPScheme.swift in Sources */, C45B29BB26FAC5B600CEF5E0 /* ColorExtension.swift in Sources */, 531069582684E7EE00CFFDBA /* MediaInfoView.swift in Sources */, E1D4BF822719D22800A11E64 /* AppAppearance.swift in Sources */, @@ -1808,6 +1814,7 @@ E173DA5426D050F500CC4EB7 /* ServerDetailViewModel.swift in Sources */, E188460426DEF04800B0C5B7 /* EpisodeCardVStackView.swift in Sources */, 53F8377D265FF67C00F456B3 /* VideoPlayerSettingsView.swift in Sources */, + E19169CE272514760085832A /* HTTPScheme.swift in Sources */, 53192D5D265AA78A008A4215 /* DeviceProfileBuilder.swift in Sources */, 62133890265F83A900A81A2A /* LibraryListView.swift in Sources */, 62C29EA326D1030F00C1D2E7 /* ConnectToServerCoodinator.swift in Sources */, @@ -1904,6 +1911,7 @@ files = ( 53649AB3269D3F5B00A2D8B7 /* LogManager.swift in Sources */, E13DD3CB27164BA8009D4DAF /* UIDeviceExtensions.swift in Sources */, + E19169D0272514760085832A /* HTTPScheme.swift in Sources */, 6267B3D726710B9700A7371D /* CollectionExtensions.swift in Sources */, 628B953C2670D2430091AF3B /* StringExtensions.swift in Sources */, 6267B3DB2671139400A7371D /* ImageExtensions.swift in Sources */, From d633652b8c23260f09a474a4971fac17930997a6 Mon Sep 17 00:00:00 2001 From: Ethan Pippin Date: Sat, 23 Oct 2021 22:31:55 -0600 Subject: [PATCH 65/88] update port --- Shared/ServerDiscovery/ServerDiscovery.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shared/ServerDiscovery/ServerDiscovery.swift b/Shared/ServerDiscovery/ServerDiscovery.swift index 7d718078..6f34789d 100644 --- a/Shared/ServerDiscovery/ServerDiscovery.swift +++ b/Shared/ServerDiscovery/ServerDiscovery.swift @@ -37,7 +37,7 @@ public class ServerDiscovery { if let port = components?.port { return port } - return 8096 + return 7359 } enum CodingKeys: String, CodingKey { From aba136a3541b14a75cac6bcfeea1a08d66569a21 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Mon, 25 Oct 2021 15:03:19 -0400 Subject: [PATCH 66/88] Added translation using Weblate (Esperanto) --- Translations/eo.lproj/Localizable.strings | Bin 0 -> 4 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Translations/eo.lproj/Localizable.strings diff --git a/Translations/eo.lproj/Localizable.strings b/Translations/eo.lproj/Localizable.strings new file mode 100644 index 0000000000000000000000000000000000000000..ed60b89c47319bc2c37b5775c777dddd6a16d56b GIT binary patch literal 4 LcmezWkBb2S2Mz)V literal 0 HcmV?d00001 From bbf4821744f0960dd2226b92b6d97dc71c8f460e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Mon, 25 Oct 2021 18:55:47 +0000 Subject: [PATCH 67/88] Translated using Weblate (Czech) Currently translated at 100.0% (75 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/cs/ --- Translations/cs.lproj/Localizable.strings | Bin 4910 -> 4998 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/cs.lproj/Localizable.strings b/Translations/cs.lproj/Localizable.strings index 5a1148c63b119e4486cbff97ba030a0c313baf84..5b1883efc1418776423229dd27bcc43b43afc685 100644 GIT binary patch delta 53 zcmZ3d)~3EePncJU!IdGGp@5-;p^`yi@_uGX@h~8(fT4)tAwv~I3PT=4CQwd+A#d_c GW@!LqPYo#m delta 7 OcmZouU#GS~PZ$6T7y@$u From ad4f6150f862a749b1ad178b9c706fecd5939ec2 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Tue, 26 Oct 2021 12:15:29 +0000 Subject: [PATCH 68/88] Translated using Weblate (Esperanto) Currently translated at 100.0% (75 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/eo/ --- Translations/eo.lproj/Localizable.strings | Bin 4 -> 4972 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/eo.lproj/Localizable.strings b/Translations/eo.lproj/Localizable.strings index ed60b89c47319bc2c37b5775c777dddd6a16d56b..6e6055fd01333c5ae9467afafeaaabec059180a5 100644 GIT binary patch literal 4972 zcmb7|Yj0ac5Qf*^pud4iM-eRusg&ENAOsPJp{5#-% zb~2e=JG~(5*f~3wotd3^XEy)-b0^(N8|ffjrOPx*o2g0n(l7d+rde9(_bg3Bxe#rl zXR5VP8fyJYztA_+my&PNPkPXEChl3GXCRreR_1AtCLQ#S#5qc@^o*t9Ed8bDM9)GT zuJ6Ze)kfpiJP-xDVke`0n?BFh8vVQcwvkM_pY^gI_MU0yMmw}?n!2L2qFkh9wg(@v zWGtDHR()sF`a-l5t-ED2dEy)%1$gduW_jH$9A3-RHa=HmnzSwcR=YN`bd=+9tY0jB zCHhkK4b#{9g!j)ypUS>vIu}=0RWhb6?l)MD};%?oM0630ff8pS>NG1ODiOzN3z zm}}Q2?a7{T{_7x}>hHF&?1d~l6VE3dzR65Hbbt4xgRH|kqO-btofTL?hB%km(ap87 z$o6w0Z*uGo74?YEvn*#7#EG$IlltNw>l~<#CSmDPD{k9%jxm{Qr(yOXGnWkCq5o;- z^;&W(o%c+dXCKh}L>e#jxl-;Bj}Pfy=eKBVVU3(m2) z$jmMAa^9_0=As>mdVXWMVbVt9@%Ku*m%P4=R#%rv{VnbNj2@e+lo~}s-nmSJaeiOn z$@=cGViEX5HZNs;lXlZUCq?kA&%s4yvE~`@QrSF9Ur4S=uSHoX6UgtW z^5^G5*Hf*Lo2{Z}IRKKtVHO?80;&tl8f5vf^4R`;~Z`CBc30FzGa8d=_?!?dp&51Y%p2BVGs zK>OS-|5!GGp>tL0ZRoYCujH?Ff;L;ZPQn^a5|yT*18?Y-723hq^W&RSA*~EH6K_&|Ff)io7ttr+OT&WQ^EUVSq6st zspCZ*!PyNSIgcS|L~c(ytfI;58cm4mD5IIxl2y6!nB}{Q4t`tw_Nz$52{;$%L0;5x z0HICWj_6dr_fYbj38Ji0dL?zq{MF=280x#$aI6*UD>f^+@2l~l*RM_x5zW;|Sr@ZR zrMorhWsY4SS$Mo7%A|w8-X8@FEq>u?*-yc7Lz2*8UDQsN3ER)qPzrzX zjA{%SW+9sy$yIt4=m1yQZC%4}qD{q9_pi|LS;y!hdnY|iUtQ42IN{c8 zsLCH}q74oZlW7hf?kYC%@^+#%aw}xLqj1;YbV5t?6R>qs$Q+3GL|THkt4Q0u0PG0t z?ki_b^kGjpz?D+Y=tiyO7Lv3oX?3@ao%+(_l=Dn6WbW&}aj09*b5@t4ZiC$G#-TY>{;$9Y7$eFmIhZcC5o@^Ehe$aKU$rP)6M=<0_ zt5C`=v5JG#Xo;qev`3wZkHm3aWnhVuWpFsIqKh)DpPj0mSDo>cFLmyd5hjC4YR`n#n8a-#MT6I3E;!UB)-_3fP i*}Sss%_v*i-~Kz(=8WP5m<-CC;$C;GRVXJnasLkzzUndn literal 4 LcmezWkBb2S2Mz)V From 2e62b2be3f44a787b0e11a1e6ab73c5b4fa26fea Mon Sep 17 00:00:00 2001 From: Alan Azar Date: Wed, 27 Oct 2021 07:52:08 +0000 Subject: [PATCH 69/88] Translated using Weblate (Esperanto) Currently translated at 100.0% (75 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/eo/ --- Translations/eo.lproj/Localizable.strings | Bin 4972 -> 4974 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/eo.lproj/Localizable.strings b/Translations/eo.lproj/Localizable.strings index 6e6055fd01333c5ae9467afafeaaabec059180a5..fcf65fdf1bb287684ff86d9e23f1985276aab0f4 100644 GIT binary patch delta 16 XcmaE(_D*d96N?^$9>ZoPrYu1KFAM}* delta 14 VcmaE-_C{?16O)?4W)`L_K>#RN1VsP< From d7d9da063cca080f50d4f0780824132b82ac419c Mon Sep 17 00:00:00 2001 From: Alan Azar Date: Fri, 29 Oct 2021 00:53:35 -0400 Subject: [PATCH 70/88] Added translation using Weblate (Arabic) --- Translations/ar.lproj/Localizable.strings | Bin 0 -> 4 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Translations/ar.lproj/Localizable.strings diff --git a/Translations/ar.lproj/Localizable.strings b/Translations/ar.lproj/Localizable.strings new file mode 100644 index 0000000000000000000000000000000000000000..ed60b89c47319bc2c37b5775c777dddd6a16d56b GIT binary patch literal 4 LcmezWkBb2S2Mz)V literal 0 HcmV?d00001 From 6561206288883f91555e259cf206de16106a8ec1 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 10:36:52 +0000 Subject: [PATCH 71/88] Translated using Weblate (English) Currently translated at 100.0% (75 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/en/ --- Translations/en.lproj/Localizable.strings | Bin 10452 -> 4768 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/en.lproj/Localizable.strings b/Translations/en.lproj/Localizable.strings index e190135fb933848fe1243f98f79e58e06547a94d..5ce5535c38c10c379934c0356f517733aa6768d7 100644 GIT binary patch delta 397 zcmWlTF-RL>07jEbF2*y)^m4}YOn%Sb%Mp%nv^U%kC8Svdk)RF^8KiXRP#hc`GD+!D z9Fhkj;&6ylDI(|~F5)T&!-n=vN)qfH!bgIg_NWvq*p6BxM~XR&|Bmg4~@<1VedO(XAdk@pEEJpN4hcm>H( zAw+)giDKHiU{SAep}Tm+Cc~o5L(ya1@VPg>rDS4(Uz49Hmn?pk8Wg5FoK6LNG(-NH zCGJd{$7zGr>2~a8dX~$R6|ytqsjmILexCV6uN*(91k@{wTvob#6%GE24#%@PN3&(J zw#Tj=ke+KYh_R()AVa>)x9QHWP;d-1M-VxZL#IxuD)>=dPD*afBByRfZ6)H?`JTI^ Fya7#U z(#ze<9P`|~?d;tB{IMph66C#1a6G~BEB;PpEHhl6%M_GL8A>0tJ}Ad>jU)L3P{%ks zh0G(+R%K0Aq$79bC5}O!?2s%MTT;OkrSQ*L)zZqgCM?{;97pf6(1bGwVb{g?n zJat@OB)h=Shh>fmyC@FJ^Fncs%pNUxCDXjL&f_z)&fLSVi>E(FYz$Fh#)uc|k((s_ z5gwqb9U+##G~lv)A2hEj`ZL8xV^=m%Ne|2uXNs4`&v;6%C8vmp9*$G2HazBN=t{GU z7pf6r@*?JFTby>0Lv3UoN=Sw0&H3@zf81EnP5Gfke0HZC|Rq=GKVFDe1ykmh``U0HmKOMUDgNX zrfkax^nhK|usxjR+^BNA5DZZ_*hOm<)1KLS$gXpnu-(nlo=DjR9L0`)f||=7-&S75 zS1;p(Y72W0_5|Exya$?ZI1h3NTJ~j|j2Ei&=&4DxkoDjekkN;keo z^);St1P?GO0`iG{{X9~v4cevrku_l<-A8-(_4!?bnM8$~Bny^|1To-c}Hc!jgV5F>YnXw}u)R^nuvHrZvN>|x)+ zH#cScsMRt)E9HYs_Y|kFSB@b|^U>P$wup4iW_>^8o5}2^*imwZ!j;HY`8uALEr^0U z*m4H12r}JIJNuRm)Qype0cy8&KkXyv;T+X=44a^_cVG^4%B628a)c7y-`wYiK26I5 zCST*&*-WuRYr=f9^fHhhVv?}4;OmSmalMcXv9^!lKfcSRe?yG^#TBFnUYnd3I!<^P zi+sy&N(5}uy9BjYHkx7XiC>`mh?RxQ=8d-Jz+)|)A}*U9h0 V2B-wAo43)*S*OZpy_QDJzW~lESls{s From 6cf70ecbbc4af77f545b274f36789d83c0119007 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Fri, 29 Oct 2021 22:41:33 +0000 Subject: [PATCH 72/88] Translated using Weblate (Czech) Currently translated at 98.6% (74 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/cs/ --- Translations/cs.lproj/Localizable.strings | Bin 4998 -> 4996 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/cs.lproj/Localizable.strings b/Translations/cs.lproj/Localizable.strings index 5b1883efc1418776423229dd27bcc43b43afc685..fb050ed48c713615752cf00fc6c6c2dbead1454d 100644 GIT binary patch delta 12 TcmZouZ&BZ{jd}A9=5zc2Atwb5 delta 12 TcmZosZ&Tl}jd}AH<_r7)Ar}P; From d5a3c8f8c2affacba619920d4c3d7bfcd10d7c92 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 21:27:16 +0000 Subject: [PATCH 73/88] Translated using Weblate (Czech) Currently translated at 98.6% (74 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/cs/ --- Translations/cs.lproj/Localizable.strings | Bin 4996 -> 4992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/cs.lproj/Localizable.strings b/Translations/cs.lproj/Localizable.strings index fb050ed48c713615752cf00fc6c6c2dbead1454d..5394ced2344f85a29eb0d6e16be41819605bcb6a 100644 GIT binary patch delta 15 WcmZosZ&2TGi Date: Fri, 29 Oct 2021 21:30:29 +0000 Subject: [PATCH 74/88] Translated using Weblate (Chinese (Simplified)) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/zh_Hans/ --- .../zh-Hans.lproj/Localizable.strings | Bin 3876 -> 3872 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/zh-Hans.lproj/Localizable.strings b/Translations/zh-Hans.lproj/Localizable.strings index 8936660857c59de9dc3ad3b82d8c31252d146791..6caed67253d77bdd3cca26245508a7bc70296ff0 100644 GIT binary patch delta 15 WcmZ1?w?J+~78{eA!sY_DEgS$TTm;Sl delta 19 YcmZ1=w?uA378{!$0|;);VcWt105=c?5&!@I From e4f5bbdbcede83fa11ce60f83ba58025d7b41263 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 21:29:37 +0000 Subject: [PATCH 75/88] Translated using Weblate (Korean) Currently translated at 94.6% (71 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/ko/ --- Translations/ko.lproj/Localizable.strings | Bin 4080 -> 4064 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/ko.lproj/Localizable.strings b/Translations/ko.lproj/Localizable.strings index 73b451299a191ae02af4762fb591cc1698c176ea..ddc4290d936e4526a205a7250f9bfa07b3670b05 100644 GIT binary patch delta 35 qcmew$|3H3%fdI=UhBXQdU-mozk{!pl9Np++#KNSeu(^dLhZ_J0tPQdN delta 25 ecmaDL|3Q9&!9)&)jV^jDY Date: Fri, 29 Oct 2021 21:28:04 +0000 Subject: [PATCH 76/88] Translated using Weblate (Spanish) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/es/ --- Translations/es.lproj/Localizable.strings | Bin 5264 -> 5260 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/es.lproj/Localizable.strings b/Translations/es.lproj/Localizable.strings index 59254ad14ecdd8e0d31216d5c4e614b4cb7d6d59..6347d91c9890f3aa202908a2e0c49066ab4f9e92 100644 GIT binary patch delta 14 VcmbQB*`v9DlSxfsGaF|YHvk`!1GfMG delta 21 bcmeCtoS?aYlU0ua2q!0UN^h3oEZ_zJJW~Y{ From 09939d4bea5aaf14206331bb54194eb74353d047 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 21:28:44 +0000 Subject: [PATCH 77/88] Translated using Weblate (Slovenian) Currently translated at 80.0% (60 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/sl/ --- Translations/sl.lproj/Localizable.strings | Bin 3924 -> 3920 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/sl.lproj/Localizable.strings b/Translations/sl.lproj/Localizable.strings index 18ddd0120c43288da62b55fcc8f962c2de3827db..372ef1236d6e7c00822a1a9ff705b9ac9506719f 100644 GIT binary patch delta 15 Xcmca2cR_B$Bo-z$h0QZq_HY3JFvbOh delta 19 Ycmca0cSUZ)Bo;P31`ymlg=G&H06>xj$N&HU From aa06f904fa6875c5c8ba6ba5c7d154c477ddd236 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 21:27:31 +0000 Subject: [PATCH 78/88] Translated using Weblate (German) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/de/ --- Translations/de.lproj/Localizable.strings | Bin 5120 -> 5116 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/de.lproj/Localizable.strings b/Translations/de.lproj/Localizable.strings index bfa5f2c32e1d96c3d6911b0db98574f0c48a2ffc..5eb5a3a0b458964ed7dd289d80e31b5c92c7d544 100644 GIT binary patch delta 26 hcmZqB_@lldhMiMQL5abdfr~+DvaO)x<|g(!9spjv26q4e delta 19 YcmeyP-k`A|hMi510R%V4vCrcH06VS)F#rGn From b222189aebb4982e1d563a8ebb92df75e6f0664a Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 10:37:26 +0000 Subject: [PATCH 79/88] Translated using Weblate (Italian) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/it/ --- Translations/it.lproj/Localizable.strings | Bin 5128 -> 5124 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/it.lproj/Localizable.strings b/Translations/it.lproj/Localizable.strings index d86aa2b11327c4fe2b23587a10355dcdc894ced5..89444a6b5bf67961660b00b865e8a37f48dcfb5f 100644 GIT binary patch delta 15 WcmeCsXwleU#m=Oru-SqA1P=ft=mcZ{ delta 19 YcmZqC=+M|;#m=V30D_xs*iY~P05MPmr~m)} From fa66181fca1e3624f3f9419bffdf9e63e06e42d4 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 21:28:22 +0000 Subject: [PATCH 80/88] Translated using Weblate (Slovak) Currently translated at 88.0% (66 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/sk/ --- Translations/sk.lproj/Localizable.strings | Bin 4608 -> 4604 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/sk.lproj/Localizable.strings b/Translations/sk.lproj/Localizable.strings index 99b53e28cefe1337df1b0123d4efe2c72e8297a3..019d0bcbb4ab308cee4fdb4cef7a20a0faf85125 100644 GIT binary patch delta 15 WcmZor`J=p{iJ3`FVRHv_1s?z{HU$L$ delta 19 YcmeyP+@P|diJ4800R%U Date: Fri, 29 Oct 2021 21:29:52 +0000 Subject: [PATCH 81/88] Translated using Weblate (Tamil) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/ta/ --- Translations/ta.lproj/Localizable.strings | Bin 5280 -> 5274 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/ta.lproj/Localizable.strings b/Translations/ta.lproj/Localizable.strings index f342a3133836024ea839f918d302c9b71d9d56cf..15dcbfcb0faf2cf2f15c7e30132527031a733822 100644 GIT binary patch delta 15 XcmZ3WIZJcH5 Date: Fri, 29 Oct 2021 21:27:47 +0000 Subject: [PATCH 82/88] Translated using Weblate (Greek) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/el/ --- Translations/el.lproj/Localizable.strings | Bin 5174 -> 5170 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/el.lproj/Localizable.strings b/Translations/el.lproj/Localizable.strings index 7f22c5cb28c4166f36a26846690fd619ea75fc65..b76ab027c985fe3f8c82212a4f19728db0883a93 100644 GIT binary patch delta 26 hcmdm{u}Nct0|%#?f)ax@0~dqRWJX5G&1oDLxB*!W1~UKv delta 30 jcmdm_u}x!x0|&1j0|+WHSTk@jC{1Q$l-!)eae*5EYBdIT From 162e5605f799dd7580b916b49179099c1f92321d Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 21:29:23 +0000 Subject: [PATCH 83/88] Translated using Weblate (Vietnamese) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/vi/ --- Translations/vi.lproj/Localizable.strings | Bin 4966 -> 4962 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/vi.lproj/Localizable.strings b/Translations/vi.lproj/Localizable.strings index b1fc30cb214fa1914891605f635351645a0edb43..43a6af61eb84faa27637c76c2b2406fae8db5149 100644 GIT binary patch delta 15 WcmaE+_DF3*8wZn`!sZ^1TU-D$QU%5U delta 19 YcmaE)_DpR<8wZ;n0|;*J;JC#F07K3O3IG5A From 68616e7438a4ecf8968e1ff4e17310a25d24c6e8 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 21:29:04 +0000 Subject: [PATCH 84/88] Translated using Weblate (Swedish) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/sv/ --- Translations/sv.lproj/Localizable.strings | Bin 4888 -> 4884 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/sv.lproj/Localizable.strings b/Translations/sv.lproj/Localizable.strings index 3c54a23be2339af5f725ff9a2b0bdc061d045d9f..17ef941547d559848db05789d034f13d27ca3d8a 100644 GIT binary patch delta 14 VcmbQCHbrg2FCHc}g-yH?Yyc;p1XKV3 delta 19 YcmbQDHbZU0FCI2M1`yo*hev`906(?`m;e9( From 64c6196e9f75f0315ba68e0f48ad7d0e22bd1297 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 21:30:44 +0000 Subject: [PATCH 85/88] Translated using Weblate (Chinese (Traditional)) Currently translated at 97.3% (73 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/zh_Hant/ --- .../zh-Hant.lproj/Localizable.strings | Bin 3922 -> 3918 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/zh-Hant.lproj/Localizable.strings b/Translations/zh-Hant.lproj/Localizable.strings index c0722236f5793f05daf8e7ca9a188bab3934ecbb..dbfd118527c70de6df80f3a040aedaeedb492a7a 100644 GIT binary patch delta 15 Wcmca4cTR4D6&sV9!e$3HAx;1)fdnZ4 delta 19 YcmX>ncS&x86&sr#0|;)mVH4s60666YZ2$lO From 8d0cb809bf8a48f2785ba765518490778de72450 Mon Sep 17 00:00:00 2001 From: WWWesten Date: Fri, 29 Oct 2021 12:53:54 +0000 Subject: [PATCH 86/88] Translated using Weblate (Esperanto) Currently translated at 100.0% (75 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/eo/ --- Translations/eo.lproj/Localizable.strings | Bin 4974 -> 4980 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/eo.lproj/Localizable.strings b/Translations/eo.lproj/Localizable.strings index fcf65fdf1bb287684ff86d9e23f1985276aab0f4..8561f8d7fba141e59eb4278e56b40bd3649dc5cf 100644 GIT binary patch delta 25 hcmaE-_C;+26VqlErfa Date: Tue, 2 Nov 2021 22:32:47 +0000 Subject: [PATCH 87/88] Translated using Weblate (Slovak) Currently translated at 100.0% (75 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/sk/ --- Translations/sk.lproj/Localizable.strings | Bin 4604 -> 5058 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/sk.lproj/Localizable.strings b/Translations/sk.lproj/Localizable.strings index 019d0bcbb4ab308cee4fdb4cef7a20a0faf85125..b7042eb78c4a0c33b330a759fa71c3212f72399f 100644 GIT binary patch delta 444 zcmaKoO-{ma5XD~u3t|Wf2QX=BqK7an2$~odgy6@5U7`O3u!@n^2%8>)ix|9tC-4ef z!?^G_<*RI1OgsNKGw;2bzq9X)&zsuUZEab~0^P|eCI(96tEEuWJi7w3Y@`=3`%lOM zdKyHaN6ply=Z%^Ji3A)Of(pQ`QkAv<`ZfmH;PqmWSe$)I05gy0-#l72!UF(@G zk^>@N4`6$7yM=AK!gj>AYwO2(n`lLL)iMsx7he4|=&^0ero4%JiV5!+WVW&M55DA2 APXGV_ delta 12 TcmX@4{zrL(2j6BlzAelEBisbd From fb6b8d8ca2e1e120b1d32451e3af3d933532f859 Mon Sep 17 00:00:00 2001 From: Moritz Date: Thu, 4 Nov 2021 08:51:48 +0000 Subject: [PATCH 88/88] Translated using Weblate (German) Currently translated at 100.0% (75 of 75 strings) Translation: Swiftfin/Swiftfin Translate-URL: https://translate.jellyfin.org/projects/swiftfin/swiftfin/de/ --- Translations/de.lproj/Localizable.strings | Bin 5116 -> 5114 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Translations/de.lproj/Localizable.strings b/Translations/de.lproj/Localizable.strings index 5eb5a3a0b458964ed7dd289d80e31b5c92c7d544..eb2f31eed48fd3aff5354c161260c66c205bde7c 100644 GIT binary patch delta 12 TcmeyP{!4ws5w6Y0xXd^KD((e^ delta 12 TcmeyR{zrYo5w6XLxGXpUD&7Ty