@@ -195,28 +195,18 @@ public class PlanServiceRemote: ServiceRemoteWordPressComREST {
195195 public func getZendeskMetadata( siteID: Int , completion: @escaping ( Result < ZendeskMetadata , Error > ) -> Void ) {
196196 let endpoint = " me/sites "
197197 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 )
208208 }
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)
219210 }
220- return metadata
221211 }
222212}
0 commit comments