Notification: display rooms and users' avatars

This commit is contained in:
Benoit Marty 2019-06-25 16:52:34 +02:00
parent 4f0ed402bf
commit 5a1242109d
3 changed files with 22 additions and 32 deletions

View File

@ -16,17 +16,11 @@

package im.vector.riotredesign

import android.app.AlarmManager
import android.app.Application
import android.app.PendingIntent
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import android.content.ServiceConnection
import android.content.res.Configuration
import android.os.Handler
import android.os.HandlerThread
import android.os.IBinder
import androidx.core.provider.FontRequest
import androidx.core.provider.FontsContractCompat
import androidx.lifecycle.Lifecycle
@ -41,14 +35,13 @@ import com.github.piasy.biv.BigImageViewer
import com.github.piasy.biv.loader.glide.GlideImageLoader
import com.jakewharton.threetenabp.AndroidThreeTen
import im.vector.matrix.android.api.Matrix
import im.vector.matrix.android.internal.session.sync.job.SyncService
import im.vector.riotredesign.core.di.AppModule
import im.vector.riotredesign.core.services.AlarmSyncBroadcastReceiver
import im.vector.riotredesign.core.services.VectorSyncService
import im.vector.riotredesign.features.configuration.VectorConfiguration
import im.vector.riotredesign.features.crypto.keysbackup.KeysBackupModule
import im.vector.riotredesign.features.home.HomeModule
import im.vector.riotredesign.features.lifecycle.VectorActivityLifecycleCallbacks
import im.vector.riotredesign.features.notifications.NotificationDrawerManager
import im.vector.riotredesign.features.notifications.NotificationUtils
import im.vector.riotredesign.features.notifications.PushRuleTriggerListener
import im.vector.riotredesign.features.rageshake.VectorFileLogger
@ -64,7 +57,6 @@ import org.koin.standalone.StandAloneContext.startKoin
import timber.log.Timber
import java.text.SimpleDateFormat
import java.util.*
import java.util.concurrent.TimeUnit

class VectorApplication : Application() {

@ -75,6 +67,8 @@ class VectorApplication : Application() {

val vectorConfiguration: VectorConfiguration by inject()

private val notificationDrawerManager by inject<NotificationDrawerManager>()

// var slowMode = false


@ -131,7 +125,9 @@ class VectorApplication : Application() {

@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
fun entersBackground() {
Timber.i("App entered background")
Timber.i("App entered background") // call persistInfo

notificationDrawerManager.persistInfo()

if (FcmHelper.isPushSupported()) {
//TODO FCM fallback

View File

@ -17,6 +17,7 @@ package im.vector.riotredesign.features.notifications

import androidx.core.app.NotificationCompat
import im.vector.matrix.android.api.session.Session
import im.vector.matrix.android.api.session.content.ContentUrlResolver
import im.vector.matrix.android.api.session.events.model.Event
import im.vector.matrix.android.api.session.events.model.EventType
import im.vector.matrix.android.api.session.events.model.toModel
@ -36,8 +37,8 @@ import timber.log.Timber
* The NotifiableEventResolver is the only aware of session/store, the NotificationDrawerManager has no knowledge of that,
* this pattern allow decoupling between the object responsible of displaying notifications and the matrix sdk.
*/
class NotifiableEventResolver(val stringProvider: StringProvider,
val noticeEventFormatter: NoticeEventFormatter) {
class NotifiableEventResolver(private val stringProvider: StringProvider,
private val noticeEventFormatter: NoticeEventFormatter) {

//private val eventDisplay = RiotEventDisplay(context)

@ -132,26 +133,19 @@ class NotifiableEventResolver(val stringProvider: StringProvider,
notifiableEvent.matrixID = session.sessionParams.credentials.userId
notifiableEvent.soundName = null

//TODO get the avatar?
// Get the avatars URL
// TODO They will be not displayed the first time (known limitation)
notifiableEvent.roomAvatarPath = session.contentUrlResolver()
.resolveThumbnail(room.roomSummary?.avatarUrl,
250,
250,
ContentUrlResolver.ThumbnailMethod.SCALE)

// val roomAvatarPath = session.mediaCache?.thumbnailCacheFile(room.avatarUrl, 50)
// if (roomAvatarPath != null) {
// notifiableEvent.roomAvatarPath = roomAvatarPath.path
// } else {
// // prepare for the next time
// session.mediaCache?.loadAvatarThumbnail(session.homeServerConfig, ImageView(context), room.avatarUrl, 50)
// }
//
// room.state.getMember(event.sender)?.avatarUrl?.let {
// val size = context.resources.getDimensionPixelSize(R.dimen.profile_avatar_size)
// val userAvatarUrlPath = session.mediaCache?.thumbnailCacheFile(it, size)
// if (userAvatarUrlPath != null) {
// notifiableEvent.senderAvatarPath = userAvatarUrlPath.path
// } else {
// // prepare for the next time
// session.mediaCache?.loadAvatarThumbnail(session.homeServerConfig, ImageView(context), it, size)
// }
// }
notifiableEvent.senderAvatarPath = session.contentUrlResolver()
.resolveThumbnail(event.senderAvatar,
250,
250,
ContentUrlResolver.ThumbnailMethod.SCALE)

return notifiableEvent
}

View File

@ -40,7 +40,7 @@ class NotificationBroadcastReceiver : BroadcastReceiver(), KoinComponent {
override fun onReceive(context: Context?, intent: Intent?) {
if (intent == null || context == null) return

Timber.v("ReplyNotificationBroadcastReceiver received : $intent")
Timber.v("NotificationBroadcastReceiver received : $intent")

when (intent.action) {
NotificationUtils.SMART_REPLY_ACTION ->