Skip to content
Snippets Groups Projects
Verified Commit e2d6689d authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Fixed notification handling

parent 3e880b85
Branches
No related tags found
No related merge requests found
Pipeline #
...@@ -60,9 +60,30 @@ class QuasselNotificationBackend @Inject constructor( ...@@ -60,9 +60,30 @@ class QuasselNotificationBackend @Inject constructor(
private val selfColor = context.getColorCompat(android.R.color.background_dark) private val selfColor = context.getColorCompat(android.R.color.background_dark)
override fun init(session: Session) { override fun init(session: Session) {
for (buffer in session.bufferSyncer.bufferInfos()) { val buffers = session.bufferSyncer.bufferInfos()
for (buffer in buffers) {
val lastSeenId = session.bufferSyncer.lastSeenMsg(buffer.bufferId) val lastSeenId = session.bufferSyncer.lastSeenMsg(buffer.bufferId)
database.notifications().markRead(buffer.bufferId, lastSeenId) database.notifications().markRead(buffer.bufferId, lastSeenId)
if (buffer.type.hasFlag(Buffer_Type.QueryBuffer)) {
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
)
} else {
if (session.bufferSyncer.highlightCount(buffer.bufferId) != 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()
)
}
}
} }
} }
......
...@@ -25,12 +25,32 @@ package de.kuschku.libquassel.quassel.syncables ...@@ -25,12 +25,32 @@ package de.kuschku.libquassel.quassel.syncables
import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.protocol.*
import de.kuschku.libquassel.quassel.syncables.interfaces.IBacklogManager import de.kuschku.libquassel.quassel.syncables.interfaces.IBacklogManager
import de.kuschku.libquassel.session.BacklogStorage import de.kuschku.libquassel.session.BacklogStorage
import de.kuschku.libquassel.session.NotificationManager
import de.kuschku.libquassel.session.Session import de.kuschku.libquassel.session.Session
import de.kuschku.libquassel.util.compatibility.LoggingHandler
import de.kuschku.libquassel.util.compatibility.LoggingHandler.Companion.log
class BacklogManager( class BacklogManager(
private val session: Session, private val session: Session,
private val notificationManager: NotificationManager?,
private val backlogStorage: BacklogStorage private val backlogStorage: BacklogStorage
) : SyncableObject(session, "BacklogManager"), IBacklogManager { ) : SyncableObject(session, "BacklogManager"), IBacklogManager {
override fun receiveBacklogFiltered(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int,
additional: Int, type: Int, flags: Int,
messages: QVariantList) {
log(LoggingHandler.LogLevel.ERROR, "DEBUG", "$messages")
val actualMessages = messages.mapNotNull { it.value<Message?>(null) }
log(LoggingHandler.LogLevel.ERROR, "DEBUG", "$actualMessages")
notificationManager?.processMessages(
session, *actualMessages.toTypedArray()
)
}
override fun receiveBacklogAllFiltered(first: MsgId, last: MsgId, limit: Int, additional: Int,
type: Int, flags: Int, messages: QVariantList) {
// TODO: Not implemented
}
init { init {
initialized = true initialized = true
} }
......
...@@ -26,6 +26,8 @@ import de.kuschku.libquassel.annotations.Slot ...@@ -26,6 +26,8 @@ import de.kuschku.libquassel.annotations.Slot
import de.kuschku.libquassel.annotations.Syncable import de.kuschku.libquassel.annotations.Syncable
import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.protocol.*
import de.kuschku.libquassel.protocol.Type import de.kuschku.libquassel.protocol.Type
import de.kuschku.libquassel.util.compatibility.LoggingHandler
import de.kuschku.libquassel.util.compatibility.LoggingHandler.Companion.log
@Syncable(name = "BacklogManager") @Syncable(name = "BacklogManager")
interface IBacklogManager : ISyncableObject { interface IBacklogManager : ISyncableObject {
...@@ -38,6 +40,20 @@ interface IBacklogManager : ISyncableObject { ...@@ -38,6 +40,20 @@ interface IBacklogManager : ISyncableObject {
) )
} }
@Slot
fun requestBacklogFiltered(bufferId: BufferId, first: MsgId = -1, last: MsgId = -1,
limit: Int = -1, additional: Int = 0, type: Int = -1,
flags: Int = -1) {
log(LoggingHandler.LogLevel.ERROR,
"DEBUG",
"bufferId: $bufferId, first: $first, last: $last, limit: $limit, additional: $additional, type: $type, flags: $flags")
REQUEST(
"requestBacklogFiltered", ARG(bufferId, QType.BufferId), ARG(first, QType.MsgId),
ARG(last, QType.MsgId), ARG(limit, Type.Int), ARG(additional, Type.Int), ARG(type, Type.Int),
ARG(flags, Type.Int)
)
}
@Slot @Slot
fun requestBacklogAll(first: MsgId = -1, last: MsgId = -1, limit: Int = -1, fun requestBacklogAll(first: MsgId = -1, last: MsgId = -1, limit: Int = -1,
additional: Int = 0) { additional: Int = 0) {
...@@ -47,14 +63,31 @@ interface IBacklogManager : ISyncableObject { ...@@ -47,14 +63,31 @@ interface IBacklogManager : ISyncableObject {
) )
} }
@Slot
fun requestBacklogAllFiltered(first: MsgId = -1, last: MsgId = -1, limit: Int = -1,
additional: Int = 0, type: Int = -1, flags: Int = -1) {
REQUEST(
"requestBacklogAllFiltered", ARG(first, QType.MsgId), ARG(last, QType.MsgId),
ARG(limit, Type.Int), ARG(additional, Type.Int), ARG(type, Type.Int), ARG(flags, Type.Int)
)
}
@Slot @Slot
fun receiveBacklog(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int, additional: Int, fun receiveBacklog(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int, additional: Int,
messages: QVariantList) messages: QVariantList)
@Slot
fun receiveBacklogFiltered(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int,
additional: Int, type: Int, flags: Int, messages: QVariantList)
@Slot @Slot
fun receiveBacklogAll(first: MsgId, last: MsgId, limit: Int, additional: Int, fun receiveBacklogAll(first: MsgId, last: MsgId, limit: Int, additional: Int,
messages: QVariantList) messages: QVariantList)
@Slot
fun receiveBacklogAllFiltered(first: MsgId, last: MsgId, limit: Int, additional: Int,
type: Int, flags: Int, messages: QVariantList)
@Slot @Slot
override fun update(properties: QVariantMap) { override fun update(properties: QVariantMap) {
super.update(properties) super.update(properties)
......
...@@ -65,7 +65,7 @@ class Session( ...@@ -65,7 +65,7 @@ class Session(
override val error = _error.toFlowable(BackpressureStrategy.BUFFER) override val error = _error.toFlowable(BackpressureStrategy.BUFFER)
override val aliasManager = AliasManager(this) override val aliasManager = AliasManager(this)
override val backlogManager = BacklogManager(this, backlogStorage) override val backlogManager = BacklogManager(this, notificationManager, backlogStorage)
override val bufferViewManager = BufferViewManager(this) override val bufferViewManager = BufferViewManager(this)
override val bufferSyncer = BufferSyncer(this, notificationManager) override val bufferSyncer = BufferSyncer(this, notificationManager)
override val certManagers = mutableMapOf<IdentityId, CertManager>() override val certManagers = mutableMapOf<IdentityId, CertManager>()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment