Skip to content

Commit 050994c

Browse files
committed
Add search to subscribers
1 parent 5bc0876 commit 050994c

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

Sources/WordPressKit/Services/PeopleServiceRemote.swift

+21-11
Original file line numberDiff line numberDiff line change
@@ -173,10 +173,11 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
173173
})
174174
}
175175

176-
public struct SubscribersParameters {
176+
public struct SubscribersParameters: Hashable {
177177
public var sortField: SortField?
178178
public var sortOrder: SortOrder?
179-
public var filters: [Filter]
179+
public var filters: Set<Filter>
180+
public var search: String?
180181

181182
public enum SortField: String {
182183
case dateSubscribed = "date_subscribed"
@@ -191,25 +192,31 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
191192
case descending = "dsc"
192193
}
193194

194-
public protocol Filter: CustomStringConvertible {}
195+
public enum Filter: Hashable {
196+
case subscription(FilterSubscriptionType)
197+
case payment(FilterPaymentType)
195198

196-
public enum FilterSubscriptionType: String, Filter {
199+
var rawValue: String {
200+
switch self {
201+
case .subscription(let filter): filter.rawValue
202+
case .payment(let filter): filter.rawValue
203+
}
204+
}
205+
}
206+
207+
public enum FilterSubscriptionType: String {
197208
case email = "email_subscriber"
198209
case reader = "reader_subscriber"
199210
case unconfirmed = "unconfirmed_subscriber"
200211
case blocked = "blocked_subscriber"
201-
202-
public var description: String { rawValue }
203212
}
204213

205-
public enum FilterPaymentType: String, Filter {
214+
public enum FilterPaymentType: String {
206215
case free
207216
case paid
208-
209-
public var description: String { rawValue }
210217
}
211218

212-
public init(sortField: SortField? = nil, sortOrder: SortOrder? = nil, filters: [Filter] = []) {
219+
public init(sortField: SortField? = nil, sortOrder: SortOrder? = nil, filters: Set<Filter> = []) {
213220
self.sortField = sortField
214221
self.sortOrder = sortOrder
215222
self.filters = filters
@@ -244,7 +251,10 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
244251
query["sort_order"] = sortOrder.rawValue
245252
}
246253
if !parameters.filters.isEmpty {
247-
query["filters"] = parameters.filters.map { $0.description }
254+
query["filters"] = parameters.filters.map(\.rawValue)
255+
}
256+
if let search = parameters.search, !search.isEmpty {
257+
query["search"] = search
248258
}
249259

250260
let decoder = JSONDecoder()

0 commit comments

Comments
 (0)