Files
raspberry/iOS/Wallet/Sources/Network/Service/NetworkServiceCities.swift
2022-05-27 20:21:01 +03:00

43 lines
1.3 KiB
Swift

//
// 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)
}
}
}
}