ios: correctly update chat when opening from another chat via notification (#1667)

This commit is contained in:
JRoberts
2022-12-30 21:47:11 +04:00
committed by GitHub
parent c37a7ebfe7
commit 80f0108b41
2 changed files with 9 additions and 10 deletions

View File

@@ -15,7 +15,7 @@ private let memberImageSize: CGFloat = 34
struct ChatView: View {
@EnvironmentObject var chatModel: ChatModel
@Environment(\.colorScheme) var colorScheme
@ObservedObject var chat: Chat
@State @ObservedObject var chat: Chat
@State private var showChatInfoSheet: Bool = false
@State private var showAddMembersSheet: Bool = false
@State private var composeState = ComposeState()
@@ -253,9 +253,10 @@ struct ChatView: View {
loadChat(chat: chat, search: searchText)
}
.onChange(of: chatModel.chatId) { _ in
if let chatId = chatModel.chatId, let chat = chatModel.getChat(chatId) {
if let chatId = chatModel.chatId, let c = chatModel.getChat(chatId) {
chat = c
showChatInfoSheet = false
loadChat(chat: chat)
loadChat(chat: c)
DispatchQueue.main.async {
scrollToBottom(proxy)
}

View File

@@ -14,7 +14,6 @@ struct ChatListView: View {
// not really used in this view
@State private var showSettings = false
@State private var searchText = ""
@State private var selectedChat: ChatId?
@State private var showAddChat = false
var body: some View {
@@ -42,7 +41,6 @@ struct ChatListView: View {
}
}
.onChange(of: chatModel.chatId) { _ in
selectedChat = chatModel.chatId
if chatModel.chatId == nil, let chatId = chatModel.chatToTop {
chatModel.chatToTop = nil
chatModel.popChat(chatId)
@@ -79,10 +77,10 @@ struct ChatListView: View {
}
.background(
NavigationLink(
destination: chatView(selectedChat),
destination: chatView(),
isActive: Binding(
get: { selectedChat != nil },
set: { _, _ in selectedChat = nil }
get: { chatModel.chatId != nil },
set: { _, _ in chatModel.chatId = nil }
)
) { EmptyView() }
)
@@ -131,8 +129,8 @@ struct ChatListView: View {
.clipShape(RoundedRectangle(cornerRadius: 16))
}
@ViewBuilder private func chatView(_ chatId: ChatId?) -> some View {
if let chatId = chatId, let chat = chatModel.getChat(chatId) {
@ViewBuilder private func chatView() -> some View {
if let chatId = chatModel.chatId, let chat = chatModel.getChat(chatId) {
ChatView(chat: chat).onAppear {
loadChat(chat: chat)
}