meow/Meow/Sources/Facts/FactsView.swift

43 lines
894 B
Swift

//
// FactsView.swift
// Facts
//
import SwiftUI
import Foundation
import ComposableArchitecture
public struct FactsView: View {
let store: StoreOf<FactsFeature>
public init(store: StoreOf<FactsFeature>) {
self.store = store
}
public var body: some View {
VStack {
switch store.state.mode {
case .notLoaded:
EmptyView()
case .loading:
ProgressView()
case let .loaded(facts):
List(facts, id: \.self) { fact in
Text(fact)
}
case let .error(error):
Text(error.localizedDescription)
}
}
.onAppear {
store.send(.viewAppeared)
}
}
}
#Preview {
FactsView(store: .init(initialState: FactsFeature.State()) {
FactsFeature()
})
}