@@ -173,10 +173,11 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
173
173
} )
174
174
}
175
175
176
- public struct SubscribersParameters {
176
+ public struct SubscribersParameters : Hashable {
177
177
public var sortField : SortField ?
178
178
public var sortOrder : SortOrder ?
179
- public var filters : [ Filter ]
179
+ public var filters : Set < Filter >
180
+ public var search : String ?
180
181
181
182
public enum SortField : String {
182
183
case dateSubscribed = " date_subscribed "
@@ -191,25 +192,31 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
191
192
case descending = " dsc "
192
193
}
193
194
194
- public protocol Filter : CustomStringConvertible { }
195
+ public enum Filter : Hashable {
196
+ case subscription( FilterSubscriptionType )
197
+ case payment( FilterPaymentType )
195
198
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 {
197
208
case email = " email_subscriber "
198
209
case reader = " reader_subscriber "
199
210
case unconfirmed = " unconfirmed_subscriber "
200
211
case blocked = " blocked_subscriber "
201
-
202
- public var description : String { rawValue }
203
212
}
204
213
205
- public enum FilterPaymentType : String , Filter {
214
+ public enum FilterPaymentType : String {
206
215
case free
207
216
case paid
208
-
209
- public var description : String { rawValue }
210
217
}
211
218
212
- public init ( sortField: SortField ? = nil , sortOrder: SortOrder ? = nil , filters: [ Filter ] = [ ] ) {
219
+ public init ( sortField: SortField ? = nil , sortOrder: SortOrder ? = nil , filters: Set < Filter > = [ ] ) {
213
220
self . sortField = sortField
214
221
self . sortOrder = sortOrder
215
222
self . filters = filters
@@ -244,7 +251,10 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
244
251
query [ " sort_order " ] = sortOrder. rawValue
245
252
}
246
253
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
248
258
}
249
259
250
260
let decoder = JSONDecoder ( )
0 commit comments