Revision: 28265
          http://sourceforge.net/p/bibdesk/svn/28265
Author:   hofman
Date:     2023-05-28 15:47:07 +0000 (Sun, 28 May 2023)
Log Message:
-----------
Save favicons also under original page URL when redirected. Also look for saved 
icons with URLs with trailing slash added or removed

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

Modified: trunk/bibdesk/BDSKWebIconDatabase.h
===================================================================
--- trunk/bibdesk/BDSKWebIconDatabase.h 2023-05-26 21:39:27 UTC (rev 28264)
+++ trunk/bibdesk/BDSKWebIconDatabase.h 2023-05-28 15:47:07 UTC (rev 28265)
@@ -51,6 +51,6 @@
 - (NSImage *)iconForURLString:(NSString *)pageURLString;
 - (NSImage *)recentIconForURLString:(NSString *)aURLString;
 
-- (void)setIcon:(NSImage *)icon withData:(NSData *)data 
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString;
+- (void)setIcon:(NSImage *)icon withData:(NSData *)data 
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString 
originalURLString:(NSString *)originalURLString;
 
 @end

Modified: trunk/bibdesk/BDSKWebIconDatabase.m
===================================================================
--- trunk/bibdesk/BDSKWebIconDatabase.m 2023-05-26 21:39:27 UTC (rev 28264)
+++ trunk/bibdesk/BDSKWebIconDatabase.m 2023-05-28 15:47:07 UTC (rev 28265)
@@ -97,6 +97,13 @@
     if (icon)
         return icon;
     NSString *iconURLString = [[pages objectForKey:pageURLString] 
objectForKey:ICONURL_KEY];
+    if (iconURLString == nil) {
+        if ([pageURLString hasSuffix:@"/"])
+            pageURLString = [pageURLString substringToIndex:[pageURLString 
length] - 1];
+        else
+            pageURLString = [pageURLString stringByAppendingString:@"/"];
+        iconURLString = [[pages objectForKey:pageURLString] 
objectForKey:ICONURL_KEY];
+    }
     if (iconURLString == nil)
         return nil;
     icon = [cachedIcons objectForKey:iconURLString];
@@ -123,7 +130,7 @@
     return icon;
 }
 
-- (void)setIcon:(NSImage *)icon withData:(NSData *)data 
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString {
+- (void)setIcon:(NSImage *)icon withData:(NSData *)data 
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString 
originalURLString:(NSString *)originalURLString {
     if ([NSString isEmptyString:pageURLString])
         return;
     if (recentIcons == nil)
@@ -131,6 +138,8 @@
     [recentIcons setObject:icon forKey:pageURLString];
     NSMutableDictionary *dict = [NSMutableDictionary 
dictionaryWithObjectsAndKeys:iconURLString, ICONURL_KEY, [NSDate date], 
LASTVISITED_KEY, nil];
     [pages setObject:dict forKey:pageURLString];
+    if (originalURLString)
+        [pages setObject:dict forKey:originalURLString];
     if (data) {
         [recentIcons setObject:icon forKey:iconURLString];
         [cachedIcons removeObjectForKey:iconURLString];

Modified: trunk/bibdesk/BDSKWebView.m
===================================================================
--- trunk/bibdesk/BDSKWebView.m 2023-05-26 21:39:27 UTC (rev 28264)
+++ trunk/bibdesk/BDSKWebView.m 2023-05-28 15:47:07 UTC (rev 28265)
@@ -295,8 +295,12 @@
     
     // different pages from the same site can have the same favicon
     icon = faviconFromOrigin ? nil : [[BDSKWebIconDatabase sharedDatabase] 
recentIconForURLString:[faviconURL absoluteString]];
+    urlString = [self mainFrameURL];
+    NSString *origUrlString = [[[[[self mainFrame] dataSource] initialRequest] 
URL] absoluteString];
+    if ([origUrlString isEqualToString:urlString])
+        origUrlString = nil;
     if (icon) {
-        [[BDSKWebIconDatabase sharedDatabase] setIcon:icon withData:nil 
fromURLString:[faviconURL absoluteString] forURLString:[self mainFrameURL]];
+        [[BDSKWebIconDatabase sharedDatabase] setIcon:icon withData:nil 
fromURLString:[faviconURL absoluteString] forURLString:[self mainFrameURL] 
originalURLString:origUrlString];
         if (icon != favicon)
             [self setFavicon:icon];
         return;
@@ -303,7 +307,6 @@
     }
     
     faviconFromOrigin = NO;
-    urlString = [self mainFrameURL];
     NSURLRequest *request = [NSURLRequest requestWithURL:faviconURL];
     faviconDownload = [[[BDSKDownloader sharedDownloader] 
downloadDataWithRequest:request completionHandler:^(NSData *data, NSURLResponse 
*response, NSError *error){
         BDSKDESTROY(faviconDownload);
@@ -312,7 +315,7 @@
             if (anIcon) {
                 [self setFavicon:anIcon];
                 [[BDSKWebIconDatabase sharedDatabase] setIcon:anIcon 
withData:data fromURLString:[faviconURL absoluteString]
-     forURLString:urlString];
+                     forURLString:urlString originalURLString:origUrlString];
                 [anIcon release];
             }
         }

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