LCOV - code coverage report
Current view: top level - lib/_classes/storage/transaction_log - web_dav_protocol.dart Coverage Total Hit
Test: lcov.info Lines: 0.0 % 31 0
Test Date: 2026-11-14 15:04:37 Functions: - 0 0

            Line data    Source code
       1              : // Copyright 2023 The terCAD team. All rights reserved.
       2              : // Use of this source code is governed by a CC BY-NC-ND 4.0 license that can be found in the LICENSE file.
       3              : 
       4              : import 'package:app_finance/_classes/herald/app_locale.dart';
       5              : import 'package:app_finance/_classes/storage/transaction_log/abstract_protocol.dart';
       6              : import 'package:app_finance/_classes/storage/transaction_log/interface_protocol.dart';
       7              : import 'package:app_finance/_classes/storage/transaction_log/web_dav_data.dart';
       8              : import 'package:flutter/foundation.dart';
       9              : import 'package:webdav_client/webdav_client.dart';
      10              : 
      11              : class WebDavProtocol extends AbstractProtocol implements InterfaceProtocol {
      12              :   @override
      13              :   final Function callbackMessage;
      14              :   @override
      15              :   final Function callbackProgress;
      16              :   String message = '';
      17              :   bool inProgress = false;
      18              : 
      19            0 :   WebDavProtocol({
      20              :     required this.callbackMessage,
      21              :     required this.callbackProgress,
      22              :   });
      23              : 
      24            0 :   Future<Client?> _connect(WebDavData data) async {
      25            0 :     if (data.isEmpty()) {
      26            0 :       callbackMessage(message = AppLocale.labels.isRequired);
      27              :       return null;
      28              :     }
      29            0 :     callbackProgress(inProgress = true);
      30            0 :     Client? client = newClient(data.link, user: data.username, password: data.password);
      31            0 :     client = await client.ping().then((_) => client).onError((error, _) {
      32            0 :       callbackMessage(message = AppLocale.labels.error(error.toString()));
      33            0 :       callbackProgress(inProgress = false);
      34              :       return null;
      35              :     });
      36              :     return client;
      37              :   }
      38              : 
      39            0 :   @override
      40              :   Future<void> save(data) async {
      41            0 :     final client = await _connect(data);
      42              :     if (client == null) {
      43              :       return;
      44              :     }
      45            0 :     final codeUnits = await exportTransactions();
      46            0 :     final Uint8List unit8List = Uint8List.fromList(codeUnits);
      47            0 :     callbackMessage(message = '');
      48            0 :     await client.write(data.path, unit8List).catchError((err) {
      49            0 :       callbackMessage(message = AppLocale.labels.error(err.toString()));
      50            0 :       callbackProgress(inProgress = false);
      51              :     });
      52            0 :     callbackProgress(inProgress = false);
      53            0 :     if (message == '') {
      54            0 :       callbackMessage(message = AppLocale.labels.success);
      55              :     }
      56              :   }
      57              : 
      58            0 :   @override
      59              :   Future<void> load(data, [bool isEncrypted = true, bool isCleaned = false]) async {
      60            0 :     final client = await _connect(data);
      61              :     if (client == null) {
      62              :       return;
      63              :     }
      64            0 :     final content = await client.read(data.path).catchError((err) {
      65            0 :       callbackMessage(message = AppLocale.labels.error(err.toString()));
      66            0 :       callbackProgress(inProgress = false);
      67            0 :       return Future<List<int>>.value([]);
      68              :     });
      69              :     if (isCleaned) {
      70            0 :       clearTransactions();
      71              :     }
      72            0 :     importTransactions(content, isEncrypted);
      73            0 :     callbackProgress(inProgress = false);
      74            0 :     if (message == '') {
      75            0 :       callbackMessage(message = AppLocale.labels.success);
      76              :     }
      77              :   }
      78              : }
        

Generated by: LCOV version 2.0-1