mirror of
https://github.com/nextcloud/talk-android
synced 2025-03-09 15:42:10 +00:00
Merge pull request #2745 from nextcloud/bugfix/noid/fixExceptions
Bugfix/noid/fix exceptions
This commit is contained in:
commit
608c66c9d2
@ -1318,7 +1318,9 @@ public class CallActivity extends CallBaseActivity {
|
||||
|
||||
@Override
|
||||
public void onDestroy() {
|
||||
signalingMessageReceiver.removeListener(offerMessageListener);
|
||||
if (signalingMessageReceiver != null) {
|
||||
signalingMessageReceiver.removeListener(offerMessageListener);
|
||||
}
|
||||
|
||||
if (localStream != null) {
|
||||
localStream.dispose();
|
||||
@ -2591,12 +2593,18 @@ public class CallActivity extends CallBaseActivity {
|
||||
|
||||
private void stopCallingSound() {
|
||||
if (mediaPlayer != null) {
|
||||
if (mediaPlayer.isPlaying()) {
|
||||
mediaPlayer.stop();
|
||||
try {
|
||||
if (mediaPlayer.isPlaying()) {
|
||||
mediaPlayer.stop();
|
||||
}
|
||||
} catch (IllegalStateException e) {
|
||||
Log.e(TAG, "mediaPlayer was not initialized", e);
|
||||
} finally {
|
||||
if (mediaPlayer != null) {
|
||||
mediaPlayer.release();
|
||||
}
|
||||
mediaPlayer = null;
|
||||
}
|
||||
|
||||
mediaPlayer.release();
|
||||
mediaPlayer = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -846,8 +846,10 @@ class ChatController(args: Bundle) :
|
||||
|
||||
showRecordAudioUi(true)
|
||||
|
||||
if (sliderInitX == 0.0F) {
|
||||
sliderInitX = binding?.messageInputView?.slideToCancelDescription?.x!!
|
||||
binding?.messageInputView?.slideToCancelDescription?.x?.let {
|
||||
if (sliderInitX == 0.0F) {
|
||||
sliderInitX = it
|
||||
}
|
||||
}
|
||||
|
||||
val movedX: Float = event.x
|
||||
@ -1002,6 +1004,7 @@ class ChatController(args: Bundle) :
|
||||
adapter?.update(message)
|
||||
}
|
||||
|
||||
@Suppress("Detekt.TooGenericExceptionCaught")
|
||||
private fun initMediaPlayer(message: ChatMessage) {
|
||||
if (message != currentlyPlayedVoiceMessage) {
|
||||
currentlyPlayedVoiceMessage?.let { stopMediaPlayer(it) }
|
||||
@ -1010,15 +1013,22 @@ class ChatController(args: Bundle) :
|
||||
if (mediaPlayer == null) {
|
||||
val fileName = message.selectedIndividualHashMap!!["name"]
|
||||
val absolutePath = context.cacheDir.absolutePath + "/" + fileName
|
||||
mediaPlayer = MediaPlayer().apply {
|
||||
setDataSource(absolutePath)
|
||||
prepare()
|
||||
}
|
||||
currentlyPlayedVoiceMessage = message
|
||||
message.voiceMessageDuration = mediaPlayer!!.duration / VOICE_MESSAGE_SEEKBAR_BASE
|
||||
|
||||
mediaPlayer!!.setOnCompletionListener {
|
||||
stopMediaPlayer(message)
|
||||
try {
|
||||
mediaPlayer = MediaPlayer().apply {
|
||||
setDataSource(absolutePath)
|
||||
prepare()
|
||||
}
|
||||
|
||||
currentlyPlayedVoiceMessage = message
|
||||
message.voiceMessageDuration = mediaPlayer!!.duration / VOICE_MESSAGE_SEEKBAR_BASE
|
||||
|
||||
mediaPlayer!!.setOnCompletionListener {
|
||||
stopMediaPlayer(message)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
Log.e(TAG, "failed to initialize mediaPlayer", e)
|
||||
Toast.makeText(context, R.string.nc_common_error_sorry, Toast.LENGTH_LONG).show()
|
||||
}
|
||||
} else {
|
||||
Log.e(TAG, "mediaPlayer was not null. This should not happen!")
|
||||
@ -1034,9 +1044,18 @@ class ChatController(args: Bundle) :
|
||||
|
||||
mediaPlayerHandler.removeCallbacksAndMessages(null)
|
||||
|
||||
mediaPlayer?.stop()
|
||||
mediaPlayer?.release()
|
||||
mediaPlayer = null
|
||||
try {
|
||||
mediaPlayer?.let {
|
||||
if (it.isPlaying) {
|
||||
it.stop()
|
||||
}
|
||||
}
|
||||
} catch (e: IllegalStateException) {
|
||||
Log.e(TAG, "mediaPlayer was not initialized", e)
|
||||
} finally {
|
||||
mediaPlayer?.release()
|
||||
mediaPlayer = null
|
||||
}
|
||||
}
|
||||
|
||||
override fun updateMediaPlayerProgressBySlider(messageWithSlidedProgress: ChatMessage, progress: Int) {
|
||||
@ -2492,11 +2511,15 @@ class ChatController(args: Bundle) :
|
||||
|
||||
if (previousMessageId > NO_PREVIOUS_MESSAGE_ID) {
|
||||
chatMessage.previousMessageId = previousMessageId
|
||||
} else if (adapter?.isEmpty != true) {
|
||||
if (adapter!!.items[0].item is ChatMessage) {
|
||||
chatMessage.previousMessageId = (adapter!!.items[0].item as ChatMessage).jsonMessageId
|
||||
} else if (adapter!!.items.size > 1 && adapter!!.items[1].item is ChatMessage) {
|
||||
chatMessage.previousMessageId = (adapter!!.items[1].item as ChatMessage).jsonMessageId
|
||||
} else {
|
||||
adapter?.let {
|
||||
if (!it.isEmpty) {
|
||||
if (it.items[0].item is ChatMessage) {
|
||||
chatMessage.previousMessageId = (it.items[0].item as ChatMessage).jsonMessageId
|
||||
} else if (it.items.size > 1 && it.items[1].item is ChatMessage) {
|
||||
chatMessage.previousMessageId = (it.items[1].item as ChatMessage).jsonMessageId
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3420,6 +3443,7 @@ class ChatController(args: Bundle) :
|
||||
private const val VOICE_RECORD_CANCEL_SLIDER_X: Int = -50
|
||||
private const val VOICE_MESSAGE_META_DATA = "{\"messageType\":\"voice-message\"}"
|
||||
private const val VOICE_MESSAGE_FILE_SUFFIX = ".mp3"
|
||||
|
||||
// Samplingrate 22050 was chosen because somehow 44100 failed to playback on safari when recorded on android.
|
||||
// Please test with firefox, chrome, safari and mobile clients if changing anything regarding the sound.
|
||||
private const val VOICE_MESSAGE_SAMPLING_RATE = 22050
|
||||
|
@ -543,7 +543,7 @@ class ConversationInfoController(args: Bundle) :
|
||||
.java
|
||||
).setInputData(it).build()
|
||||
)
|
||||
popTwoLastControllers()
|
||||
router.popToRoot()
|
||||
}
|
||||
}
|
||||
|
||||
@ -613,16 +613,10 @@ class ConversationInfoController(args: Bundle) :
|
||||
DeleteConversationWorker::class.java
|
||||
).setInputData(it).build()
|
||||
)
|
||||
popTwoLastControllers()
|
||||
router.popToRoot()
|
||||
}
|
||||
}
|
||||
|
||||
private fun popTwoLastControllers() {
|
||||
var backstack = router.backstack
|
||||
backstack = backstack.subList(0, backstack.size - 2)
|
||||
router.setBackstack(backstack, HorizontalChangeHandler())
|
||||
}
|
||||
|
||||
private fun fetchRoomInfo() {
|
||||
var apiVersion = 1
|
||||
// FIXME Fix API checking with guests?
|
||||
|
@ -144,7 +144,7 @@ class LockedController : BaseController(R.layout.controller_locked) {
|
||||
"popCurrentController because 'we are authenticated'. backstacksize= " +
|
||||
router.backstack.size
|
||||
)
|
||||
router.popCurrentController()
|
||||
router.popToRoot()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -269,7 +269,7 @@ public class PeerConnectionWrapper {
|
||||
|
||||
public void sendChannelData(DataChannelMessage dataChannelMessage) {
|
||||
ByteBuffer buffer;
|
||||
if (dataChannel != null) {
|
||||
if (dataChannel != null && dataChannelMessage != null) {
|
||||
try {
|
||||
buffer = ByteBuffer.wrap(LoganSquare.serialize(dataChannelMessage).getBytes());
|
||||
dataChannel.send(new DataChannel.Buffer(buffer, false));
|
||||
|
Loading…
Reference in New Issue
Block a user