Revision: 29535
http://sourceforge.net/p/bibdesk/svn/29535
Author: hofman
Date: 2025-09-05 16:49:45 +0000 (Fri, 05 Sep 2025)
Log Message:
-----------
convenience method to finalize status of download
Modified Paths:
--------------
trunk/bibdesk/BDSKDownloadManager.m
Modified: trunk/bibdesk/BDSKDownloadManager.m
===================================================================
--- trunk/bibdesk/BDSKDownloadManager.m 2025-09-05 16:23:38 UTC (rev 29534)
+++ trunk/bibdesk/BDSKDownloadManager.m 2025-09-05 16:49:45 UTC (rev 29535)
@@ -91,6 +91,27 @@
[self notifyUpdate];
}
+- (void)setStatus:(BDSKDownloadStatus)status forDownload:(BDSKWebDownload
*)webDownload error:(NSError *)error {
+ if (webDownload == nil)
+ return;
+
+ [webDownload setStatus:status];
+
+ if ((status == BDSKDownloadStatusFailed && [[NSUserDefaults
standardUserDefaults] boolForKey:BDSKRemoveFailedDownloadsKey]) ||
+ (status == BDSKDownloadStatusFinished && [[NSUserDefaults
standardUserDefaults] boolForKey:BDSKRemoveFinishedDownloadsKey]))
+ [downloads removeObject:webDownload];
+
+ [self notifyUpdate];
+
+ if (status == BDSKDownloadStatusFailed && error && ([[error domain]
isEqualToString:NSURLErrorDomain] == NO || [error code] !=
NSURLErrorCancelled)) {
+ NSString *errorDescription = [error localizedDescription] ?:
NSLocalizedString(@"An error occured during download.", @"Informative text in
alert dialog");
+ NSAlert *alert = [[NSAlert alloc] init];
+ [alert setMessageText:NSLocalizedString(@"Download Failed", @"Message
in alert dialog when download failed")];
+ [alert setInformativeText:errorDescription];
+ [alert runModal];
+ }
+}
+
- (BDSKWebDownload *)webDownloadForDownload:(id)download {
for (BDSKWebDownload *webDownload in downloads) {
if ([webDownload download] == download)
@@ -189,55 +210,26 @@
if ([sPanel runModal] == NSModalResponseOK) {
NSURL *fileURL = [sPanel URL];
+ NSError *error = nil;
if ([fileURL checkResourceIsReachableAndReturnError:NULL])
[[NSFileManager defaultManager] removeItemAtURL:fileURL
error:NULL];
- if ([[NSFileManager defaultManager] moveItemAtURL:[webDownload
fileURL] toURL:fileURL error:NULL]) {
+ if ([[NSFileManager defaultManager] moveItemAtURL:[webDownload
fileURL] toURL:fileURL error:&error]) {
[webDownload setFileURL:fileURL];
-
- [webDownload setStatus:BDSKDownloadStatusFinished];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:BDSKRemoveFinishedDownloadsKey] && webDownload)
- [downloads removeObject:webDownload];
- [self notifyUpdate];
+ [self setStatus:BDSKDownloadStatusFinished
forDownload:webDownload error:nil];
} else {
- [webDownload setStatus:BDSKDownloadStatusFailed];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:BDSKRemoveFailedDownloadsKey] && webDownload)
- [downloads removeObject:webDownload];
- [self notifyUpdate];
+ [self setStatus:BDSKDownloadStatusFailed
forDownload:webDownload error:error];
}
} else {
- [webDownload setStatus:BDSKDownloadStatusFailed];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:BDSKRemoveFailedDownloadsKey] && webDownload)
- [downloads removeObject:webDownload];
- [self notifyUpdate];
+ [self setStatus:BDSKDownloadStatusFailed forDownload:webDownload
error:nil];
}
} else {
- [webDownload setStatus:BDSKDownloadStatusFinished];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:BDSKRemoveFinishedDownloadsKey] && webDownload)
- [downloads removeObject:webDownload];
- [self notifyUpdate];
+ [self setStatus:BDSKDownloadStatusFinished forDownload:webDownload
error:nil];
}
}
- (void)download:(NSURLDownload *)download didFailWithError:(NSError *)error {
BDSKWebDownload *webDownload = [self webDownloadForDownload:download];
- [webDownload setStatus:BDSKDownloadStatusFailed];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:BDSKRemoveFailedDownloadsKey] && webDownload)
- [downloads removeObject:webDownload];
- [self notifyUpdate];
-
- if ([[error domain] isEqualToString:NSURLErrorDomain] && [error code] ==
NSURLErrorCancelled)
- return;
-
- NSString *errorDescription = [error localizedDescription] ?:
NSLocalizedString(@"An error occured during download.", @"Informative text in
alert dialog");
- NSAlert *alert = [[NSAlert alloc] init];
- [alert setMessageText:NSLocalizedString(@"Download Failed", @"Message in
alert dialog when download failed")];
- [alert setInformativeText:errorDescription];
- [alert runModal];
+ [self setStatus:BDSKDownloadStatusFailed forDownload:webDownload
error:error];
}
- (void)download:(NSURLDownload *)download didReceiveResponse:(NSURLResponse
*)response {
@@ -265,27 +257,9 @@
BDSKWebDownload *webDownload = [self webDownloadForDownload:download];
if (error) {
- [webDownload setStatus:BDSKDownloadStatusFailed];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:BDSKRemoveFailedDownloadsKey] && webDownload)
- [downloads removeObject:webDownload];
- [self notifyUpdate];
-
- if ([[error domain] isEqualToString:NSURLErrorDomain] && [error code]
== NSURLErrorCancelled)
- return;
-
- NSString *errorDescription = [error localizedDescription] ?:
NSLocalizedString(@"An error occured during download.", @"Informative text in
alert dialog");
- NSAlert *alert = [[NSAlert alloc] init];
- [alert setMessageText:NSLocalizedString(@"Download Failed", @"Message
in alert dialog when download failed")];
- [alert setInformativeText:errorDescription];
- [alert runModal];
+ [self setStatus:BDSKDownloadStatusFailed forDownload:webDownload
error:error];
} else {
- [webDownload setStatus:BDSKDownloadStatusFinished];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:BDSKRemoveFinishedDownloadsKey] && webDownload)
- [downloads removeObject:webDownload];
- [self notifyUpdate];
-
+ [self setStatus:BDSKDownloadStatusFinished forDownload:webDownload
error:nil];
}
}
@@ -317,20 +291,7 @@
- (void)download:(WKDownload *)download didFailWithError:(NSError *)error
resumeData:(NSData *)resumeData API_AVAILABLE(macos(11.3)) {
BDSKWebDownload *webDownload = [self webDownloadForDownload:download];
- [webDownload setStatus:BDSKDownloadStatusFailed];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:BDSKRemoveFailedDownloadsKey] && webDownload)
- [downloads removeObject:webDownload];
- [self notifyUpdate];
-
- if ([[error domain] isEqualToString:NSURLErrorDomain] && [error code] ==
NSURLErrorCancelled)
- return;
-
- NSString *errorDescription = [error localizedDescription] ?:
NSLocalizedString(@"An error occured during download.", @"Informative text in
alert dialog");
- NSAlert *alert = [[NSAlert alloc] init];
- [alert setMessageText:NSLocalizedString(@"Download Failed", @"Message in
alert dialog when download failed")];
- [alert setInformativeText:errorDescription];
- [alert runModal];
+ [self setStatus:BDSKDownloadStatusFailed forDownload:webDownload
error:error];
}
- (void)download:(WKDownload *)download
decideDestinationUsingResponse:(NSURLResponse *)response
suggestedFilename:(NSString *)filename completionHandler:(void (^)(NSURL *
destination))completionHandler API_AVAILABLE(macos(11.3)) {
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit