Query the appcast-unstable.xml feed based off the pref.
authorRobert Sesek <rsesek@bluestatic.org>
Sat, 4 Jan 2020 21:16:07 +0000 (16:16 -0500)
committerRobert Sesek <rsesek@bluestatic.org>
Sat, 4 Jan 2020 21:53:57 +0000 (16:53 -0500)
Source/AppDelegate.h
Source/AppDelegate.m

index 990107badd826367a47dc78d97cc9191ef722c7d..7f4a0127dfb51fbfc3822ca2ae1c529f07a55ea4 100644 (file)
 
 #import <Cocoa/Cocoa.h>
 
+#import <Sparkle/SUUpdaterDelegate.h>
+
 #import "BreakpointController.h"
 #import "DebuggerController.h"
 #import "LoggingController.h"
 #import "PreferencesController.h"
 
-@interface AppDelegate : NSObject
+@interface AppDelegate : NSObject <SUUpdaterDelegate>
 {
   IBOutlet DebuggerController* debugger;
   IBOutlet LoggingController* loggingController_;
index d7948ac456e22514fd9d1ea51571ea72cfc644ef..f059e2cee42caf4c7fc9bb03b21b4a89bf944e3d 100644 (file)
@@ -21,6 +21,8 @@
 #import "FileAccessController.h"
 #import "PreferenceNames.h"
 
+static NSString* const kAppcastUnstable = @"appcast-unstable.xml";
+
 @implementation AppDelegate {
   PreferencesController* _prefsController;
 }
 
 - (void)applicationDidFinishLaunching:(NSNotification*)notification
 {
-  // Record whether this user ever used the beta VersionCast feed. In the
-  // future, we will use this bit to query for unstable releases after the user
-  // has upgraded to a stable version.
-  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
-
-  BOOL usesUnstable = [defaults boolForKey:kPrefUnstableVersionCast];
-  NSURL* feedURL = [[SUUpdater sharedUpdater] feedURL];
-  usesUnstable = usesUnstable ||
-      [[feedURL absoluteString] rangeOfString:@"?unstable"].location != NSNotFound;
-  [defaults setBool:usesUnstable forKey:kPrefUnstableVersionCast];
+  [[SUUpdater sharedUpdater] setDelegate:self];
 
 #if USE_APP_SANDBOX
   [FileAccessController maybeShowFileAccessDialog];
 }
 #endif  // USE_APP_SANDBOX
 
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark SUUpdater Delegate
+
+- (nullable NSString*)feedURLStringForUpdater:(SUUpdater*)updater
+{
+  // Record whether this user ever used the beta appcast feed.
+  NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+  NSURL* feedURL = [NSURL URLWithString:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"SUFeedURL"]];
+
+  BOOL usesUnstable = [defaults boolForKey:kPrefUnstableVersionCast] ||
+                      [[feedURL absoluteString] hasSuffix:kAppcastUnstable];
+  [defaults setBool:usesUnstable forKey:kPrefUnstableVersionCast];
+
+  if (!usesUnstable)
+    return nil;
+
+  feedURL = [[feedURL URLByDeletingLastPathComponent] URLByAppendingPathComponent:kAppcastUnstable];
+  return [feedURL absoluteString];
+}
+
 @end