pairRegisterDevice method

Future<PairedRegisterDevice> pairRegisterDevice({
  1. required String code,
  2. String? label,
  3. RegisterClientInfo? client,
  4. RegisterGeo? geo,
  5. bool takeover = false,
})

Gerät koppeln: der Code wird gegen den dauerhaften Ausweis getauscht.

Der Code wird dabei verbraucht, auch wenn der Aufrufer das Ergebnis verliert — eine unvollständige Antwort ist deshalb ein Fehler und kein halbes Gerät. Groß-/Kleinschreibung und Leerzeichen sind gleichgültig: das Backend beschneidet selbst; dieses Paket prüft das Format nicht (es kennt das Alphabet nicht und würde eine Erweiterung ausschließen). takeover gilt nur für dauerhafte Kopplungs-Codes: die tragen immer nur ein Gerät. Ist schon eines gekoppelt, antwortet das Backend abweisend; erst mit takeover: true wird das andere Gerät entkoppelt.

Implementation

Future<PairedRegisterDevice> pairRegisterDevice({
  required String code,
  String? label,
  RegisterClientInfo? client,
  RegisterGeo? geo,
  bool takeover = false,
}) async {
  const name = Aufrufe.pairRegisterDevice;
  _pflicht(name, 'code', code);
  final daten = await _rufen(name, {
    'code': code,
    if (takeover) 'takeover': true,
    if (label != null) 'label': label,
    if (client != null) 'client': client.toJson(),
    if (geo != null) 'geo': geo.toJson(),
  });
  return PairedRegisterDevice(
    deviceId: _pflichtfeld(name, daten, 'deviceId'),
    deviceSecret: _pflichtfeld(name, daten, 'deviceSecret'),
    ownerUid: _pflichtfeld(name, daten, 'ownerUid'),
    cashregisterId: _pflichtfeld(name, daten, 'cashregisterId'),
    companyName: _text(daten['betrieb']),
    cashregisterLabel: _text(daten['kasse']),
    testUmgebung: daten['testUmgebung'] == true,
  );
}