tryUnregisterDisconnectedDevice method

Future<void> tryUnregisterDisconnectedDevice(
  1. DeviceConfiguration<DeviceRegistration> device
)

Tries to unregister the disconnected device with the deployment service.

Implementation

Future<void> tryUnregisterDisconnectedDevice(
  DeviceConfiguration device,
) async {
  final deviceRoleName = device.roleName;

  info(
    "$runtimeType - Trying to unregister device with role name "
    "'$deviceRoleName' for study deployment '${study.studyDeploymentId}'.",
  );

  try {
    final deploymentStatus = await _deploymentService.unregisterDevice(
      study.studyDeploymentId,
      deviceRoleName,
    );

    // Also update local deployment information about the connected device registrations,
    // so that it is in sync with the deployment service.
    if (device is! PrimaryDeviceConfiguration) {
      deployment?.connectedDeviceRegistrations.remove(deviceRoleName);
    }
    study.deploymentStatusReceived(deploymentStatus);
  } catch (error) {
    warning(
      "$runtimeType - Failed to unregister device with role name "
      "'$deviceRoleName' for study deployment '${study.studyDeploymentId}' "
      "at deployment service '$_deploymentService'.\n"
      "Error: $error\n"
      "Continuing without un-registration.",
    );
  }
}