mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-26 19:34:25 +02:00
Use dynamicMembers for StoreState for single source of truth. Fix bubble grouping and add send message function.
This commit is contained in:
+14
-16
@@ -18,32 +18,30 @@ import UIKit
|
||||
|
||||
|
||||
struct TemplateRoomChatBubble {
|
||||
var id: String
|
||||
var senderAvatar: AvatarInputProtocol
|
||||
var senderDisplayName: String?
|
||||
let id: String
|
||||
let sender: TemplateRoomChatMember
|
||||
var items: [TemplateRoomChatBubbleItem]
|
||||
}
|
||||
|
||||
extension TemplateRoomChatBubble: Identifiable { }
|
||||
|
||||
enum TemplateRoomChatBubbleItem {
|
||||
var id: Self { self }
|
||||
case message(TemplateRoomChatBubbleMessageItem)
|
||||
case image(TemplateRoomChatBubbleImageItem)
|
||||
struct TemplateRoomChatBubbleItem {
|
||||
let id: String
|
||||
var timestamp: Date
|
||||
var content: TemplateRoomChatBubbleItemContent
|
||||
}
|
||||
|
||||
extension TemplateRoomChatBubbleItem: Hashable, Identifiable {}
|
||||
extension TemplateRoomChatBubbleItem: Identifiable { }
|
||||
|
||||
struct TemplateRoomChatBubbleMessageItem {
|
||||
var id: String
|
||||
enum TemplateRoomChatBubbleItemContent {
|
||||
case message(TemplateRoomChatBubbleMessageContent)
|
||||
case image(TemplateRoomChatBubbleImageContent)
|
||||
}
|
||||
|
||||
struct TemplateRoomChatBubbleMessageContent {
|
||||
var body: String
|
||||
}
|
||||
|
||||
extension TemplateRoomChatBubbleMessageItem: Hashable {}
|
||||
|
||||
struct TemplateRoomChatBubbleImageItem {
|
||||
var id: String
|
||||
struct TemplateRoomChatBubbleImageContent {
|
||||
var image: UIImage
|
||||
}
|
||||
|
||||
extension TemplateRoomChatBubbleImageItem: Hashable {}
|
||||
|
||||
+1
@@ -20,6 +20,7 @@ struct TemplateRoomChatMessage {
|
||||
let id: String
|
||||
let body: String
|
||||
let sender: TemplateRoomChatMember
|
||||
let timestamp: Date
|
||||
}
|
||||
|
||||
extension TemplateRoomChatMessage: Identifiable {}
|
||||
|
||||
+1
@@ -17,5 +17,6 @@
|
||||
import Foundation
|
||||
|
||||
enum TemplateRoomChatStateAction {
|
||||
case clearMessageInput
|
||||
case updateBubbles([TemplateRoomChatBubble])
|
||||
}
|
||||
|
||||
+1
@@ -17,6 +17,7 @@
|
||||
import Foundation
|
||||
|
||||
enum TemplateRoomChatViewAction {
|
||||
case sendMessage
|
||||
case cancel
|
||||
case done
|
||||
}
|
||||
|
||||
+8
@@ -17,6 +17,14 @@
|
||||
import Foundation
|
||||
|
||||
struct TemplateRoomChatViewState: BindableState {
|
||||
let roomName: String?
|
||||
var bubbles: [TemplateRoomChatBubble]
|
||||
var bindings: TemplateRoomChatViewModelBindings
|
||||
}
|
||||
|
||||
extension TemplateRoomChatViewState {
|
||||
var sendButtonEnabled: Bool {
|
||||
!bindings.messageInput.isEmpty
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user