From 388c66c74453e8a80d819ee42505779210288021 Mon Sep 17 00:00:00 2001 From: Dariusz Rybicki <dariusz@elixxir.io> Date: Wed, 14 Sep 2022 14:10:26 +0200 Subject: [PATCH] Show message status in ChatView --- .../Sources/ChatFeature/ChatFeature.swift | 8 ++++++-- .../Sources/ChatFeature/ChatView.swift | 20 ++++++++++++++++--- .../ChatFeatureTests/ChatFeatureTests.swift | 6 ++++-- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/Examples/xx-messenger/Sources/ChatFeature/ChatFeature.swift b/Examples/xx-messenger/Sources/ChatFeature/ChatFeature.swift index 26757d71..9d5c3df0 100644 --- a/Examples/xx-messenger/Sources/ChatFeature/ChatFeature.swift +++ b/Examples/xx-messenger/Sources/ChatFeature/ChatFeature.swift @@ -17,18 +17,21 @@ public struct ChatState: Equatable, Identifiable { id: Int64, date: Date, senderId: Data, - text: String + text: String, + status: XXModels.Message.Status ) { self.id = id self.date = date self.senderId = senderId self.text = text + self.status = status } public var id: Int64 public var date: Date public var senderId: Data public var text: String + public var status: XXModels.Message.Status } public init( @@ -118,7 +121,8 @@ public let chatReducer = Reducer<ChatState, ChatAction, ChatEnvironment> id: id, date: message.date, senderId: message.senderId, - text: message.text + text: message.text, + status: message.status ) } } diff --git a/Examples/xx-messenger/Sources/ChatFeature/ChatView.swift b/Examples/xx-messenger/Sources/ChatFeature/ChatView.swift index 5905931f..fed16ae9 100644 --- a/Examples/xx-messenger/Sources/ChatFeature/ChatView.swift +++ b/Examples/xx-messenger/Sources/ChatFeature/ChatView.swift @@ -95,7 +95,7 @@ public struct ChatView: View { var body: some View { VStack { - Text("\(message.date.formatted())") + Text("\(message.date.formatted()), \(statusText)") .foregroundColor(.secondary) .font(.footnote) .frame(maxWidth: .infinity, alignment: alignment) @@ -112,6 +112,18 @@ public struct ChatView: View { } .padding(.horizontal) } + + var statusText: String { + switch message.status { + case .sending: return "Sending" + case .sendingTimedOut: return "Sending timed out" + case .sendingFailed: return "Failed" + case .sent: return "Sent" + case .receiving: return "Receiving" + case .receivingFailed: return "Receiving failed" + case .received: return "Received" + } + } } } @@ -128,13 +140,15 @@ public struct ChatView_Previews: PreviewProvider { id: 1, date: Date(), senderId: "contact-id".data(using: .utf8)!, - text: "Hello!" + text: "Hello!", + status: .received ), .init( id: 2, date: Date(), senderId: "my-contact-id".data(using: .utf8)!, - text: "Hi!" + text: "Hi!", + status: .sent ), ] ), diff --git a/Examples/xx-messenger/Tests/ChatFeatureTests/ChatFeatureTests.swift b/Examples/xx-messenger/Tests/ChatFeatureTests/ChatFeatureTests.swift index 89f0658d..f0bde787 100644 --- a/Examples/xx-messenger/Tests/ChatFeatureTests/ChatFeatureTests.swift +++ b/Examples/xx-messenger/Tests/ChatFeatureTests/ChatFeatureTests.swift @@ -87,13 +87,15 @@ final class ChatFeatureTests: XCTestCase { id: 1, date: Date(timeIntervalSince1970: 1), senderId: contactId, - text: "Message 1" + text: "Message 1", + status: .received ), .init( id: 2, date: Date(timeIntervalSince1970: 2), senderId: myContactId, - text: "Message 2" + text: "Message 2", + status: .sent ), ]) -- GitLab