save unsent message when chat activity is interrupted and recover it
when user resumes the activity
This commit is contained in:
@@ -634,6 +634,7 @@ class BaresipService: Service() {
|
|||||||
var history = ArrayList<CallHistory>()
|
var history = ArrayList<CallHistory>()
|
||||||
var messages = ArrayList<Message>()
|
var messages = ArrayList<Message>()
|
||||||
var contacts = ArrayList<Contact>()
|
var contacts = ArrayList<Contact>()
|
||||||
|
var chatTexts: MutableMap<String, String> = mutableMapOf<String, String>()
|
||||||
|
|
||||||
var audioFocused = false
|
var audioFocused = false
|
||||||
var audioFocusRequest: AudioFocusRequest? = null
|
var audioFocusRequest: AudioFocusRequest? = null
|
||||||
|
|||||||
@@ -121,11 +121,13 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
Message.add(msg)
|
Message.add(msg)
|
||||||
chatMessages.add(msg)
|
chatMessages.add(msg)
|
||||||
mlAdapter.notifyDataSetChanged()
|
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.makeText(getApplicationContext(), "Sending of message failed!",
|
||||||
Toast.LENGTH_SHORT).show()
|
Toast.LENGTH_SHORT).show()
|
||||||
else
|
} else {
|
||||||
newMessage.text.clear()
|
newMessage.text.clear()
|
||||||
|
BaresipService.chatTexts.remove("$aor::$peerUri")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,10 +148,25 @@ class ChatActivity : AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause() {
|
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)
|
ChatsActivity.saveMessages(applicationContext.filesDir.absolutePath)
|
||||||
super.onPause()
|
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() {
|
override fun onDestroy() {
|
||||||
LocalBroadcastManager.getInstance(this).unregisterReceiver(messageResponseReceiver)
|
LocalBroadcastManager.getInstance(this).unregisterReceiver(messageResponseReceiver)
|
||||||
super.onDestroy()
|
super.onDestroy()
|
||||||
|
|||||||
@@ -162,7 +162,6 @@ class ChatsActivity: AppCompatActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||||
Log.d("Baresip", "onActivityResult $requestCode $resultCode")
|
|
||||||
if ((requestCode == MainActivity.MESSAGE_CODE) && (resultCode == Activity.RESULT_OK)) {
|
if ((requestCode == MainActivity.MESSAGE_CODE) && (resultCode == Activity.RESULT_OK)) {
|
||||||
clAdapter.clear()
|
clAdapter.clear()
|
||||||
uaMessages = uaMessages(aor)
|
uaMessages = uaMessages(aor)
|
||||||
|
|||||||
Reference in New Issue
Block a user