diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 8be3d8ef7efe..4342f37d80d3 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -5,11 +5,11 @@ * [*] Reader: Keep only one "Search" option in the main sidebar [#25116] * [*] Reader: Fix Send button design in Comments [#25092] * [*] Reader: Add translation support for posts [#25089] +* [*] Reader: Collapse multiple spaces in site titles into one [#25094] * [*] Fix previewing posts on WordPress.com atomic sites [#25045] * [*] Stats: Rename "External Links" to "Clicks" to be consistent with the web [#25090] * [*] Stats: Fix locations data discrepancy with the web [#25105] - 26.5 ----- * [*] Add "Status" field to the "Post Settings" screen to make it easier to move posts from one state to another [#24939] diff --git a/Sources/WordPressData/Swift/ReaderPost.swift b/Sources/WordPressData/Swift/ReaderPost.swift index 34217b25ec60..7b037f87baec 100644 --- a/Sources/WordPressData/Swift/ReaderPost.swift +++ b/Sources/WordPressData/Swift/ReaderPost.swift @@ -52,7 +52,7 @@ extension ReaderPost { public func blogNameForDisplay() -> String? { if let blogName, !blogName.isEmpty { - return blogName + return blogName.replacing(/\s+/, with: " ") } return URL(string: blogURL ?? "")?.host } diff --git a/Tests/KeystoneTests/Tests/Models/ReaderPostTests.swift b/Tests/KeystoneTests/Tests/Models/ReaderPostTests.swift index d1ba3d9c24d8..89b40ebf5173 100644 --- a/Tests/KeystoneTests/Tests/Models/ReaderPostTests.swift +++ b/Tests/KeystoneTests/Tests/Models/ReaderPostTests.swift @@ -20,4 +20,10 @@ final class ReaderPostTests: CoreDataTestCase { XCTAssertEqual(queryItems.first(where: { $0.name == "s" })?.value, Int(50 * UITraitCollection.current.displayScale).description) XCTAssertEqual(queryItems.first(where: { $0.name == "d" })?.value, "404") } + + func testBlogNameForDisplay() { + let post = NSEntityDescription.insertNewObject(forEntityName: ReaderPost.entityName(), into: mainContext) as! ReaderPost + post.blogName = "t r e f o l o g y" + XCTAssertEqual(post.blogNameForDisplay(), "t r e f o l o g y") + } } diff --git a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift index 681236faaf53..572ee7e94868 100644 --- a/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift +++ b/WordPress/Classes/ViewRelated/Reader/Controllers/ReaderFeedCell.swift @@ -43,7 +43,7 @@ struct ReaderFeedCell: View { var title: String { if let title = feed.title?.stringByDecodingXMLCharacters(), !title.isEmpty { - return title + return title.replacing(/\s+/) { _ in " " } } return feed.urlForDisplay ?? "–" } diff --git a/WordPress/Classes/ViewRelated/Reader/Headers/ReaderSiteHeaderView.swift b/WordPress/Classes/ViewRelated/Reader/Headers/ReaderSiteHeaderView.swift index ddff6b3e2649..1ed2c2e45d5e 100644 --- a/WordPress/Classes/ViewRelated/Reader/Headers/ReaderSiteHeaderView.swift +++ b/WordPress/Classes/ViewRelated/Reader/Headers/ReaderSiteHeaderView.swift @@ -34,7 +34,7 @@ class ReaderSiteHeaderView: ReaderBaseHeaderView, ReaderStreamHeader { return } headerViewModel.site = siteTopic - headerViewModel.title = siteTopic.title + headerViewModel.title = siteTopic.title.replacing(/\s+/) { _ in " " } headerViewModel.siteUrl = URL(string: siteTopic.siteURL)?.host ?? "" headerViewModel.siteDetails = siteTopic.siteDescription headerViewModel.postCount = siteTopic.postCount.doubleValue.abbreviatedString()