Fix Thread border agent IDs encoded as hex second instance (#3838)

* Fix Thread border agent IDs encoded as hex second instance

* Remove unnecessary toByteArray() and brackets

* Fix indentation
This commit is contained in:
Stefan Agner 2023-09-02 03:07:50 +02:00 committed by GitHub
parent ffd46b385d
commit 5a9c3922b9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -158,6 +158,7 @@ class ThreadManagerImpl @Inject constructor(
override suspend fun getPreferredDatasetFromServer(serverId: Int): ThreadDatasetResponse? =
getDatasetsFromServer(serverId)?.firstOrNull { it.preferred }
@OptIn(ExperimentalStdlibApi::class)
override suspend fun importDatasetFromServer(
context: Context,
datasetId: String,
@ -166,13 +167,12 @@ class ThreadManagerImpl @Inject constructor(
) {
val tlv = serverManager.webSocketRepository(serverId).getThreadDatasetTlv(datasetId)?.tlvAsByteArray
if (tlv != null) {
val borderAgentId = (
preferredBorderAgentId ?: run {
Log.w(TAG, "Adding dataset with placeholder border agent ID")
BORDER_AGENT_ID
}
).toByteArray()
val threadBorderAgent = ThreadBorderAgent.newBuilder(borderAgentId).build()
val borderAgentId = preferredBorderAgentId ?: run {
Log.w(TAG, "Adding dataset with placeholder border agent ID")
BORDER_AGENT_ID
}
val idAsBytes = borderAgentId.let { if (it.length == 16) it.toByteArray() else it.hexToByteArray() }
val threadBorderAgent = ThreadBorderAgent.newBuilder(idAsBytes).build()
val threadNetworkCredentials = ThreadNetworkCredentials.fromActiveOperationalDataset(tlv)
suspendCoroutine { cont ->
ThreadNetwork.getClient(context).addCredentials(threadBorderAgent, threadNetworkCredentials)