Skip to content

Commit f322f5e

Browse files
authored
Merge pull request #3 from jinSasaki/fix-updates-bug
🐛 Fix a bug that the marks in menu is not updated if changed in Preference
2 parents eaabd2b + 90ca553 commit f322f5e

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

CommitMark/Controllers/MenuController.swift

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,36 @@ final class MenuController {
1717
private let applicationManager: ApplicationController
1818
private let statusItem = NSStatusBar.system().statusItem(withLength: NSVariableStatusItemLength)
1919

20+
private var observeId: String?
21+
2022
init(markService: MarkService = .shared, windowManager: WindowController = .shared, applicationManager: ApplicationController = .shared) {
2123
self.markService = markService
2224
self.windowManager = windowManager
2325
self.applicationManager = applicationManager
2426
}
2527

28+
deinit {
29+
guard let observeId = self.observeId else { return }
30+
markService.unregisterObserverBlock(id: observeId)
31+
}
32+
2633
func setup() {
2734
let image = NSImage(named: "icon_white_16")
2835
image?.isTemplate = true
2936
statusItem.image = image
3037
statusItem.highlightMode = true
31-
statusItem.menu = makeMenu()
38+
statusItem.menu = makeMenu(marks: markService.marks)
39+
40+
self.observeId = markService.register { [weak self] (marks) in
41+
guard let menu = self?.makeMenu(marks: marks) else { return }
42+
self?.statusItem.menu = menu
43+
}
3244
}
3345

34-
func makeMenu() -> NSMenu {
46+
func makeMenu(marks: [Mark]) -> NSMenu {
3547
let menu = NSMenu()
3648

37-
for mark in markService.marks {
49+
for mark in marks {
3850
let menuItem = MarkMenuItem()
3951
menuItem.target = self
4052
menuItem.action = #selector(didSelectMarkMenuItem(_:))

0 commit comments

Comments
 (0)