Use new APIs from SDK to handle meeting update/cancel
This commit is contained in:
parent
261dc9791a
commit
bb288f03cc
10 changed files with 58 additions and 12 deletions
|
@ -59,6 +59,8 @@ class ChatMessageContentData(
|
|||
val isGenericFile = MutableLiveData<Boolean>()
|
||||
val isVoiceRecording = MutableLiveData<Boolean>()
|
||||
val isConferenceSchedule = MutableLiveData<Boolean>()
|
||||
val isConferenceUpdated = MutableLiveData<Boolean>()
|
||||
val isConferenceCancelled = MutableLiveData<Boolean>()
|
||||
|
||||
val fileName = MutableLiveData<String>()
|
||||
val filePath = MutableLiveData<String>()
|
||||
|
@ -233,6 +235,8 @@ class ChatMessageContentData(
|
|||
isPdf.value = false
|
||||
isVoiceRecording.value = false
|
||||
isConferenceSchedule.value = false
|
||||
isConferenceUpdated.value = false
|
||||
isConferenceCancelled.value = false
|
||||
|
||||
if (content.isFile || (content.isFileTransfer && chatMessage.isOutgoing)) {
|
||||
val path = if (isFileEncrypted) {
|
||||
|
@ -308,6 +312,10 @@ class ChatMessageContentData(
|
|||
conferenceSubject.value = conferenceInfo.subject
|
||||
conferenceDescription.value = conferenceInfo.description
|
||||
|
||||
val state = conferenceInfo.state
|
||||
isConferenceUpdated.value = state == ConferenceInfoState.Updated
|
||||
isConferenceCancelled.value = state == ConferenceInfoState.Cancelled
|
||||
|
||||
conferenceDate.value = TimestampUtils.dateToString(conferenceInfo.dateTime)
|
||||
conferenceTime.value = TimestampUtils.timeToString(conferenceInfo.dateTime)
|
||||
|
||||
|
|
|
@ -42,10 +42,6 @@ class ConferenceSchedulingSummaryFragment : GenericFragment<ConferenceScheduling
|
|||
|
||||
binding.viewModel = viewModel
|
||||
|
||||
binding.setCreateConferenceClickListener {
|
||||
viewModel.createConference()
|
||||
}
|
||||
|
||||
viewModel.conferenceCreationCompletedEvent.observe(
|
||||
viewLifecycleOwner
|
||||
) {
|
||||
|
|
|
@ -38,6 +38,7 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
|||
val description = MutableLiveData<String>()
|
||||
|
||||
val scheduleForLater = MutableLiveData<Boolean>()
|
||||
val isUpdate = MutableLiveData<Boolean>()
|
||||
|
||||
val formattedDate = MutableLiveData<String>()
|
||||
val formattedTime = MutableLiveData<String>()
|
||||
|
@ -156,6 +157,8 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
|||
|
||||
subject.value = ""
|
||||
scheduleForLater.value = false
|
||||
isUpdate.value = false
|
||||
|
||||
isEncrypted.value = false
|
||||
sendInviteViaChat.value = true
|
||||
sendInviteViaEmail.value = false
|
||||
|
@ -195,9 +198,11 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
|||
|
||||
fun populateFromConferenceInfo(conferenceInfo: ConferenceInfo) {
|
||||
confInfo = conferenceInfo
|
||||
|
||||
address.value = conferenceInfo.uri
|
||||
subject.value = conferenceInfo.subject
|
||||
description.value = conferenceInfo.description
|
||||
isUpdate.value = true
|
||||
|
||||
val dateTime = conferenceInfo.dateTime
|
||||
val calendar = Calendar.getInstance()
|
||||
|
@ -262,7 +267,11 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
|||
val localAccount = core.defaultAccount
|
||||
val localAddress = localAccount?.params?.identityAddress
|
||||
|
||||
val conferenceInfo = confInfo ?: Factory.instance().createConferenceInfo()
|
||||
val conferenceInfo = if (isUpdate.value == true) {
|
||||
confInfo?.clone() ?: Factory.instance().createConferenceInfo()
|
||||
} else {
|
||||
Factory.instance().createConferenceInfo()
|
||||
}
|
||||
conferenceInfo.organizer = localAddress
|
||||
conferenceInfo.subject = subject.value
|
||||
conferenceInfo.description = description.value
|
||||
|
@ -273,6 +282,7 @@ class ConferenceSchedulingViewModel : ContactsSelectionViewModel() {
|
|||
val duration = duration.value?.value ?: 0
|
||||
conferenceInfo.duration = duration
|
||||
}
|
||||
|
||||
confInfo = conferenceInfo
|
||||
conferenceScheduler.account = localAccount
|
||||
// Will trigger the conference creation/update automatically
|
||||
|
|
|
@ -98,7 +98,7 @@ class ContactLoader : LoaderManager.LoaderCallbacks<Cursor> {
|
|||
|
||||
val core = coreContext.core
|
||||
val linphoneMime = loader.context.getString(R.string.linphone_address_mime_type)
|
||||
var preferNormalizedPhoneNumber = corePreferences.preferNormalizedPhoneNumbersFromAddressBook
|
||||
val preferNormalizedPhoneNumber = corePreferences.preferNormalizedPhoneNumbersFromAddressBook
|
||||
|
||||
if (core.globalState == GlobalState.Shutdown || core.globalState == GlobalState.Off) {
|
||||
Log.w("[Contacts Loader] Core is being stopped or already destroyed, abort")
|
||||
|
|
|
@ -29,7 +29,22 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/conference_invite_title_font"
|
||||
android:text="@string/conference_invite_title"/>
|
||||
android:text="@string/conference_invite_title"
|
||||
android:visibility="@{data.isConferenceUpdated || data.isConferenceCancelled ? View.GONE : View.VISIBLE}"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/conference_update_title_font"
|
||||
android:text="@string/conference_update_title"
|
||||
android:visibility="@{data.isConferenceUpdated ? View.VISIBLE : View.GONE, default=gone}"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/conference_cancel_title_font"
|
||||
android:text="@string/conference_cancel_title"
|
||||
android:visibility="@{data.isConferenceCancelled ? View.VISIBLE : View.GONE, default=gone}"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
@ -5,9 +5,6 @@
|
|||
|
||||
<data>
|
||||
<import type="android.view.View" />
|
||||
<variable
|
||||
name="createConferenceClickListener"
|
||||
type="android.view.View.OnClickListener" />
|
||||
<variable
|
||||
name="viewModel"
|
||||
type="org.linphone.activities.main.conference.viewmodels.ConferenceSchedulingViewModel" />
|
||||
|
@ -300,7 +297,7 @@
|
|||
</androidx.core.widget.NestedScrollView>
|
||||
|
||||
<TextView
|
||||
android:onClick="@{createConferenceClickListener}"
|
||||
android:onClick="@{() -> viewModel.createConference()}"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="20dp"
|
||||
|
@ -311,7 +308,7 @@
|
|||
android:layout_marginBottom="10dp"
|
||||
android:layout_gravity="center"
|
||||
android:background="@drawable/shape_rect_orange_button"
|
||||
android:text="@{viewModel.scheduleForLater ? @string/conference_schedule_start : @string/conference_group_call_create, default=@string/conference_group_call_create}"
|
||||
android:text="@{viewModel.scheduleForLater ? (viewModel.isUpdate ? @string/conference_schedule_start : @string/conference_schedule_start) : @string/conference_group_call_create, default=@string/conference_group_call_create}"
|
||||
style="@style/big_orange_button_font"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
@ -744,4 +744,7 @@
|
|||
<string name="call_stats_zrtp_hash_algo">Algorithme de hachage :</string>
|
||||
<string name="call_stats_zrtp_auth_tag_algo">Algorithme d\'authentification :</string>
|
||||
<string name="call_stats_zrtp_sas_algo">Algorithme SAS :</string>
|
||||
<string name="conference_schedule_edit">Modifier la réunion</string>
|
||||
<string name="conference_update_title">La réunion a été modifiée : </string>
|
||||
<string name="conference_cancel_title">La réunion a été annulée : </string>
|
||||
</resources>
|
|
@ -36,6 +36,8 @@
|
|||
<color name="voip_dark_color5">#353B3F</color> <!-- Scheduled conference background dark mode -->
|
||||
<color name="voip_text_dark_color">#6E8596</color> <!-- Text color above voip_dark_color5 -->
|
||||
<color name="voip_conf_address_text_color">#A2A2A2</color>
|
||||
<color name="voip_conference_updated_color">#EFAE00</color>
|
||||
<color name="voip_conference_cancelled_color">#FF0000</color>
|
||||
|
||||
<color name="form_field_gray_background">#F7F7F7</color>
|
||||
|
||||
|
|
|
@ -261,6 +261,7 @@
|
|||
<string name="conference_schedule_summary">Meeting info</string>
|
||||
<string name="conference_group_call_summary">Group call info</string>
|
||||
<string name="conference_schedule_start">Schedule meeting</string>
|
||||
<string name="conference_schedule_edit">Edit meeting</string>
|
||||
<string name="conference_group_call_create">Start group call</string>
|
||||
<string name="conference_schedule_address_copied_to_clipboard">Meeting address copied into clipboard</string>
|
||||
<string name="conference_schedule_info_not_sent_to_participant">Failed to send meeting info to a participant</string>
|
||||
|
@ -269,6 +270,8 @@
|
|||
<string name="conference_default_title">Remote group call</string>
|
||||
<string name="conference_local_title">Local group call</string>
|
||||
<string name="conference_invite_title">Meeting invite:</string>
|
||||
<string name="conference_update_title">Meeting has been updated:</string>
|
||||
<string name="conference_cancel_title">Meeting has been cancelled:</string>
|
||||
<string name="conference_description_title">Description</string>
|
||||
<string name="conference_invite_join">Join</string>
|
||||
<string name="conference_invite_participants_count" tools:ignore="PluralsCandidate">%d participants</string>
|
||||
|
|
|
@ -145,6 +145,18 @@
|
|||
<item name="android:textSize">16sp</item>
|
||||
</style>
|
||||
|
||||
<style name="conference_update_title_font" parent="@android:style/TextAppearance.Medium">
|
||||
<item name="android:textColor">@color/voip_conference_updated_color</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
<item name="android:textSize">16sp</item>
|
||||
</style>
|
||||
|
||||
<style name="conference_cancel_title_font" parent="@android:style/TextAppearance.Medium">
|
||||
<item name="android:textColor">@color/voip_conference_cancelled_color</item>
|
||||
<item name="android:textStyle">bold</item>
|
||||
<item name="android:textSize">16sp</item>
|
||||
</style>
|
||||
|
||||
<style name="conference_invite_subject_font" parent="@android:style/TextAppearance.Medium">
|
||||
<item name="android:textColor">?attr/voipTextColor2</item>
|
||||
<item name="android:textSize">16sp</item>
|
||||
|
|
Loading…
Reference in a new issue