diff --git a/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt b/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt index 3b835ed..94fd7ca 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/MainActivity.kt @@ -46,12 +46,12 @@ class MainActivity : AppCompatActivity() { syncWithWearOSButton.setOnClickListener { Toast.makeText(this, "Sync in progress...", Toast.LENGTH_SHORT).show() - val isSuccess = sendToWatch(this, "/updateCards", Json.encodeToString(db.getCards())) - - if (isSuccess) { - Toast.makeText(this, "Synced!", Toast.LENGTH_SHORT).show() - } else { - Toast.makeText(this, "Sync failed! Please, check your connection", Toast.LENGTH_LONG).show() + sendToWatch(this, "/updateCards", Json.encodeToString(db.getCards())) { isSuccess -> + if (isSuccess) { + Toast.makeText(this, "Successfully synced!", Toast.LENGTH_SHORT).show() + } else { + Toast.makeText(this, "Sync failed! Please, check your connection", Toast.LENGTH_LONG).show() + } } } } diff --git a/mobile/src/main/java/ru/omni_devel/cards/Utils.kt b/mobile/src/main/java/ru/omni_devel/cards/Utils.kt index 2babdcd..0cc683f 100644 --- a/mobile/src/main/java/ru/omni_devel/cards/Utils.kt +++ b/mobile/src/main/java/ru/omni_devel/cards/Utils.kt @@ -15,25 +15,38 @@ fun generateCode(value: String, format: BarcodeFormat): Bitmap { return BarcodeEncoder().createBitmap(matrix) } -fun sendToWatch(context: Context, path: String, message: String): Boolean { +fun sendToWatch(context: Context, path: String, message: String, onResult: (Boolean) -> Unit): Boolean { val nodeClient = Wearable.getNodeClient(context) var isSuccess = false nodeClient.connectedNodes.addOnSuccessListener { nodes -> if (nodes.isEmpty()) { - Toast.makeText(context, "Watch is not connected", Toast.LENGTH_SHORT).show() + 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) - ).addOnSuccessListener { - isSuccess = true + ).addOnCompleteListener { task -> + completedCount++ + + if (task.isSuccessful) { + isAnySuccess = true + } + + if (completedCount == nodes.size) { + onResult(isAnySuccess) + } + }.addOnFailureListener { + onResult(false) } } }