Set shortcut ID to chat room notifications
This commit is contained in:
parent
e201977c00
commit
59b758e682
4 changed files with 25 additions and 6 deletions
|
@ -23,6 +23,7 @@ import androidx.lifecycle.MutableLiveData
|
||||||
import org.linphone.LinphoneApplication.Companion.coreContext
|
import org.linphone.LinphoneApplication.Companion.coreContext
|
||||||
import org.linphone.R
|
import org.linphone.R
|
||||||
import org.linphone.activities.main.viewmodels.ErrorReportingViewModel
|
import org.linphone.activities.main.viewmodels.ErrorReportingViewModel
|
||||||
|
import org.linphone.compatibility.Compatibility
|
||||||
import org.linphone.contact.ContactsUpdatedListenerStub
|
import org.linphone.contact.ContactsUpdatedListenerStub
|
||||||
import org.linphone.core.*
|
import org.linphone.core.*
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
@ -116,8 +117,11 @@ class ChatRoomsListViewModel : ErrorReportingViewModel() {
|
||||||
}
|
}
|
||||||
|
|
||||||
chatRoomsToDeleteCount = 1
|
chatRoomsToDeleteCount = 1
|
||||||
chatRoom?.addListener(chatRoomListener)
|
if (chatRoom != null) {
|
||||||
chatRoom?.core?.deleteChatRoom(chatRoom)
|
Compatibility.removeChatRoomShortcut(chatRoom)
|
||||||
|
chatRoom.addListener(chatRoomListener)
|
||||||
|
coreContext.core.deleteChatRoom(chatRoom)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun deleteChatRooms(chatRooms: ArrayList<ChatRoom>) {
|
fun deleteChatRooms(chatRooms: ArrayList<ChatRoom>) {
|
||||||
|
@ -127,6 +131,7 @@ class ChatRoomsListViewModel : ErrorReportingViewModel() {
|
||||||
LinphoneUtils.deleteFilesAttachedToEventLog(eventLog)
|
LinphoneUtils.deleteFilesAttachedToEventLog(eventLog)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Compatibility.removeChatRoomShortcut(chatRoom)
|
||||||
chatRoom.addListener(chatRoomListener)
|
chatRoom.addListener(chatRoomListener)
|
||||||
chatRoom.core?.deleteChatRoom(chatRoom)
|
chatRoom.core?.deleteChatRoom(chatRoom)
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,7 @@ import android.content.pm.PackageManager
|
||||||
import android.os.Vibrator
|
import android.os.Vibrator
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import androidx.core.app.NotificationManagerCompat
|
import androidx.core.app.NotificationManagerCompat
|
||||||
|
import org.linphone.core.ChatRoom
|
||||||
import org.linphone.core.Content
|
import org.linphone.core.Content
|
||||||
import org.linphone.mediastream.Version
|
import org.linphone.mediastream.Version
|
||||||
|
|
||||||
|
@ -109,6 +110,10 @@ class Compatibility {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun removeChatRoomShortcut(chatRoom: ChatRoom) {
|
||||||
|
// TODO Use removeLongLivedShortcuts() starting Android R (API 30)
|
||||||
|
}
|
||||||
|
|
||||||
fun addImageToMediaStore(context: Context, content: Content): Boolean {
|
fun addImageToMediaStore(context: Context, content: Content): Boolean {
|
||||||
if (Version.sdkAboveOrEqual(Version.API29_ANDROID_10)) {
|
if (Version.sdkAboveOrEqual(Version.API29_ANDROID_10)) {
|
||||||
return Api29Compatibility.addImageToMediaStore(context, content)
|
return Api29Compatibility.addImageToMediaStore(context, content)
|
||||||
|
|
|
@ -500,9 +500,11 @@ class NotificationsManager(private val context: Context) {
|
||||||
/* Chat related */
|
/* Chat related */
|
||||||
|
|
||||||
private fun displayChatNotifiable(room: ChatRoom, notifiable: Notifiable) {
|
private fun displayChatNotifiable(room: ChatRoom, notifiable: Notifiable) {
|
||||||
|
val localAddress = room.localAddress.asStringUriOnly()
|
||||||
|
val peerAddress = room.peerAddress.asStringUriOnly()
|
||||||
val args = Bundle()
|
val args = Bundle()
|
||||||
args.putString("RemoteSipUri", room.peerAddress.asStringUriOnly())
|
args.putString("RemoteSipUri", peerAddress)
|
||||||
args.putString("LocalSipUri", room.localAddress.asStringUriOnly())
|
args.putString("LocalSipUri", localAddress)
|
||||||
|
|
||||||
val pendingIntent = NavDeepLinkBuilder(context)
|
val pendingIntent = NavDeepLinkBuilder(context)
|
||||||
.setComponentName(MainActivity::class.java)
|
.setComponentName(MainActivity::class.java)
|
||||||
|
@ -511,7 +513,7 @@ class NotificationsManager(private val context: Context) {
|
||||||
.setArguments(args)
|
.setArguments(args)
|
||||||
.createPendingIntent()
|
.createPendingIntent()
|
||||||
|
|
||||||
val notification = createMessageNotification(notifiable, pendingIntent)
|
val notification = createMessageNotification(notifiable, pendingIntent, "$localAddress#$peerAddress")
|
||||||
if (notification != null) notify(notifiable.notificationId, notification)
|
if (notification != null) notify(notifiable.notificationId, notification)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -572,7 +574,11 @@ class NotificationsManager(private val context: Context) {
|
||||||
|
|
||||||
/* Notifications */
|
/* Notifications */
|
||||||
|
|
||||||
private fun createMessageNotification(notifiable: Notifiable, pendingIntent: PendingIntent): Notification? {
|
private fun createMessageNotification(
|
||||||
|
notifiable: Notifiable,
|
||||||
|
pendingIntent: PendingIntent,
|
||||||
|
shortcutId: String
|
||||||
|
): Notification? {
|
||||||
val me = Person.Builder().setName(notifiable.myself).build()
|
val me = Person.Builder().setName(notifiable.myself).build()
|
||||||
val style = NotificationCompat.MessagingStyle(me)
|
val style = NotificationCompat.MessagingStyle(me)
|
||||||
val largeIcon: Bitmap? = notifiable.messages.last().senderAvatar
|
val largeIcon: Bitmap? = notifiable.messages.last().senderAvatar
|
||||||
|
@ -613,6 +619,7 @@ class NotificationsManager(private val context: Context) {
|
||||||
.setColor(ContextCompat.getColor(context, R.color.primary_color))
|
.setColor(ContextCompat.getColor(context, R.color.primary_color))
|
||||||
.addAction(getReplyMessageAction(notifiable))
|
.addAction(getReplyMessageAction(notifiable))
|
||||||
.addAction(getMarkMessageAsReadAction(notifiable))
|
.addAction(getMarkMessageAsReadAction(notifiable))
|
||||||
|
.setShortcutId(shortcutId)
|
||||||
.build()
|
.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,7 @@ import org.linphone.core.Address
|
||||||
import org.linphone.core.ChatRoom
|
import org.linphone.core.ChatRoom
|
||||||
import org.linphone.core.ChatRoomCapabilities
|
import org.linphone.core.ChatRoomCapabilities
|
||||||
import org.linphone.core.tools.Log
|
import org.linphone.core.tools.Log
|
||||||
|
import org.linphone.mediastream.Version
|
||||||
|
|
||||||
@TargetApi(25)
|
@TargetApi(25)
|
||||||
class ShortcutsHelper(val context: Context) {
|
class ShortcutsHelper(val context: Context) {
|
||||||
|
@ -197,6 +198,7 @@ class ShortcutsHelper(val context: Context) {
|
||||||
.setPersons(persons)
|
.setPersons(persons)
|
||||||
.setCategories(categories)
|
.setCategories(categories)
|
||||||
.setIntent(intent)
|
.setIntent(intent)
|
||||||
|
.setLongLived(Version.sdkAboveOrEqual(30)) // TODO Use Android R API code
|
||||||
.build().toShortcutInfo()
|
.build().toShortcutInfo()
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
Log.e("[Shortcuts Helper] ShortcutInfo.Builder exception: $e")
|
Log.e("[Shortcuts Helper] ShortcutInfo.Builder exception: $e")
|
||||||
|
|
Loading…
Reference in a new issue