From 01d24b4439ceabde2d5019fae4325a21448d9235 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Sun, 21 Jun 2026 18:40:16 +0800 Subject: [PATCH] Fix missing api version check for usb/ip --- .../sfa/bg/PlatformInterfaceWrapper.kt | 17 ----------------- .../screen/usbip/USBIPStatusViewModel.kt | 14 +++++++++++++- 2 files changed, 13 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt b/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt index 1e2afa0..dff58cc 100644 --- a/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt +++ b/app/src/main/java/io/nekohasekai/sfa/bg/PlatformInterfaceWrapper.kt @@ -169,23 +169,6 @@ interface PlatformInterfaceWrapper : PlatformInterface { override fun localDNSTransport(): LocalDNSTransport? = LocalResolver - @OptIn(ExperimentalEncodingApi::class) - override fun systemCertificates(): StringIterator { - val certificates = mutableListOf() - val keyStore = KeyStore.getInstance("AndroidCAStore") - if (keyStore != null) { - keyStore.load(null, null) - val aliases = keyStore.aliases() - while (aliases.hasMoreElements()) { - val cert = keyStore.getCertificate(aliases.nextElement()) - certificates.add( - "-----BEGIN CERTIFICATE-----\n" + Base64.encode(cert.encoded) + "\n-----END CERTIFICATE-----", - ) - } - } - return StringArray(certificates.iterator()) - } - override fun startNeighborMonitor(listener: NeighborUpdateListener?) { if (listener == null) return val callback = object : INeighborTableCallback.Stub() { diff --git a/app/src/main/java/io/nekohasekai/sfa/compose/screen/usbip/USBIPStatusViewModel.kt b/app/src/main/java/io/nekohasekai/sfa/compose/screen/usbip/USBIPStatusViewModel.kt index 3f7b697..53d8704 100644 --- a/app/src/main/java/io/nekohasekai/sfa/compose/screen/usbip/USBIPStatusViewModel.kt +++ b/app/src/main/java/io/nekohasekai/sfa/compose/screen/usbip/USBIPStatusViewModel.kt @@ -52,6 +52,10 @@ data class USBIPStatusState( ) class USBIPStatusViewModel : BaseViewModel() { + companion object { + private const val MIN_API_VERSION_USBIP = 2 + } + private var subscription: USBIPServerStatusSubscription? = null override fun createInitialState() = USBIPStatusState() @@ -62,8 +66,16 @@ class USBIPStatusViewModel : BaseViewModel() { viewModelScope.launch(Dispatchers.IO) { try { + val client = CommandTarget.standaloneClient() + if (client.getAPIVersion() < MIN_API_VERSION_USBIP) { + viewModelScope.launch { + updateState { copy(servers = emptyList(), isSubscribed = false) } + subscription = null + } + return@launch + } subscription = - CommandTarget.standaloneClient().subscribeUSBIPServerStatus( + client.subscribeUSBIPServerStatus( object : USBIPServerStatusHandler { override fun onStatusUpdate(status: USBIPServerStatusUpdate) { val servers = convertUpdate(status)