fix: prefer guid match over link match (fixes #18)

This commit is contained in:
relikd
2025-06-09 13:51:02 +02:00
parent 3189015ce1
commit 02759ba0be

View File

@@ -142,11 +142,13 @@
- (FeedArticle*)findRemoteArticle:(RSParsedArticle*)remote inLocalSet:(NSSet<FeedArticle*>*)localSet { - (FeedArticle*)findRemoteArticle:(RSParsedArticle*)remote inLocalSet:(NSSet<FeedArticle*>*)localSet {
NSString *searchLink = remote.link; NSString *searchLink = remote.link;
NSString *searchGuid = remote.guid; NSString *searchGuid = remote.guid;
BOOL linkIsNil = (searchLink == nil);
BOOL guidIsNil = (searchGuid == nil);
for (FeedArticle *art in localSet) { for (FeedArticle *art in localSet) {
if ((linkIsNil && art.link == nil) || (!linkIsNil && [art.link isEqualToString:searchLink])) { // assuming if a guid is set, it will always be unique
if ((guidIsNil && art.guid == nil) || (!guidIsNil && [art.guid isEqualToString:searchGuid])) if (searchGuid != nil) {
if ([art.guid isEqualToString:searchGuid])
return art;
} else if (searchLink != nil) {
if ([art.link isEqualToString:searchLink])
return art; return art;
} }
} }
@@ -159,11 +161,13 @@
- (RSParsedArticle*)findLocalArticle:(FeedArticle*)local inRemoteSet:(NSArray<RSParsedArticle*>*)remoteSet { - (RSParsedArticle*)findLocalArticle:(FeedArticle*)local inRemoteSet:(NSArray<RSParsedArticle*>*)remoteSet {
NSString *searchLink = local.link; NSString *searchLink = local.link;
NSString *searchGuid = local.guid; NSString *searchGuid = local.guid;
BOOL linkIsNil = (searchLink == nil);
BOOL guidIsNil = (searchGuid == nil);
for (RSParsedArticle *art in remoteSet) { for (RSParsedArticle *art in remoteSet) {
if ((linkIsNil && art.link == nil) || (!linkIsNil && [art.link isEqualToString:searchLink])) { // assuming if a guid is set, it will always be unique
if ((guidIsNil && art.guid == nil) || (!guidIsNil && [art.guid isEqualToString:searchGuid])) if (searchGuid != nil) {
if ([art.guid isEqualToString:searchGuid])
return art;
} else if (searchLink != nil) {
if ([art.link isEqualToString:searchLink])
return art; return art;
} }
} }