LCOV - code coverage report
Current view: top level - src/ui/editor/pages/create_helper - create_helper_presenter.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 41 65 63.1 %
Date: 2020-12-04 18:41:24 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/material.dart';
       2             : import 'package:mvvm_builder/mvvm_builder.dart';
       3             : import 'package:pal/src/database/entity/helper/helper_trigger_type.dart';
       4             : import 'package:pal/src/pal_navigator_observer.dart';
       5             : import 'package:pal/src/services/package_version.dart';
       6             : import 'package:pal/src/ui/editor/pages/create_helper/create_helper.dart';
       7             : import 'package:pal/src/ui/editor/pages/create_helper/create_helper_viewmodel.dart';
       8             : import 'package:pal/src/ui/editor/pages/create_helper/steps/create_helper_infos/create_helper_infos_step_model.dart';
       9             : import 'package:pal/src/ui/editor/pages/create_helper/steps/create_helper_theme/create_helper_theme_step_model.dart';
      10             : import 'package:pal/src/ui/editor/pages/create_helper/steps/create_helper_type/create_helper_type_step_model.dart';
      11             : 
      12             : class CreateHelperPresenter extends Presenter<CreateHelperModel, CreateHelperView> {
      13             : 
      14             :   PackageVersionReader packageVersionReader;
      15             :   final PalRouteObserver routeObserver;
      16             : 
      17           1 :   CreateHelperPresenter(
      18             :     CreateHelperView viewInterface, {
      19             :     @required this.routeObserver,
      20             :     @required this.packageVersionReader,
      21           2 :   }) : super(CreateHelperModel(), viewInterface);
      22             : 
      23             :   @override
      24           1 :   Future onInit() async {
      25           3 :     this.viewModel.nestedNavigationKey = GlobalKey<NavigatorState>();
      26           3 :     this.viewModel.step = ValueNotifier<int>(0);
      27             : 
      28           2 :     this.viewModel.isFormValid = false;
      29           3 :     this.viewModel.stepsTitle = [
      30             :       'Setup your helper',
      31             :       'Choose your helper type',
      32             :       'Choose a theme',
      33             :     ];
      34             : 
      35             :     // Setup steps
      36           1 :     this.setupInfosStep();
      37           1 :     this.setupTypeStep();
      38           1 :     this.setupThemeStep();
      39             :   }
      40             : 
      41           1 :   setupInfosStep() async {
      42           3 :     this.viewModel.infosForm = GlobalKey<FormState>();
      43             : 
      44           3 :     this.viewModel.helperNameController = TextEditingController();
      45           3 :     this.viewModel.minVersionController = TextEditingController();
      46             : 
      47           2 :     this.viewModel.isAppVersionLoading = false;
      48             : 
      49             :     // Trigger type dropdown
      50           3 :     this.viewModel.triggerTypes = [];
      51           2 :     HelperTriggerType.values.forEach((HelperTriggerType type) {
      52           3 :       this.viewModel.triggerTypes.add(
      53           1 :             HelperTriggerTypeDisplay(
      54           1 :               key: helperTriggerTypeToString(type),
      55           1 :               description: getHelperTriggerTypeDescription(type),
      56             :             ),
      57             :           );
      58             :     });
      59           2 :     this.viewModel.selectedTriggerType =
      60           4 :         this.viewModel.triggerTypes?.first?.key;
      61             : 
      62           1 :     readAppVersion();
      63             :   }
      64             : 
      65           1 :   readAppVersion() async {
      66             :     // Load app version
      67           2 :     this.viewModel.isAppVersionLoading = true;
      68           1 :     this.refreshView();
      69           3 :     await this.packageVersionReader.init();
      70           4 :     this.viewModel.appVersion = this.packageVersionReader.version;
      71           5 :     this.viewModel.minVersionController.text = this.viewModel.appVersion;
      72           2 :     this.viewModel.isAppVersionLoading = false;
      73           1 :     this.refreshView();
      74             :   }
      75             : 
      76           1 :   setupTypeStep() {
      77           2 :     this.viewModel.selectedHelperType = null;
      78           3 :     for (var helperType in CreateHelperThemeStepModel.cards.entries) {
      79           2 :       for (var card in helperType.value) {
      80           1 :         card.isSelected = false;
      81             :       }
      82             :     }
      83             :   }
      84             : 
      85           1 :   setupThemeStep() {
      86           2 :     this.viewModel.selectedHelperTheme = null;
      87           2 :     for (var card in CreateHelperTypesStepModel.cards) {
      88           1 :       card.isSelected = false;
      89             :     }
      90             :   }
      91             : 
      92           0 :   incrementStep() async {
      93           0 :     if (this.viewModel.step.value >= this.viewModel.stepsTitle.length - 1) {
      94           0 :       var currentPageRoute = await this.routeObserver.routeSettings.first;
      95           0 :       this.viewInterface.launchHelperEditor(currentPageRoute.name, viewModel);
      96             :       return;
      97             :     }
      98           0 :     this.viewModel.step.value++;
      99           0 :     this.viewInterface.changeStep(
     100           0 :           this.viewModel.nestedNavigationKey,
     101           0 :           this.viewModel.step.value,
     102             :         );
     103           0 :     this.checkValidStep();
     104           0 :     this.refreshView();
     105             :   }
     106             : 
     107           0 :   decrementStep() {
     108           0 :     if (this.viewModel.step.value <= 0) {
     109             :       return;
     110             :     }
     111             : 
     112           0 :     this.viewModel.step.value--;
     113           0 :     this.checkValidStep();
     114           0 :     this.refreshView();
     115             :   }
     116             : 
     117           0 :   void checkValidStep() {
     118           0 :     switch (this.viewModel.step.value) {
     119           0 :       case 0:
     120           0 :         this.viewModel.isFormValid =
     121           0 :             this.viewModel.infosForm.currentState.validate();
     122             :         break;
     123           0 :       case 1:
     124           0 :         this.viewModel.isFormValid = this.viewModel.selectedHelperType != null;
     125             :         break;
     126           0 :       case 2:
     127           0 :         this.viewModel.isFormValid = this.viewModel.selectedHelperTheme != null;
     128             :         break;
     129             :       default:
     130             :     }
     131             :   }
     132             : }

Generated by: LCOV version 1.14