From 68ea3c70b20024e09ddc4e25dfae5c74c59e8fa5 Mon Sep 17 00:00:00 2001 From: "Edward B. Smith" Date: Fri, 15 Feb 2019 09:06:01 -0800 Subject: [PATCH] Fixed adding extra servers in preferences/status view. --- CHANGELOG.md | 6 ++- xcode-github-app.xcodeproj/project.pbxproj | 2 + .../XGAPreferencesViewController.m | 6 ++- xcode-github-app/XGAStatusViewController.m | 39 +++++++++---------- 4 files changed, 30 insertions(+), 23 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b1db50..d4675ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,9 @@ # xcode-github Change Log -## v1.1.1 - February 6, 2019 -* Fixed a bug where the PR branch was not checked out: Instead the template bot branch was used. +## v1.1.1 - ??? +* Adding another server in the preferences wasn't always persisted. +* If an Xcode server had no bots defined then no items appeared in the status window. Now items are always shown. +* The wrong git branch was used when a new PR bot was created from the template bot. ## v1.1.0 - January 29, 2019 * Fixed Xcode server login. diff --git a/xcode-github-app.xcodeproj/project.pbxproj b/xcode-github-app.xcodeproj/project.pbxproj index da32cd5..e2e1ae7 100644 --- a/xcode-github-app.xcodeproj/project.pbxproj +++ b/xcode-github-app.xcodeproj/project.pbxproj @@ -54,6 +54,7 @@ /* Begin PBXFileReference section */ 2BB6F4D221F9E3FF001E8693 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = Base; path = Base.lproj/Credits.rtf; sourceTree = ""; }; 2BC31A1222041978003B0EE4 /* xcode-github-cli.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; name = "xcode-github-cli.md"; path = "Documentation/xcode-github-cli.md"; sourceTree = ""; }; + 2BFD78962216A06E00E63692 /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = CHANGELOG.md; sourceTree = ""; }; 4D0DD54420597FE6001721C1 /* xcode-github-app.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = "xcode-github-app.md"; path = "Documentation/xcode-github-app.md"; sourceTree = ""; }; 4D12BA0A20A252CE00E5B1DB /* XGALogViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XGALogViewController.h; sourceTree = ""; }; 4D12BA0B20A252CE00E5B1DB /* XGALogViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XGALogViewController.m; sourceTree = ""; }; @@ -114,6 +115,7 @@ 4D76615F2057565200216B72 = { isa = PBXGroup; children = ( + 2BFD78962216A06E00E63692 /* CHANGELOG.md */, 4D0DD54420597FE6001721C1 /* xcode-github-app.md */, 2BC31A1222041978003B0EE4 /* xcode-github-cli.md */, 4DC9E5C4216DCD6700F1F4EE /* XcodeGitHub.xcodeproj */, diff --git a/xcode-github-app/XGAPreferencesViewController.m b/xcode-github-app/XGAPreferencesViewController.m index a97a554..984c124 100644 --- a/xcode-github-app/XGAPreferencesViewController.m +++ b/xcode-github-app/XGAPreferencesViewController.m @@ -66,7 +66,9 @@ - (IBAction)addServerAction:(id)sender { - (IBAction)serverDoubleAction:(id)sender { NSInteger idx = self.tableView.selectedRow; if (idx >= 0 && idx < [self.serverDictionaryController.arrangedObjects count]) { - XGAServer*server = [self.serverDictionaryController.arrangedObjects objectAtIndex:idx]; + NSDictionaryControllerKeyValuePair*pair = + [self.serverDictionaryController.arrangedObjects objectAtIndex:idx]; + XGAServer*server = pair.value; [self showServer:server]; } } @@ -79,6 +81,8 @@ - (void) showServer:(XGAServer*)server { if (returnCode == NSModalResponseOK && result.server.length && self.settings.servers[result.server] == nil) { + self.settings.servers[result.server] = result; + [self.settings save]; NSDictionaryControllerKeyValuePair*pair = [self.serverDictionaryController newObject]; pair.key = result.server; pair.value = result; diff --git a/xcode-github-app/XGAStatusViewController.m b/xcode-github-app/XGAStatusViewController.m index b351507..e2cc42c 100644 --- a/xcode-github-app/XGAStatusViewController.m +++ b/xcode-github-app/XGAStatusViewController.m @@ -386,26 +386,30 @@ - (void) updateStatus { BNCLogDebug(@"Start updateStatus."); BNCPerformBlockOnMainThreadAsync(^{ self.statusTextField.stringValue = @""; }); - /* - NSMutableDictionary*statusServers = [NSMutableDictionary new]; - for (XGAServer*server in XGASettings.shared.servers.objectEnumerator) { - if (server.server.length > 0) - statusServers[server.server] = server; - } - */ + + // Create new bots as needed: NSArray* syncTasks = XGASettings.shared.gitHubSyncTasks; NSDictionary*statusServers = XGASettings.shared.servers; for (XGAGitHubSyncTask*task in syncTasks) { if (task.xcodeServer.length != 0 && statusServers[task.xcodeServer] != nil) [self updateSyncBots:task]; } + + // Update the status: + NSMutableArray *statusArray = [NSMutableArray new]; for (XGAServer*server in statusServers.objectEnumerator) { - [self updateXcodeServerStatus:server]; + NSArray*a = [self updateXcodeServerStatus:server]; + if (a) [statusArray addObjectsFromArray:a]; } - if (syncTasks.count == 0 && statusServers.count == 0) { - // Update with 'nil' to add content for an empty display: - [self updateXcodeServerStatus:nil]; + if (statusArray.count == 0) { + XGAStatusViewItem *status = [XGAStatusViewItem new]; + status.statusImage = [NSImage imageNamed:@"RoundBlue"]; + status.statusSummary = [APFormattedString boldText:@"< No Xcode servers added yet >"]; + [statusArray addObject:status]; } + BNCPerformBlockOnMainThreadAsync(^{ + self.arrayController.content = statusArray; + }); BNCLogDebug(@"End updateStatus."); self.lastUpdateDate = [NSDate date]; @@ -446,7 +450,7 @@ - (void) updateSyncBots:(XGAGitHubSyncTask*)syncTask { } } -- (void) updateXcodeServerStatus:(XGServer*)server { +- (NSArray*) updateXcodeServerStatus:(XGServer*)server { NSError*error = nil; NSMutableArray *statusArray = [NSMutableArray new]; if (server.server.length > 0) { @@ -468,17 +472,12 @@ - (void) updateXcodeServerStatus:(XGServer*)server { } if (statusArray.count == 0) { XGAStatusViewItem *status = [XGAStatusViewItem new]; + status.server = server.server; status.statusImage = [NSImage imageNamed:@"RoundBlue"]; - if (server.server.length > 0) { - status.statusSummary = [APFormattedString boldText:@"< No Xcode bots found >"]; - } else { - status.statusSummary = [APFormattedString boldText:@"< No Xcode servers added yet >"]; - } + status.statusSummary = [APFormattedString boldText:@"< No Xcode bots found >"]; [statusArray addObject:status]; } - BNCPerformBlockOnMainThreadAsync(^{ - self.arrayController.content = statusArray; - }); + return statusArray; } @end