Files
OmniCards/mobile/src/main/java/ru/omni_devel/cards/Utils.kt
T
2026-06-15 17:18:36 +03:00

64 lines
1.9 KiB
Kotlin

package ru.omni_devel.cards
import android.content.Context
import android.graphics.Bitmap
import androidx.compose.ui.platform.LocalContext
import com.google.android.gms.wearable.Wearable
import com.google.zxing.BarcodeFormat
import com.google.zxing.MultiFormatWriter
import com.journeyapps.barcodescanner.BarcodeEncoder
fun generateCode(value: String, format: BarcodeFormat): Bitmap {
val writer = MultiFormatWriter()
val matrix = writer.encode(value, format, 800, 400)
return BarcodeEncoder().createBitmap(matrix)
}
fun sendToWatch(context: Context, path: String, message: String, onResult: (Boolean) -> Unit) {
val nodeClient = Wearable.getNodeClient(context)
nodeClient.connectedNodes.addOnSuccessListener { nodes ->
if (nodes.isEmpty()) {
onResult(false)
return@addOnSuccessListener
}
var completedCount = 0
var isAnySuccess = false
nodes.forEach { node ->
Wearable.getMessageClient(context).sendMessage(
node.id,
path,
message.toByteArray(Charsets.UTF_8)
).addOnCompleteListener(context.mainExecutor) { task ->
completedCount++
if (task.isSuccessful) {
isAnySuccess = true
}
if (completedCount == nodes.size) {
onResult(isAnySuccess)
}
}.addOnFailureListener(context.mainExecutor) {
onResult(false)
}
}
}
}
fun checkCardData(name: String, value: String): Int? {
if (name.isEmpty()) {
return R.string.card_name_should_not_be_empty
} else if (value.isEmpty()) {
return R.string.card_value_should_not_be_empty
} else if (name.length > 32) {
return R.string.name_must_be_shorter_than_32_symbols
}
return null
}