Make all tasks run in parallel to increase responsiveness and efficiency when fetching new data. However, parallel tasks means that toast errors are no longer feasible. Instead, add a logging system which has a more detailed view of app messages and direct the user there if there is an error. Signed-off-by: kingbri <bdashore3@proton.me>
65 lines
1.2 KiB
Swift
65 lines
1.2 KiB
Swift
//
|
|
// Logger.swift
|
|
// Ferrite
|
|
//
|
|
// Created by Brian Dashore on 3/8/23.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public class Logger {
|
|
var messageArray: [Log] = []
|
|
|
|
struct Log: Hashable {
|
|
let level: LogLevel
|
|
let description: String
|
|
let timeStamp: Date = .init()
|
|
|
|
func toMessage() -> String {
|
|
"[\(level.rawValue)]: \(description)"
|
|
}
|
|
}
|
|
|
|
enum LogLevel: String, Identifiable {
|
|
var id: Int {
|
|
hashValue
|
|
}
|
|
|
|
case info = "INFO"
|
|
case warn = "WARN"
|
|
case error = "ERROR"
|
|
}
|
|
|
|
func info(_ message: String) {
|
|
let log = Log(
|
|
level: .info,
|
|
description: message
|
|
)
|
|
|
|
messageArray.append(log)
|
|
|
|
print("LOG: \(log.toMessage())")
|
|
}
|
|
|
|
func warn(_ message: String) {
|
|
let log = Log(
|
|
level: .warn,
|
|
description: message
|
|
)
|
|
|
|
messageArray.append(log)
|
|
|
|
print("LOG: \(log.toMessage())")
|
|
}
|
|
|
|
func error(_ message: String) {
|
|
let log = Log(
|
|
level: .error,
|
|
description: message
|
|
)
|
|
|
|
messageArray.append(log)
|
|
|
|
print("LOG: \(log.toMessage())")
|
|
}
|
|
}
|