Skip to content

Commit 2a452ac

Browse files
committed
Add RSS feed support in Reader search
1 parent 4b0e0fb commit 2a452ac

File tree

3 files changed

+22
-3
lines changed

3 files changed

+22
-3
lines changed

Modules/Sources/AsyncImageKit/Helpers/FaviconService.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ private final class FaviconCache: @unchecked Sendable {
7474
}
7575

7676
private let regex: NSRegularExpression? = {
77-
let pattern = "<link[^>]*rel=\"apple-touch-icon\"[^>]*href=\"([^\"]+)\"[^>]*>"
77+
let pattern = "<link[^>]*rel=\"apple-touch-icon(?:-precomposed)\"[^>]*href=\"([^\"]+)\"[^>]*>"
7878
return try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)
7979
}()
8080

RELEASE-NOTES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
* [*] Add permalink preview in the slug editor and make other improvements [#24949]
1616
* [*] Add two accessible font sizes to Reader display settings [#25013]
1717
* [*] Fix an issue with Reader failing to parse some search results [#25022]
18+
* [*] Fix search for RSS feeds in Reader [#25023]
1819
* [*] Add "Taxonomies" to Site Settings [#24955]
1920
* [*] Update "Categories" picker to indicate multiple selection [#24952]
2021
* [*] Fix overly long related post titles in Reader [#25011]

WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ import WordPressKit
44

55
struct ReaderFeedCell: View {
66
let feed: ReaderFeed
7+
@State private var faviconURL: URL?
78

89
var body: some View {
910
HStack(alignment: .center, spacing: 16) {
10-
SiteIconView(viewModel: .init(feed: feed))
11+
SiteIconView(viewModel: .init(feed: feed, faviconURL: faviconURL))
1112
.frame(width: 40, height: 40)
1213

1314
VStack(alignment: .leading) {
@@ -23,6 +24,21 @@ struct ReaderFeedCell: View {
2324
}
2425
}
2526
}
27+
.task {
28+
await loadFaviconIfNeeded()
29+
}
30+
}
31+
32+
private func loadFaviconIfNeeded() async {
33+
guard feed.blavatarURL == nil, let url = feed.url else {
34+
return
35+
}
36+
37+
if let cachedFavicon = FaviconService.shared.cachedFavicon(forURL: url) {
38+
faviconURL = cachedFavicon
39+
} else {
40+
faviconURL = try? await FaviconService.shared.favicon(forURL: url)
41+
}
2642
}
2743

2844
var title: String {
@@ -41,10 +57,12 @@ struct ReaderFeedCell: View {
4157
}
4258

4359
extension SiteIconViewModel {
44-
init(feed: ReaderFeed, size: Size = .regular) {
60+
init(feed: ReaderFeed, faviconURL: URL? = nil, size: Size = .regular) {
4561
self.init(size: size)
4662
if let iconURL = feed.blavatarURL {
4763
self.imageURL = SiteIconViewModel.optimizedURL(for: iconURL.absoluteString, imageSize: size.size)
64+
} else if let faviconURL {
65+
self.imageURL = faviconURL
4866
}
4967
}
5068
}

0 commit comments

Comments
 (0)