save unsent message when chat activity is interrupted and recover it

when user resumes the activity
This commit is contained in:
Juha Heinanen
2018-12-01 06:27:40 +02:00
parent 4626967ae1
commit 3b8f52e7b1
3 changed files with 21 additions and 4 deletions

View File

@ -634,6 +634,7 @@ class BaresipService: Service() {
var history = ArrayList<CallHistory>()
var messages = ArrayList<Message>()
var contacts = ArrayList<Contact>()
var chatTexts: MutableMap<String, String> = mutableMapOf<String, String>()
var audioFocused = false
var audioFocusRequest: AudioFocusRequest? = null

View File

@ -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()

View File

@ -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)