mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-05-03 20:46:28 +00:00
Fix participant list in meeting details view : if myself isn't the organizer, then I was displayed twice and the actual organizer was missing
This commit is contained in:
parent
e74b2dd4f3
commit
282310f6c2
2 changed files with 28 additions and 13 deletions
|
|
@ -216,7 +216,7 @@ struct MeetingFragment: View {
|
|||
|
||||
ScrollView {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
if meetingViewModel.myself != nil {
|
||||
if meetingViewModel.myself != nil && meetingViewModel.myself!.isOrganizer {
|
||||
getParticipantLine(participant: meetingViewModel.myself!)
|
||||
}
|
||||
ForEach(0..<meetingViewModel.participants.count, id: \.self) { index in
|
||||
|
|
|
|||
|
|
@ -263,28 +263,43 @@ class MeetingViewModel: ObservableObject {
|
|||
self.toDate = meeting.endDate
|
||||
self.participants = []
|
||||
|
||||
let organizer = meeting.confInfo.organizer
|
||||
|
||||
CoreContext.shared.doOnCoreQueue { core in
|
||||
let organizer = meeting.confInfo.organizer
|
||||
var organizerFound = false
|
||||
|
||||
if let myAddr = core.defaultAccount?.contactAddress {
|
||||
let isOrganizer = (organizer != nil) ? myAddr.weakEqual(address2: organizer!) : false
|
||||
organizerFound = organizerFound || isOrganizer
|
||||
ContactAvatarModel.getAvatarModelFromAddress(address: myAddr) { avatarResult in
|
||||
DispatchQueue.main.async {
|
||||
let isOrganizer = (organizer != nil) ? myAddr.weakEqual(address2: organizer!) : false
|
||||
self.myself = SelectedAddressModel(addr: myAddr, avModel: avatarResult, isOrg: isOrganizer)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for pInfo in meeting.confInfo.participantInfos {
|
||||
if let addr = pInfo.address {
|
||||
let isOrganizer = (organizer != nil) ? addr.weakEqual(address2: organizer!) : false
|
||||
organizerFound = organizerFound || isOrganizer
|
||||
ContactAvatarModel.getAvatarModelFromAddress(address: addr) { avatarResult in
|
||||
DispatchQueue.main.async {
|
||||
self.participants.append(SelectedAddressModel(addr: addr, avModel: avatarResult, isOrg:isOrganizer))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// if didn't find organizer, add him
|
||||
if !organizerFound, let org = organizer {
|
||||
ContactAvatarModel.getAvatarModelFromAddress(address: org) { avatarResult in
|
||||
DispatchQueue.main.async {
|
||||
self.participants.append(SelectedAddressModel(addr: org, avModel: avatarResult, isOrg: true))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for pInfo in meeting.confInfo.participantInfos {
|
||||
if let addr = pInfo.address {
|
||||
ContactAvatarModel.getAvatarModelFromAddress(address: addr) { avatarResult in
|
||||
DispatchQueue.main.async {
|
||||
let isOrganizer = (organizer != nil) ? addr.weakEqual(address2: organizer!) : false
|
||||
self.participants.append(SelectedAddressModel(addr: addr, avModel: avatarResult, isOrg:isOrganizer))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
self.conferenceUri = meeting.confInfo.uri?.asStringUriOnly() ?? ""
|
||||
self.computeDateLabels()
|
||||
self.computeTimeLabels()
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue