Still subscribe to "updates" for update notifications.
It seems that we should subscribeError to checkForUpdatesCommand to catch all errors, and the "updates" would only work when there is no error happened.
This commit is contained in:
parent
8ee1e1d208
commit
50eb5454d4
1 changed files with 26 additions and 20 deletions
|
@ -37,6 +37,31 @@ void AutoUpdater::SetFeedURL(const std::string& feed) {
|
||||||
NSURL* url = [NSURL URLWithString:base::SysUTF8ToNSString(feed)];
|
NSURL* url = [NSURL URLWithString:base::SysUTF8ToNSString(feed)];
|
||||||
NSURLRequest* urlRequest = [NSURLRequest requestWithURL:url];
|
NSURLRequest* urlRequest = [NSURLRequest requestWithURL:url];
|
||||||
g_updater = [[SQRLUpdater alloc] initWithUpdateRequest:urlRequest];
|
g_updater = [[SQRLUpdater alloc] initWithUpdateRequest:urlRequest];
|
||||||
|
|
||||||
|
AutoUpdaterDelegate* delegate = GetDelegate();
|
||||||
|
if (!delegate)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Subscribe to events.
|
||||||
|
__block bool has_update = false;
|
||||||
|
[g_updater.updates subscribeNext:^(SQRLDownloadedUpdate* downloadedUpdate) {
|
||||||
|
has_update = true;
|
||||||
|
|
||||||
|
// There is a new update that has been downloaded.
|
||||||
|
SQRLUpdate* update = downloadedUpdate.update;
|
||||||
|
delegate->OnUpdateDownloaded(
|
||||||
|
base::SysNSStringToUTF8(update.releaseNotes),
|
||||||
|
base::SysNSStringToUTF8(update.releaseName),
|
||||||
|
base::Time::FromDoubleT(update.releaseDate.timeIntervalSince1970),
|
||||||
|
base::SysNSStringToUTF8(update.updateURL.absoluteString),
|
||||||
|
base::Bind(RelaunchToInstallUpdate));
|
||||||
|
} completed:^() {
|
||||||
|
// When the completed event is sent with no update, then we know there
|
||||||
|
// is no update available.
|
||||||
|
if (!has_update)
|
||||||
|
delegate->OnUpdateNotAvailable();
|
||||||
|
has_update = false;
|
||||||
|
}];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,28 +73,9 @@ void AutoUpdater::CheckForUpdates() {
|
||||||
if (!delegate)
|
if (!delegate)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Subscribe to events.
|
[signal subscribeError:^(NSError* error) {
|
||||||
__block bool has_update = false;
|
|
||||||
[signal subscribeNext:^(SQRLDownloadedUpdate* downloadedUpdate) {
|
|
||||||
has_update = true;
|
|
||||||
|
|
||||||
// There is a new update that has been downloaded.
|
|
||||||
SQRLUpdate* update = downloadedUpdate.update;
|
|
||||||
delegate->OnUpdateDownloaded(
|
|
||||||
base::SysNSStringToUTF8(update.releaseNotes),
|
|
||||||
base::SysNSStringToUTF8(update.releaseName),
|
|
||||||
base::Time::FromDoubleT(update.releaseDate.timeIntervalSince1970),
|
|
||||||
base::SysNSStringToUTF8(update.updateURL.absoluteString),
|
|
||||||
base::Bind(RelaunchToInstallUpdate));
|
|
||||||
} error:^(NSError* error) {
|
|
||||||
// Something wrong happened.
|
// Something wrong happened.
|
||||||
delegate->OnError(base::SysNSStringToUTF8(error.localizedDescription));
|
delegate->OnError(base::SysNSStringToUTF8(error.localizedDescription));
|
||||||
} completed:^() {
|
|
||||||
// When the completed event is sent with no update, then we know there
|
|
||||||
// is no update available.
|
|
||||||
if (!has_update)
|
|
||||||
delegate->OnUpdateNotAvailable();
|
|
||||||
has_update = false;
|
|
||||||
}];
|
}];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue