Pārlūkot izejas kodu

Merge pull request #2193 from nextcloud/bugfix/2180/notificationUser

Read matching user context
Andy Scherzinger 2 gadi atpakaļ
vecāks
revīzija
5423ed231f

+ 1 - 0
app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java

@@ -426,6 +426,7 @@ public class NotificationWorker extends Worker {
 
         // NOTE - systemNotificationId is an internal ID used on the device only.
         // It is NOT the same as the notification ID used in communication with the server.
+        actualIntent.putExtra(BundleKeys.INSTANCE.getKEY_INTERNAL_USER_ID(), Objects.requireNonNull(signatureVerification.getUserEntity()).getId());
         actualIntent.putExtra(BundleKeys.INSTANCE.getKEY_SYSTEM_NOTIFICATION_ID(), systemNotificationId);
         actualIntent.putExtra(BundleKeys.INSTANCE.getKEY_ROOM_TOKEN(), decryptedPushMessage.getId());
 

+ 7 - 6
app/src/main/java/com/nextcloud/talk/receivers/DirectReplyReceiver.kt

@@ -42,6 +42,7 @@ import com.nextcloud.talk.models.database.UserEntity
 import com.nextcloud.talk.models.json.generic.GenericOverall
 import com.nextcloud.talk.utils.ApiUtils
 import com.nextcloud.talk.utils.NotificationUtils
+import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
 import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SYSTEM_NOTIFICATION_ID
 import com.nextcloud.talk.utils.database.user.UserUtils
@@ -55,12 +56,10 @@ import javax.inject.Inject
 class DirectReplyReceiver : BroadcastReceiver() {
 
     @Inject
-    @JvmField
-    var userUtils: UserUtils? = null
+    lateinit var userUtils: UserUtils
 
     @Inject
-    @JvmField
-    var ncApi: NcApi? = null
+    lateinit var ncApi: NcApi
 
     lateinit var context: Context
     lateinit var currentUser: UserEntity
@@ -74,13 +73,15 @@ class DirectReplyReceiver : BroadcastReceiver() {
 
     override fun onReceive(receiveContext: Context, intent: Intent?) {
         context = receiveContext
-        currentUser = userUtils!!.currentUser!!
 
         // NOTE - systemNotificationId is an internal ID used on the device only.
         // It is NOT the same as the notification ID used in communication with the server.
         systemNotificationId = intent!!.getIntExtra(KEY_SYSTEM_NOTIFICATION_ID, 0)
         roomToken = intent.getStringExtra(KEY_ROOM_TOKEN)
 
+        val id = intent.getLongExtra(KEY_INTERNAL_USER_ID, userUtils.currentUser!!.id)
+        currentUser = userUtils.getUserWithId(id)
+
         replyMessage = getMessageText(intent)
         sendDirectReply()
     }
@@ -94,7 +95,7 @@ class DirectReplyReceiver : BroadcastReceiver() {
         val apiVersion = ApiUtils.getChatApiVersion(currentUser, intArrayOf(1))
         val url = ApiUtils.getUrlForChat(apiVersion, currentUser.baseUrl, roomToken)
 
-        ncApi!!.sendChatMessage(credentials, url, replyMessage, currentUser.displayName, null, false)
+        ncApi.sendChatMessage(credentials, url, replyMessage, currentUser.displayName, null, false)
             ?.subscribeOn(Schedulers.io())
             ?.observeOn(AndroidSchedulers.mainThread())
             ?.subscribe(object : Observer<GenericOverall> {