mirror of
https://github.com/element-hq/element-android
synced 2024-11-28 13:38:49 +03:00
creating unique files for each voice recording
- stops the recording flow from deleting/overwriting pending voice messages
This commit is contained in:
parent
bdf9402685
commit
251c54ecfe
2 changed files with 15 additions and 4 deletions
|
@ -76,9 +76,8 @@ class VoiceMessageHelper @Inject constructor(
|
|||
}
|
||||
try {
|
||||
voiceMessageFile?.let {
|
||||
val outputFileUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", it)
|
||||
return outputFileUri
|
||||
?.toMultiPickerAudioType(context)
|
||||
val outputFileUri = FileProvider.getUriForFile(context, BuildConfig.APPLICATION_ID + ".fileProvider", it, "Voice message.${it.extension}")
|
||||
return outputFileUri.toMultiPickerAudioType(context)
|
||||
?.apply {
|
||||
waveform = if (amplitudeList.size < 50) {
|
||||
amplitudeList
|
||||
|
|
|
@ -18,9 +18,12 @@ package im.vector.app.features.voice
|
|||
|
||||
import android.content.Context
|
||||
import android.media.MediaRecorder
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import org.matrix.android.sdk.api.session.content.ContentAttachmentData
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.util.UUID
|
||||
|
||||
abstract class AbstractVoiceRecorder(
|
||||
private val context: Context,
|
||||
|
@ -59,7 +62,7 @@ abstract class AbstractVoiceRecorder(
|
|||
|
||||
override fun startRecord() {
|
||||
init()
|
||||
outputFile = File(outputDirectory, "Voice message.$filenameExt")
|
||||
outputFile = File(outputDirectory, "${UUID.randomUUID()}$filenameExt")
|
||||
|
||||
val mr = mediaRecorder ?: return
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||
|
@ -100,3 +103,12 @@ abstract class AbstractVoiceRecorder(
|
|||
return convertFile(outputFile)
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("UNUSED") // preemptively added for https://github.com/vector-im/element-android/pull/4527
|
||||
private fun ContentAttachmentData.findVoiceFile(baseDirectory: File): File {
|
||||
return File(baseDirectory, queryUri.takePathAfter(baseDirectory.name))
|
||||
}
|
||||
|
||||
private fun Uri.takePathAfter(after: String): String {
|
||||
return pathSegments.takeLastWhile { it != after }.joinToString(separator = "/") { it }
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue