@@ -176,8 +176,8 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
176176 public struct SubscribersParameters : Hashable {
177177 public var sortField : SortField ?
178178 public var sortOrder : SortOrder ?
179- public var filters : Set < Filter >
180- public var search : String ?
179+ public var subscriptionTypeFilter : FilterSubscriptionType ?
180+ public var paymentTypeFilter : FilterPaymentType ?
181181
182182 public enum SortField : String {
183183 case dateSubscribed = " date_subscribed "
@@ -192,18 +192,6 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
192192 case descending = " dsc "
193193 }
194194
195- public enum Filter : Hashable {
196- case subscription( FilterSubscriptionType )
197- case payment( FilterPaymentType )
198-
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-
207195 public enum FilterSubscriptionType : String {
208196 case email = " email_subscriber "
209197 case reader = " reader_subscriber "
@@ -216,11 +204,15 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
216204 case paid
217205 }
218206
219- public init ( sortField: SortField ? = nil , sortOrder: SortOrder ? = nil , filters: Set < Filter > = [ ] , search: String ? = nil ) {
207+ var filters : [ String ] {
208+ [ subscriptionTypeFilter? . rawValue, paymentTypeFilter? . rawValue] . compactMap { $0 }
209+ }
210+
211+ public init ( sortField: SortField ? = nil , sortOrder: SortOrder ? = nil , subscriptionTypeFilter: FilterSubscriptionType ? = nil , paymentTypeFilter: FilterPaymentType ? = nil ) {
220212 self . sortField = sortField
221213 self . sortOrder = sortOrder
222- self . filters = filters
223- self . search = search
214+ self . subscriptionTypeFilter = subscriptionTypeFilter
215+ self . paymentTypeFilter = paymentTypeFilter
224216 }
225217 }
226218
@@ -235,7 +227,8 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
235227 siteID: Int ,
236228 page: Int ? = nil ,
237229 perPage: Int ? = 25 ,
238- parameters: SubscribersParameters = . init( )
230+ parameters: SubscribersParameters = . init( ) ,
231+ search: String ? = nil ,
239232 ) async throws -> SubscribersResponse {
240233 let url = self . path ( forEndpoint: " sites/ \( siteID) /subscribers " , withVersion: . _2_0)
241234 var query : [ String : Any ] = [ : ]
@@ -252,9 +245,9 @@ public class PeopleServiceRemote: ServiceRemoteWordPressComREST {
252245 query [ " sort_order " ] = sortOrder. rawValue
253246 }
254247 if !parameters. filters. isEmpty {
255- query [ " filters " ] = parameters. filters. map ( \ . rawValue )
248+ query [ " filters " ] = parameters. filters
256249 }
257- if let search = parameters . search , !search. isEmpty {
250+ if let search, !search. isEmpty {
258251 query [ " search " ] = search
259252 }
260253
0 commit comments