Newer
Older
import ComposableArchitecture
import Foundation
import XCTestDynamicOverlay
public struct ChatState: Equatable, Identifiable {
public enum ID: Equatable, Hashable {
case contact(Data)
}
public struct Message: Equatable, Identifiable {
public init(
id: Data,
date: Date,
senderId: Data,
text: String
) {
self.id = id
self.date = date
self.senderId = senderId
self.text = text
}
public var id: Data
public var date: Date
public var senderId: Data
public var text: String
}
public init(
id: ID,
myContactId: Data? = nil,
messages: IdentifiedArrayOf<Message> = []
) {
self.myContactId = myContactId
self.messages = messages
public var myContactId: Data?
public var messages: IdentifiedArrayOf<Message>
}
public enum ChatAction: Equatable {
case start
}
public struct ChatEnvironment {
public init() {}
}
#if DEBUG
extension ChatEnvironment {
public static let unimplemented = ChatEnvironment()
}
#endif
public let chatReducer = Reducer<ChatState, ChatAction, ChatEnvironment>
{ state, action, env in
switch action {
case .start:
return .none
}
}