WIP. open chat when share recording to chat (fails atm)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2023-02-24 16:11:49 +01:00
parent 36de155c44
commit ed96d53049
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
2 changed files with 25 additions and 0 deletions

View File

@ -691,6 +691,8 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
val shareRecordingIntent = Intent(context, ShareRecordingToChatReceiver::class.java) val shareRecordingIntent = Intent(context, ShareRecordingToChatReceiver::class.java)
shareRecordingIntent.putExtra(KEY_SYSTEM_NOTIFICATION_ID, systemNotificationId) shareRecordingIntent.putExtra(KEY_SYSTEM_NOTIFICATION_ID, systemNotificationId)
shareRecordingIntent.putExtra(KEY_SHARE_RECORDING_TO_CHAT_URL, shareToChatUrl) shareRecordingIntent.putExtra(KEY_SHARE_RECORDING_TO_CHAT_URL, shareToChatUrl)
shareRecordingIntent.putExtra(KEY_ROOM_TOKEN, pushMessage.id)
shareRecordingIntent.putExtra(KEY_USER_ENTITY, signatureVerification.user)
val intentFlag: Int = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { val intentFlag: Int = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT

View File

@ -24,8 +24,10 @@ import android.app.NotificationManager
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle
import android.util.Log import android.util.Log
import autodagger.AutoInjector import autodagger.AutoInjector
import com.nextcloud.talk.activities.MainActivity
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
@ -54,6 +56,8 @@ class ShareRecordingToChatReceiver : BroadcastReceiver() {
lateinit var currentUser: User lateinit var currentUser: User
private var systemNotificationId: Int? = null private var systemNotificationId: Int? = null
private var link: String? = null private var link: String? = null
var roomToken: String? = null
var conversationOfShareTarget: User? = null
init { init {
NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this) NextcloudTalkApplication.sharedApplication!!.componentApplication.inject(this)
@ -67,6 +71,9 @@ class ShareRecordingToChatReceiver : BroadcastReceiver() {
systemNotificationId = intent!!.getIntExtra(KEY_SYSTEM_NOTIFICATION_ID, 0) systemNotificationId = intent!!.getIntExtra(KEY_SYSTEM_NOTIFICATION_ID, 0)
link = intent.getStringExtra(BundleKeys.KEY_SHARE_RECORDING_TO_CHAT_URL) link = intent.getStringExtra(BundleKeys.KEY_SHARE_RECORDING_TO_CHAT_URL)
roomToken = intent.getStringExtra(BundleKeys.KEY_ROOM_TOKEN)
conversationOfShareTarget = intent.getParcelableExtra<User>(BundleKeys.KEY_USER_ENTITY)
val id = intent.getLongExtra(KEY_INTERNAL_USER_ID, userManager.currentUser.blockingGet().id!!) val id = intent.getLongExtra(KEY_INTERNAL_USER_ID, userManager.currentUser.blockingGet().id!!)
currentUser = userManager.getUserWithId(id).blockingGet() currentUser = userManager.getUserWithId(id).blockingGet()
@ -86,6 +93,7 @@ class ShareRecordingToChatReceiver : BroadcastReceiver() {
override fun onNext(genericOverall: GenericOverall) { override fun onNext(genericOverall: GenericOverall) {
cancelNotification(systemNotificationId!!) cancelNotification(systemNotificationId!!)
context.startActivity(createOpenChatIntent())
} }
override fun onError(e: Throwable) { override fun onError(e: Throwable) {
@ -98,6 +106,21 @@ class ShareRecordingToChatReceiver : BroadcastReceiver() {
}) })
} }
private fun createOpenChatIntent(): Intent {
val intent = Intent(context, MainActivity::class.java)
// intent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_NEW_TASK
intent.addFlags(
Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_SINGLE_TOP
)
val bundle = Bundle()
bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomToken)
bundle.putParcelable(BundleKeys.KEY_USER_ENTITY, conversationOfShareTarget)
bundle.putBoolean(BundleKeys.KEY_FROM_NOTIFICATION_START_CALL, false)
intent.putExtras(bundle)
return intent
}
private fun cancelNotification(notificationId: Int) { private fun cancelNotification(notificationId: Int) {
val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notificationManager = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.cancel(notificationId) notificationManager.cancel(notificationId)