diff --git a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt index 4ba122bf..196ad66a 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/BaresipService.kt @@ -634,6 +634,7 @@ class BaresipService: Service() { var history = ArrayList() var messages = ArrayList() var contacts = ArrayList() + var chatTexts: MutableMap = mutableMapOf() var audioFocused = false var audioFocusRequest: AudioFocusRequest? = null diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt index 65eb7d5d..bf27c71c 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatActivity.kt @@ -117,15 +117,17 @@ class ChatActivity : AppCompatActivity() { if (msgText.length > 0) { imm.hideSoftInputFromWindow(newMessage.windowToken, 0) val time = System.currentTimeMillis() - val msg = Message(aor, peerUri, R.drawable.arrow_up_yellow, msgText, time,true) + val msg = Message(aor, peerUri, R.drawable.arrow_up_yellow, msgText, time, true) Message.add(msg) chatMessages.add(msg) mlAdapter.notifyDataSetChanged() - if (Api.message_send(ua.uap, peerUri, msgText, time.toString()) != 0) + if (Api.message_send(ua.uap, peerUri, msgText, time.toString()) != 0) { Toast.makeText(getApplicationContext(), "Sending of message failed!", Toast.LENGTH_SHORT).show() - else + } else { newMessage.text.clear() + BaresipService.chatTexts.remove("$aor::$peerUri") + } } } @@ -146,10 +148,25 @@ class ChatActivity : AppCompatActivity() { } override fun onPause() { + if (newMessage.text.toString() != "") { + Log.d("Baresip", "Saving newMessage ${newMessage.text} for $aor::$peerUri") + BaresipService.chatTexts.put("$aor::$peerUri", newMessage.text.toString()) + } ChatsActivity.saveMessages(applicationContext.filesDir.absolutePath) super.onPause() } + override fun onResume() { + val chatText = BaresipService.chatTexts.get("$aor::$peerUri") + if (chatText != null) { + Log.d("Baresip", "Restoring newMessage ${newMessage.text} for $aor::$peerUri") + newMessage.setText(chatText) + newMessage.requestFocus() + BaresipService.chatTexts.remove("$aor::$peerUri") + } + super.onResume() + } + override fun onDestroy() { LocalBroadcastManager.getInstance(this).unregisterReceiver(messageResponseReceiver) super.onDestroy() diff --git a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt index f5df3478..6f9c80c0 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/ChatsActivity.kt @@ -162,7 +162,6 @@ class ChatsActivity: AppCompatActivity() { } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { - Log.d("Baresip", "onActivityResult $requestCode $resultCode") if ((requestCode == MainActivity.MESSAGE_CODE) && (resultCode == Activity.RESULT_OK)) { clAdapter.clear() uaMessages = uaMessages(aor)