Skip to content

ServerDriven/ScreenDataNavigation-swift

Repository files navigation

ScreenDataNavigation

// MARK: ScreenProviding
// Provide ScreenDataUI with SomeScreen

public protocol ScreenProviding {
    func screen(forID id: String) -> AnyPublisher<SomeScreen, Error>
}

public struct MockScreenProvider: ScreenProviding {
    // ...
}

public struct URLScreenProvider: ScreenProviding {
    // ...
}

public struct FileScreenProvider: ScreenProviding {
    // ...
}

// MARK: ScreenStoring
// Store SomeScreens for later

public protocol ScreenStoring {
    func store(screens: [SomeScreen]) -> AnyPublisher<Void, Error>
}

public struct FileScreenStore: ScreenStoring {
    // ...
}

// MARK: ScreenLoading
public protocol ScreenLoading {
    func load(withProvider provider: ScreenProviding) -> AnyPublisher<[SomeScreen], Error>
}

// MARK: ScreenLoading Basic Implementation
extension SomeScreen: ScreenLoading {
    // ...
}