@@ -115,20 +115,19 @@ final class FaviconService {
115115 func fetchFavicon(
116116 primaryRaw: String ? , secondaryRaw: String ? , primaryHost: String ? , secondaryHost: String ?
117117 ) async -> NSImage ? {
118- // First, try single pattern matching against raw strings (preserves paths like /xcode)
119- if let raw = primaryRaw, let img = matchPattern ( raw) { return img }
120- if let raw = secondaryRaw, let img = matchPattern ( raw) { return img }
121-
122- // Then try dual pattern matching (requires both patterns, e.g., "mail" + "apple")
123- if let raw = primaryRaw, let img = matchDualPattern ( raw) { return img }
124- if let raw = secondaryRaw, let img = matchDualPattern ( raw) { return img }
125-
126- // Fall back to network fetch using normalized hosts
118+ if let img = resolveRawFavicon ( primaryRaw) { return img }
127119 if let host = primaryHost, let img = await fetchHost ( host) { return img }
120+ if let img = resolveRawFavicon ( secondaryRaw) { return img }
128121 if let host = secondaryHost, let img = await fetchHost ( host) { return img }
129122 return nil
130123 }
131124
125+ private func resolveRawFavicon( _ raw: String ? ) -> NSImage ? {
126+ guard let raw else { return nil }
127+ if let img = matchPattern ( raw) { return img }
128+ return matchDualPattern ( raw)
129+ }
130+
132131 /// Check raw string against hardcoded patterns (no network fetch)
133132 private func matchPattern( _ raw: String ) -> NSImage ? {
134133 let rawLower = raw. lowercased ( )
0 commit comments