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