LCOV - code coverage report
Current view: top level - src/ui/editor/pages/helper_editor/helpers/editor_update_helper - editor_update_helper_viewmodel.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 63 75 84.0 %
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/database/entity/helper/helper_entity.dart';
       6             : import 'package:pal/src/database/entity/helper/helper_theme.dart';
       7             : import 'package:pal/src/database/entity/helper/helper_trigger_type.dart';
       8             : import 'package:pal/src/database/entity/helper/helper_type.dart';
       9             : import 'package:pal/src/ui/editor/pages/helper_editor/font_editor/pickers/font_weight_picker/font_weight_picker_loader.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/helper_editor_viewmodel.dart';
      12             : import 'package:pal/src/ui/shared/helper_shared_factory.dart';
      13             : import 'package:pal/src/ui/shared/helper_shared_viewmodels.dart';
      14             : 
      15             : 
      16             : class UpdateHelperViewModel extends HelperViewModel {
      17             : 
      18             :   // form validation boolean
      19             :   ValueNotifier<bool> canValidate;
      20             :   bool isKeyboardVisible;
      21             : 
      22             :   LanguageNotifier language;
      23             :   BoxNotifier bodyBox;
      24             :   Map<String, TextFormFieldNotifier> changelogsFields;
      25             :   MediaNotifier media;
      26             :   TextFormFieldNotifier thanksButton;
      27             :   TextFormFieldNotifier titleField;
      28             : 
      29             : 
      30           1 :   UpdateHelperViewModel({
      31             :     String id,
      32             :     @required String name,
      33             :     @required HelperTriggerType triggerType,
      34             :     @required int priority,
      35             :     @required HelperTheme helperTheme,
      36             :     String minVersionCode,
      37             :     String maxVersionCode,
      38             :     int versionMaxId,
      39             :     int languageId,
      40             :     HelperBoxViewModel helperBoxViewModel,
      41             :     Map<String, TextFormFieldNotifier> changelogsLabels,
      42             :     HelperImageViewModel helperImageViewModel,
      43             :     HelperTextViewModel titleLabel,
      44             :     HelperTextViewModel positivButtonLabel,
      45           1 :   }) : super(
      46             :     id: id,
      47             :     name: name,
      48             :     triggerType: triggerType,
      49             :     priority: priority,
      50             :     minVersionCode: minVersionCode,
      51             :     maxVersionCode: maxVersionCode,
      52             :     helperType: HelperType.UPDATE_HELPER,
      53             :     helperTheme: helperTheme,
      54             :   ) {
      55           2 :     this.language = LanguageNotifier(
      56             :       id: languageId ?? 1,
      57             :     );
      58           2 :     this.bodyBox = BoxNotifier(
      59           1 :       id: helperBoxViewModel?.id,
      60           1 :       backgroundColor: helperBoxViewModel?.backgroundColor ?? Colors.blueAccent,
      61             :     );
      62           2 :     this.changelogsFields = changelogsLabels ?? {};
      63           2 :     this.media = MediaNotifier(
      64           1 :       id: helperImageViewModel?.id,
      65           1 :       url: helperImageViewModel?.url,
      66             :     );
      67           2 :     this.thanksButton = TextFormFieldNotifier(
      68             :       // backgroundColor: Colors.black87,
      69           0 :       id: positivButtonLabel?.id,
      70           0 :       fontColor: positivButtonLabel?.fontColor ?? Colors.white,
      71           0 :       fontSize: positivButtonLabel?.fontSize?.toInt() ?? 22,
      72           0 :       text: positivButtonLabel?.text ?? 'Thank you!',
      73           1 :       fontWeight: FontWeightMapper.toFontKey(
      74           0 :         positivButtonLabel?.fontWeight ?? FontWeight.normal),
      75           0 :       fontFamily: positivButtonLabel?.fontFamily,
      76             :     );
      77           2 :     this.titleField = TextFormFieldNotifier(
      78           1 :       id: titleLabel?.id,
      79           1 :       fontColor: titleLabel?.fontColor ?? Colors.white,
      80           2 :       fontSize: titleLabel?.fontSize?.toInt() ?? 36,
      81           1 :       text: titleLabel?.text ?? '',
      82           2 :       fontWeight: FontWeightMapper.toFontKey(titleLabel?.fontWeight),
      83           1 :       fontFamily: titleLabel?.fontFamily,
      84             :       hintText: 'Enter your title here...',
      85             :     );
      86             :   }
      87             : 
      88           1 :   factory UpdateHelperViewModel.fromHelperViewModel(HelperViewModel model) {
      89           1 :     final updateHelper = UpdateHelperViewModel(
      90           1 :       id: model.id,
      91           1 :       name: model.name,
      92           1 :       triggerType: model.triggerType,
      93           1 :       priority: model.priority,
      94           1 :       minVersionCode: model.minVersionCode,
      95           1 :       maxVersionCode: model.maxVersionCode,
      96           1 :       helperTheme: model.helperTheme,
      97             :     );
      98             : 
      99           1 :     if (model is UpdateHelperViewModel) {
     100           0 :       updateHelper.bodyBox = model?.bodyBox;
     101           0 :       updateHelper.language = model?.language;
     102           0 :       updateHelper.titleField = model?.titleField;
     103           0 :       updateHelper.thanksButton = model?.thanksButton;
     104           0 :       updateHelper.changelogsFields = model?.changelogsFields;
     105           0 :       updateHelper.media = model?.media;
     106             :     }
     107             : 
     108             :     return updateHelper;
     109             :   }
     110             : 
     111           1 :   factory UpdateHelperViewModel.fromHelperEntity(HelperEntity helperEntity) {
     112           1 :     Map<String, TextFormFieldNotifier> changelogsMap = {};
     113           1 :     List<HelperTextViewModel> changelogs = HelperSharedFactory.parseTextsLabel(
     114             :       UpdatescreenHelperKeys.LINES_KEY,
     115           1 :       helperEntity?.helperTexts,
     116             :     );
     117             : 
     118           2 :     if (changelogs != null && changelogs.length > 0) {
     119           2 :       for (var changelog in changelogs) {
     120           1 :         changelogsMap.putIfAbsent(
     121           3 :           'template_${changelog.id.toString()}',
     122           2 :             () => TextFormFieldNotifier(
     123           1 :             id: changelog?.id,
     124           1 :             text: changelog?.text ?? '',
     125           1 :             fontColor: changelog?.fontColor ?? Colors.white,
     126           2 :             fontSize: changelog?.fontSize?.toInt() ?? 18,
     127           1 :             fontFamily: changelog?.fontFamily,
     128           2 :             fontWeight: FontWeightMapper.toFontKey(changelog?.fontWeight),
     129             :           ),
     130             :         );
     131             :       }
     132             :     }
     133           1 :     return UpdateHelperViewModel(
     134           1 :       id: helperEntity?.id,
     135           1 :       name: helperEntity?.name,
     136           1 :       triggerType: helperEntity?.triggerType,
     137           1 :       priority: helperEntity?.priority,
     138           1 :       minVersionCode: helperEntity?.versionMin,
     139           1 :       maxVersionCode: helperEntity?.versionMax,
     140             :       helperTheme: null,
     141           1 :       helperBoxViewModel: HelperSharedFactory.parseBoxBackground(
     142             :         SimpleHelperKeys.BACKGROUND_KEY,
     143           1 :         helperEntity?.helperBoxes,
     144             :       ),
     145           1 :       titleLabel: HelperSharedFactory.parseTextLabel(
     146             :         UpdatescreenHelperKeys.TITLE_KEY,
     147           1 :         helperEntity?.helperTexts,
     148             :       ),
     149           1 :       positivButtonLabel: HelperSharedFactory.parseTextLabel(
     150             :         UpdatescreenHelperKeys.POSITIV_KEY,
     151           1 :         helperEntity?.helperTexts,
     152             :       ),
     153           1 :       helperImageViewModel: HelperSharedFactory.parseImageUrl(
     154             :         UpdatescreenHelperKeys.IMAGE_KEY,
     155           1 :         helperEntity?.helperImages,
     156             :       ),
     157             :       changelogsLabels: changelogsMap,
     158             :       // TODO: Add changelog edit
     159             :     );
     160             :   }
     161             : 
     162           1 :   String addChangelog() {
     163           3 :     String textFieldId = changelogsFields.length.toString();
     164           2 :     this.changelogsFields.putIfAbsent(
     165             :       textFieldId,
     166           2 :       () => TextFormFieldNotifier(
     167             :           text: '',
     168             :           fontSize: 18,
     169             :           fontColor: Colors.white
     170             :       ),
     171             :     );
     172             :     return textFieldId;
     173             :   }
     174             : }

Generated by: LCOV version 1.14