refreshCellularIccid method

Future<void> refreshCellularIccid()

Implementation

Future<void> refreshCellularIccid() async {
  final result = await bleManager.paramGetByCloudId(
    dataSource: CommandDataSource.hub,
    cloudIds: [
      HubParameter.lteIccid.value,
    ],
  );

  final lteIccid = HubBleParameters.parsePayload<String>(
    result,
    HubBleParameters.hubLteIccid,
  );

  _setData((data) => data.clearCellularPlan(cellularIccid: lteIccid));

  final isSignedIn = ref.read(isLoggedInProvider);
  if (lteIccid == null || lteIccid.isEmpty || !isSignedIn) {
    return;
  }

  try {
    final api = await ref.read(energyManagementV3ApiProvider.future);
    final plan = await api.kemApiV3DevicesCellplanIccidGet(iccid: lteIccid);
    final planBody = plan.body;
    final expiryDate = planBody?.expiryDate;

    _setData(
      (data) => data.copyWith(
        remainingDataMb: planBody?.remainingDataMb,
        totalDataMb: planBody?.totalDataMb,
        cellularDataStatus: mbToCellularDataStatus(planBody?.remainingDataMb),
        cellularPlanExpiryDate: expiryDate,
      ),
    );
  } catch (_) {
    _setData((data) => data.clearCellularPlan());
  }
}