Merge pull request #105 from jellyfin/create-pull-request/patch

[ci] SwiftLint
This commit is contained in:
aiden 3 2021-07-15 13:12:50 -04:00 committed by GitHub
commit 470e42a376
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 29 additions and 30 deletions

View File

@ -178,30 +178,30 @@ class EmailHelper: NSObject, MFMailComposeViewControllerDelegate {
private override init() { private override init() {
// //
} }
func sendLogs(logURL: URL){ func sendLogs(logURL: URL) {
if !MFMailComposeViewController.canSendMail() { if !MFMailComposeViewController.canSendMail() {
// Utilities.showErrorBanner(title: "No mail account found", subtitle: "Please setup a mail account") // Utilities.showErrorBanner(title: "No mail account found", subtitle: "Please setup a mail account")
return //EXIT return // EXIT
} }
let picker = MFMailComposeViewController() let picker = MFMailComposeViewController()
let fileManager = FileManager() let fileManager = FileManager()
let data = fileManager.contents(atPath: logURL.path) let data = fileManager.contents(atPath: logURL.path)
picker.setSubject("SwiftFin Shake Report") picker.setSubject("SwiftFin Shake Report")
picker.setToRecipients(["Aiden Vigue <acvigue@me.com>"]) picker.setToRecipients(["Aiden Vigue <acvigue@me.com>"])
picker.addAttachmentData(data!, mimeType: "text/plain", fileName: logURL.lastPathComponent) picker.addAttachmentData(data!, mimeType: "text/plain", fileName: logURL.lastPathComponent)
picker.mailComposeDelegate = self picker.mailComposeDelegate = self
EmailHelper.getRootViewController()?.present(picker, animated: true, completion: nil) EmailHelper.getRootViewController()?.present(picker, animated: true, completion: nil)
} }
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
EmailHelper.getRootViewController()?.dismiss(animated: true, completion: nil) EmailHelper.getRootViewController()?.dismiss(animated: true, completion: nil)
} }
static func getRootViewController() -> UIViewController? { static func getRootViewController() -> UIViewController? {
UIApplication.shared.windows.first?.rootViewController UIApplication.shared.windows.first?.rootViewController
} }

View File

