NotifierUI // Deduplicate messages when necessary.

This commit is contained in:
ShikiSuen 2022-09-27 08:34:52 +08:00
parent 082e4ba455
commit c04684d5e4
1 changed files with 17 additions and 1 deletions

View File

@ -21,17 +21,33 @@ public class Notifier: NSWindowController {
}
}
private var currentMessage: String //
private var isNew = true //
// MARK: - Private Declarations
private static var instanceStack: [Notifier] = []
private let blankValue = ""
@discardableResult private init(_ message: String) {
currentMessage = message
let rawMessage = message.replacingOccurrences(of: "\n", with: "")
guard let screenRect = NSScreen.main?.visibleFrame, !rawMessage.isEmpty else {
let isDuplicated: Bool = {
if let firstInstanceExisted = Self.instanceStack.first {
return message == firstInstanceExisted.currentMessage && firstInstanceExisted.isNew
}
return false
}()
guard let screenRect = NSScreen.main?.visibleFrame, !rawMessage.isEmpty, !isDuplicated else {
super.init(window: nil)
return
}
//
defer { // 0.3 false
DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
self.isNew = false
}
}
let kLargeFontSize: Double = 17
let kSmallFontSize: Double = 15
let messageArray = message.components(separatedBy: "\n")