@nitra/zebra 8.0.2 → 8.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -53,7 +53,8 @@ import ExternalAccessory
|
|
|
53
53
|
public enum ZebraError: LocalizedError {
|
|
54
54
|
case addressMissing // Адреса принтера не вказана
|
|
55
55
|
case zplEmpty // ZPL команда порожня
|
|
56
|
-
|
|
56
|
+
/// Пристрій не знайдено: запитувана адреса та список підключених аксесуарів (назва + адреса), щоб показувати їх у помилці
|
|
57
|
+
case accessoryNotFound(requestedAddress: String, availableAccessories: [DeviceInfo])
|
|
57
58
|
case protocolMissing(String) // Не знайдено підтримуваних протоколів для пристрою
|
|
58
59
|
case sessionFailed(String) // Не вдалося відкрити сесію з принтером
|
|
59
60
|
case writeFailed(String) // Помилка запису даних у потік
|
|
@@ -64,8 +65,13 @@ import ExternalAccessory
|
|
|
64
65
|
return "Printer address is not specified. Pass address to print()."
|
|
65
66
|
case .zplEmpty:
|
|
66
67
|
return "ZPL command is empty."
|
|
67
|
-
case .accessoryNotFound(let
|
|
68
|
-
|
|
68
|
+
case .accessoryNotFound(let requestedAddress, let availableAccessories):
|
|
69
|
+
if availableAccessories.isEmpty {
|
|
70
|
+
return "Device not found or not connected: \(requestedAddress). No accessories connected."
|
|
71
|
+
}
|
|
72
|
+
// Формуємо список доступних пристроїв у вигляді "назва (адреса)" для тексту помилки
|
|
73
|
+
let list = availableAccessories.map { "\($0.name) (\($0.address))" }.joined(separator: ", ")
|
|
74
|
+
return "Device not found or not connected: \(requestedAddress). Available: \(list)"
|
|
69
75
|
case .protocolMissing(let address):
|
|
70
76
|
return "No supported protocol found for device: \(address)"
|
|
71
77
|
case .sessionFailed(let reason):
|
|
@@ -287,9 +293,11 @@ import ExternalAccessory
|
|
|
287
293
|
self.log("EA connectedAccessories count=", accessories.count)
|
|
288
294
|
|
|
289
295
|
// Шукаємо аксесуар, що відповідає адресі (serialNumber або name)
|
|
296
|
+
let availableList = self.getConnectedAccessories()
|
|
290
297
|
guard let accessory = accessories.first(where: { self.accessoryMatches($0, address: trimmedAddress) }) else {
|
|
291
298
|
self.log("No accessory matched address:", trimmedAddress)
|
|
292
|
-
|
|
299
|
+
// У failure передаємо не лише адресу, а й список доступних аксесуарів (назви та адреси) для показу в помилці
|
|
300
|
+
completion(.failure(.accessoryNotFound(requestedAddress: trimmedAddress, availableAccessories: availableList)))
|
|
293
301
|
return
|
|
294
302
|
}
|
|
295
303
|
|
|
@@ -86,8 +86,17 @@ public class ZebraPlugin: CAPPlugin, CAPBridgedPlugin {
|
|
|
86
86
|
code = "ADDRESS_MISSING"
|
|
87
87
|
case .zplEmpty:
|
|
88
88
|
code = "ZPL_EMPTY"
|
|
89
|
-
case .accessoryNotFound:
|
|
89
|
+
case .accessoryNotFound(let requestedAddress, let availableAccessories):
|
|
90
90
|
code = "ACCESSORY_NOT_FOUND"
|
|
91
|
+
// Передаємо в JS запитувану адресу та список доступних пристроїв (name, address), щоб показувати їх у UI
|
|
92
|
+
let accessoriesPayload = availableAccessories.map { ["name": $0.name, "address": $0.address] }
|
|
93
|
+
call.reject(
|
|
94
|
+
error.localizedDescription,
|
|
95
|
+
code,
|
|
96
|
+
error,
|
|
97
|
+
["requestedAddress": requestedAddress, "availableAccessories": accessoriesPayload]
|
|
98
|
+
)
|
|
99
|
+
return
|
|
91
100
|
case .sessionFailed:
|
|
92
101
|
code = "SESSION_FAILED"
|
|
93
102
|
case .writeFailed:
|