submitAndFetch method

Future<void> submitAndFetch({
  1. required DataSubmitter<void> dataSubmitter,
  2. Duration timeout = const Duration(seconds: 10),
})

Implementation

Future<void> submitAndFetch({
  required DataSubmitter<void> dataSubmitter,
  Duration timeout = const Duration(seconds: 10),
}) async {
  if (fetchCubit == null || dataFetcher == null) {
    emit(
      SubmitFailed(
        '${technicalErrorMessage ?? 'Technical error'} : fetchCubit = null || dataFetcher = null',
      ),
    );
    return;
  }

  final result = await _submit(dataSubmitter: dataSubmitter);

  if (!isClosed) {
    emit(switch (result) {
      DataSubmitSucceed() ||
      DataSubmitSucceedEmpty() =>
        SubmitSucceed(result.message),
      DataSubmitFailed() => SubmitFailed(
          result.message,
          exception: result.exception,
        ),
    });

    if (result is DataSubmitSucceed || result is DataSubmitSucceedEmpty) {
      await fetchCubit!.refresh(dataFetcher: dataFetcher!);
    }
  }
}