LCOV - code coverage report
Current view: top level - lib/_classes/storage/transaction_log - web_dav_protocol.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 0 31 0.0 %
Date: 2024-10-04 11:09:33 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 1.14