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

Implement sync fully

parent e3248afc
No related branches found
No related tags found
No related merge requests found
Showing
with 49 additions and 10 deletions
......@@ -15,4 +15,8 @@ import de.justjanne.libquassel.protocol.syncables.stubs.BacklogManagerStub
open class BacklogManager(
session: Session? = null
) : SyncableObject(session, "BacklogManager"), BacklogManagerStub
) : SyncableObject(session, "BacklogManager"), BacklogManagerStub {
init {
initialized = true
}
}
......@@ -28,6 +28,7 @@ import de.justjanne.libquassel.protocol.util.collections.pairs
import de.justjanne.libquassel.protocol.util.update
import de.justjanne.libquassel.protocol.variant.QVariantList
import de.justjanne.libquassel.protocol.variant.QVariantMap
import de.justjanne.libquassel.protocol.variant.QVariant_
import de.justjanne.libquassel.protocol.variant.into
import de.justjanne.libquassel.protocol.variant.qVariant
......@@ -107,6 +108,12 @@ open class BufferSyncer(
initialized = true
}
fun initializeBufferInfos(infos: List<BufferInfo>) {
state.update {
copy(bufferInfos = infos.associateBy(BufferInfo::bufferId))
}
}
fun lastSeenMsg(buffer: BufferId): MsgId = state().lastSeenMsg[buffer] ?: MsgId(0)
fun markerLine(buffer: BufferId): MsgId = state().markerLines[buffer] ?: MsgId(0)
......
......@@ -35,6 +35,10 @@ open class BufferViewConfig(
state: BufferViewConfigState
) : StatefulSyncableObject<BufferViewConfigState>(session, "BufferViewConfig", state),
BufferViewConfigStub {
init {
renameObject(state().identifier())
}
override fun fromVariantMap(properties: QVariantMap) {
state.update {
copy(
......
......@@ -33,6 +33,10 @@ open class CertManager(
state: CertManagerState
) : StatefulSyncableObject<CertManagerState>(session, "CertManager", state),
CertManagerStub {
init {
renameObject(state().identifier())
}
override fun fromVariantMap(properties: QVariantMap) {
val privateKeyPem = properties["sslKey"].into("")
val certPem = properties["sslCert"].into("")
......@@ -45,6 +49,7 @@ open class CertManager(
certificate = readCertificate(certPem)
)
}
renameObject(state().identifier())
initialized = true
}
......
......@@ -22,6 +22,7 @@ import de.justjanne.libquassel.protocol.variant.QVariant_
import de.justjanne.libquassel.protocol.variant.into
import de.justjanne.libquassel.protocol.variant.qVariant
import org.threeten.bp.Instant
import org.threeten.bp.ZoneOffset
open class CoreInfo(
session: Session? = null,
......@@ -37,7 +38,7 @@ open class CoreInfo(
versionDate = coreData["quasselBuildDate"].into("")
.toLongOrNull()
?.let(Instant::ofEpochSecond),
startTime = coreData["startTime"].into(startTime),
startTime = coreData["startTime"].into(startTime.atOffset(ZoneOffset.UTC)).toInstant(),
connectedClientCount = coreData["sessionConnectedClients"].into(connectedClientCount),
connectedClients = coreData["sessionConnectedClientData"].into<QVariantList>()
?.mapNotNull<QVariant_, QVariantMap>(QVariant_::into)
......
......@@ -15,4 +15,8 @@ import de.justjanne.libquassel.protocol.syncables.stubs.IrcListHelperStub
open class IrcListHelper(
session: Session? = null
) : SyncableObject(session, "IrcListHelper"), IrcListHelperStub
) : SyncableObject(session, "IrcListHelper"), IrcListHelperStub {
init {
initialized = true
}
}
......@@ -21,6 +21,8 @@ import de.justjanne.libquassel.protocol.variant.indexed
import de.justjanne.libquassel.protocol.variant.into
import de.justjanne.libquassel.protocol.variant.qVariant
import org.threeten.bp.Instant
import org.threeten.bp.OffsetDateTime
import org.threeten.bp.ZoneOffset
import org.threeten.bp.temporal.Temporal
open class IrcUser(
......@@ -45,11 +47,11 @@ open class IrcUser(
account = properties["account"].indexed(index).into(account),
away = properties["away"].indexed(index).into(away),
awayMessage = properties["awayMessage"].indexed(index).into(awayMessage),
idleTime = properties["idleTime"].indexed(index).into(idleTime),
loginTime = properties["loginTime"].indexed(index).into(loginTime),
idleTime = properties["idleTime"].indexed(index).into(idleTime.atOffset(ZoneOffset.UTC)).toInstant(),
loginTime = properties["loginTime"].indexed(index).into(loginTime.atOffset(ZoneOffset.UTC)).toInstant(),
server = properties["server"].indexed(index).into(server),
ircOperator = properties["ircOperator"].indexed(index).into(ircOperator),
lastAwayMessageTime = properties["lastAwayMessageTime"].indexed(index).into()
lastAwayMessageTime = properties["lastAwayMessageTime"].indexed(index).into<OffsetDateTime>()?.toInstant()
?: properties["lastAwayMessage"].indexed(index).into<Int>()?.toLong()
?.let(Instant::ofEpochSecond)
?: lastAwayMessageTime,
......
......@@ -30,4 +30,6 @@ data class BufferViewConfigState(
val buffers: List<BufferId> = emptyList(),
val removedBuffers: Set<BufferId> = emptySet(),
val hiddenBuffers: Set<BufferId> = emptySet(),
)
) {
fun identifier() = "$bufferViewId"
}
......@@ -19,4 +19,6 @@ data class CertManagerState(
val certificatePem: String = "",
val privateKey: PrivateKey? = null,
val certificate: Certificate? = null
)
) {
fun identifier() = "${identityId.id}"
}
......@@ -18,6 +18,8 @@ import de.justjanne.libquassel.protocol.serializers.PrimitiveSerializer
import de.justjanne.libquassel.protocol.util.reflect.instanceof
import de.justjanne.libquassel.protocol.util.reflect.subtype
import java.nio.ByteBuffer
import org.threeten.bp.Instant
import org.threeten.bp.ZoneOffset
/**
* Simple alias for a generic QVariant type
......
......@@ -9,7 +9,9 @@
package de.justjanne.libquassel.protocol.variant
import de.justjanne.libquassel.protocol.serializers.qt.StringSerializerUtf8
import de.justjanne.libquassel.protocol.util.collections.pairs
import java.nio.ByteBuffer
/**
* Simple alias for a generic QVariantList type
......@@ -19,7 +21,11 @@ typealias QVariantList = List<QVariant_>
/**
* Transform a QVariantList of interleaved keys and values into a QVariantMap
*/
fun QVariantList.toVariantMap(): QVariantMap =
fun QVariantList.toVariantMap(byteBuffer: Boolean = false): QVariantMap =
pairs { key, value ->
if (byteBuffer) {
Pair(StringSerializerUtf8.deserializeRaw(key.into<ByteBuffer>()), value)
} else {
Pair(key.into(""), value)
}
}.toMap()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment