Skip to content
Snippets Groups Projects

[Messenger example] create new group

Merged Dariusz Rybicki requested to merge feature/messenger-example-groups into development
4 files
+ 71
1
Compare changes
  • Side-by-side
  • Inline
Files
4
import AppCore
import AppCore
import ComposableArchitecture
import ComposableArchitecture
 
import ComposablePresentation
import Foundation
import Foundation
 
import NewGroupFeature
import XXModels
import XXModels
public struct GroupsComponent: ReducerProtocol {
public struct GroupsComponent: ReducerProtocol {
public struct State: Equatable {
public struct State: Equatable {
public init(
public init(
groups: IdentifiedArrayOf<Group> = []
groups: IdentifiedArrayOf<Group> = [],
 
newGroup: NewGroupComponent.State? = nil
) {
) {
self.groups = groups
self.groups = groups
 
self.newGroup = newGroup
}
}
public var groups: IdentifiedArrayOf<XXModels.Group> = []
public var groups: IdentifiedArrayOf<XXModels.Group> = []
 
public var newGroup: NewGroupComponent.State?
}
}
public enum Action: Equatable {
public enum Action: Equatable {
case start
case start
case didFetchGroups([XXModels.Group])
case didFetchGroups([XXModels.Group])
case didSelectGroup(XXModels.Group)
case didSelectGroup(XXModels.Group)
 
case newGroupButtonTapped
 
case newGroupDismissed
 
case newGroup(NewGroupComponent.Action)
}
}
public init() {}
public init() {}
@@ -45,7 +53,24 @@ public struct GroupsComponent: ReducerProtocol {
@@ -45,7 +53,24 @@ public struct GroupsComponent: ReducerProtocol {
case .didSelectGroup(_):
case .didSelectGroup(_):
return .none
return .none
 
 
case .newGroupButtonTapped:
 
state.newGroup = NewGroupComponent.State()
 
return .none
 
 
case .newGroupDismissed:
 
state.newGroup = nil
 
return .none
 
 
case .newGroup(_):
 
return .none
}
}
}
}
 
.presenting(
 
state: .keyPath(\.newGroup),
 
id: .notNil(),
 
action: /Action.newGroup,
 
presented: { NewGroupComponent() }
 
)
}
}
}
}
Loading