retryFailedrequests method

Future<bool> retryFailedrequests({
  1. required BuildContext context,
  2. void onProgress(
    1. double
    )?,
})

Implementation

Future<bool> retryFailedrequests(
    {required BuildContext context,
    void Function(double)? onProgress}) async {
  debugPrint('retry failed requests started');
  try {
    await API().tryNetwork(requestType: Helper.SimulatedRequestType.PUT);
  } catch (e) {
    showToast(S.current!.noViableInternetConnection);
    return false;
  }

  bool notificationsAllowed = await allowNotificationGuard(
    context,
    S.of(context).weCanSendYouANotificationAboutTheSyncProgress,
  );

  bool success = false;
  ReceivePort progressReceiver = ReceivePort();
  var isolateInputData = _RetryFailedRequestsIsolateInput(
    rootIsolateToken: RootIsolateToken.instance!,
    progressSender: progressReceiver.sendPort,
    notificationsAllowed: notificationsAllowed,
  );

  final ss = progressReceiver.listen((msg) {
    final (progress, _success) = msg as (double, bool?);
    if (_success != null) {
      success = _success;
      progressReceiver.close();
    } else {
      onProgress?.call(progress);
    }
  }); // as StreamSubscription<(double, bool)>;

  final runInIsolate = false &&
      !kIsWeb /*FIXME: fix running in isolates and then remove: */ &&
      false;

  // ss.
  if (runInIsolate)
    await Isolate.spawn(_retryFailedRequestsIsolate, isolateInputData);
  else
    await _retryFailedRequestsIsolate(isolateInputData);

  await ss.asFuture();

  return success;
}