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

          Line data    Source code
       1             : import 'dart:typed_data';
       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/services/editor/helper/helper_editor_service.dart';
       7             : import 'package:pal/src/services/pal/pal_state_service.dart';
       8             : import 'package:pal/src/ui/editor/pages/helpers_list/helpers_list_loader.dart';
       9             : import 'package:pal/src/ui/editor/pages/helpers_list/helpers_list_modal.dart';
      10             : import 'package:pal/src/ui/editor/pages/helpers_list/helpers_list_modal_viewmodel.dart';
      11             : import 'package:pal/src/ui/editor/pages/helper_details/helper_details_model.dart';
      12             : 
      13             : class HelpersListModalPresenter
      14             :     extends Presenter<HelpersListModalModel, HelpersListModalView> {
      15             :   final EditorHelperService helperService;
      16             :   final HelpersListModalLoader loader;
      17             :   final PalEditModeStateService palEditModeStateService;
      18             : 
      19           2 :   HelpersListModalPresenter(
      20             :     HelpersListModalView viewInterface, {
      21             :     @required this.loader,
      22             :     @required this.palEditModeStateService,
      23             :     @required this.helperService,
      24           4 :   }) : super(HelpersListModalModel(), viewInterface);
      25             : 
      26             :   @override
      27           2 :   Future onInit() async {
      28           2 :     this.load();
      29             :   }
      30             : 
      31           2 :   Future load() async {
      32           4 :     this.viewModel.isLoading = true;
      33           4 :     this.viewModel.noMore = false;
      34           4 :     this.viewModel.loadingMore = false;
      35           8 :     this.loader.load().then((HelpersListModalModel res) {
      36           6 :       this.viewModel.helpers = res.helpers;
      37           6 :       this.viewModel.pageId = res.pageId;
      38           4 :       this.viewModel.isLoading = false;
      39           6 :       this.viewModel.pageRouteName = res.pageRouteName;
      40           2 :       this.refreshView();
      41             :     });
      42             :   }
      43             : 
      44           0 :   void loadMore() {
      45           0 :     if (!this.viewModel.noMore && !this.viewModel.loadingMore) {
      46           0 :       this.viewModel.loadingMore = true;
      47           0 :       this.refreshView();
      48             : 
      49           0 :       this.loader.loadMore(this.viewModel.pageId).then((value) {
      50           0 :         if (value.isEmpty) {
      51           0 :           this.viewModel.noMore = true;
      52             :         } else {
      53           0 :           this.viewModel.helpers.addAll(value);
      54             :         }
      55           0 :         this.viewModel.loadingMore = false;
      56           0 :         this.refreshView();
      57             :       });
      58             :     }
      59             :   }
      60             : 
      61           0 :   setImage(ByteData byteData) {
      62           0 :     this.viewModel.imageBs = byteData.buffer.asUint8List();
      63           0 :     this.refreshView();
      64             :   }
      65             : 
      66           1 :   onClickAdd() async {
      67           1 :     showEditorBubble(false);
      68             :     final shouldOpenEditor =
      69           5 :         await this.viewInterface.openHelperCreationPage(this.viewModel.pageId);
      70             :     if (shouldOpenEditor != null) {
      71             :       // Editor is opened, hide bubble
      72           0 :       showEditorBubble(false);
      73             :     } else {
      74           0 :       showEditorBubble(true);
      75             :     }
      76             :   }
      77             : 
      78           0 :   onClickSettings() async {
      79           0 :     await this.viewInterface.openAppSettingsPage();
      80             :   }
      81             : 
      82           1 :   onClickHelper(HelperEntity anHelper) async {
      83           1 :     showEditorBubble(false);
      84           3 :     final helperDetailsPopState = await this.viewInterface.openHelperDetailPage(
      85             :           anHelper,
      86           2 :           this.viewModel.pageId,
      87           2 :           this.viewModel.pageRouteName
      88             :         );
      89             : 
      90             :     if (helperDetailsPopState != null) {
      91             :       switch (helperDetailsPopState) {
      92           0 :         case HelperDetailsPopState.deleted:
      93           0 :           showEditorBubble(true);
      94           0 :           this.removeHelper(anHelper);
      95             :           break;
      96           0 :         case HelperDetailsPopState.editorOpened:
      97           0 :           showEditorBubble(false);
      98           0 :           this.viewInterface.popModalDialog();
      99             :           break;
     100             :         default:
     101           0 :           showEditorBubble(true);
     102             :       }
     103             :     }
     104             :   }
     105             : 
     106           1 :   showEditorBubble(bool visible) {
     107           3 :     this.palEditModeStateService.showEditorBubble.value = visible;
     108           1 :     this.refreshView();
     109             :   }
     110             : 
     111           1 :   backupHelpersList() {
     112           5 :     this.viewModel.backupHelpers = List.from(this.viewModel.helpers);
     113             :   }
     114             : 
     115           0 :   removeHelper(final HelperEntity helper) {
     116           0 :     this.viewModel.helpers.remove(helper);
     117           0 :     this.refreshView();
     118             :   }
     119             : 
     120           1 :   sendNewHelpersOrder(
     121             :     int oldIndex,
     122             :     int newIndex,
     123             :   ) async {
     124           1 :     Map<String, int> priority = {};
     125             :     List<HelperEntity> modifiedHelpers;
     126             : 
     127           1 :     if (newIndex < oldIndex) {
     128           0 :       modifiedHelpers = this.viewModel.helpers.sublist(
     129             :             newIndex,
     130           0 :             oldIndex + 1,
     131             :           );
     132             :     } else {
     133           4 :       if (newIndex < this.viewModel.helpers.length) {
     134           1 :         newIndex++;
     135             :       }
     136           3 :       modifiedHelpers = this.viewModel.helpers.sublist(
     137             :             oldIndex,
     138             :             newIndex,
     139             :           );
     140             :     }
     141           2 :     for (var helper in modifiedHelpers) {
     142           1 :       priority.putIfAbsent(
     143           1 :         helper.id,
     144           4 :         () => this.viewModel.helpers.indexOf(helper),
     145             :       );
     146             :     }
     147             : 
     148             :     // Check if changing was succeded or not
     149             :     try {
     150           3 :       await this.helperService.updateHelperPriority(
     151           2 :             this.viewModel.pageId,
     152             :             priority,
     153             :           );
     154             :     } catch (error) {
     155             :       // There is an error, revert change
     156           4 :       this.viewModel.helpers = this.viewModel.backupHelpers;
     157           1 :       this.refreshView();
     158             :     }
     159             :   }
     160             : }

Generated by: LCOV version 1.14