diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt index 461dfd289c7e63ed2acecfba96d5f59f35d8ec6a..efd3ffea182c842107e4e29e6b66b97ac3f3756b 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/BufferViewConfig.kt @@ -65,17 +65,17 @@ class BufferViewConfig constructor( } override fun initSetProperties(properties: QVariantMap) { - setBufferViewName(properties["bufferViewName"].value(bufferViewName())) - setNetworkId(properties["networkId"].value(networkId())) + setBufferViewName(properties["bufferViewName"].valueOr(this::bufferViewName)) + setNetworkId(properties["networkId"].valueOr(this::networkId)) setAddNewBuffersAutomatically( - properties["addNewBuffersAutomatically"].value(addNewBuffersAutomatically())) - setSortAlphabetically(properties["sortAlphabetically"].value(sortAlphabetically())) - setHideInactiveBuffers(properties["hideInactiveBuffers"].value(hideInactiveBuffers())) - setHideInactiveNetworks(properties["hideInactiveNetworks"].value(hideInactiveNetworks())) - setDisableDecoration(properties["disableDecoration"].value(disableDecoration())) - setAllowedBufferTypes(properties["allowedBufferTypes"].value(allowedBufferTypes().toInt())) - setMinimumActivity(properties["minimumActivity"].value(minimumActivity().toInt())) - setShowSearch(properties["showSearch"].value(showSearch())) + properties["addNewBuffersAutomatically"].valueOr(this::addNewBuffersAutomatically)) + setSortAlphabetically(properties["sortAlphabetically"].valueOr(this::sortAlphabetically)) + setHideInactiveBuffers(properties["hideInactiveBuffers"].valueOr(this::hideInactiveBuffers)) + setHideInactiveNetworks(properties["hideInactiveNetworks"].valueOr(this::hideInactiveNetworks)) + setDisableDecoration(properties["disableDecoration"].valueOr(this::disableDecoration)) + setAllowedBufferTypes(properties["allowedBufferTypes"].valueOr { allowedBufferTypes().toInt() }) + setMinimumActivity(properties["minimumActivity"].valueOr { minimumActivity().toInt() }) + setShowSearch(properties["showSearch"].valueOr(this::showSearch)) } override fun addBuffer(bufferId: BufferId, pos: Int) { diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/DccConfig.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/DccConfig.kt index 369d0cc8130eb49a26831052060555f179a9f44c..9663599c22ce896337650a9f315a75abb7fd2cd2 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/DccConfig.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/DccConfig.kt @@ -44,25 +44,25 @@ class DccConfig constructor( override fun initSetProperties(properties: QVariantMap) { /// Whether DCC is enabled - setDccEnabled(properties["dccEnabled"].value(isDccEnabled())) + setDccEnabled(properties["dccEnabled"].valueOr(this::isDccEnabled)) /// The IP to use for outgoing traffic - setOutgoingIp(properties["outgoingIp"].value(outgoingIp())) + setOutgoingIp(properties["outgoingIp"].valueOr(this::outgoingIp)) /// The IP detection mode - setIpDetectionMode(properties["ipDetectionMode"].value(ipDetectionMode())) + setIpDetectionMode(properties["ipDetectionMode"].valueOr(this::ipDetectionMode)) /// The port range selection mode - setPortSelectionMode(properties["portSelectionMode"].value(portSelectionMode())) + setPortSelectionMode(properties["portSelectionMode"].valueOr(this::portSelectionMode)) /// Minimum port to use for incoming connections - setMinPort(properties["minPort"].value(minPort())) + setMinPort(properties["minPort"].valueOr(this::minPort)) /// Maximum port to use for incoming connections - setMaxPort(properties["maxPort"].value(maxPort())) + setMaxPort(properties["maxPort"].valueOr(this::maxPort)) /// The chunk size to be used - setChunkSize(properties["chunkSize"].value(chunkSize())) + setChunkSize(properties["chunkSize"].valueOr(this::chunkSize)) /// The timeout for DCC transfers - setSendTimeout(properties["sendTimeout"].value(sendTimeout())) + setSendTimeout(properties["sendTimeout"].valueOr(this::sendTimeout)) /// Whether passive (reverse) DCC should be used - setUsePassiveDcc(properties["usePassiveDcc"].value(usePassiveDcc())) + setUsePassiveDcc(properties["usePassiveDcc"].valueOr(this::usePassiveDcc)) /// Whether fast sending should be used - setUseFastSend(properties["useFastSend"].value(useFastSend())) + setUseFastSend(properties["useFastSend"].valueOr(this::useFastSend)) } override fun setDccEnabled(enabled: Boolean) { diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt index fe0f08215cf0bc77d3ccb4ef4293d031ea2ea80a..0275c6bb55c718f519d12a37f1f92adefb17b0ad 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Identity.kt @@ -41,24 +41,24 @@ class Identity constructor( override fun initSetProperties(properties: QVariantMap) { setId(properties["identityId"].value(id())) setIdentityName(properties["identityName"].value(identityName())) - setRealName(properties["realName"].value(realName())) - setNicks(properties["nicks"].value(nicks())) - setAwayNick(properties["awayNick"].value(awayNick())) - setAwayNickEnabled(properties["awayNickEnabled"].value(awayNickEnabled())) - setAwayReason(properties["awayReason"].value(awayReason())) - setAwayReasonEnabled(properties["awayReasonEnabled"].value(awayReasonEnabled())) - setAutoAwayEnabled(properties["autoAwayEnabled"].value(autoAwayEnabled())) - setAutoAwayTime(properties["autoAwayTime"].value(autoAwayTime())) - setAutoAwayReason(properties["autoAwayReason"].value(autoAwayReason())) - setAutoAwayReasonEnabled(properties["autoAwayReasonEnabled"].value(autoAwayReasonEnabled())) - setDetachAwayEnabled(properties["detachAwayEnabled"].value(detachAwayEnabled())) - setDetachAwayReason(properties["detachAwayReason"].value(detachAwayReason())) + setRealName(properties["realName"].valueOr(this::realName)) + setNicks(properties["nicks"].valueOr(this::nicks)) + setAwayNick(properties["awayNick"].valueOr(this::awayNick)) + setAwayNickEnabled(properties["awayNickEnabled"].valueOr(this::awayNickEnabled)) + setAwayReason(properties["awayReason"].valueOr(this::awayReason)) + setAwayReasonEnabled(properties["awayReasonEnabled"].valueOr(this::awayReasonEnabled)) + setAutoAwayEnabled(properties["autoAwayEnabled"].valueOr(this::autoAwayEnabled)) + setAutoAwayTime(properties["autoAwayTime"].valueOr(this::autoAwayTime)) + setAutoAwayReason(properties["autoAwayReason"].valueOr(this::autoAwayReason)) + setAutoAwayReasonEnabled(properties["autoAwayReasonEnabled"].valueOr(this::autoAwayReasonEnabled)) + setDetachAwayEnabled(properties["detachAwayEnabled"].valueOr(this::detachAwayEnabled)) + setDetachAwayReason(properties["detachAwayReason"].valueOr(this::detachAwayReason)) setDetachAwayReasonEnabled( - properties["detachAwayReasonEnabled"].value(detachAwayReasonEnabled())) - setIdent(properties["ident"].value(ident())) - setKickReason(properties["kickReason"].value(kickReason())) - setPartReason(properties["partReason"].value(partReason())) - setQuitReason(properties["quitReason"].value(quitReason())) + properties["detachAwayReasonEnabled"].valueOr(this::detachAwayReasonEnabled)) + setIdent(properties["ident"].valueOr(this::ident)) + setKickReason(properties["kickReason"].valueOr(this::kickReason)) + setPartReason(properties["partReason"].valueOr(this::partReason)) + setQuitReason(properties["quitReason"].valueOr(this::quitReason)) } fun id() = _identityId diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt index 9e714c7bff233625f0c7e5788f79f7b5ad066977..6db909a986b4e2449a3c462e3e23a20426a498f0 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcChannel.kt @@ -73,9 +73,9 @@ class IrcChannel( } override fun initSetProperties(properties: QVariantMap) { - setTopic(properties["topic"].value(topic())) - setPassword(properties["password"].value(password())) - setEncrypted(properties["encrypted"].value(encrypted())) + setTopic(properties["topic"].valueOr(this::topic)) + setPassword(properties["password"].valueOr(this::password)) + setEncrypted(properties["encrypted"].valueOr(this::encrypted)) } fun isKnownUser(ircUser: IrcUser): Boolean { diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt index 2362c0730f7dbb1431e5b71f5f96fa06748a47bc..68b3fc1396060db546162e49796a1aa917cd6e59 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IrcUser.kt @@ -43,23 +43,23 @@ class IrcUser( ) override fun initSetProperties(properties: QVariantMap) { - setUser(properties["user"].value(user())) - setHost(properties["host"].value(host())) - setNick(properties["nick"].value(nick())) - setRealName(properties["realName"].value(realName())) - setAccount(properties["account"].value(account())) - setAway(properties["away"].value(isAway())) - setAwayMessage(properties["awayMessage"].value(awayMessage())) - setIdleTime(properties["idleTime"].value(idleTime())) - setLoginTime(properties["loginTime"].value(loginTime())) - setServer(properties["server"].value(server())) - setIrcOperator(properties["ircOperator"].value(ircOperator())) - setLastAwayMessage(properties["lastAwayMessage"].value(lastAwayMessage())) - setWhoisServiceReply(properties["whoisServiceReply"].value(whoisServiceReply())) - setSuserHost(properties["suserHost"].value(suserHost())) - setEncrypted(properties["encrypted"].value(encrypted())) - - setUserModes(properties["userModes"].value(userModes())) + setUser(properties["user"].valueOr(this::user)) + setHost(properties["host"].valueOr(this::host)) + setNick(properties["nick"].valueOr(this::nick)) + setRealName(properties["realName"].valueOr(this::realName)) + setAccount(properties["account"].valueOr(this::account)) + setAway(properties["away"].valueOr(this::isAway)) + setAwayMessage(properties["awayMessage"].valueOr(this::awayMessage)) + setIdleTime(properties["idleTime"].valueOr(this::idleTime)) + setLoginTime(properties["loginTime"].valueOr(this::loginTime)) + setServer(properties["server"].valueOr(this::server)) + setIrcOperator(properties["ircOperator"].valueOr(this::ircOperator)) + setLastAwayMessage(properties["lastAwayMessage"].valueOr(this::lastAwayMessage)) + setWhoisServiceReply(properties["whoisServiceReply"].valueOr(this::whoisServiceReply)) + setSuserHost(properties["suserHost"].valueOr(this::suserHost)) + setEncrypted(properties["encrypted"].valueOr(this::encrypted)) + + setUserModes(properties["userModes"].valueOr(this::userModes)) } fun user() = _user @@ -113,7 +113,7 @@ class IrcUser( } override fun setNick(nick: String) { - if (nick.isNotBlank() && _nick != nick) { + if (nick.isNotEmpty() && _nick != nick) { _nick = nick updateObjectName() super.setNick(nick) diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt index f428b5d468803a3a099ad6f1f73220ef188b2686..c8c731fbf635cf11a31d9e533fdbbbf508f03538 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/Network.kt @@ -688,9 +688,12 @@ class Network constructor( "currentServer" to QVariant_(currentServer(), Type.QString), "myNick" to QVariant_(myNick(), Type.QString), "latency" to QVariant_(latency(), Type.Int), - "codecForServer" to QVariant_(codecForServer().serializeString(StringSerializer.UTF8), Type.QByteArray), - "codecForEncoding" to QVariant_(codecForEncoding().serializeString(StringSerializer.UTF8), Type.QByteArray), - "codecForDecoding" to QVariant_(codecForDecoding().serializeString(StringSerializer.UTF8), Type.QByteArray), + "codecForServer" to QVariant_(codecForServer().serializeString(StringSerializer.UTF8), + Type.QByteArray), + "codecForEncoding" to QVariant_(codecForEncoding().serializeString(StringSerializer.UTF8), + Type.QByteArray), + "codecForDecoding" to QVariant_(codecForDecoding().serializeString(StringSerializer.UTF8), + Type.QByteArray), "identityId" to QVariant_(identity(), QType.IdentityId), "isConnected" to QVariant_(isConnected(), Type.Bool), "connectionState" to QVariant_(connectionState(), Type.Int), @@ -759,34 +762,38 @@ class Network constructor( } override fun initSetProperties(properties: QVariantMap) { - setNetworkName(properties["networkName"].value(networkName())) - setCurrentServer(properties["currentServer"].value(currentServer())) - setMyNick(properties["myNick"].value(myNick())) - setLatency(properties["latency"].value(latency())) - setCodecForServer(properties["codecForServer"].value(codecForServer().serializeString(StringSerializer.UTF8))) - setCodecForEncoding(properties["codecForEncoding"].value(codecForEncoding().serializeString(StringSerializer.UTF8))) - setCodecForDecoding(properties["codecForDecoding"].value(codecForDecoding().serializeString(StringSerializer.UTF8))) - setIdentity(properties["identityId"].value(identity())) - setConnected(properties["isConnected"].value(isConnected())) + setNetworkName(properties["networkName"].valueOr(this::networkName)) + setCurrentServer(properties["currentServer"].valueOr(this::currentServer)) + setMyNick(properties["myNick"].valueOr(this::myNick)) + setLatency(properties["latency"].valueOr(this::latency)) + setCodecForServer( + properties["codecForServer"].value(codecForServer().serializeString(StringSerializer.UTF8))) + setCodecForEncoding(properties["codecForEncoding"].value( + codecForEncoding().serializeString(StringSerializer.UTF8))) + setCodecForDecoding(properties["codecForDecoding"].value( + codecForDecoding().serializeString(StringSerializer.UTF8))) + setIdentity(properties["identityId"].valueOr(this::identity)) + setConnected(properties["isConnected"].valueOr(this::isConnected)) setConnectionState(properties["connectionState"].value(connectionState().value)) - setUseRandomServer(properties["useRandomServer"].value(useRandomServer())) - setPerform(properties["perform"].value(perform())) - setUseAutoIdentify(properties["useAutoIdentify"].value(useAutoIdentify())) - setAutoIdentifyService(properties["autoIdentifyService"].value(autoIdentifyService())) - setAutoIdentifyPassword(properties["autoIdentifyPassword"].value(autoIdentifyPassword())) - setUseSasl(properties["useSasl"].value(useSasl())) - setSaslAccount(properties["saslAccount"].value(saslAccount())) - setSaslPassword(properties["saslPassword"].value(saslPassword())) - setUseAutoReconnect(properties["useAutoReconnect"].value(useAutoReconnect())) - setAutoReconnectInterval(properties["autoReconnectInterval"].value(autoReconnectInterval())) - setAutoReconnectRetries(properties["autoReconnectRetries"].value(autoReconnectRetries())) + setUseRandomServer(properties["useRandomServer"].valueOr(this::useRandomServer)) + setPerform(properties["perform"].valueOr(this::perform)) + setUseAutoIdentify(properties["useAutoIdentify"].valueOr(this::useAutoIdentify)) + setAutoIdentifyService(properties["autoIdentifyService"].valueOr(this::autoIdentifyService)) + setAutoIdentifyPassword(properties["autoIdentifyPassword"].valueOr(this::autoIdentifyPassword)) + setUseSasl(properties["useSasl"].valueOr(this::useSasl)) + setSaslAccount(properties["saslAccount"].valueOr(this::saslAccount)) + setSaslPassword(properties["saslPassword"].valueOr(this::saslPassword)) + setUseAutoReconnect(properties["useAutoReconnect"].valueOr(this::useAutoReconnect)) + setAutoReconnectInterval( + properties["autoReconnectInterval"].valueOr(this::autoReconnectInterval)) + setAutoReconnectRetries(properties["autoReconnectRetries"].valueOr(this::autoReconnectRetries)) setUnlimitedReconnectRetries( - properties["unlimitedReconnectRetries"].value(unlimitedReconnectRetries())) - setRejoinChannels(properties["rejoinChannels"].value(rejoinChannels())) - setUseCustomMessageRate(properties["useCustomMessageRate"].value(useCustomMessageRate())) - setMessageRateBurstSize(properties["msgRateBurstSize"].value(messageRateBurstSize())) - setMessageRateDelay(properties["msgRateMessageDelay"].value(messageRateDelay())) - setUnlimitedMessageRate(properties["unlimitedMessageRate"].value(unlimitedMessageRate())) + properties["unlimitedReconnectRetries"].valueOr(this::unlimitedReconnectRetries)) + setRejoinChannels(properties["rejoinChannels"].valueOr(this::rejoinChannels)) + setUseCustomMessageRate(properties["useCustomMessageRate"].valueOr(this::useCustomMessageRate)) + setMessageRateBurstSize(properties["msgRateBurstSize"].valueOr(this::messageRateBurstSize)) + setMessageRateDelay(properties["msgRateMessageDelay"].valueOr(this::messageRateDelay)) + setUnlimitedMessageRate(properties["unlimitedMessageRate"].valueOr(this::unlimitedMessageRate)) } fun updateNickFromMask(mask: String): IrcUser { diff --git a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt index 3edb35b57ac941600b5058f39e6860b61ee820af..eda892ee557dab142d55f75b9b4dde31a2d97a0b 100644 --- a/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt +++ b/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/NetworkConfig.kt @@ -3,7 +3,7 @@ package de.kuschku.libquassel.quassel.syncables import de.kuschku.libquassel.protocol.QVariantMap import de.kuschku.libquassel.protocol.QVariant_ import de.kuschku.libquassel.protocol.Type -import de.kuschku.libquassel.protocol.value +import de.kuschku.libquassel.protocol.valueOr import de.kuschku.libquassel.quassel.syncables.interfaces.INetworkConfig import de.kuschku.libquassel.session.SignalProxy @@ -32,14 +32,14 @@ class NetworkConfig constructor( ) override fun initSetProperties(properties: QVariantMap) { - setPingTimeoutEnabled(properties["pingTimeoutEnabled"].value(pingTimeoutEnabled())) - setPingInterval(properties["pingInterval"].value(pingInterval())) - setMaxPingCount(properties["maxPingCount"].value(maxPingCount())) - setAutoWhoEnabled(properties["autoWhoEnabled"].value(autoWhoEnabled())) - setAutoWhoInterval(properties["autoWhoInterval"].value(autoWhoInterval())) - setAutoWhoNickLimit(properties["autoWhoNickLimit"].value(autoWhoNickLimit())) - setAutoWhoDelay(properties["autoWhoDelay"].value(autoWhoDelay())) - setStandardCtcp(properties["standardCtcp"].value(standardCtcp())) + setPingTimeoutEnabled(properties["pingTimeoutEnabled"].valueOr(this::pingTimeoutEnabled)) + setPingInterval(properties["pingInterval"].valueOr(this::pingInterval)) + setMaxPingCount(properties["maxPingCount"].valueOr(this::maxPingCount)) + setAutoWhoEnabled(properties["autoWhoEnabled"].valueOr(this::autoWhoEnabled)) + setAutoWhoInterval(properties["autoWhoInterval"].valueOr(this::autoWhoInterval)) + setAutoWhoNickLimit(properties["autoWhoNickLimit"].valueOr(this::autoWhoNickLimit)) + setAutoWhoDelay(properties["autoWhoDelay"].valueOr(this::autoWhoDelay)) + setStandardCtcp(properties["standardCtcp"].valueOr(this::standardCtcp)) } fun pingTimeoutEnabled() = _pingTimeoutEnabled diff --git a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt index 0c331bf1ec48b221dcfe83a3594493b6fe47a120..e6badb492ec1b901175d7bcc5dd2ebc4446f72ea 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/ProtocolHandler.kt @@ -142,7 +142,10 @@ abstract class ProtocolHandler : SignalProxy, AuthHandler { objectStorage.rename(className, newName, oldName) } - override fun synchronize(syncableObject: ISyncableObject, baseInit: Boolean) { + override fun synchronize(syncableObject: ISyncableObject?, baseInit: Boolean) { + if (syncableObject == null) + return + if (!syncableObject.initialized) syncableObject.init() @@ -152,12 +155,14 @@ abstract class ProtocolHandler : SignalProxy, AuthHandler { if (baseInit) { toInit.put(syncableObject, mutableListOf()) } - dispatch( - SignalProxyMessage.InitRequest(syncableObject.className, syncableObject.objectName)) + dispatch(SignalProxyMessage.InitRequest(syncableObject.className, syncableObject.objectName)) } } - override fun stopSynchronize(syncableObject: ISyncableObject) { + override fun stopSynchronize(syncableObject: ISyncableObject?) { + if (syncableObject == null) + return + objectStorage.remove(syncableObject) toInit.remove(syncableObject) } diff --git a/lib/src/main/java/de/kuschku/libquassel/session/Session.kt b/lib/src/main/java/de/kuschku/libquassel/session/Session.kt index 96822c05fdf3696fae49c61411e501c61bb03061..60543049848edbfb4179e9f06454741d9abe2ef4 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/Session.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/Session.kt @@ -22,18 +22,18 @@ class Session( var userData: Pair<String, String>? = null - private val aliasManager = AliasManager(this) - private val backlogManager = BacklogManager(this) - private val bufferSyncer = BufferSyncer(this) - private val bufferViewManager = BufferViewManager(this) - private val certManagers = mutableMapOf<IdentityId, CertManager>() - private val coreInfo = CoreInfo(this) - private val dccConfig = DccConfig(this) - private val identities = mutableMapOf<IdentityId, Identity>() - private val ignoreListManager = IgnoreListManager(this) - private val ircListHelper = IrcListHelper(this) - private val networks = mutableMapOf<NetworkId, Network>() - private val networkConfig = NetworkConfig(this) + private var aliasManager: AliasManager? = null + private var backlogManager: BacklogManager? = null + private var bufferSyncer: BufferSyncer? = null + private var bufferViewManager: BufferViewManager? = null + private var certManagers = mutableMapOf<IdentityId, CertManager>() + private var coreInfo: CoreInfo? = null + private var dccConfig: DccConfig? = null + private var identities = mutableMapOf<IdentityId, Identity>() + private var ignoreListManager: IgnoreListManager? = null + private var ircListHelper: IrcListHelper? = null + private var networks = mutableMapOf<NetworkId, Network>() + private var networkConfig: NetworkConfig? = null val connection = BehaviorSubject.createDefault(ICoreConnection.NULL) @@ -54,7 +54,7 @@ class Session( } override fun handle(f: HandshakeMessage.SessionInit): Boolean { - connection.value.state.onNext(ConnectionState.INIT) + connection.value.setState(ConnectionState.INIT) f.networkIds?.forEach { val network = Network(it.value(-1), this) @@ -74,14 +74,32 @@ class Session( isInitializing = true networks.values.forEach { syncableObject -> this.synchronize(syncableObject, true) } certManagers.values.forEach { syncableObject -> this.synchronize(syncableObject, true) } + + aliasManager = AliasManager(this) synchronize(aliasManager, true) + + backlogManager = BacklogManager(this) + + bufferSyncer = BufferSyncer(this) synchronize(bufferSyncer, true) + + bufferViewManager = BufferViewManager(this) synchronize(bufferViewManager, true) + + coreInfo = CoreInfo(this) synchronize(coreInfo, true) + + dccConfig = DccConfig(this) if (coreFeatures.hasFlag(QuasselFeature.DccFileTransfer)) synchronize(dccConfig, true) + + ignoreListManager = IgnoreListManager(this) synchronize(ignoreListManager, true) + + ircListHelper = IrcListHelper(this) synchronize(ircListHelper, true) + + networkConfig = NetworkConfig(this) synchronize(networkConfig, true) return true @@ -115,6 +133,20 @@ class Session( override fun cleanUp() { connection.value.close() connection.onNext(ICoreConnection.NULL) + + aliasManager = null + backlogManager = null + bufferSyncer = null + bufferViewManager = null + certManagers.clear() + coreInfo = null + dccConfig = null + identities.clear() + ignoreListManager = null + ircListHelper = null + networks.clear() + networkConfig = null + super.cleanUp() } } diff --git a/lib/src/main/java/de/kuschku/libquassel/session/SignalProxy.kt b/lib/src/main/java/de/kuschku/libquassel/session/SignalProxy.kt index 47d44a496b4c1590b167e773e2e5a527c4df25e7..de9118c29c093cf749c768d3275e13d60fbbf5aa 100644 --- a/lib/src/main/java/de/kuschku/libquassel/session/SignalProxy.kt +++ b/lib/src/main/java/de/kuschku/libquassel/session/SignalProxy.kt @@ -40,7 +40,7 @@ interface SignalProxy { fun renameObject(syncableObject: ISyncableObject, newName: String, oldName: String) fun renameObject(className: String, newName: String, oldName: String) - fun synchronize(syncableObject: ISyncableObject, baseInit: Boolean) - fun synchronize(syncableObject: ISyncableObject) = synchronize(syncableObject, false) - fun stopSynchronize(syncableObject: ISyncableObject) + fun synchronize(syncableObject: ISyncableObject?, baseInit: Boolean) + fun synchronize(syncableObject: ISyncableObject?) = synchronize(syncableObject, false) + fun stopSynchronize(syncableObject: ISyncableObject?) }