From 2821d4b72f2f0ee904791c7723a6ba389520502f Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Wed, 21 Aug 2024 10:01:10 +0200 Subject: [PATCH] Fixed meeting schedule using 'all day' toggle --- .../viewmodel/ScheduleMeetingViewModel.kt | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/ScheduleMeetingViewModel.kt b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/ScheduleMeetingViewModel.kt index 909d5b6fe..3227c9626 100644 --- a/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/ScheduleMeetingViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/meetings/viewmodel/ScheduleMeetingViewModel.kt @@ -404,10 +404,39 @@ class ScheduleMeetingViewModel @UiThread constructor() : GenericViewModel() { conferenceInfo.subject = subject.value conferenceInfo.description = description.value - val startTime = startTimestamp / 1000 // Linphone expects timestamp in seconds - conferenceInfo.dateTime = startTime - val duration = (((endTimestamp - startTimestamp) / 1000) / 60).toInt() // Linphone expects duration in minutes - conferenceInfo.duration = duration + if (allDayMeeting.value == true) { + val cal = Calendar.getInstance( + TimeZone.getTimeZone(selectedTimeZone.value?.id ?: TimeZone.getDefault().id) + ) + cal.timeInMillis = startTimestamp + cal.set(Calendar.HOUR_OF_DAY, 0) + cal.set(Calendar.MINUTE, 0) + cal.set(Calendar.SECOND, 0) + val startTime = cal.timeInMillis / 1000 // Linphone expects timestamp in seconds + + cal.timeInMillis = endTimestamp + cal.set(Calendar.HOUR_OF_DAY, 0) + cal.set(Calendar.MINUTE, 0) + cal.set(Calendar.SECOND, 0) + cal.add(Calendar.HOUR, 24) + val endTime = cal.timeInMillis / 1000 // Linphone expects timestamp in seconds + val duration = ((endTime - startTime) / 60).toInt() // Linphone expects duration in minutes + + Log.i( + "$TAG Scheduling meeting using start day [$startTime] and duration [$duration] (minutes)" + ) + conferenceInfo.dateTime = startTime + conferenceInfo.duration = duration + } else { + val startTime = startTimestamp / 1000 // Linphone expects timestamp in seconds + val duration = + (((endTimestamp - startTimestamp) / 1000) / 60).toInt() // Linphone expects duration in minutes + Log.i( + "$TAG Scheduling meeting using start hour [$startTime] and duration [$duration] (minutes)" + ) + conferenceInfo.dateTime = startTime + conferenceInfo.duration = duration + } val participantsList = participants.value.orEmpty() val participantsInfoList = arrayListOf()