Skip to content

Commit 078d5c2

Browse files
authored
[IJ Plugin] Fix pulling normalized cache for recent AS (#6437)
* Avoid calling CoroutineDispatcher.limitedParallelism * Don't call com.android.tools.idea.adblib.ddmlibcompatibility.toDeviceSelector which doesn't exist in certain IDE versions
1 parent 24eec20 commit 078d5c2

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

intellij-plugin/src/main/kotlin/com/apollographql/ijplugin/apollodebugserver/ApolloDebugClient.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@ package com.apollographql.ijplugin.apollodebugserver
33
import com.android.ddmlib.IDevice
44
import com.android.tools.idea.adb.AdbShellCommandsUtil
55
import com.apollographql.apollo.ApolloClient
6+
import com.apollographql.apollo.api.ApolloRequest
7+
import com.apollographql.apollo.api.ApolloResponse
8+
import com.apollographql.apollo.api.Operation
9+
import com.apollographql.apollo.network.NetworkTransport
610
import com.apollographql.apollo.network.http.LoggingInterceptor
711
import com.apollographql.ijplugin.util.apollo3
812
import com.apollographql.ijplugin.util.apollo4
913
import com.apollographql.ijplugin.util.executeCatching
1014
import com.apollographql.ijplugin.util.logd
1115
import com.apollographql.ijplugin.util.logw
16+
import kotlinx.coroutines.flow.Flow
17+
import kotlinx.coroutines.flow.emptyFlow
1218
import java.io.Closeable
1319

1420
private const val SOCKET_NAME_PREFIX = "apollo_debug_"
@@ -65,6 +71,13 @@ class ApolloDebugClient(
6571
.addHttpInterceptor(LoggingInterceptor { line ->
6672
logd("ApolloDebugClient HTTP - $line")
6773
})
74+
// Use a dummy NetworkTransport for subscriptions (which are not used), because the default one
75+
// references CoroutineDispatcher.limitedParallelism which doesn't exist in certain IDE versions.
76+
// (See https://plugins.jetbrains.com/docs/intellij/using-kotlin.html#coroutinesLibraries)
77+
.subscriptionNetworkTransport(object: NetworkTransport{
78+
override fun <D : Operation.Data> execute(request: ApolloRequest<D>): Flow<ApolloResponse<D>> = emptyFlow()
79+
override fun dispose() {}
80+
})
6881
.build()
6982

7083
private fun createPortForward() {

intellij-plugin/src/main/kotlin/com/apollographql/ijplugin/normalizedcache/PullFromDevice.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package com.apollographql.ijplugin.normalizedcache
22

3+
import com.android.adblib.DeviceSelector
34
import com.android.adblib.syncRecv
45
import com.android.ddmlib.AndroidDebugBridge
56
import com.android.ddmlib.IDevice
67
import com.android.tools.idea.adb.AdbShellCommandsUtil
78
import com.android.tools.idea.adblib.AdbLibApplicationService
8-
import com.android.tools.idea.adblib.ddmlibcompatibility.toDeviceSelector
99
import com.apollographql.ijplugin.util.execute
1010
import com.apollographql.ijplugin.util.executeCatching
1111
import com.apollographql.ijplugin.util.logd
@@ -75,7 +75,7 @@ suspend fun pullFile(device: IDevice, appPackageName: String, remoteDirName: Str
7575
val adbLibSession = AdbLibApplicationService.instance.session
7676
val fileChannel = adbLibSession.channelFactory.createFile(Paths.get(localFile.absolutePath))
7777
fileChannel.use {
78-
adbLibSession.deviceServices.syncRecv(device.toDeviceSelector(), intermediateRemoteFilePath, fileChannel)
78+
adbLibSession.deviceServices.syncRecv(DeviceSelector.fromSerialNumber(device.serialNumber), intermediateRemoteFilePath, fileChannel)
7979
}
8080
} finally {
8181
commandResult = shellCommandsUtil.execute("rm $intermediateRemoteFilePath")

0 commit comments

Comments
 (0)