1221227d5SŁukasz Kosmaty // Copyright 2015-present 650 Industries. All rights reserved. 2221227d5SŁukasz Kosmaty 3*779d1d70SŁukasz Kosmaty import Foundation 4*779d1d70SŁukasz Kosmaty 5221227d5SŁukasz Kosmaty @objc 6221227d5SŁukasz Kosmaty public protocol DevMenuDataSourceItem { 7221227d5SŁukasz Kosmaty @objc serializenull8221227d5SŁukasz Kosmaty func serialize() -> [String: Any] 9221227d5SŁukasz Kosmaty } 10221227d5SŁukasz Kosmaty 11221227d5SŁukasz Kosmaty public typealias DevMenuDataSourceResolver = ([DevMenuDataSourceItem]) -> Void 12221227d5SŁukasz Kosmaty 13221227d5SŁukasz Kosmaty @objc 14221227d5SŁukasz Kosmaty public protocol DevMenuDataSourceProtocol { 15221227d5SŁukasz Kosmaty var id: String { get } 16221227d5SŁukasz Kosmaty 17221227d5SŁukasz Kosmaty func fetchData(resolve: @escaping DevMenuDataSourceResolver) 18221227d5SŁukasz Kosmaty } 19221227d5SŁukasz Kosmaty 20221227d5SŁukasz Kosmaty @objc 21221227d5SŁukasz Kosmaty public class DevMenuListDataSource: NSObject, DevMenuDataSourceProtocol { 22221227d5SŁukasz Kosmaty public var id: String 23221227d5SŁukasz Kosmaty private var dataFetcher: (@escaping ([DevMenuSelectionList.Item]) -> Void) -> Void 24221227d5SŁukasz Kosmaty 25221227d5SŁukasz Kosmaty public init(id: String, dataFetcher: @escaping (@escaping ([DevMenuSelectionList.Item]) -> Void) -> Void) { 26221227d5SŁukasz Kosmaty self.id = id 27221227d5SŁukasz Kosmaty self.dataFetcher = dataFetcher 28221227d5SŁukasz Kosmaty } 29221227d5SŁukasz Kosmaty 30221227d5SŁukasz Kosmaty public func fetchData(resolve: @escaping ([DevMenuDataSourceItem]) -> Void) { 31221227d5SŁukasz Kosmaty dataFetcher(resolve) 32221227d5SŁukasz Kosmaty } 33221227d5SŁukasz Kosmaty } 34