Revision: 29475
          http://sourceforge.net/p/bibdesk/svn/29475
Author:   hofman
Date:     2025-08-26 14:46:30 +0000 (Tue, 26 Aug 2025)
Log Message:
-----------
remove fragment from url string for saving and getting favicon in database

Modified Paths:
--------------
    trunk/bibdesk/BDSKWebIconDatabase.m
    trunk/bibdesk/BDSKWebView.m

Modified: trunk/bibdesk/BDSKWebIconDatabase.m
===================================================================
--- trunk/bibdesk/BDSKWebIconDatabase.m 2025-08-25 16:30:57 UTC (rev 29474)
+++ trunk/bibdesk/BDSKWebIconDatabase.m 2025-08-26 14:46:30 UTC (rev 29475)
@@ -51,6 +51,15 @@
 #define VERSION         1
 #define ICONS_FILENAME  @"Icons.plist"
 
+static inline NSString *URLStringByRemovingFragment(NSString *URLString) {
+    if (URLString == nil)
+        return URLString;
+    NSUInteger fragmentLocation = [URLString rangeOfString:@"#" 
options:NSBackwardsSearch].location;
+    if (fragmentLocation != NSNotFound)
+       return [URLString substringToIndex:fragmentLocation];
+    return URLString;
+}
+
 @interface BDSKWebIconDatabase ()
 - (NSURL *)webIconDatabaseURL;
 - (void)handleApplicationWillTerminate:(NSNotification *)notification;
@@ -83,6 +92,7 @@
 }
 
 - (NSImage *)iconForURLString:(NSString *)pageURLString {
+    pageURLString = URLStringByRemovingFragment(pageURLString);
     if ([NSString isEmptyString:pageURLString])
         return nil;
     NSImage *icon = [recentIcons objectForKey:pageURLString];
@@ -115,6 +125,7 @@
 }
 
 - (NSImage *)recentIconForURLString:(NSString *)aURLString {
+    aURLString = URLStringByRemovingFragment(aURLString);
     if ([NSString isEmptyString:aURLString])
         return nil;
     NSImage *icon = [recentIcons objectForKey:aURLString];
@@ -125,6 +136,8 @@
 }
 
 - (void)setIcon:(NSImage *)icon withData:(NSData *)data 
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString 
originalURLString:(NSString *)originalURLString {
+    pageURLString = URLStringByRemovingFragment(pageURLString);
+    originalURLString = URLStringByRemovingFragment(originalURLString);
     if ([NSString isEmptyString:pageURLString])
         return;
     if (recentIcons == nil)

Modified: trunk/bibdesk/BDSKWebView.m
===================================================================
--- trunk/bibdesk/BDSKWebView.m 2025-08-25 16:30:57 UTC (rev 29474)
+++ trunk/bibdesk/BDSKWebView.m 2025-08-26 14:46:30 UTC (rev 29475)
@@ -291,8 +291,14 @@
     // different pages from the same site can have the same favicon
     icon = faviconFromOrigin ? nil : [[BDSKWebIconDatabase sharedDatabase] 
recentIconForURLString:[faviconURL absoluteString]];
     urlString = [self mainFrameURL];
+    NSUInteger fragmentLoc = [urlString rangeOfString:@"#" 
options:NSBackwardsSearch].location;
+    if (urlString && fragmentLoc != NSNotFound)
+        urlString = [urlString substringToIndex:fragmentLoc];
     NSString *origUrlString = [[[[[self mainFrame] dataSource] initialRequest] 
URL] absoluteString];
-    if ([origUrlString isEqualToString:urlString] || [([origUrlString    
hasPrefix:@"/"] ? [origUrlString substringToIndex:[origUrlString length] - 1] : 
[origUrlString stringByAppendingString:@"/"]) isEqualToString:urlString])
+    fragmentLoc = [origUrlString rangeOfString:@"#" 
options:NSBackwardsSearch].location;
+    if (origUrlString && fragmentLoc != NSNotFound)
+        origUrlString = [origUrlString substringToIndex:fragmentLoc];
+    if ([origUrlString isEqualToString:urlString] || [([origUrlString 
hasSuffix:@"/"] ? [origUrlString substringToIndex:[origUrlString length] - 1] : 
[origUrlString stringByAppendingString:@"/"]) isEqualToString:urlString])
         origUrlString = nil;
     if (icon) {
         [[BDSKWebIconDatabase sharedDatabase] setIcon:icon withData:nil 
fromURLString:[faviconURL absoluteString] forURLString:urlString 
originalURLString:origUrlString];

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

Reply via email to