Fixed invalid conference time after conference edition

This commit is contained in:
Christophe Deschamps 2022-06-17 08:31:21 +02:00
parent f86064d9b0
commit a610640f6f
5 changed files with 14 additions and 23 deletions

View file

@ -31,8 +31,7 @@ class ConferenceSchedulingViewModel {
let description = MutableLiveData<String>()
let scheduleForLater = MutableLiveData<Bool>()
let scheduledDate = MutableLiveData<Date>()
let scheduledTime = MutableLiveData<Date>()
let scheduledDateTime = MutableLiveData<Date>()
var scheduledTimeZone = MutableLiveData<Int>()
static let timeZones: [TimeZoneData] = computeTimeZonesList()
@ -134,10 +133,7 @@ class ConferenceSchedulingViewModel {
scheduleForLater.observe { _ in
self.continueEnabled.value = self.allMandatoryFieldsFilled()
}
scheduledDate.observe { _ in
self.continueEnabled.value = self.allMandatoryFieldsFilled()
}
scheduledTime.observe { _ in
scheduledDateTime.observe { _ in
self.continueEnabled.value = self.allMandatoryFieldsFilled()
}
@ -151,9 +147,7 @@ class ConferenceSchedulingViewModel {
isEncrypted.value = false
sendInviteViaChat.value = true
sendInviteViaEmail.value = false
let now = Date()
scheduledTime.value = Calendar.current.date(from: Calendar.current.dateComponents([.hour, .minute, .second], from: now))
scheduledDate.value = Calendar.current.date(from: Calendar.current.dateComponents([.year, .month, .day], from: now))
scheduledDateTime.value = Date()
scheduledTimeZone.value = ConferenceSchedulingViewModel.timeZones.indices.filter {
ConferenceSchedulingViewModel.timeZones[$0].timeZone.identifier == NSTimeZone.default.identifier
@ -222,14 +216,13 @@ class ConferenceSchedulingViewModel {
private func allMandatoryFieldsFilled() -> Bool {
return subject.value != nil && subject.value!.count > 0 && (scheduleForLater.value != true || (scheduledDate.value != nil && scheduledTime.value != nil));
return subject.value != nil && subject.value!.count > 0 && (scheduleForLater.value != true || scheduledDateTime.value != nil);
}
private func getConferenceStartTimestamp() -> Double {
return scheduleForLater.value == true ?
scheduledDate.value!.timeIntervalSince1970 +
scheduledTime.value!.timeIntervalSince1970 - Calendar.current.startOfDay(for: scheduledTime.value!).timeIntervalSince1970 +
scheduledDateTime.value!.timeIntervalSince1970 +
Double(ConferenceSchedulingViewModel.timeZones[scheduledTimeZone.value!].timeZone.secondsFromGMT()-TimeZone.current.secondsFromGMT())
: Date().timeIntervalSince1970
}

View file

@ -42,7 +42,6 @@ class ScheduledConferencesViewModel {
}
)
computeConferenceInfoList()
}

View file

@ -29,10 +29,10 @@ import SVProgressHUD
let participantsListTableView = UITableView()
let datePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledDate,pickerMode: .date, readOnly:true)
let datePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledDateTime,pickerMode: .date, readOnly:true)
let timeZoneValue = StyledValuePicker(liveIndex: ConferenceSchedulingViewModel.shared.scheduledTimeZone,options: ConferenceSchedulingViewModel.timeZones.map({ (tzd: TimeZoneData) -> String in tzd.descWithOffset()}), readOnly:true)
let durationValue = StyledValuePicker(liveIndex: ConferenceSchedulingViewModel.shared.scheduledDuration,options: ConferenceSchedulingViewModel.durationList.map({ (duration: Duration) -> String in duration.display}), readOnly:true)
let timePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledTime,pickerMode: .time, readOnly:true)
let timePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledDateTime,pickerMode: .time, readOnly:true)
let descriptionInput = StyledTextView(VoipTheme.conference_scheduling_font, placeHolder:VoipTexts.conference_schedule_description_hint,liveValue: ConferenceSchedulingViewModel.shared.description, readOnly:true)
let createButton = FormButton(backgroundStateColors: VoipTheme.primary_colors_background)
@ -220,10 +220,10 @@ import SVProgressHUD
}
override func viewWillAppear(_ animated: Bool) {
datePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledDate
datePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledDateTime
timeZoneValue.setIndex(index: ConferenceSchedulingViewModel.shared.scheduledTimeZone.value!)
durationValue.setIndex(index: ConferenceSchedulingViewModel.shared.scheduledDuration.value!)
timePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledTime
timePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledDateTime
descriptionInput.text = ConferenceSchedulingViewModel.shared.description.value
createButton.addSidePadding()
super.viewWillAppear(animated)

View file

@ -29,10 +29,10 @@ import linphonesw
static func compositeViewDescription() -> UICompositeViewDescription! { return compositeDescription }
func compositeViewDescription() -> UICompositeViewDescription! { return type(of: self).compositeDescription }
let datePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledDate,pickerMode: .date)
let datePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledDateTime,pickerMode: .date)
let timeZoneValue = StyledValuePicker(liveIndex: ConferenceSchedulingViewModel.shared.scheduledTimeZone,options: ConferenceSchedulingViewModel.timeZones.map({ (tzd: TimeZoneData) -> String in tzd.descWithOffset()}))
let durationValue = StyledValuePicker(liveIndex: ConferenceSchedulingViewModel.shared.scheduledDuration,options: ConferenceSchedulingViewModel.durationList.map({ (duration: Duration) -> String in duration.display}))
let timePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledTime,pickerMode: .time)
let timePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledDateTime,pickerMode: .time)
let descriptionInput = StyledTextView(VoipTheme.conference_scheduling_font, placeHolder:VoipTexts.conference_schedule_description_hint,liveValue: ConferenceSchedulingViewModel.shared.description)
@ -202,10 +202,10 @@ import linphonesw
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
datePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledDate
datePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledDateTime
timeZoneValue.setIndex(index: ConferenceSchedulingViewModel.shared.scheduledTimeZone.value!)
durationValue.setIndex(index: ConferenceSchedulingViewModel.shared.scheduledDuration.value!)
timePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledTime
timePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledDateTime
descriptionInput.text = ConferenceSchedulingViewModel.shared.description.value
}

View file

@ -168,8 +168,7 @@ class ScheduledConferencesCell: UITableViewCell {
}
let infoDate = Date(timeIntervalSince1970: Double(confData.conferenceInfo.dateTime))
ConferenceSchedulingViewModel.shared.reset()
ConferenceSchedulingViewModel.shared.scheduledDate.value = infoDate
ConferenceSchedulingViewModel.shared.scheduledTime.value = Date(timeIntervalSince1970: infoDate.timeIntervalSince1970 - Calendar.current.startOfDay(for: infoDate).timeIntervalSince1970)
ConferenceSchedulingViewModel.shared.scheduledDateTime.value = infoDate
ConferenceSchedulingViewModel.shared.description.value = confData.description.value
ConferenceSchedulingViewModel.shared.subject.value = confData.subject.value
ConferenceSchedulingViewModel.shared.scheduledDuration.value = ConferenceSchedulingViewModel.durationList.firstIndex(where: {$0.value == confData.conferenceInfo.duration})