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