Skip to content
This repository was archived by the owner on Sep 15, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ _None._

### Breaking Changes

_None._
- Re-implement a few reader model types in Swift. [#556]

### New Features

Expand Down
36 changes: 12 additions & 24 deletions WordPressKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,9 @@
46ABD0EA262EEE0400C7FF24 /* AppTransportSecuritySettingsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46ABD0E9262EEE0400C7FF24 /* AppTransportSecuritySettingsTests.swift */; };
4A1DEF44293051BC00322608 /* LoggingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A1DEF43293051BC00322608 /* LoggingTests.swift */; };
4A1DEF46293051C600322608 /* LoggingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A1DEF45293051C600322608 /* LoggingTests.m */; };
4A68E3DD294070A7004AC3DC /* RemoteReaderSite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A68E3DC294070A7004AC3DC /* RemoteReaderSite.swift */; };
4A68E3DF29407100004AC3DC /* RemoteReaderTopic.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A68E3DE29407100004AC3DC /* RemoteReaderTopic.swift */; };
4A68E3E1294076C1004AC3DC /* RemoteReaderSiteInfo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A68E3E0294076C1004AC3DC /* RemoteReaderSiteInfo.swift */; };
4A68E3CD29404181004AC3DC /* RemoteBlog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A68E3CC29404181004AC3DC /* RemoteBlog.swift */; };
4A68E3CF29404289004AC3DC /* RemoteBlogOptionsHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A68E3CE29404289004AC3DC /* RemoteBlogOptionsHelper.swift */; };
4A68E3D329406AA0004AC3DC /* RemoteMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A68E3D029406AA0004AC3DC /* RemoteMenu.swift */; };
Expand Down Expand Up @@ -200,12 +203,6 @@
7430C9A81F1927180051B8E6 /* ReaderTopicServiceRemote.m in Sources */ = {isa = PBXBuildFile; fileRef = 7430C9A21F1927180051B8E6 /* ReaderTopicServiceRemote.m */; };
7430C9B11F1927C50051B8E6 /* RemoteReaderPost.h in Headers */ = {isa = PBXBuildFile; fileRef = 7430C9A91F1927C50051B8E6 /* RemoteReaderPost.h */; settings = {ATTRIBUTES = (Public, ); }; };
7430C9B21F1927C50051B8E6 /* RemoteReaderPost.m in Sources */ = {isa = PBXBuildFile; fileRef = 7430C9AA1F1927C50051B8E6 /* RemoteReaderPost.m */; };
7430C9B31F1927C50051B8E6 /* RemoteReaderSite.h in Headers */ = {isa = PBXBuildFile; fileRef = 7430C9AB1F1927C50051B8E6 /* RemoteReaderSite.h */; settings = {ATTRIBUTES = (Public, ); }; };
7430C9B41F1927C50051B8E6 /* RemoteReaderSite.m in Sources */ = {isa = PBXBuildFile; fileRef = 7430C9AC1F1927C50051B8E6 /* RemoteReaderSite.m */; };
7430C9B51F1927C50051B8E6 /* RemoteReaderSiteInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 7430C9AD1F1927C50051B8E6 /* RemoteReaderSiteInfo.h */; settings = {ATTRIBUTES = (Public, ); }; };
7430C9B61F1927C50051B8E6 /* RemoteReaderSiteInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 7430C9AE1F1927C50051B8E6 /* RemoteReaderSiteInfo.m */; };
7430C9B71F1927C50051B8E6 /* RemoteReaderTopic.h in Headers */ = {isa = PBXBuildFile; fileRef = 7430C9AF1F1927C50051B8E6 /* RemoteReaderTopic.h */; settings = {ATTRIBUTES = (Public, ); }; };
7430C9B81F1927C50051B8E6 /* RemoteReaderTopic.m in Sources */ = {isa = PBXBuildFile; fileRef = 7430C9B01F1927C50051B8E6 /* RemoteReaderTopic.m */; };
7430C9BC1F192C0F0051B8E6 /* ReaderSiteServiceRemoteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7430C9B91F192C0F0051B8E6 /* ReaderSiteServiceRemoteTests.swift */; };
7430C9BD1F192C0F0051B8E6 /* ReaderPostServiceRemoteTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7430C9BA1F192C0F0051B8E6 /* ReaderPostServiceRemoteTests.m */; };
7430C9BE1F192C0F0051B8E6 /* ReaderTopicServiceRemoteTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 7430C9BB1F192C0F0051B8E6 /* ReaderTopicServiceRemoteTests.m */; };
Expand Down Expand Up @@ -781,6 +778,9 @@
46ABD0E9262EEE0400C7FF24 /* AppTransportSecuritySettingsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppTransportSecuritySettingsTests.swift; sourceTree = "<group>"; };
4A1DEF43293051BC00322608 /* LoggingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoggingTests.swift; sourceTree = "<group>"; };
4A1DEF45293051C600322608 /* LoggingTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = LoggingTests.m; sourceTree = "<group>"; };
4A68E3DC294070A7004AC3DC /* RemoteReaderSite.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteReaderSite.swift; sourceTree = "<group>"; };
4A68E3DE29407100004AC3DC /* RemoteReaderTopic.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteReaderTopic.swift; sourceTree = "<group>"; };
4A68E3E0294076C1004AC3DC /* RemoteReaderSiteInfo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteReaderSiteInfo.swift; sourceTree = "<group>"; };
4A68E3CC29404181004AC3DC /* RemoteBlog.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteBlog.swift; sourceTree = "<group>"; };
4A68E3CE29404289004AC3DC /* RemoteBlogOptionsHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteBlogOptionsHelper.swift; sourceTree = "<group>"; };
4A68E3D029406AA0004AC3DC /* RemoteMenu.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RemoteMenu.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -859,12 +859,6 @@
7430C9A21F1927180051B8E6 /* ReaderTopicServiceRemote.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReaderTopicServiceRemote.m; sourceTree = "<group>"; };
7430C9A91F1927C50051B8E6 /* RemoteReaderPost.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteReaderPost.h; sourceTree = "<group>"; };
7430C9AA1F1927C50051B8E6 /* RemoteReaderPost.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RemoteReaderPost.m; sourceTree = "<group>"; };
7430C9AB1F1927C50051B8E6 /* RemoteReaderSite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteReaderSite.h; sourceTree = "<group>"; };
7430C9AC1F1927C50051B8E6 /* RemoteReaderSite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RemoteReaderSite.m; sourceTree = "<group>"; };
7430C9AD1F1927C50051B8E6 /* RemoteReaderSiteInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteReaderSiteInfo.h; sourceTree = "<group>"; };
7430C9AE1F1927C50051B8E6 /* RemoteReaderSiteInfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RemoteReaderSiteInfo.m; sourceTree = "<group>"; };
7430C9AF1F1927C50051B8E6 /* RemoteReaderTopic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RemoteReaderTopic.h; sourceTree = "<group>"; };
7430C9B01F1927C50051B8E6 /* RemoteReaderTopic.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RemoteReaderTopic.m; sourceTree = "<group>"; };
7430C9B91F192C0F0051B8E6 /* ReaderSiteServiceRemoteTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReaderSiteServiceRemoteTests.swift; sourceTree = "<group>"; };
7430C9BA1F192C0F0051B8E6 /* ReaderPostServiceRemoteTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReaderPostServiceRemoteTests.m; sourceTree = "<group>"; };
7430C9BB1F192C0F0051B8E6 /* ReaderTopicServiceRemoteTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ReaderTopicServiceRemoteTests.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -1960,13 +1954,10 @@
7430C9A91F1927C50051B8E6 /* RemoteReaderPost.h */,
7430C9AA1F1927C50051B8E6 /* RemoteReaderPost.m */,
FACBDD1D25ECA7F90026705B /* RemoteReaderSimplePost.swift */,
7430C9AB1F1927C50051B8E6 /* RemoteReaderSite.h */,
7430C9AC1F1927C50051B8E6 /* RemoteReaderSite.m */,
7430C9AD1F1927C50051B8E6 /* RemoteReaderSiteInfo.h */,
7430C9AE1F1927C50051B8E6 /* RemoteReaderSiteInfo.m */,
4A68E3DC294070A7004AC3DC /* RemoteReaderSite.swift */,
4A68E3E0294076C1004AC3DC /* RemoteReaderSiteInfo.swift */,
9F3E0B9A208732B2009CB5BA /* RemoteReaderSiteInfoSubscription.swift */,
7430C9AF1F1927C50051B8E6 /* RemoteReaderTopic.h */,
7430C9B01F1927C50051B8E6 /* RemoteReaderTopic.m */,
4A68E3DE29407100004AC3DC /* RemoteReaderTopic.swift */,
74E2295D1F1E777B0085F7F2 /* RemoteSharingButton.swift */,
7430C9C81F192F260051B8E6 /* RemoteSourcePostAttribution.h */,
7430C9C91F192F260051B8E6 /* RemoteSourcePostAttribution.m */,
Expand Down Expand Up @@ -2537,10 +2528,7 @@
74BA04F91F06DC3900ED5CD8 /* RemoteComment.h in Headers */,
74BA04F21F06DC0A00ED5CD8 /* CommentServiceRemote.h in Headers */,
74BA04F51F06DC0A00ED5CD8 /* CommentServiceRemoteXMLRPC.h in Headers */,
7430C9B51F1927C50051B8E6 /* RemoteReaderSiteInfo.h in Headers */,
7430C9A71F1927180051B8E6 /* ReaderTopicServiceRemote.h in Headers */,
7430C9B71F1927C50051B8E6 /* RemoteReaderTopic.h in Headers */,
7430C9B31F1927C50051B8E6 /* RemoteReaderSite.h in Headers */,
7430C9B11F1927C50051B8E6 /* RemoteReaderPost.h in Headers */,
7430C9A51F1927180051B8E6 /* ReaderSiteServiceRemote.h in Headers */,
7430C9A31F1927180051B8E6 /* ReaderPostServiceRemote.h in Headers */,
Expand Down Expand Up @@ -3037,7 +3025,6 @@
32E1DD23236AA09A008914B0 /* RemotePostAutosave.swift in Sources */,
FF807252241FB90E00809AF5 /* Authenticator.swift in Sources */,
464BAB0B262F6736006AEED5 /* RemoteBlockEditorSettings.swift in Sources */,
7430C9B41F1927C50051B8E6 /* RemoteReaderSite.m in Sources */,
FEFFD99126C1347D00F34231 /* ShareAppContentServiceRemote.swift in Sources */,
74585B8E1F0D51A100E7E667 /* DomainsServiceRemote.swift in Sources */,
4625B965253A343900C04AAD /* RemotePageLayouts.swift in Sources */,
Expand Down Expand Up @@ -3075,6 +3062,7 @@
93BD27801EE73944002BB00B /* WordPressComRestApi.swift in Sources */,
404057D2221C56AB0060250C /* StatsTopCountryTimeIntervalData.swift in Sources */,
E11C2AD21FA77FB90023BDE2 /* SitePlugin.swift in Sources */,
4A68E3DF29407100004AC3DC /* RemoteReaderTopic.swift in Sources */,
74A44DCC1F13C533006CD8F4 /* NotificationSyncServiceRemote.swift in Sources */,
8BB66DB02523C181000B29DA /* ReaderPostServiceRemote+V2.swift in Sources */,
74E229501F1E741B0085F7F2 /* RemotePublicizeConnection.swift in Sources */,
Expand All @@ -3089,6 +3077,7 @@
74650F721F0EA1A700188EDB /* GravatarServiceRemote.swift in Sources */,
B5969E1D20A49AC4005E9DF1 /* NSString+MD5.m in Sources */,
FF807251241FB90E00809AF5 /* WordPressOrgRestApi.swift in Sources */,
4A68E3E1294076C1004AC3DC /* RemoteReaderSiteInfo.swift in Sources */,
8236EB4D2024B9F8007C7CF9 /* RemoteBlogJetpackModulesSettings.swift in Sources */,
73A2F38A21E7F81E00388609 /* WordPressComServiceRemote+SiteVerticalsPrompt.swift in Sources */,
740B23BB1F17EC7300067A2A /* PostServiceRemoteXMLRPC.m in Sources */,
Expand All @@ -3110,14 +3099,12 @@
93BD276A1EE736A8002BB00B /* RemoteUser.m in Sources */,
742362D71F10250600BD0A7F /* MenusServiceRemote.m in Sources */,
E6D0EE621F7EF9CE0064D3FC /* AccountServiceRemoteREST+SocialService.swift in Sources */,
7430C9B61F1927C50051B8E6 /* RemoteReaderSiteInfo.m in Sources */,
8BB5F62127A99A2000B2FFAF /* DashboardServiceRemote.swift in Sources */,
74DA56351F06EAF000FE9BF4 /* MediaServiceRemoteXMLRPC.m in Sources */,
C797196C2679007B0072F984 /* PluginManagementClient.swift in Sources */,
C785325625B5F46C006CEAFB /* JetpackThreatFixStatus.swift in Sources */,
93F50A381F226B9300B5BEBA /* WordPressComServiceRemote.m in Sources */,
9F4E52002088E38200424676 /* ObjectValidation.swift in Sources */,
7430C9B81F1927C50051B8E6 /* RemoteReaderTopic.m in Sources */,
7EC60EC022DC5D7C00FB0336 /* EditorSettings.swift in Sources */,
7403A3021EF0726E00DED7DC /* AccountSettings.swift in Sources */,
40E7FEA9220FA4060032834E /* StatsEmailFollowersInsight.swift in Sources */,
Expand Down Expand Up @@ -3169,6 +3156,7 @@
984E34EB22EF7209005C3F92 /* StatsFileDownloadsTimeIntervalData.swift in Sources */,
465F88A2263B325C00F4C950 /* ChecksumUtil.swift in Sources */,
C7A09A52284104DB003096ED /* QRLoginServiceRemote.swift in Sources */,
4A68E3DD294070A7004AC3DC /* RemoteReaderSite.swift in Sources */,
40AB1ADA200FED25009B533D /* PluginDirectoryFeedPage.swift in Sources */,
436D56352118D85800CEAA33 /* WPCountry.swift in Sources */,
74A44DCB1F13C533006CD8F4 /* NotificationSettingsServiceRemote.swift in Sources */,
Expand Down
1 change: 0 additions & 1 deletion WordPressKit/ReaderSiteServiceRemote.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#import "ReaderSiteServiceRemote.h"
#import "RemoteReaderSite.h"
#import "WPKit-Swift.h"
@import NSObject_SafeExpectations;
@import WordPressShared;
Expand Down
2 changes: 0 additions & 2 deletions WordPressKit/ReaderTopicServiceRemote.m
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
#import "ReaderTopicServiceRemote.h"
#import "RemoteReaderTopic.h"
#import "RemoteReaderSiteInfo.h"
#import "WPKit-Swift.h"
@import NSObject_SafeExpectations;
@import WordPressShared;
Expand Down
6 changes: 2 additions & 4 deletions WordPressKit/RemoteReaderCard.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,11 @@ public struct RemoteReaderCard: Decodable {
let sitesArray = try container.decode([Any].self, forKey: .data)

sites = sitesArray.compactMap {
// Since RemoteReaderSiteInfo is written in Obj-C and doesn't support decoding
// attempt to recast the response as a dictionary value to be passed to the init below
guard let dict = $0 as? [AnyHashable: Any] else {
guard let dict = $0 as? NSDictionary else {
return nil
}

return RemoteReaderSiteInfo(forSiteResponse: dict, isFeed: false)
return RemoteReaderSiteInfo.siteInfo(forSiteResponse: dict, isFeed: false)
}

default:
Expand Down
13 changes: 0 additions & 13 deletions WordPressKit/RemoteReaderSite.h

This file was deleted.

5 changes: 0 additions & 5 deletions WordPressKit/RemoteReaderSite.m

This file was deleted.

13 changes: 13 additions & 0 deletions WordPressKit/RemoteReaderSite.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import Foundation

@objcMembers public class RemoteReaderSite: NSObject {

public var recordID: NSNumber?
public var siteID: NSNumber?
public var feedID: NSNumber?
public var name: String?
public var path: String? // URL
public var icon: String? // Sites only
public var isSubscribed: Bool = false

}
31 changes: 0 additions & 31 deletions WordPressKit/RemoteReaderSiteInfo.h

This file was deleted.

Loading