From 3ab2489fbda3c801da682c4b39be53e2dfed9bf9 Mon Sep 17 00:00:00 2001
From: Kamal Bramwell <kamal@elixxir.io>
Date: Mon, 19 Dec 2022 12:40:55 -0500
Subject: [PATCH] Added logic to rotate photos according to exif data

---
 .../xxlabs/messenger/media/MediaProviderActivity.kt  |  3 ++-
 .../messenger/ui/main/chat/ChatMessagesViewModel.kt  | 12 +++++++++---
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/app/src/main/java/io/xxlabs/messenger/media/MediaProviderActivity.kt b/app/src/main/java/io/xxlabs/messenger/media/MediaProviderActivity.kt
index ee6f5af5..989288f5 100644
--- a/app/src/main/java/io/xxlabs/messenger/media/MediaProviderActivity.kt
+++ b/app/src/main/java/io/xxlabs/messenger/media/MediaProviderActivity.kt
@@ -121,7 +121,8 @@ abstract class MediaProviderActivity :
     }
 
     private fun correctPhotoOrientation(image: Bitmap, uri: Uri) {
-        val ei = ExifInterface(uri.path!!)
+        val inputStream = contentResolver.openInputStream(uri) ?: return
+        val ei = ExifInterface(inputStream)
         val orientation = ei.getAttributeInt(
             ExifInterface.TAG_ORIENTATION,
             ExifInterface.ORIENTATION_UNDEFINED
diff --git a/app/src/main/java/io/xxlabs/messenger/ui/main/chat/ChatMessagesViewModel.kt b/app/src/main/java/io/xxlabs/messenger/ui/main/chat/ChatMessagesViewModel.kt
index b689e8de..1e63825b 100644
--- a/app/src/main/java/io/xxlabs/messenger/ui/main/chat/ChatMessagesViewModel.kt
+++ b/app/src/main/java/io/xxlabs/messenger/ui/main/chat/ChatMessagesViewModel.kt
@@ -25,7 +25,9 @@ import io.xxlabs.messenger.support.util.Utils
 import io.xxlabs.messenger.ui.dialog.info.InfoDialogUI
 import io.xxlabs.messenger.ui.main.chat.ChatMessagesUIController.Companion.ALL_MESSAGES
 import io.xxlabs.messenger.ui.main.chat.ChatMessagesUIController.Companion.MAX_REPLY_PREVIEW_LENGTH
+import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
 import timber.log.Timber
 import java.util.*
 
@@ -514,9 +516,13 @@ abstract class ChatMessagesViewModel<T: ChatMessage> (
     override fun getUserId() = preferences.getUserId()
 
     protected fun onMessageSent(resetMessageInput: Boolean = true) {
-        _beepEvent.value = true
-        _vibrateEvent.value = HapticFeedbackConstants.LONG_PRESS
-        if (resetMessageInput) resetMessageInput()
+        viewModelScope.launch {
+            withContext(Dispatchers.Main) {
+                _beepEvent.value = true
+                _vibrateEvent.value = HapticFeedbackConstants.LONG_PRESS
+                if (resetMessageInput) resetMessageInput()
+            }
+        }
     }
 
     protected open fun resetMessageInput() {
-- 
GitLab