addDevice method
Implementation
Future<void> addDevice({
required String authKey,
required String peerKey,
required String adminPublicKey,
required String peerMnemonic,
String? deviceName,
}) async {
final mnemonicPeerKey = await signing.getPeerPublicKey(peerMnemonic);
if (mnemonicPeerKey != peerKey) {
throw StateError('Add-device link peer key does not match mnemonic');
}
await TailscaleAdmin.instance.setAdminPeer(adminPublicKey);
await setPeer(peerKey);
await connect(authKey: authKey);
final nodeId = await getCurrentNodeId();
if (nodeId == null) {
throw StateError('Missing Tailscale node ID');
}
await events.publish(
await DeviceAuthEventBodyModel.create(
mnemonic: peerMnemonic,
nodeId: nodeId,
),
);
if (deviceName != null) {
await events.publish(
DeviceIdentityEventBodyModel(
name: deviceName,
updatedDeviceKey: signing.publicKey,
),
);
}
}