Zdravím místní osazenstvo,
snažím se implementovat svůj malý pet project (tzn. trochu toho over-engineeringu) a teď jsem se dostal do situace, kdy přemýšlím, jak se vlastně dřív (nebo i teď) "správně" píše UI kód pro `view`, které má více stavů. Například login komponenta: jsem přihlášený zobrazí se mi email, nebo progress indicator v případě že se přihlašuji a v případě chyby zobrazuji chybu. Tzn. 3 různé stavy, které musím modelovat.
Pokud použiju jazyk, který nemá `sum` type (níže je swift), je další možnost opravdu `if/else` šílenství...?
Pokud byste mi poradili nějaký open source project, kde je nějak pěkně/dobře modelovaná UI vrstva budu rád...
enum ViewStateSum {
case loggedIn(email: String)
case loading
case error(reason: String)
}
func set(viewState: ViewStateSum) {
switch viewState {
case let .loggedIn(email: email):
break // set view appropriately
case let .error(reason: reason):
break // set view appropriately
case .loading:
break // set view appropriately
}
}
struct ViewStateProduct {
let loggedIn: Bool
let loading: Bool
let anyError: Bool
let email: String?
let error: String?
}
func set(viewState: ViewStateProduct) {
if viewState.loggedIn == true && viewState.loading == false && viewState.anyError == false && viewState.email != nil {
// set view appropriately
} else if ...
}