// // NetworkServiceCities.swift // PayCash // // Created by Saveliy Stavitsky on 10/23/20. // Copyright © 2020 List. All rights reserved. // import Foundation import CoreLocation extension Network.Service.Cities { typealias Model = Common.Model.City } extension Network.Service { class Cities: Common.Service.Provider { init() {} private var collection = [Language:[Model]]() } } extension Network.Service.Cities { func fetch(lang: Language = .current, completion: @escaping ([Model]) -> Void) { fetchLocal(lang: lang, completion: completion) } } extension Network.Service.Cities { private func fetchLocal(lang: Common.Model.Language, completion: @escaping ([Common.Model.City]) -> Void) { if let list = collection[lang] { completion(list);return } DispatchQueue.global().async { guard let data = try? Data(contentsOf: Bundle.main.url(forResource: "Cities_\(lang.rawValue)", withExtension: "json")!) else { DispatchQueue.main.async { completion([]) };return } let collection: [City] = data.as(type: [City].self) ?? [] DispatchQueue.main.async { self.collection[lang] = collection completion(collection) } } } }