From a024dd22786e7bb3141e2fbb994fadddff338a18 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Mon, 29 Jan 2024 12:30:52 +0100 Subject: [PATCH] Fixed received/sent audio files handled as voice recordings --- .../linphone/ui/main/chat/model/FileModel.kt | 4 +++ .../ui/main/chat/model/MessageModel.kt | 28 +++++++++++-------- .../ui/main/viewer/viewmodel/FileViewModel.kt | 4 +++ app/src/main/res/drawable/file_audio.xml | 9 ++++++ .../layout/chat_bubble_content_grid_cell.xml | 2 +- 5 files changed, 34 insertions(+), 13 deletions(-) create mode 100644 app/src/main/res/drawable/file_audio.xml diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/FileModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/FileModel.kt index 7d0f138cd..7a59cafd7 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/FileModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/FileModel.kt @@ -31,6 +31,8 @@ class FileModel @AnyThread constructor( val isPdf: Boolean + val isAudio: Boolean + init { path.postValue(file) downloadProgress.postValue(-1) @@ -44,6 +46,7 @@ class FileModel @AnyThread constructor( mimeType = FileUtils.getMimeType(mime) isImage = mimeType == FileUtils.MimeType.Image isVideoPreview = mimeType == FileUtils.MimeType.Video + isAudio = mimeType == FileUtils.MimeType.Audio Log.d( "$TAG File has already been downloaded, extension is [$extension], MIME is [$mime]" ) @@ -52,6 +55,7 @@ class FileModel @AnyThread constructor( isPdf = false isImage = false isVideoPreview = false + isAudio = false } } diff --git a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt index 0293947a2..c64077f8d 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/model/MessageModel.kt @@ -307,10 +307,26 @@ class MessageModel @WorkerThread constructor( if (content.isIcalendar) { Log.d("$TAG Found iCal content") parseConferenceInvite(content) + displayableContentFound = true } else if (content.isText) { Log.d("$TAG Found plain text content") computeTextContent(content) + + displayableContentFound = true + } else if (content.isVoiceRecording) { + Log.d("$TAG Found voice recording content") + isVoiceRecord.postValue(true) + voiceRecordPath = content.filePath ?: "" + + val duration = content.fileDuration + voiceRecordingDuration.postValue(duration) + + val formattedDuration = SimpleDateFormat( + "mm:ss", + Locale.getDefault() + ).format(duration) // duration is in ms + formattedVoiceRecordingDuration.postValue(formattedDuration) displayableContentFound = true } else { if (content.isFile) { @@ -339,18 +355,6 @@ class MessageModel @WorkerThread constructor( displayableContentFound = true } - "audio" -> { - voiceRecordPath = path - isVoiceRecord.postValue(true) - val duration = content.fileDuration - voiceRecordingDuration.postValue(duration) - val formattedDuration = SimpleDateFormat( - "mm:ss", - Locale.getDefault() - ).format(duration) // duration is in ms - formattedVoiceRecordingDuration.postValue(formattedDuration) - displayableContentFound = true - } else -> { val fileModel = FileModel(path, name, content.fileSize.toLong()) { model -> onContentClicked?.invoke(model.file) diff --git a/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt b/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt index 31c92dc67..55e6dd299 100644 --- a/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/viewer/viewmodel/FileViewModel.kt @@ -42,6 +42,8 @@ class FileViewModel @UiThread constructor() : ViewModel() { val isImage = MutableLiveData() + val isAudio = MutableLiveData() + val isVideo = MutableLiveData() val isVideoPlaying = MutableLiveData() @@ -121,7 +123,9 @@ class FileViewModel @UiThread constructor() : ViewModel() { fileReadyEvent.value = Event(true) } FileUtils.MimeType.Audio -> { + Log.i("$TAG File [$file] seems to be an audio") // TODO: handle audio files + isAudio.value = true fileReadyEvent.value = Event(true) } FileUtils.MimeType.PlainText -> { diff --git a/app/src/main/res/drawable/file_audio.xml b/app/src/main/res/drawable/file_audio.xml new file mode 100644 index 000000000..ec7625007 --- /dev/null +++ b/app/src/main/res/drawable/file_audio.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/chat_bubble_content_grid_cell.xml b/app/src/main/res/layout/chat_bubble_content_grid_cell.xml index 9c4e2a3f8..b072775a4 100644 --- a/app/src/main/res/layout/chat_bubble_content_grid_cell.xml +++ b/app/src/main/res/layout/chat_bubble_content_grid_cell.xml @@ -53,7 +53,7 @@ android:layout_height="@dimen/chat_bubble_grid_image_size" android:adjustViewBounds="true" android:padding="18dp" - android:src="@{model.isWaitingToBeDownloaded ? @drawable/download_simple : model.isPdf ? @drawable/file_pdf : @drawable/file, default=@drawable/file_pdf}" + android:src="@{model.isWaitingToBeDownloaded ? @drawable/download_simple : model.isPdf ? @drawable/file_pdf : model.isAudio ? @drawable/file_audio : @drawable/file, default=@drawable/file_pdf}" android:background="@drawable/shape_squircle_main2_200_left" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"