Skip to content

Commit ed01b3a

Browse files
authored
Merge pull request #5395 from nextcloud/feature/3074/improveThreads8
open threads via notification
2 parents 99e995b + 63e06c8 commit ed01b3a

3 files changed

Lines changed: 15 additions & 2 deletions

File tree

app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_FILE_PATHS
205205
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_INTERNAL_USER_ID
206206
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_BREAKOUT_ROOM
207207
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_MODERATOR
208+
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_OPENED_VIA_NOTIFICATION
208209
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_RECORDING_STATE
209210
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
210211
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_START_CALL_AFTER_ROOM_SWITCH
@@ -367,6 +368,7 @@ class ChatActivity :
367368
var sessionIdAfterRoomJoined: String? = null
368369
lateinit var roomToken: String
369370
var conversationThreadId: Long? = null
371+
var openedViaNotification: Boolean = false
370372
var conversationThreadInfo: ThreadInfo? = null
371373
var conversationUser: User? = null
372374
lateinit var spreedCapabilities: SpreedCapability
@@ -409,12 +411,11 @@ class ChatActivity :
409411

410412
private val onBackPressedCallback = object : OnBackPressedCallback(true) {
411413
override fun handleOnBackPressed() {
412-
if (isChatThread()) {
414+
if (!openedViaNotification && isChatThread()) {
413415
isEnabled = false
414416
onBackPressedDispatcher.onBackPressed()
415417
} else {
416418
val intent = Intent(this@ChatActivity, ConversationsListActivity::class.java)
417-
intent.putExtras(Bundle())
418419
startActivity(intent)
419420
}
420421
}
@@ -595,6 +596,8 @@ class ChatActivity :
595596
null
596597
}
597598

599+
openedViaNotification = extras?.getBoolean(KEY_OPENED_VIA_NOTIFICATION) ?: false
600+
598601
sharedText = extras?.getString(BundleKeys.KEY_SHARED_TEXT).orEmpty()
599602

600603
Log.d(TAG, " roomToken = $roomToken")

app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_ONE_TO_ONE
8585
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_ROOM_TOKEN
8686
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SHARE_RECORDING_TO_CHAT_URL
8787
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_SYSTEM_NOTIFICATION_ID
88+
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_THREAD_ID
89+
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_OPENED_VIA_NOTIFICATION
8890
import com.nextcloud.talk.utils.preferences.AppPreferences
8991
import io.reactivex.Observable
9092
import io.reactivex.Observer
@@ -397,6 +399,10 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
397399
val ncNotification = notificationOverall.ocs!!.notification
398400
if (ncNotification != null) {
399401
enrichPushMessageByNcNotificationData(ncNotification)
402+
403+
val threadId = parseThreadId(ncNotification.objectId)
404+
threadId?.let { intent.putExtra(KEY_THREAD_ID, it) }
405+
400406
showNotification(intent, ncNotification)
401407
}
402408
}
@@ -827,6 +833,8 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
827833
}
828834
}
829835

836+
private fun parseThreadId(objectId: String?): Long? = objectId?.split("/")?.getOrNull(2)?.toLongOrNull()
837+
830838
private fun sendNotification(notificationId: Int, notification: Notification) {
831839
Log.d(TAG, "show notification with id $notificationId")
832840
if (ActivityCompat.checkSelfPermission(
@@ -982,6 +990,7 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
982990
val bundle = Bundle()
983991
bundle.putString(KEY_ROOM_TOKEN, pushMessage.id)
984992
bundle.putLong(KEY_INTERNAL_USER_ID, signatureVerification.user!!.id!!)
993+
bundle.putBoolean(KEY_OPENED_VIA_NOTIFICATION, true)
985994
intent.putExtras(bundle)
986995
return intent
987996
}

app/src/main/java/com/nextcloud/talk/utils/bundle/BundleKeys.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,5 @@ object BundleKeys {
8484
const val KEY_FOCUS_INPUT: String = "KEY_FOCUS_INPUT"
8585
const val KEY_THREAD_ID = "KEY_THREAD_ID"
8686
const val KEY_FROM_QR: String = "KEY_FROM_QR"
87+
const val KEY_OPENED_VIA_NOTIFICATION: String = "KEY_OPENED_VIA_NOTIFICATION"
8788
}

0 commit comments

Comments
 (0)