feat: skip icon download during regex edit

This commit is contained in:
relikd
2025-06-24 15:36:45 +02:00
parent 839eee7d39
commit 82e9365272

View File

@@ -62,6 +62,7 @@
@property (strong) FeedDownload *memFeed;
@property (weak) FaviconDownload *memIcon;
@property (strong) RefreshStatisticsView *statisticsView;
@property (nonatomic, assign) BOOL skipIconDownload;
@property (nonatomic, assign) BOOL openRegexAfterDownload;
@property (weak) id eventMonitor;
@end
@@ -115,7 +116,8 @@
[f.meta setRefreshIfChanged:intv];
if (self.memFeed) {
[self.memFeed copyValuesTo:f ignoreError:YES];
[f setNewIcon:self.faviconFile]; // only if downloaded anything (nil deletes icon!)
if (self.faviconFile) // only if downloaded anything (nil deletes icon!)
[f setNewIcon:self.faviconFile];
self.faviconFile = nil;
}
}
@@ -134,9 +136,11 @@
- (void)downloadRSS {
[self cancelDownloads];
[self.modalSheet setDoneEnabled:NO]; // prevent user from closing the dialog during download
[self.view.spinnerURL startAnimation:nil];
[self.view.spinnerName startAnimation:nil];
self.view.favicon.image = nil;
if (!self.skipIconDownload) {
[self.view.spinnerURL startAnimation:nil];
self.view.favicon.image = nil;
}
self.view.warningButton.hidden = YES;
// User didn't change title since last fetch. Will be pre-filled with new title after download
if ([self.view.name.stringValue isEqualToString:self.view.name.placeholderString]) {
@@ -197,7 +201,7 @@
self.view.favicon.hidden = hasError;
self.view.warningButton.hidden = !hasError;
// Start favicon download
if (hasError)
if (hasError || self.skipIconDownload)
[self downloadComplete];
else
self.memIcon = [[sender faviconDownload] startWithDelegate:self];
@@ -225,6 +229,7 @@
- (void)downloadComplete {
[self.view.spinnerURL stopAnimation:nil];
[self.modalSheet setDoneEnabled:YES];
self.skipIconDownload = NO;
if (self.openRegexAfterDownload) {
[self openRegexConverter];
@@ -237,6 +242,7 @@
- (void)openRegexConverter {
if (!self.openRegexAfterDownload) {
self.openRegexAfterDownload = YES;
self.skipIconDownload = self.feedGroup.feed.hasIcon;
[self downloadRSS];
return;
}
@@ -247,16 +253,18 @@
CGFloat minWidthDiff = previous.size.width - self.modalSheet.minSize.width;
[self.modalSheet setFrame:NSInsetRect(previous, minWidthDiff / 2.0, 0) display:NO];
Feed *feed = self.feedGroup.feed;
RegexConverterController *c = [RegexConverterController withData:self.memFeed.rawData andConverter:feed.regex];
RegexConverterController *c = [RegexConverterController withData:self.memFeed.rawData andConverter:self.feedGroup.feed.regex];
[self.modalSheet.sheetParent beginCriticalSheet:[c getModalSheet] completionHandler:^(NSModalResponse returnCode) {
// reset previous size
[self.modalSheet setFrame:previous display:NO];
if (returnCode == NSModalResponseOK) {
[c applyChanges:feed];
self.view.regexConverterButton.hidden = !feed.regex;
[c applyChanges:self.feedGroup.feed];
self.skipIconDownload = self.feedGroup.feed.hasIcon;
self.view.regexConverterButton.hidden = !self.feedGroup.feed.regex;
[self downloadRSS];
} else {
[self populateTextFields:self.feedGroup];
}
}];
}