ModelsJsonBloc constructor

ModelsJsonBloc(
  1. AppModel app
)

Implementation

ModelsJsonBloc(
  this.app,
) : super(ModelsJsonUninitialised()) {
  on<ModelsJsonInitialiseEvent>((event, emit) async {
    emit(ModelsJsonInitialised());
  });

  on<ModelsJsonConstructJsonEvent>((event, emit) async {
    emit(ModelsJsonInitialised());
    // Now run all tasks
    var tasks = await event.retrieveTasks();
    addTasks(tasks, app, event);

    var progressManager = ProgressManager(
        tasks.length, (progress) => add(ModelsJsonProgressedEvent(progress)));

    int i = 0;
    for (var task in tasks) {
      i++;
      try {
        await task();
      } catch (e) {
        print('Exception running task $i, error: $e');
      }
      progressManager.progressedNextStep();
    }
  });

  on<ModelsJsonProgressedEvent>((event, emit) async {
    if (state is ModelsAndJsonAvailableAsMemberMedium) return;
    if (state is ModelsAndJsonAvailableInClipboard) return;
    if (state is ModelsAndJsonError) return;
    emit(ModelsJsonProgressed(
      event.progress,
      event.dataContainer,
    ));
  });

  on<ModelsAndJsonAvailableInClipboardEvent>((event, emit) async {
    emit(ModelsAndJsonAvailableInClipboard());
  });

  on<ModelsAndJsonErrorEvent>((event, emit) async {
    emit(ModelsAndJsonError(event.message));
  });

  on<ModelsAndJsonAvailableAsMemberMediumEvent>((event, emit) async {
    emit(ModelsAndJsonAvailableAsMemberMedium(event.memberMediumModel));
  });
}