Skip to content

Commit 9f88062

Browse files
authored
Reader: Hardcode WordPress.com Blog Icon (#23786)
* Hardcode wp.com icon * Update ReaderPostTests
1 parent 91f8b5f commit 9f88062

File tree

11 files changed

+77
-82
lines changed

11 files changed

+77
-82
lines changed

WordPress/Classes/Models/ReaderPost+Helper.swift renamed to WordPress/Classes/Models/ReaderPost+Swift.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ import Foundation
22

33
extension ReaderPost {
44

5+
func getSiteIconURL(size: Int) -> URL? {
6+
SiteIconViewModel.makeReaderSiteIconURL(iconURL: siteIconURL, siteID: siteID?.intValue, size: CGSize(width: size, height: size))
7+
}
8+
59
/// Find cached comment with given ID.
610
///
711
/// - Parameter id: The comment id

WordPress/Classes/Models/ReaderPost.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,6 @@ extern NSString * const ReaderPostStoredCommentTextKey;
8686
- (BOOL)isP2Type;
8787
- (NSString *)authorString;
8888
- (BOOL)contentIncludesFeaturedImage;
89-
- (NSURL *)siteIconForDisplayOfSize:(NSInteger)size;
9089
- (SourceAttributionStyle)sourceAttributionStyle;
9190
- (NSString *)sourceAuthorNameForDisplay;
9291
- (NSURL *)sourceAvatarURLForDisplay;

WordPress/Classes/Models/ReaderPost.m

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -295,20 +295,6 @@ - (NSString *)blogNameForDisplay
295295
return [[NSURL URLWithString:self.blogURL] host];
296296
}
297297

298-
- (NSURL *)siteIconForDisplayOfSize:(NSInteger)size
299-
{
300-
NSString *str;
301-
if ([self.siteIconURL length] > 0) {
302-
if ([self.siteIconURL rangeOfString:@"/blavatar/"].location == NSNotFound) {
303-
str = self.siteIconURL;
304-
} else {
305-
str = [NSString stringWithFormat:@"%@?s=%d&d=404", self.siteIconURL, size];
306-
}
307-
return [NSURL URLWithString:str];
308-
}
309-
return nil;
310-
}
311-
312298
- (NSString *)titleForDisplay
313299
{
314300
NSString *title = [[self.postTitle trim] stringByDecodingXMLCharacters];

WordPress/Classes/Models/ReaderSiteTopic.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import Foundation
1313
@NSManaged open var isVisible: Bool
1414
@NSManaged open var organizationID: Int
1515
@NSManaged open var postCount: NSNumber
16+
/// - warning: Not guaranteed to be a blavatar icon
1617
@NSManaged open var siteBlavatar: String
1718
@NSManaged open var siteDescription: String
1819
@NSManaged open var siteID: NSNumber

WordPress/Classes/ViewRelated/Blog/Site Picker/BlogList/SiteIconViewModel.swift

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,12 @@ struct SiteIconViewModel {
4040
init(readerSiteTopic: ReaderSiteTopic, size: Size = .regular) {
4141
self.size = size
4242
self.firstLetter = readerSiteTopic.title.first
43-
self.imageURL = SiteIconViewModel.optimizedBlavatarURL(from: readerSiteTopic.siteBlavatar, imageSize: size.size)
43+
self.imageURL = SiteIconViewModel.makeReaderSiteIconURL(iconURL: readerSiteTopic.siteBlavatar, siteID: readerSiteTopic.siteID.intValue, size: size.size)
4444
}
4545
}
4646

47+
// MARK: - SiteIconViewModel (Optimized URL)
48+
4749
extension SiteIconViewModel {
4850
/// Returns the Size Optimized URL for a given Path.
4951
static func optimizedURL(for path: String, imageSize: CGSize = SiteIconViewModel.Size.regular.size, isP2: Bool = false) -> URL? {
@@ -106,3 +108,30 @@ extension SiteIconViewModel {
106108
return components.url
107109
}
108110
}
111+
112+
// MARK: - SiteIconViewModel (Reader)
113+
114+
extension SiteIconViewModel {
115+
/// - parameter isBlavatar: A hint to skip the "is icon blavatar" check.
116+
static func makeReaderSiteIconURL(iconURL: String?, isBlavatar: Bool = false, siteID: Int?, size: CGSize) -> URL? {
117+
guard let iconURL, !iconURL.isEmpty else {
118+
if let siteID {
119+
return getHardcodedSiteIconURL(siteID: siteID)
120+
}
121+
return nil
122+
}
123+
if isBlavatarURL(iconURL) {
124+
return optimizedBlavatarURL(from: iconURL, imageSize: size)
125+
}
126+
return URL(string: iconURL)
127+
}
128+
129+
private static func getHardcodedSiteIconURL(siteID: Int) -> URL? {
130+
switch siteID {
131+
case 3584907:
132+
return Bundle.main.url(forResource: "wpcom-blog-icon", withExtension: "png")
133+
default:
134+
return nil
135+
}
136+
}
137+
}

WordPress/Classes/ViewRelated/Reader/Cards/ReaderPostCellViewModel.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ final class ReaderPostCellViewModel {
4040

4141
if isP2 {
4242
self.avatarURL = post.authorAvatarURL.flatMap(URL.init)
43-
} else if let avatarURL = post.siteIconForDisplay(ofSize: Int(ReaderPostCell.avatarSize)) {
43+
} else if let avatarURL = post.getSiteIconURL(size: Int(ReaderPostCell.avatarSize)) {
4444
self.avatarURL = avatarURL
4545
} else if let blogURL = post.blogURL.flatMap(URL.init), post.isExternal {
4646
if let faviconURL = FaviconService.shared.cachedFavicon(forURL: blogURL) {

WordPress/Classes/ViewRelated/Reader/Detail/Views/ReaderDetailNewHeaderView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ class ReaderDetailHeaderViewModel: ObservableObject {
151151

152152
self.isFollowingSite = post.isFollowing
153153

154-
self.siteIconURL = post.siteIconForDisplay(ofSize: Int(ReaderDetailNewHeaderView.Constants.siteIconLength))
154+
self.siteIconURL = post.getSiteIconURL(size: Int(ReaderDetailNewHeaderView.Constants.siteIconLength))
155155
self.authorAvatarURL = post.avatarURLForDisplay() ?? nil
156156

157157
if let authorName = post.authorForDisplay(), !authorName.isEmpty {
3.4 KB
Loading

WordPress/WordPress.xcodeproj/project.pbxproj

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,9 @@
209209
0C6C4CD42A4F0AD90049E762 /* blaze-search-page-1.json in Resources */ = {isa = PBXBuildFile; fileRef = 0C6C4CD32A4F0AD80049E762 /* blaze-search-page-1.json */; };
210210
0C6C4CD62A4F0AEE0049E762 /* blaze-search-page-2.json in Resources */ = {isa = PBXBuildFile; fileRef = 0C6C4CD52A4F0AEE0049E762 /* blaze-search-page-2.json */; };
211211
0C6C4CD82A4F0F2C0049E762 /* Bundle+TestExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C6C4CD72A4F0F2C0049E762 /* Bundle+TestExtensions.swift */; };
212+
0C77A5B02CDE5675005BC0DA /* wpcom-blog-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C77A5AF2CDE5675005BC0DA /* wpcom-blog-icon.png */; };
213+
0C77A5B12CDE5675005BC0DA /* wpcom-blog-icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 0C77A5AF2CDE5675005BC0DA /* wpcom-blog-icon.png */; };
214+
0C77A5B32CDE7924005BC0DA /* ReaderPostTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C77A5B22CDE7924005BC0DA /* ReaderPostTests.swift */; };
212215
0C7D481A2A4DB9300023CF84 /* blaze-search-response.json in Resources */ = {isa = PBXBuildFile; fileRef = 0C7D48192A4DB9300023CF84 /* blaze-search-response.json */; };
213216
0C896DE72A3A832B00D7D4E7 /* SiteVisibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C896DE62A3A832B00D7D4E7 /* SiteVisibilityTests.swift */; };
214217
0C8FC9AA2A8C57000059DCE4 /* ItemProviderMediaExporterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C8FC9A92A8C57000059DCE4 /* ItemProviderMediaExporterTests.swift */; };
@@ -1240,7 +1243,6 @@
12401243
E61507E42220A13B00213D33 /* richEmbedScript.js in Resources */ = {isa = PBXBuildFile; fileRef = E61507E32220A13B00213D33 /* richEmbedScript.js */; };
12411244
E66969C81B9E0A6800EC9C00 /* ReaderTopicServiceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E66969C71B9E0A6800EC9C00 /* ReaderTopicServiceTest.swift */; };
12421245
E6A215901D1065F200DE5270 /* AbstractPostTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6A2158F1D1065F200DE5270 /* AbstractPostTest.swift */; };
1243-
E6B9B8AA1B94E1FE0001B92F /* ReaderPostTest.m in Sources */ = {isa = PBXBuildFile; fileRef = E6B9B8A91B94E1FE0001B92F /* ReaderPostTest.m */; };
12441246
E6B9B8AF1B94FA1C0001B92F /* ReaderStreamViewControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B9B8AE1B94FA1C0001B92F /* ReaderStreamViewControllerTests.swift */; };
12451247
E8DEE110E4BC3FA1974AB1BB /* Pods_WordPressTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B921F5DD9A1F257C792EC225 /* Pods_WordPressTest.framework */; };
12461248
EA14532A29AD874C001F3143 /* ReaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB10E3F27487F5D000DA4C1 /* ReaderTests.swift */; };
@@ -2029,6 +2031,8 @@
20292031
0C6C4CD32A4F0AD80049E762 /* blaze-search-page-1.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "blaze-search-page-1.json"; sourceTree = "<group>"; };
20302032
0C6C4CD52A4F0AEE0049E762 /* blaze-search-page-2.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "blaze-search-page-2.json"; sourceTree = "<group>"; };
20312033
0C6C4CD72A4F0F2C0049E762 /* Bundle+TestExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+TestExtensions.swift"; sourceTree = "<group>"; };
2034+
0C77A5AF2CDE5675005BC0DA /* wpcom-blog-icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "wpcom-blog-icon.png"; sourceTree = "<group>"; };
2035+
0C77A5B22CDE7924005BC0DA /* ReaderPostTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReaderPostTests.swift; sourceTree = "<group>"; };
20322036
0C7D48192A4DB9300023CF84 /* blaze-search-response.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = "blaze-search-response.json"; sourceTree = "<group>"; };
20332037
0C896DE62A3A832B00D7D4E7 /* SiteVisibilityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SiteVisibilityTests.swift; sourceTree = "<group>"; };
20342038
0C8FC9A92A8C57000059DCE4 /* ItemProviderMediaExporterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemProviderMediaExporterTests.swift; sourceTree = "<group>"; };
@@ -3109,7 +3113,6 @@
31093113
E61507E32220A13B00213D33 /* richEmbedScript.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; name = richEmbedScript.js; path = Resources/HTML/richEmbedScript.js; sourceTree = "<group>"; };
31103114
E66969C71B9E0A6800EC9C00 /* ReaderTopicServiceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderTopicServiceTest.swift; sourceTree = "<group>"; };
31113115
E6A2158F1D1065F200DE5270 /* AbstractPostTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = AbstractPostTest.swift; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
3112-
E6B9B8A91B94E1FE0001B92F /* ReaderPostTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReaderPostTest.m; sourceTree = "<group>"; };
31133116
E6B9B8AE1B94FA1C0001B92F /* ReaderStreamViewControllerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderStreamViewControllerTests.swift; sourceTree = "<group>"; };
31143117
EA14534229AD874C001F3143 /* JetpackUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = JetpackUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
31153118
EA14534629AEF479001F3143 /* JetpackUITests.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = JetpackUITests.xctestplan; sourceTree = "<group>"; };
@@ -4116,6 +4119,14 @@
41164119
path = Mocks;
41174120
sourceTree = "<group>";
41184121
};
4122+
0C77A5AE2CDE5668005BC0DA /* Images */ = {
4123+
isa = PBXGroup;
4124+
children = (
4125+
0C77A5AF2CDE5675005BC0DA /* wpcom-blog-icon.png */,
4126+
);
4127+
path = Images;
4128+
sourceTree = "<group>";
4129+
};
41194130
0C7D48182A4DB91B0023CF84 /* Blaze */ = {
41204131
isa = PBXGroup;
41214132
children = (
@@ -4464,6 +4475,7 @@
44644475
29B97317FDCFA39411CA2CEA /* Resources */ = {
44654476
isa = PBXGroup;
44664477
children = (
4478+
0C77A5AE2CDE5668005BC0DA /* Images */,
44674479
801D94F4291AB36A0051993E /* Lottie Animations */,
44684480
433840C622C2BA5B00CB13F8 /* AppImages.xcassets */,
44694481
F5A34D0525DF2F7700C9654B /* Fonts */,
@@ -5539,7 +5551,7 @@
55395551
5960967E1CF7959300848496 /* PostTests.swift */,
55405552
FEFA6AC72A88D5FC004EE5E6 /* Post+JetpackSocialTests.swift */,
55415553
8BBBEBB124B8F8C0005E358E /* ReaderCardTests.swift */,
5542-
E6B9B8A91B94E1FE0001B92F /* ReaderPostTest.m */,
5554+
0C77A5B22CDE7924005BC0DA /* ReaderPostTests.swift */,
55435555
24C69A8A2612421900312D9A /* UserSettingsTests.swift */,
55445556
24C69AC12612467C00312D9A /* UserSettingsTestsObjc.m */,
55455557
3F759FB92A2DA93B0039A845 /* WPAccount+Fixture.swift */,
@@ -8496,6 +8508,7 @@
84968508
172F06BD2865C04F00C78FD4 /* spectrum-'[email protected] in Resources */,
84978509
FF37F90922385CA000AFA3DB /* RELEASE-NOTES.txt in Resources */,
84988510
C7E5F2552799BD54009BC263 /* [email protected] in Resources */,
8511+
0C77A5B02CDE5675005BC0DA /* wpcom-blog-icon.png in Resources */,
84998512
17222D92261DDDF90047B163 /* [email protected] in Resources */,
85008513
17222D90261DDDF90047B163 /* [email protected] in Resources */,
85018514
17222D86261DDDF90047B163 /* celadon-icon-app-76x76.png in Resources */,
@@ -8914,6 +8927,7 @@
89148927
F41E4EA228F20AB8001880C6 /* white-on-celadon-icon-app-76.png in Resources */,
89158928
F465980A28E66A5B00D5F49A /* [email protected] in Resources */,
89168929
F465977128E4669200D5F49A /* [email protected] in Resources */,
8930+
0C77A5B12CDE5675005BC0DA /* wpcom-blog-icon.png in Resources */,
89178931
F41E4EAD28F20DF9001880C6 /* [email protected] in Resources */,
89188932
F46597B228E6605E00D5F49A /* [email protected] in Resources */,
89198933
F465980028E66A1100D5F49A /* [email protected] in Resources */,
@@ -9987,6 +10001,7 @@
998710001
73C8F06621BEF76B00DDDF7E /* SiteAssemblyViewTests.swift in Sources */,
998810002
73178C2821BEE09300E37C9A /* SiteCreationDataCoordinatorTests.swift in Sources */,
998910003
4A266B8F282B05210089CF3D /* JSONObjectTests.swift in Sources */,
10004+
0C77A5B32CDE7924005BC0DA /* ReaderPostTests.swift in Sources */,
999010005
D81C2F6020F891C4002AE1F1 /* TrashCommentActionTests.swift in Sources */,
999110006
FA4ADADA1C509FE400F858D7 /* SiteManagementServiceTests.swift in Sources */,
999210007
3F1B66A323A2F54B0075F09E /* ReaderReblogActionTests.swift in Sources */,
@@ -10270,7 +10285,6 @@
1027010285
F5D0A65223CCD3B600B20D27 /* PreviewWebKitViewControllerTests.swift in Sources */,
1027110286
B5ECA6CD1DBAAD510062D7E0 /* CoreDataHelperTests.swift in Sources */,
1027210287
931D270019EDAE8600114F17 /* CoreDataMigrationTests.m in Sources */,
10273-
E6B9B8AA1B94E1FE0001B92F /* ReaderPostTest.m in Sources */,
1027410288
80EF9284280CFEB60064A971 /* DashboardPostsSyncManagerTests.swift in Sources */,
1027510289
7EC9FE0B22C627DB00C5A888 /* PostEditorAnalyticsSessionTests.swift in Sources */,
1027610290
4AEF2DD929A84B2C00345734 /* ReaderSiteServiceTests.swift in Sources */,

WordPress/WordPressTest/ReaderPostTest.m

Lines changed: 0 additions & 60 deletions
This file was deleted.

0 commit comments

Comments
 (0)