diff --git a/LiquipediaMenu/StatusBarController.swift b/LiquipediaMenu/StatusBarController.swift index 2a63132..c22ce69 100644 --- a/LiquipediaMenu/StatusBarController.swift +++ b/LiquipediaMenu/StatusBarController.swift @@ -25,21 +25,35 @@ class StatusBarController: NSObject, NSMenuItemValidation { icon?.isTemplate = true statusBarItem.image = icon statusBarItem.menu = statusBar - statusBar.addItem(NSMenuItem.init(title: "Refresh", action: #selector(generateMenu), keyEquivalent: "")) + statusBar.addItem(NSMenuItem.init(title: "Refresh", action: #selector(refreshClicked), keyEquivalent: "")) statusBar.addItem(NSMenuItem.init(title: "Quit", action: #selector(quitClicked), keyEquivalent: "")) for item in statusBar.items { item.target = self } statusBar.addItem(NSMenuItem.separator()) - generateMenu() +// statusBar.insertItem(NSMenuItem.init(title: "Refresh", action: #selector(generateMenu), keyEquivalent: ""), at: 3) + performSelector(inBackground: #selector(refreshClicked), with: nil) } - @objc func generateMenu() { -// if let matches = matchesAPI.fetchMatches(for: "dota2") { -// for match in matches { -// menu.append(NSMenuItem(title: match.league + match.team1name + match.team1score + ":" + match.team2score + match.team2name, action: nil, keyEquivalent: "")) -// } -// } + func generateMenu(for matches: [Match]) { + for item in statusBar.items { + if item.tag == 1 { + statusBar.removeItem(item) + } + } + for match in matches { + let newItem = NSMenuItem.init(title: match.league + match.team1name + match.team1score + ":" + match.team2score + match.team2name, action: nil, keyEquivalent: "") + newItem.tag = 1 + statusBar.addItem(newItem) + } + } + + @objc func refreshClicked(_ sender: NSMenuItem) { + DispatchQueue.global().async { + if let matches = self.matchesAPI.fetchMatches(for: "dota2") { + self.generateMenu(for: matches) + } + } } @objc func quitClicked(_ sender: NSMenuItem) {