@@ -195,28 +195,18 @@ public class PlanServiceRemote: ServiceRemoteWordPressComREST {
195
195
public func getZendeskMetadata( siteID: Int , completion: @escaping ( Result < ZendeskMetadata , Error > ) -> Void ) {
196
196
let endpoint = " me/sites "
197
197
let path = self . path ( forEndpoint: endpoint, withVersion: . _1_1)
198
- let parameters : [ String : String ] = [ " fields " : " ID, zendesk_site_meta " ]
199
-
200
- wordPressComRestApi . GETData ( path , parameters : parameters as [ String : AnyObject ] ) { result in
201
- switch result {
202
- case . success ( ( let data , _ ) ) :
203
- do {
204
- let metadata = try self . decodeZendeskMetadata ( from : data , siteID : siteID)
205
- completion ( . success ( metadata ) )
206
- } catch {
207
- completion ( . failure ( error ) )
198
+ let parameters = [ " fields " : " ID, zendesk_site_meta " ] as [ String : AnyObject ]
199
+
200
+ Task { @ MainActor [ wordPressComRestApi ] in
201
+ await wordPressComRestApi . perform ( . get , URLString : path , parameters : parameters , type : ZendeskSiteContainer . self )
202
+ . eraseToError ( )
203
+ . flatMap { container in
204
+ guard let metadata = container . body . sites . filter ( { $0 . ID == siteID } ) . first ? . zendeskMetadata else {
205
+ return . failure ( PlanServiceRemoteError . noMetadata )
206
+ }
207
+ return . success ( metadata )
208
208
}
209
- case . failure( let error) :
210
- completion ( . failure( error) )
211
- }
212
- }
213
- }
214
-
215
- private func decodeZendeskMetadata( from data: Data , siteID: Int ) throws -> ZendeskMetadata {
216
- let container = try JSONDecoder ( ) . decode ( ZendeskSiteContainer . self, from: data)
217
- guard let metadata = container. sites. filter ( { $0. ID == siteID } ) . first? . zendeskMetadata else {
218
- throw PlanServiceRemoteError . noMetadata
209
+ . execute ( completion)
219
210
}
220
- return metadata
221
211
}
222
212
}
0 commit comments