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
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -60,9 +60,30 @@ class QuasselNotificationBackend @Inject constructor(
private val selfColor = context.getColorCompat(android.R.color.background_dark)
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)
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
import de.kuschku.libquassel.protocol.*
import de.kuschku.libquassel.quassel.syncables.interfaces.IBacklogManager
import de.kuschku.libquassel.session.BacklogStorage
import de.kuschku.libquassel.session.NotificationManager
import de.kuschku.libquassel.session.Session
import de.kuschku.libquassel.util.compatibility.LoggingHandler
import de.kuschku.libquassel.util.compatibility.LoggingHandler.Companion.log
class BacklogManager(
private val session: Session,
private val notificationManager: NotificationManager?,
private val backlogStorage: BacklogStorage
) : 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 {
initialized = true
}
......
......@@ -26,6 +26,8 @@ import de.kuschku.libquassel.annotations.Slot
import de.kuschku.libquassel.annotations.Syncable
import de.kuschku.libquassel.protocol.*
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")
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
fun requestBacklogAll(first: MsgId = -1, last: MsgId = -1, limit: Int = -1,
additional: Int = 0) {
......@@ -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
fun receiveBacklog(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int, additional: Int,
messages: QVariantList)
@Slot
fun receiveBacklogFiltered(bufferId: BufferId, first: MsgId, last: MsgId, limit: Int,
additional: Int, type: Int, flags: Int, messages: QVariantList)
@Slot
fun receiveBacklogAll(first: MsgId, last: MsgId, limit: Int, additional: Int,
messages: QVariantList)
@Slot
fun receiveBacklogAllFiltered(first: MsgId, last: MsgId, limit: Int, additional: Int,
type: Int, flags: Int, messages: QVariantList)
@Slot
override fun update(properties: QVariantMap) {
super.update(properties)
......
......@@ -65,7 +65,7 @@ class Session(
override val error = _error.toFlowable(BackpressureStrategy.BUFFER)
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 bufferSyncer = BufferSyncer(this, notificationManager)
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