Skip to content

Commit e8327f0

Browse files
authored
Merge pull request #25 from menubar-apps/add-counter
add counter and improve pref window
2 parents 08065a3 + 7b9ea91 commit e8327f0

File tree

3 files changed

+168
-149
lines changed

3 files changed

+168
-149
lines changed

pullBar/AppDelegate.swift

+25-31
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
2323

2424
@Default(.refreshRate) var refreshRate
2525
@Default(.buildType) var buildType
26+
@Default(.counterType) var counterType
2627

2728
@Default(.githubUsername) var githubUsername
2829
@FromKeychain(.githubToken) var githubToken
@@ -84,19 +85,18 @@ extension AppDelegate {
8485
func refreshMenu() {
8586
NSLog("Refreshing menu")
8687
self.menu.removeAllItems()
87-
self.statusBarItem.button?.title = ""
88-
88+
8989
if (githubUsername == "" || githubToken == "") {
9090
addMenuFooterItems()
9191
return
9292
}
93-
94-
93+
94+
9595
var assignedPulls: [Edge]? = []
9696
var createdPulls: [Edge]? = []
9797
var reviewRequestedPulls: [Edge]? = []
98-
99-
98+
99+
100100
let group = DispatchGroup()
101101

102102
if showAssigned {
@@ -106,63 +106,62 @@ extension AppDelegate {
106106
group.leave()
107107
}
108108
}
109-
109+
110110
if showCreated {
111111
group.enter()
112112
ghClient.getCreatedPulls() { pulls in
113113
createdPulls?.append(contentsOf: pulls)
114114
group.leave()
115115
}
116116
}
117-
117+
118118
if showRequested {
119119
group.enter()
120120
ghClient.getReviewRequestedPulls() { pulls in
121121
reviewRequestedPulls?.append(contentsOf: pulls)
122122
group.leave()
123123
}
124124
}
125-
125+
126126
group.notify(queue: .main) {
127127

128-
let isOneSelected = (self.showAssigned.intValue + self.showCreated.intValue + self.showRequested.intValue) == 1
129-
130-
131128
if let assignedPulls = assignedPulls, let createdPulls = createdPulls, let reviewRequestedPulls = reviewRequestedPulls {
132-
129+
self.statusBarItem.button?.title = ""
130+
133131
if self.showAssigned && !assignedPulls.isEmpty {
132+
if self.counterType == .assigned {
133+
self.statusBarItem.button?.title = String(assignedPulls.count)
134+
}
135+
134136
self.menu.addItem(NSMenuItem(title: "Assigned (\(assignedPulls.count))", action: nil, keyEquivalent: ""))
135137
for pull in assignedPulls {
136138
self.menu.addItem(self.createMenuItem(pull: pull))
137139
}
138140
self.menu.addItem(.separator())
139-
if isOneSelected {
140-
self.statusBarItem.button?.title = String(assignedPulls.count)
141-
}
142141
}
143142

144143
if self.showCreated && !createdPulls.isEmpty {
144+
if self.counterType == .created {
145+
self.statusBarItem.button?.title = String(createdPulls.count)
146+
}
147+
145148
self.menu.addItem(NSMenuItem(title: "Created (\(createdPulls.count))", action: nil, keyEquivalent: ""))
146149
for pull in createdPulls {
147150
self.menu.addItem(self.createMenuItem(pull: pull))
148151
}
149152
self.menu.addItem(.separator())
150-
if isOneSelected {
151-
self.statusBarItem.button?.title = String(createdPulls.count)
152-
}
153-
154153
}
155-
154+
156155
if self.showRequested && !reviewRequestedPulls.isEmpty {
156+
if self.counterType == .reviewRequested {
157+
self.statusBarItem.button?.title = String(reviewRequestedPulls.count)
158+
}
159+
157160
self.menu.addItem(NSMenuItem(title: "Review Requested (\(reviewRequestedPulls.count))", action: nil, keyEquivalent: ""))
158161
for pull in reviewRequestedPulls {
159162
self.menu.addItem(self.createMenuItem(pull: pull))
160163
}
161164
self.menu.addItem(.separator())
162-
if isOneSelected {
163-
self.statusBarItem.button?.title = String(reviewRequestedPulls.count)
164-
}
165-
166165
}
167166

168167

@@ -312,14 +311,9 @@ extension AppDelegate {
312311
issueItemTitle.appendIcon(iconName: "dot-fill", color: NSColor.gray)
313312

314313
}
315-
316314
issueItem.submenu?.addItem(buildItem)
317315
}
318-
319-
320-
321316
}
322-
323317
}
324318

325319
issueItem.attributedTitle = issueItemTitle
@@ -347,7 +341,7 @@ extension AppDelegate {
347341
preferencesWindow.close()
348342
}
349343
preferencesWindow = NSWindow(
350-
contentRect: NSRect(x: 0, y: 0, width: 500, height: 500),
344+
contentRect: NSRect(x: 0, y: 0, width: 0, height: 0),
351345
styleMask: [.closable, .titled],
352346
backing: .buffered,
353347
defer: false

pullBar/Extensions/DefaultsExtensions.swift

+24
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ extension Defaults.Keys {
2020

2121
static let refreshRate = Key<Int>("refreshRate", default: 5)
2222
static let buildType = Key<BuildType>("buildType", default: .none)
23+
static let counterType = Key<CounterType>("counterType", default: .reviewRequested)
2324
}
2425

2526
extension KeychainKeys {
@@ -45,3 +46,26 @@ enum BuildType: String, Defaults.Serializable, CaseIterable, Identifiable {
4546
}
4647
}
4748
}
49+
50+
enum CounterType: String, Defaults.Serializable, CaseIterable, Identifiable {
51+
case assigned
52+
case created
53+
case reviewRequested
54+
case none
55+
56+
var id: Self { self }
57+
58+
var description: String {
59+
60+
switch self {
61+
case .assigned:
62+
return "assigned"
63+
case .created:
64+
return "created"
65+
case .reviewRequested:
66+
return "review requested"
67+
case .none:
68+
return "none"
69+
}
70+
}
71+
}

0 commit comments

Comments
 (0)