mv-experiment #1
|
@ -105,6 +105,18 @@ extension ClientsStore {
|
|||
}
|
||||
}
|
||||
|
||||
extension ClientsStore {
|
||||
func addRosterForNewChatIfNeeded(_ chat: Chat) async throws {
|
||||
let exists = try? await chat.fetchRoster()
|
||||
if exists == nil {
|
||||
guard let client = clients.first(where: { $0.credentials.bareJid == chat.account }) else {
|
||||
throw AppError.clientNotFound
|
||||
}
|
||||
try await addRoster(client.credentials, contactJID: chat.participant, name: nil, groups: [])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Produce stores for conversation
|
||||
extension ClientsStore {
|
||||
func conversationStores(for roster: Roster) async throws -> (MessagesStore, AttachmentsStore) {
|
||||
|
|
|
@ -60,6 +60,7 @@ private struct ChatsRow: View {
|
|||
}
|
||||
|
||||
do {
|
||||
try? await clientsStore.addRosterForNewChatIfNeeded(chat)
|
||||
let (messages, attachments) = try await clientsStore.conversationStores(for: chat)
|
||||
router.showScreen(.push) { _ in
|
||||
ConversationScreen(messagesStore: messages, attachments: attachments)
|
||||
|
|
Loading…
Reference in a new issue