diff --git a/Classes/Swift/Conference/ViewModels/ConferenceSchedulingViewModel.swift b/Classes/Swift/Conference/ViewModels/ConferenceSchedulingViewModel.swift index 0f7a62b57..b04f5d2f8 100644 --- a/Classes/Swift/Conference/ViewModels/ConferenceSchedulingViewModel.swift +++ b/Classes/Swift/Conference/ViewModels/ConferenceSchedulingViewModel.swift @@ -31,8 +31,7 @@ class ConferenceSchedulingViewModel { let description = MutableLiveData() let scheduleForLater = MutableLiveData() - let scheduledDate = MutableLiveData() - let scheduledTime = MutableLiveData() + let scheduledDateTime = MutableLiveData() var scheduledTimeZone = MutableLiveData() 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 } diff --git a/Classes/Swift/Conference/ViewModels/ScheduledConferencesViewModel.swift b/Classes/Swift/Conference/ViewModels/ScheduledConferencesViewModel.swift index 9de2afc4f..23b94ca10 100644 --- a/Classes/Swift/Conference/ViewModels/ScheduledConferencesViewModel.swift +++ b/Classes/Swift/Conference/ViewModels/ScheduledConferencesViewModel.swift @@ -42,7 +42,6 @@ class ScheduledConferencesViewModel { } ) - computeConferenceInfoList() } diff --git a/Classes/Swift/Conference/Views/ConferenceSchedulingSummaryView.swift b/Classes/Swift/Conference/Views/ConferenceSchedulingSummaryView.swift index d236acdf4..e99e45909 100644 --- a/Classes/Swift/Conference/Views/ConferenceSchedulingSummaryView.swift +++ b/Classes/Swift/Conference/Views/ConferenceSchedulingSummaryView.swift @@ -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) diff --git a/Classes/Swift/Conference/Views/ConferenceSchedulingView.swift b/Classes/Swift/Conference/Views/ConferenceSchedulingView.swift index c2e85d1ef..15ff9336f 100644 --- a/Classes/Swift/Conference/Views/ConferenceSchedulingView.swift +++ b/Classes/Swift/Conference/Views/ConferenceSchedulingView.swift @@ -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 } diff --git a/Classes/Swift/Conference/Views/ScheduledConferencesCell.swift b/Classes/Swift/Conference/Views/ScheduledConferencesCell.swift index 1fd5dcc64..ba3bad096 100644 --- a/Classes/Swift/Conference/Views/ScheduledConferencesCell.swift +++ b/Classes/Swift/Conference/Views/ScheduledConferencesCell.swift @@ -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})