@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
- case accessoryNotFound(String) // Пристрій не знайдено або не підключено
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 address):
68
- return "Device not found or not connected: \(address)"
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
- completion(.failure(.accessoryNotFound(trimmedAddress)))
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:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nitra/zebra",
3
- "version": "8.0.2",
3
+ "version": "8.0.3",
4
4
  "description": "Zebra printer",
5
5
  "keywords": [
6
6
  "capacitor",