Bugfix: unread count needs sorted children! + ManagedContext fix

This commit is contained in:
relikd
2018-08-19 14:40:45 +02:00
parent 733ce7af79
commit 1b118959fd
5 changed files with 37 additions and 32 deletions

View File

@@ -48,7 +48,7 @@
*/
- (BOOL)descendantFeedItems:(FeedConfigRecursiveItemsBlock)block {
if (self.children.count > 0) {
for (FeedConfig *config in self.children) {
for (FeedConfig *config in self.sortedChildren) {
if ([config descendantFeedItems:block] == NO)
return NO;
}

View File

@@ -105,14 +105,18 @@
item.refreshUnit = (int16_t)self.refreshUnit.indexOfSelectedItem;
if (self.feedResult) {
Feed *rss = [StoreCoordinator createFeedFromDictionary:self.feedResult inContext:item.managedObjectContext];
if (item.feed)
[item.managedObjectContext deleteObject:(NSManagedObject*)item.feed];
item.feed = rss;
[item.managedObjectContext performBlockAndWait:^{
Feed *rss = [StoreCoordinator createFeedFromDictionary:self.feedResult inContext:item.managedObjectContext];
if (item.feed)
[item.managedObjectContext deleteObject:(NSManagedObject*)item.feed];
item.feed = rss;
}];
}
if ([item.managedObjectContext hasChanges]) {
self.objectIsModified = YES;
[item.managedObjectContext refreshObject:item mergeChanges:YES];
[item.managedObjectContext performBlockAndWait:^{
[item.managedObjectContext refreshObject:item mergeChanges:YES];
}];
}
}
@@ -202,7 +206,9 @@
NSString *name = ((NSTextField*)self.view).stringValue;
if (![item.name isEqualToString: name]) {
item.name = name;
[item.managedObjectContext refreshObject:item mergeChanges:YES];
[item.managedObjectContext performBlockAndWait:^{
[item.managedObjectContext refreshObject:item mergeChanges:YES];
}];
[self.delegate modalDidUpdateFeedConfig:item];
}
}

View File

@@ -59,14 +59,15 @@ static NSString *dragNodeType = @"baRSS-feed-drag";
self.undoManager = self.dataStore.managedObjectContext.undoManager;
}
- (void)dealloc {
[self saveAndRebuildMenu];
}
- (void)saveAndRebuildMenu {
[StoreCoordinator saveContext:self.dataStore.managedObjectContext];
[StoreCoordinator saveContext:self.dataStore.managedObjectContext.parentContext];
[[(AppHook*)NSApp barMenu] rebuildMenu]; // updating individual items was way to complicated ...
[self.dataStore.managedObjectContext performBlock:^{
[StoreCoordinator saveContext:self.dataStore.managedObjectContext];
[[(AppHook*)NSApp barMenu] rebuildMenu]; // updating individual items was way to complicated ...
[self.dataStore.managedObjectContext.parentContext performBlock:^{
[StoreCoordinator saveContext:self.dataStore.managedObjectContext.parentContext];
}];
}];
}
- (IBAction)addFeed:(id)sender {