diff --git a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt index 588358ffcb634953c5babe22f309c264a7a57f2c..0c14dc7e44d3b46da742f1c893bd929f2242492b 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/service/QuasselNotificationBackend.kt @@ -24,6 +24,7 @@ import android.support.annotation.ColorInt import android.text.SpannableStringBuilder import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.quassel.BufferInfo +import de.kuschku.libquassel.quassel.ExtendedFeature import de.kuschku.libquassel.quassel.syncables.IgnoreListManager import de.kuschku.libquassel.session.NotificationManager import de.kuschku.libquassel.session.Session @@ -80,43 +81,49 @@ class QuasselNotificationBackend @Inject constructor( } override fun init(session: Session) { - val buffers = session.bufferSyncer.bufferInfos() - for (buffer in buffers) { - val lastSeenId = session.bufferSyncer.lastSeenMsg(buffer.bufferId) - database.notifications().markRead(buffer.bufferId, lastSeenId) + if (session.features.negotiated.hasFeature(ExtendedFeature.BacklogFilterType)) { + val buffers = session.bufferSyncer.bufferInfos() + for (buffer in buffers) { + val lastSeenId = session.bufferSyncer.lastSeenMsg(buffer.bufferId) + database.notifications().markRead(buffer.bufferId, lastSeenId) - val level = buffer.type.let { - when { - it hasFlag Buffer_Type.QueryBuffer -> notificationSettings.query - it hasFlag Buffer_Type.ChannelBuffer -> notificationSettings.channel - else -> notificationSettings.other + val level = buffer.type.let { + when { + it hasFlag Buffer_Type.QueryBuffer -> notificationSettings.query + it hasFlag Buffer_Type.ChannelBuffer -> notificationSettings.channel + else -> notificationSettings.other + } } - } - when (level) { - NotificationSettings.Level.ALL -> { - val activity = session.bufferSyncer.activity(buffer.bufferId) - if (activity.hasFlag(Message_Type.Plain) || - activity.hasFlag(Message_Type.Action) || - activity.hasFlag(Message_Type.Notice)) - session.backlogManager.requestBacklogFiltered( - buffer.bufferId, lastSeenId, -1, 20, 0, - Message_Type.of(Message_Type.Plain, Message_Type.Action, Message_Type.Notice).toInt(), - 0 - ) - } - NotificationSettings.Level.HIGHLIGHT -> { - val highlightCount = session.bufferSyncer.highlightCount(buffer.bufferId) - if (highlightCount != 0) { - session.backlogManager.requestBacklogFiltered( - buffer.bufferId, lastSeenId, -1, 20, 0, - Message_Type.of(Message_Type.Plain, Message_Type.Action, Message_Type.Notice).toInt(), - Message_Flag.of(Message_Flag.Highlight).toInt() - ) + when (level) { + NotificationSettings.Level.ALL -> { + val activity = session.bufferSyncer.activity(buffer.bufferId) + if (activity.hasFlag(Message_Type.Plain) || + activity.hasFlag(Message_Type.Action) || + activity.hasFlag(Message_Type.Notice)) + session.backlogManager.requestBacklogFiltered( + buffer.bufferId, lastSeenId, -1, 20, 0, + Message_Type.of(Message_Type.Plain, + Message_Type.Action, + Message_Type.Notice).toInt(), + 0 + ) + } + NotificationSettings.Level.HIGHLIGHT -> { + val highlightCount = session.bufferSyncer.highlightCount(buffer.bufferId) + if (highlightCount != 0) { + session.backlogManager.requestBacklogFiltered( + buffer.bufferId, lastSeenId, -1, 20, 0, + Message_Type.of(Message_Type.Plain, + Message_Type.Action, + Message_Type.Notice).toInt(), + Message_Flag.of(Message_Flag.Highlight).toInt() + ) + } + } + NotificationSettings.Level.NONE -> { + // We don’t want notifications for this type of channel, so we won’t get any. } - } - NotificationSettings.Level.NONE -> { - // We don’t want notifications for this type of channel, so we won’t get any. } } } diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/ExtendedFeature.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/ExtendedFeature.kt index 92af6d3ce2bc2dd39036d91f14188a0469480267..b66b46da4d64d304a3ab24803c060e468d294979 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/ExtendedFeature.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/ExtendedFeature.kt @@ -50,6 +50,8 @@ enum class ExtendedFeature { LongMessageTime, /** Real Name and Avatar URL in backlog */ RichMessages, + /** Backlogmanager supports filtering backlog by messagetype */ + BacklogFilterType, /** 64-bit IDs for messages */ LongMessageId;