@ -883,10 +883,10 @@ extension PlayerViewController: GCKSessionManagerListener {
} }
func sessionManager(_ sessionManager: GCKSessionManager, didEnd session: GCKCastSession, withError error: Error?) { func sessionManager(_ sessionManager: GCKSessionManager, didEnd session: GCKCastSession, withError error: Error?) {
if(error != nil) { if error != nil {
LogManager.shared.log.error((error! as NSError).debugDescription) LogManager.shared.log.error((error! as NSError).debugDescription)
} }
playerDestination = .local playerDestination = .local
videoContentView.isHidden = false videoContentView.isHidden = false
remoteTimeUpdateTimer?.invalidate() remoteTimeUpdateTimer?.invalidate()

View File

@ -13,30 +13,30 @@ import Puppy
class LogManager { class LogManager {
static let shared = LogManager() static let shared = LogManager()
let log = Puppy() let log = Puppy()
init() { init() {
let console = ConsoleLogger("me.vigue.jellyfin.ConsoleLogger") let console = ConsoleLogger("me.vigue.jellyfin.ConsoleLogger")
let fileURL = self.getDocumentsDirectory().appendingPathComponent("logs.txt") let fileURL = self.getDocumentsDirectory().appendingPathComponent("logs.txt")
let FM = FileManager() let FM = FileManager()
_ = try? FM.removeItem(at: fileURL) _ = try? FM.removeItem(at: fileURL)
do { do {
let file = try FileLogger("me.vigue.jellyfin", fileURL: fileURL) let file = try FileLogger("me.vigue.jellyfin", fileURL: fileURL)
file.format = LogFormatter(); file.format = LogFormatter()
log.add(file, withLevel: .debug) log.add(file, withLevel: .debug)
} catch(let err) { } catch let err {
log.error("Couldn't initialize file logger.") log.error("Couldn't initialize file logger.")
print(err); print(err)
} }
console.format = LogFormatter(); console.format = LogFormatter()
log.add(console, withLevel: .debug) log.add(console, withLevel: .debug)
log.info("Logger initialized.") log.info("Logger initialized.")
} }
func logFileURL() -> URL { func logFileURL() -> URL {
return self.getDocumentsDirectory().appendingPathComponent("logs.txt") return self.getDocumentsDirectory().appendingPathComponent("logs.txt")
} }
func getDocumentsDirectory() -> URL { func getDocumentsDirectory() -> URL {
// find all possible documents directories for this user // find all possible documents directories for this user
let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
@ -48,7 +48,7 @@ class LogManager {
class LogFormatter: LogFormattable { class LogFormatter: LogFormattable {
func formatMessage(_ level: LogLevel, message: String, tag: String, function: String, 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 { label: String, date: Date, threadID: UInt64) -> String {
let file = shortFileName(file).replacingOccurrences(of: ".swift", with: "") let file = shortFileName(file).replacingOccurrences(of: ".swift", with: "")
return " [\(level.emoji) \(level)] \(file)#\(line):\(function) \(message)" return " [\(level.emoji) \(level)] \(file)#\(line):\(function) \(message)"

View File

@ -65,7 +65,7 @@ final class SessionManager {
header.append("Device=\"\(deviceName)\", ") header.append("Device=\"\(deviceName)\", ")
if devID == nil { if devID == nil {
LogManager.shared.log.info("Generating device ID..."); LogManager.shared.log.info("Generating device ID...")
#if os(tvOS) #if os(tvOS)
header.append("DeviceId=\"tvOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))\", ") header.append("DeviceId=\"tvOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))\", ")
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))" deviceID = "iOS_\(UIDevice.current.identifierForVendor!.uuidString)_\(String(Date().timeIntervalSince1970))"
#endif #endif
} else { } else {
LogManager.shared.log.info("Using stored device ID..."); LogManager.shared.log.info("Using stored device ID...")
header.append("DeviceId=\"\(devID!)\", ") header.append("DeviceId=\"\(devID!)\", ")
deviceID = devID! deviceID = devID!
} }
@ -116,7 +116,6 @@ final class SessionManager {
func loginWithSavedSession(user: SignedInUser) { func loginWithSavedSession(user: SignedInUser) {
let accessToken = getAuthToken(userID: user.user_id!) let accessToken = getAuthToken(userID: user.user_id!)
self.user = user self.user = user
generateAuthHeader(with: accessToken, deviceID: user.device_uuid) generateAuthHeader(with: accessToken, deviceID: user.device_uuid)

View File

@ -70,7 +70,7 @@ final class ConnectToServerViewModel: ViewModel {
.sink(receiveCompletion: { result in .sink(receiveCompletion: { result in
switch result { switch result {
case let .failure(error): 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("Error connecting to server at \"\(self.uriSubject.value)\"", tag: "connectToServer")
LogManager.shared.log.critical(err.debugDescription, tag: "login") LogManager.shared.log.critical(err.debugDescription, tag: "login")
self.errorMessage = error.localizedDescription self.errorMessage = error.localizedDescription
@ -86,7 +86,7 @@ final class ConnectToServerViewModel: ViewModel {
} }
func connectToServer(at url: URL) { func connectToServer(at url: URL) {
uriSubject.send(url.absoluteString); uriSubject.send(url.absoluteString)
self.connectToServer() 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") LogManager.shared.log.critical("User provided invalid credentials, server returned a 401 error.", tag: "login")
self.errorMessage = "Invalid credentials" self.errorMessage = "Invalid credentials"
case .error: 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("Error logging in to server at \"\(self.uriSubject.value)\"", tag: "login")
LogManager.shared.log.critical(err.debugDescription, tag: "login") LogManager.shared.log.critical(err.debugDescription, tag: "login")
self.errorMessage = err.localizedDescription self.errorMessage = err.localizedDescription

View File

@ -68,10 +68,10 @@ final class LibraryViewModel: ViewModel {
genreIDs = filters.withGenres.compactMap(\.id) genreIDs = filters.withGenres.compactMap(\.id)
} }
let sortBy = filters.sortBy.map(\.rawValue) 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, ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, startIndex: currentPage * 100, limit: 100, recursive: shouldBeRecursive,
searchTerm: nil, sortOrder: filters.sortOrder, parentId: parentID, 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, filters: filters.filters, sortBy: sortBy, tags: filters.tags,
enableUserData: true, personIds: personIDs, studioIds: studioIDs, genreIds: genreIDs, enableImages: true) enableUserData: true, personIds: personIDs, studioIds: studioIDs, genreIds: genreIDs, enableImages: true)
.trackActivity(loading) .trackActivity(loading)
@ -98,10 +98,10 @@ final class LibraryViewModel: ViewModel {
genreIDs = filters.withGenres.compactMap(\.id) genreIDs = filters.withGenres.compactMap(\.id)
} }
let sortBy = filters.sortBy.map(\.rawValue) 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, ItemsAPI.getItemsByUserId(userId: SessionManager.current.user.user_id!, startIndex: currentPage * 100, limit: 100, recursive: shouldBeRecursive,
searchTerm: nil, sortOrder: filters.sortOrder, parentId: parentID, 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, filters: filters.filters, sortBy: sortBy, tags: filters.tags,
enableUserData: true, personIds: personIDs, studioIds: studioIDs, genreIds: genreIDs, enableImages: true) enableUserData: true, personIds: personIDs, studioIds: studioIDs, genreIds: genreIDs, enableImages: true)
.sink(receiveCompletion: { [weak self] completion in .sink(receiveCompletion: { [weak self] completion in