diff --git a/JellyfinPlayer/JellyfinPlayerApp.swift b/JellyfinPlayer/JellyfinPlayerApp.swift index d3c2b044..489284b9 100644 --- a/JellyfinPlayer/JellyfinPlayerApp.swift +++ b/JellyfinPlayer/JellyfinPlayerApp.swift @@ -178,30 +178,30 @@ class EmailHelper: NSObject, MFMailComposeViewControllerDelegate { private override init() { // } - - func sendLogs(logURL: URL){ + + func sendLogs(logURL: URL) { if !MFMailComposeViewController.canSendMail() { // Utilities.showErrorBanner(title: "No mail account found", subtitle: "Please setup a mail account") - return //EXIT + return // EXIT } - + let picker = MFMailComposeViewController() - + let fileManager = FileManager() let data = fileManager.contents(atPath: logURL.path) - + picker.setSubject("SwiftFin Shake Report") picker.setToRecipients(["Aiden Vigue "]) 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 } diff --git a/JellyfinPlayer/VideoPlayer.swift b/JellyfinPlayer/VideoPlayer.swift index 333eccbb..7434223c 100644 --- a/JellyfinPlayer/VideoPlayer.swift +++ b/JellyfinPlayer/VideoPlayer.swift @@ -883,10 +883,10 @@ extension PlayerViewController: GCKSessionManagerListener { } func sessionManager(_ sessionManager: GCKSessionManager, didEnd session: GCKCastSession, withError error: Error?) { - if(error != nil) { + if error != nil { LogManager.shared.log.error((error! as NSError).debugDescription) } - + playerDestination = .local videoContentView.isHidden = false remoteTimeUpdateTimer?.invalidate() diff --git a/Shared/Singleton/LogManager.swift b/Shared/Singleton/LogManager.swift index d380ceb2..8fbde19e 100644 --- a/Shared/Singleton/LogManager.swift +++ b/Shared/Singleton/LogManager.swift @@ -13,30 +13,30 @@ import Puppy class LogManager { static let shared = LogManager() let log = Puppy() - + init() { let console = ConsoleLogger("me.vigue.jellyfin.ConsoleLogger") let fileURL = self.getDocumentsDirectory().appendingPathComponent("logs.txt") let FM = FileManager() _ = try? FM.removeItem(at: fileURL) - + do { let file = try FileLogger("me.vigue.jellyfin", fileURL: fileURL) - file.format = LogFormatter(); + file.format = LogFormatter() log.add(file, withLevel: .debug) - } catch(let err) { + } catch let err { log.error("Couldn't initialize file logger.") - print(err); + print(err) } - console.format = LogFormatter(); + console.format = LogFormatter() log.add(console, withLevel: .debug) log.info("Logger initialized.") } - + func logFileURL() -> URL { return self.getDocumentsDirectory().appendingPathComponent("logs.txt") } - + func getDocumentsDirectory() -> URL { // find all possible documents directories for this user let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) @@ -48,7 +48,7 @@ class LogManager { class LogFormatter: LogFormattable { func formatMessage(_ level: LogLevel, message: String, tag: String, function: String, - file: String, line: UInt, swiftLogInfo: [String : String], + file: String, line: UInt, swiftLogInfo: [String: String], label: String, date: Date, threadID: UInt64) -> String { let file = shortFileName(file).replacingOccurrences(of: ".swift", with: "") return " [\(level.emoji) \(level)] \(file)#\(line):\(function) \(message)" diff --git a/Shared/Singleton/SessionManager.swift b/Shared/Singleton/SessionManager.swift index 3e039aa7..1a5b23fa 100644 --- a/Shared/Singleton/SessionManager.swift +++ b/Shared/Singleton/SessionManager.swift @@ -65,7 +65,7 @@ final class SessionManager { header.append("Device=\"\(deviceName)\", ") if devID == nil { - LogManager.shared.log.info("Generating device ID..."); + 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))" @@ -74,7 +74,7 @@ final class SessionManager { deviceID = "iOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))" #endif } else { - LogManager.shared.log.info("Using stored device ID..."); + LogManager.shared.log.info("Using stored device ID...") header.append("DeviceId=\"\(devID!)\", ") deviceID = devID! } @@ -116,7 +116,6 @@ final class SessionManager { func loginWithSavedSession(user: SignedInUser) { let accessToken = getAuthToken(userID: user.user_id!) - self.user = user generateAuthHeader(with: accessToken, deviceID: user.device_uuid) diff --git a/Shared/ViewModels/ConnectToServerViewModel.swift b/Shared/ViewModels/ConnectToServerViewModel.swift index 7361d4c0..bb9c23aa 100644 --- a/Shared/ViewModels/ConnectToServerViewModel.swift +++ b/Shared/ViewModels/ConnectToServerViewModel.swift @@ -70,7 +70,7 @@ final class ConnectToServerViewModel: ViewModel { .sink(receiveCompletion: { result in switch result { case let .failure(error): - let err = error as NSError; + let err = error as NSError LogManager.shared.log.critical("Error connecting to server at \"\(self.uriSubject.value)\"", tag: "connectToServer") LogManager.shared.log.critical(err.debugDescription, tag: "login") self.errorMessage = error.localizedDescription @@ -86,7 +86,7 @@ final class ConnectToServerViewModel: ViewModel { } func connectToServer(at url: URL) { - uriSubject.send(url.absoluteString); + uriSubject.send(url.absoluteString) self.connectToServer() } @@ -123,7 +123,7 @@ final class ConnectToServerViewModel: ViewModel { LogManager.shared.log.critical("User provided invalid credentials, server returned a 401 error.", tag: "login") self.errorMessage = "Invalid credentials" case .error: - let err = error as NSError; + let err = error as NSError LogManager.shared.log.critical("Error logging in to server at \"\(self.uriSubject.value)\"", tag: "login") LogManager.shared.log.critical(err.debugDescription, tag: "login") self.errorMessage = err.localizedDescription diff --git a/Shared/ViewModels/LibraryViewModel.swift b/Shared/ViewModels/LibraryViewModel.swift index 0dfafb9b..065426bd 100644 --- a/Shared/ViewModels/LibraryViewModel.swift +++ b/Shared/ViewModels/LibraryViewModel.swift @@ -68,10 +68,10 @@ final class LibraryViewModel: ViewModel { genreIDs = filters.withGenres.compactMap(\.id) } let sortBy = filters.sortBy.map(\.rawValue) - let shouldBeRecursive: Bool = filters.filters.contains(.isFavorite) || personIDs != [] || studioIDs != [] || genreIDs != []; + 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, 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"], + 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, enableUserData: true, personIds: personIDs, studioIds: studioIDs, genreIds: genreIDs, enableImages: true) .trackActivity(loading) @@ -98,10 +98,10 @@ final class LibraryViewModel: ViewModel { genreIDs = filters.withGenres.compactMap(\.id) } let sortBy = filters.sortBy.map(\.rawValue) - let shouldBeRecursive: Bool = filters.filters.contains(.isFavorite) || personIDs != [] || studioIDs != [] || genreIDs != []; + 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, 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"], + 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, enableUserData: true, personIds: personIDs, studioIds: studioIDs, genreIds: genreIDs, enableImages: true) .sink(receiveCompletion: { [weak self] completion in