Skip to content
Snippets Groups Projects
Commit 79ffc734 authored by Dariusz Rybicki's avatar Dariusz Rybicki
Browse files

Fix groups list

parent 8def5f9d
No related branches found
No related tags found
2 merge requests!153Release 1.1.0,!149[Messenger example] create new group
...@@ -40,7 +40,7 @@ public struct GroupsComponent: ReducerProtocol { ...@@ -40,7 +40,7 @@ public struct GroupsComponent: ReducerProtocol {
case .start: case .start:
return Effect return Effect
.catching { try db() } .catching { try db() }
.flatMap { $0.fetchGroupsPublisher.callAsFunction(.init()) } .flatMap { $0.fetchGroupsPublisher(.init()) }
.assertNoFailure() .assertNoFailure()
.map(Action.didFetchGroups) .map(Action.didFetchGroups)
.subscribe(on: bgQueue) .subscribe(on: bgQueue)
......
...@@ -7,6 +7,7 @@ import XXModels ...@@ -7,6 +7,7 @@ import XXModels
public struct GroupsView: View { public struct GroupsView: View {
public typealias Component = GroupsComponent public typealias Component = GroupsComponent
typealias ViewStore = ComposableArchitecture.ViewStore<ViewState, Component.Action>
public init(store: StoreOf<Component>) { public init(store: StoreOf<Component>) {
self.store = store self.store = store
...@@ -15,22 +16,20 @@ public struct GroupsView: View { ...@@ -15,22 +16,20 @@ public struct GroupsView: View {
let store: StoreOf<Component> let store: StoreOf<Component>
struct ViewState: Equatable { struct ViewState: Equatable {
init(state: Component.State) {} init(state: Component.State) {
groups = state.groups
}
var groups: IdentifiedArrayOf<XXModels.Group> = [] var groups: IdentifiedArrayOf<XXModels.Group>
} }
public var body: some View { public var body: some View {
WithViewStore(store, observe: ViewState.init) { viewStore in WithViewStore(store, observe: ViewState.init) { viewStore in
Form { Form {
newGroupButton { newGroupButton(viewStore)
viewStore.send(.newGroupButtonTapped)
}
ForEach(viewStore.groups) { group in ForEach(viewStore.groups) { group in
groupView(group) { groupView(group, viewStore)
viewStore.send(.didSelectGroup(group))
}
} }
} }
.navigationTitle("Groups") .navigationTitle("Groups")
...@@ -46,10 +45,10 @@ public struct GroupsView: View { ...@@ -46,10 +45,10 @@ public struct GroupsView: View {
} }
} }
func newGroupButton(action: @escaping () -> Void) -> some View { func newGroupButton(_ viewStore: ViewStore) -> some View {
Section { Section {
Button { Button {
action() viewStore.send(.newGroupButtonTapped)
} label: { } label: {
HStack { HStack {
Text("New Group") Text("New Group")
...@@ -60,13 +59,10 @@ public struct GroupsView: View { ...@@ -60,13 +59,10 @@ public struct GroupsView: View {
} }
} }
func groupView( func groupView(_ group: XXModels.Group, _ viewStore: ViewStore) -> some View {
_ group: XXModels.Group,
onSelect: @escaping () -> Void
) -> some View {
Section { Section {
Button { Button {
onSelect() viewStore.send(.didSelectGroup(group))
} label: { } label: {
HStack { HStack {
Label(group.name, systemImage: "person.3") Label(group.name, systemImage: "person.3")
...@@ -75,8 +71,8 @@ public struct GroupsView: View { ...@@ -75,8 +71,8 @@ public struct GroupsView: View {
Spacer() Spacer()
Image(systemName: "chevron.forward") Image(systemName: "chevron.forward")
} }
GroupAuthStatusView(group.authStatus)
} }
GroupAuthStatusView(group.authStatus)
} }
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment