Fix chat creation in the call view

This commit is contained in:
Benoit Martins 2025-07-25 11:03:59 +02:00
parent beee998627
commit 6b88006faa
2 changed files with 14 additions and 10 deletions

View file

@ -2205,7 +2205,7 @@ struct CallView: View {
.frame(height: geo.size.height * 0.15)
HStack(spacing: 0) {
if !CorePreferences.disableChatFeature {
if !CorePreferences.disableChatFeature && callViewModel.chatEnabled {
VStack {
Button {
callViewModel.createConversation()
@ -2343,7 +2343,7 @@ struct CallView: View {
.frame(width: geo.size.width * 0.24, height: geo.size.width * 0.24)
.hidden()
if CorePreferences.disableChatFeature {
if CorePreferences.disableChatFeature || !callViewModel.chatEnabled {
VStack {
Button {
} label: {
@ -2601,7 +2601,7 @@ struct CallView: View {
.frame(width: geo.size.width * 0.125, height: geo.size.width * 0.125)
}
if !CorePreferences.disableChatFeature {
if !CorePreferences.disableChatFeature && callViewModel.chatEnabled {
VStack {
Button {
callViewModel.createConversation()

View file

@ -59,6 +59,7 @@ class CallViewModel: ObservableObject {
@Published var isOneOneCall: Bool = false
@Published var isConference: Bool = false
@Published var videoDisplayed: Bool = false
@Published var chatEnabled: Bool = false
@Published var participantList: [ParticipantModel] = []
@Published var activeSpeakerParticipant: ParticipantModel?
@Published var activeSpeakerName: String = ""
@ -214,6 +215,13 @@ class CallViewModel: ObservableObject {
}
}
var chatEnabledTmp = false
if self.currentCall?.conference != nil {
chatEnabledTmp = self.currentCall?.conference?.currentParams?.chatEnabled ?? false
} else {
chatEnabledTmp = true
}
DispatchQueue.main.async {
self.direction = directionTmp
self.remoteAddressString = remoteAddressStringTmp
@ -248,6 +256,7 @@ class CallViewModel: ObservableObject {
self.isNotEncrypted = false
self.isZrtp = isZrtpTmp
self.cacheMismatch = cacheMismatchFlag
self.chatEnabled = chatEnabledTmp
self.getCallsList()
@ -1196,16 +1205,11 @@ class CallViewModel: ObservableObject {
let localAddress = call.callLog?.localAddress
let remoteAddress = call.remoteAddress
let params: ConferenceParams? = nil
let existingConversation: ChatRoom?
if call.conference != nil {
existingConversation = call.core?.searchChatRoom(
params: params,
localAddr: localAddress,
remoteAddr: remoteAddress,
participants: []
)
existingConversation = call.conference?.chatRoom
} else {
let params = getChatRoomParams(call: call)
let participants = [remoteAddress!]
existingConversation = call.core?.searchChatRoom(
params: params,