Merge pull request #3313 from AquaWolf/feature/conversations
Feature/conversations
This commit is contained in:
commit
4f51dbdcf9
|
@ -0,0 +1 @@
|
||||||
|
Priority conversations for Android 11+
|
|
@ -75,7 +75,11 @@ class ShortcutsHandler @Inject constructor(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ShortcutManagerCompat.removeAllDynamicShortcuts(context)
|
// according to Android documentation
|
||||||
|
// removeLongLivedShortcuts for API 29 and lower should behave like removeDynamicShortcuts(Context, List)
|
||||||
|
// getDynamicShortcuts: returns all dynamic shortcuts from the app.
|
||||||
|
val shortcuts = ShortcutManagerCompat.getDynamicShortcuts(context).map { it.id }
|
||||||
|
ShortcutManagerCompat.removeLongLivedShortcuts(context, shortcuts)
|
||||||
|
|
||||||
// We can only disabled pinned shortcuts with the API, but at least it will prevent the crash
|
// We can only disabled pinned shortcuts with the API, but at least it will prevent the crash
|
||||||
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {
|
if (ShortcutManagerCompat.isRequestPinShortcutSupported(context)) {
|
||||||
|
|
|
@ -17,17 +17,22 @@ package im.vector.app.features.notifications
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
|
import android.os.Build
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.HandlerThread
|
import android.os.HandlerThread
|
||||||
import androidx.annotation.WorkerThread
|
import androidx.annotation.WorkerThread
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import androidx.core.app.Person
|
import androidx.core.app.Person
|
||||||
|
import androidx.core.content.pm.ShortcutInfoCompat
|
||||||
|
import androidx.core.content.pm.ShortcutManagerCompat
|
||||||
|
import androidx.core.graphics.drawable.IconCompat
|
||||||
import im.vector.app.ActiveSessionDataSource
|
import im.vector.app.ActiveSessionDataSource
|
||||||
import im.vector.app.BuildConfig
|
import im.vector.app.BuildConfig
|
||||||
import im.vector.app.R
|
import im.vector.app.R
|
||||||
import im.vector.app.core.resources.StringProvider
|
import im.vector.app.core.resources.StringProvider
|
||||||
import im.vector.app.core.utils.FirstThrottler
|
import im.vector.app.core.utils.FirstThrottler
|
||||||
import im.vector.app.features.displayname.getBestName
|
import im.vector.app.features.displayname.getBestName
|
||||||
|
import im.vector.app.features.home.room.detail.RoomDetailActivity
|
||||||
import im.vector.app.features.invite.AutoAcceptInvites
|
import im.vector.app.features.invite.AutoAcceptInvites
|
||||||
import im.vector.app.features.settings.VectorPreferences
|
import im.vector.app.features.settings.VectorPreferences
|
||||||
import me.gujun.android.span.span
|
import me.gujun.android.span.span
|
||||||
|
@ -331,6 +336,19 @@ class NotificationDrawerManager @Inject constructor(private val context: Context
|
||||||
.setKey(event.senderId)
|
.setKey(event.senderId)
|
||||||
.build()
|
.build()
|
||||||
|
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||||||
|
val openRoomIntent = RoomDetailActivity.shortcutIntent(context, roomId)
|
||||||
|
|
||||||
|
val shortcut = ShortcutInfoCompat.Builder(context, roomId)
|
||||||
|
.setLongLived(true)
|
||||||
|
.setIntent(openRoomIntent)
|
||||||
|
.setShortLabel(roomName)
|
||||||
|
.setIcon(largeBitmap?.let { IconCompat.createWithAdaptiveBitmap(it) } ?: iconLoader.getUserIcon(event.senderAvatarPath))
|
||||||
|
.build()
|
||||||
|
|
||||||
|
ShortcutManagerCompat.pushDynamicShortcut(context, shortcut)
|
||||||
|
}
|
||||||
|
|
||||||
if (event.outGoingMessage && event.outGoingMessageFailed) {
|
if (event.outGoingMessage && event.outGoingMessageFailed) {
|
||||||
style.addMessage(stringProvider.getString(R.string.notification_inline_reply_failed), event.timestamp, senderPerson)
|
style.addMessage(stringProvider.getString(R.string.notification_inline_reply_failed), event.timestamp, senderPerson)
|
||||||
roomEventGroupInfo.hasSmartReplyError = true
|
roomEventGroupInfo.hasSmartReplyError = true
|
||||||
|
|
Loading…
Reference in New Issue