LCOV - code coverage report
Current view: top level - src/ui/editor/pages/helper_editor/helpers/editor_simple_helper - editor_simple_helper_presenter.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 33 48 68.8 %
Date: 2020-12-04 18:41:24 Functions: 0 0 -

          Line data    Source code
       1             : import 'dart:async';
       2             : 
       3             : import 'package:flutter/material.dart';
       4             : import 'package:mvvm_builder/mvvm_builder.dart';
       5             : import 'package:pal/src/services/editor/helper/helper_editor_models.dart';
       6             : import 'package:pal/src/services/editor/helper/helper_editor_service.dart';
       7             : import 'package:pal/src/ui/editor/pages/helper_editor/font_editor/font_editor_viewmodel.dart';
       8             : import 'package:pal/src/ui/editor/pages/helper_editor/helper_editor.dart';
       9             : import 'package:pal/src/ui/editor/pages/helper_editor/helper_editor_factory.dart';
      10             : import 'package:pal/src/ui/editor/pages/helper_editor/helper_editor_notifiers.dart';
      11             : import 'package:pal/src/ui/editor/pages/helper_editor/widgets/editor_sending_overlay.dart';
      12             : 
      13             : import 'editor_simple_helper.dart';
      14             : import 'editor_simple_helper_viewmodel.dart';
      15             : 
      16             : class EditorSimpleHelperPresenter extends Presenter<SimpleHelperViewModel, EditorSimpleHelperView>{
      17             : 
      18             :   final EditorHelperService editorHelperService;
      19             : 
      20             :   final HelperEditorPageArguments parameters;
      21             : 
      22             :   final StreamController<bool> editableTextFieldController;
      23             : 
      24           1 :   EditorSimpleHelperPresenter(
      25             :     EditorSimpleHelperView viewInterface,
      26             :     SimpleHelperViewModel simpleHelperViewModel,
      27             :     this.editorHelperService,
      28             :     this.parameters
      29           1 :   ) : editableTextFieldController = StreamController<bool>.broadcast(),
      30           1 :       super(simpleHelperViewModel, viewInterface) {
      31           3 :     viewModel.canValidate = new ValueNotifier(false);
      32             :   }
      33             : 
      34           1 :   @override
      35             :   void onInit() {
      36           1 :     super.onInit();
      37             :   }
      38             : 
      39             :   @override
      40           1 :   Future onDestroy() async {
      41           1 :     super.onDestroy();
      42           2 :     editableTextFieldController.close();
      43             :     // fixme =>  mvvm_builder add afterDestroy method
      44             :     // viewModel.canValidate.dispose();
      45             :     // viewModel.canValidate = null;
      46             :   }
      47             : 
      48           1 :   Future onValidate() async {
      49           1 :     ValueNotifier<SendingStatus> status = new ValueNotifier(SendingStatus.SENDING);
      50           4 :     final config = CreateHelperConfig.from(parameters.pageId, viewModel);
      51             :     try {
      52           3 :       await viewInterface.showLoadingScreen(status);
      53           3 :       await Future.delayed(Duration(seconds: 1));
      54           3 :       await editorHelperService.saveSimpleHelper(
      55           2 :         EditorEntityFactory.buildSimpleArgs(config, viewModel));
      56           1 :       status.value = SendingStatus.SENT;
      57             :     } catch(error) {
      58           2 :       print("error: $error");
      59           1 :       status.value = SendingStatus.ERROR;
      60             :     } finally {
      61           3 :       await Future.delayed(Duration(seconds: 2));
      62           2 :       viewInterface.closeLoadingScreen();
      63           3 :       await Future.delayed(Duration(milliseconds: 100));
      64           1 :       status.dispose();
      65           2 :       viewInterface.closeEditor();
      66             :     }
      67             :   }
      68             : 
      69           1 :   void onCancel() {
      70           2 :     viewInterface.closeEditor();
      71             :   }
      72             : 
      73           0 :   onOutsideTap() => this.editableTextFieldController.add(true);
      74             : 
      75           1 :   onDetailsFieldChanged(String id, String newValue)
      76           3 :     => _onTextChanged(viewModel.detailsField, newValue);
      77             : 
      78           0 :   onDetailsTextStyleChanged(String id, TextStyle newTextStyle, FontKeys fontKeys)
      79           0 :     => _onStyleChanged(viewModel.detailsField, newTextStyle, fontKeys);
      80             : 
      81           0 :   String validateDetailsTextField(String currentValue) {
      82           0 :     if (currentValue.length <= 0) {
      83             :       return 'Please enter some text';
      84             :     }
      85           0 :     if (currentValue.length > 45) {
      86             :       return 'Maximum 45 characters';
      87             :     }
      88             :     return null;
      89             :   }
      90             : 
      91           0 :   onChangeColorRequest() => viewInterface.showColorPickerDialog(viewModel, this.updateBackgroundColor);
      92             : 
      93           0 :   updateBackgroundColor(Color aColor) {
      94           0 :     viewModel.bodyBox.backgroundColor.value = aColor;
      95           0 :     this.refreshView();
      96             :   }
      97             : 
      98             :   // ----------------------------------
      99             :   // PRIVATES
     100             :   // ----------------------------------
     101             : 
     102           1 :   _onTextChanged(TextFormFieldNotifier textNotifier, String newValue) {
     103           2 :     textNotifier.text.value = newValue;
     104           2 :     if(viewModel.canValidate != null)  {
     105           4 :       viewModel.canValidate.value = isValid();
     106             :     }
     107             :   }
     108             : 
     109           0 :   _onStyleChanged(TextFormFieldNotifier textNotifier, TextStyle newTextStyle, FontKeys fontKeys) {
     110           0 :     textNotifier?.fontColor?.value = newTextStyle?.color;
     111           0 :     textNotifier?.fontSize?.value = newTextStyle?.fontSize?.toInt();
     112             :     if (fontKeys != null) {
     113           0 :       textNotifier?.fontWeight?.value = fontKeys.fontWeightNameKey;
     114           0 :       textNotifier?.fontFamily?.value = fontKeys.fontFamilyNameKey;
     115             :     }
     116             :   }
     117             : 
     118           6 :   bool isValid() => viewModel.detailsField.text.value.isNotEmpty;
     119             : 
     120             : }

Generated by: LCOV version 1.14