diff --git a/app/src/test/java/jp/panta/misskeyandroidclient/streaming/channel/ChannelAPITest.kt b/app/src/test/java/jp/panta/misskeyandroidclient/streaming/channel/ChannelAPITest.kt index 8e8dd3a6ac..50556fb8cb 100644 --- a/app/src/test/java/jp/panta/misskeyandroidclient/streaming/channel/ChannelAPITest.kt +++ b/app/src/test/java/jp/panta/misskeyandroidclient/streaming/channel/ChannelAPITest.kt @@ -26,7 +26,7 @@ class ChannelAPITest { val wssURL = "wss://misskey.io/streaming" val logger = TestLogger.Factory() val socket = - SocketImpl(wssURL, true, logger, DefaultOkHttpClientProvider()) + SocketImpl(wssURL, {false}, logger, DefaultOkHttpClientProvider()) socket.blockingConnect() var count = 0 @@ -51,7 +51,7 @@ class ChannelAPITest { val wssURL = "wss://misskey.io/streaming" val logger = TestLogger.Factory() val socket = - SocketImpl(wssURL, true, logger, DefaultOkHttpClientProvider()) + SocketImpl(wssURL, {false}, logger, DefaultOkHttpClientProvider()) val channelAPI = ChannelAPI(socket, logger) runBlocking { diff --git a/app/src/test/java/jp/panta/misskeyandroidclient/streaming/network/SocketImplTest.kt b/app/src/test/java/jp/panta/misskeyandroidclient/streaming/network/SocketImplTest.kt index 6b60bbbe09..8f71de1e52 100644 --- a/app/src/test/java/jp/panta/misskeyandroidclient/streaming/network/SocketImplTest.kt +++ b/app/src/test/java/jp/panta/misskeyandroidclient/streaming/network/SocketImplTest.kt @@ -20,7 +20,7 @@ class SocketImplTest { fun testBlockingConnect() { val wssURL = "wss://misskey.io/streaming" val logger = TestLogger.Factory() - val socket = SocketImpl(wssURL, logger, DefaultOkHttpClientProvider()) + val socket = SocketImpl(wssURL, {false} ,logger, DefaultOkHttpClientProvider()) runBlocking { socket.blockingConnect() assertEquals(socket.state(), Socket.State.Connected) @@ -33,7 +33,7 @@ class SocketImplTest { val wssURL = "wss://misskey.io/streaming" val logger = TestLogger.Factory() - val socket = SocketImpl(wssURL, logger, DefaultOkHttpClientProvider()) + val socket = SocketImpl(wssURL, {false}, logger, DefaultOkHttpClientProvider()) runBlocking { @@ -55,7 +55,7 @@ class SocketImplTest { val wssURL = "wss://misskey.io/streaming" val logger = TestLogger.Factory() val socket = - SocketImpl(wssURL, logger, DefaultOkHttpClientProvider()) + SocketImpl(wssURL, {false}, logger, DefaultOkHttpClientProvider()) runBlocking { diff --git a/modules/api_streaming/src/main/java/net/pantasystem/milktea/api_streaming/network/SocketImpl.kt b/modules/api_streaming/src/main/java/net/pantasystem/milktea/api_streaming/network/SocketImpl.kt index ecdbee89b2..10bdf32cd1 100644 --- a/modules/api_streaming/src/main/java/net/pantasystem/milktea/api_streaming/network/SocketImpl.kt +++ b/modules/api_streaming/src/main/java/net/pantasystem/milktea/api_streaming/network/SocketImpl.kt @@ -21,7 +21,7 @@ import kotlin.coroutines.suspendCoroutine class SocketImpl( val url: String, - var isRequirePingPong: Boolean, + var isRequirePingPong: () -> Boolean, loggerFactory: Logger.Factory, okHttpClientProvider: OkHttpClientProvider, ) : Socket { @@ -312,7 +312,7 @@ class SocketImpl( synchronized(this@SocketImpl) { pollingJob.cancel() pollingJob = PollingJob(this@SocketImpl).also { - if (isRequirePingPong) { + if (isRequirePingPong()) { it.startPolling(4000, 900, 12000) } } diff --git a/modules/data/src/main/java/net/pantasystem/milktea/data/streaming/impl/SocketWithAccountProviderImpl.kt b/modules/data/src/main/java/net/pantasystem/milktea/data/streaming/impl/SocketWithAccountProviderImpl.kt index 8e7431d10b..1dc9f5c1b3 100644 --- a/modules/data/src/main/java/net/pantasystem/milktea/data/streaming/impl/SocketWithAccountProviderImpl.kt +++ b/modules/data/src/main/java/net/pantasystem/milktea/data/streaming/impl/SocketWithAccountProviderImpl.kt @@ -42,16 +42,12 @@ class SocketWithAccountProviderImpl @Inject constructor( if (account.instanceType == Account.InstanceType.MASTODON) { return null } - val isRequirePingPong = nodeInfoRepository.get(account.getHost())?.let { - !(it.type is NodeInfo.SoftwareType.Misskey.Normal && it.type.getVersion() >= Version("13.13.2")) - } synchronized(accountIdWithSocket) { var socket = accountIdWithSocket[account.accountId] if (socket != null) { // NOTE: tokenが異なる場合は再認証された可能性があるので、再生成を行う if (account.token == accountIdWithToken[account.accountId]) { logger.debug { "すでにインスタンス化済み" } - socket.isRequirePingPong = isRequirePingPong ?: true return socket } else { socket.destroy() @@ -70,7 +66,11 @@ class SocketWithAccountProviderImpl @Inject constructor( socket = SocketImpl( url = uri, - isRequirePingPong = isRequirePingPong ?: true, + isRequirePingPong = { + nodeInfoRepository.get(account.getHost())?.let { + !(it.type is NodeInfo.SoftwareType.Misskey.Normal && it.type.getVersion() >= Version("13.13.2")) + } ?: true + }, okHttpClientProvider = okHttpClientProvider, loggerFactory = loggerFactory, )