From fcbf592d10199dbac80198dd8c2efb181f95165e Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Wed, 8 Feb 2023 20:08:23 +0100 Subject: blacklist --- lib/services/local_blacklist_provider_service.dart | 57 ++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 lib/services/local_blacklist_provider_service.dart (limited to 'lib/services/local_blacklist_provider_service.dart') diff --git a/lib/services/local_blacklist_provider_service.dart b/lib/services/local_blacklist_provider_service.dart new file mode 100644 index 0000000..cb3840e --- /dev/null +++ b/lib/services/local_blacklist_provider_service.dart @@ -0,0 +1,57 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:path_provider/path_provider.dart'; +import 'package:training_planner/pages/logbook_page.dart'; +import 'package:training_planner/services/iblacklist_provider_service.dart'; +import 'package:training_planner/services/log_service.dart'; + +class LocalBlacklistProviderService extends IBlacklistProviderService { + Future get _localDir async { + final directory = await getApplicationDocumentsDirectory(); + return directory; + } + + Future get _localPath async { + final directory = await getApplicationDocumentsDirectory(); + return directory.path; + } + + Future _localFile() async { + final path = await _localPath; + String fullPath = '$path/blacklist.json'; + File file = File(fullPath); + + bool exists = await file.exists(); + if (!exists) { + LogService.log('creating ' + fullPath); + await file.create(); + await file.writeAsString(jsonEncode([])); + } + + return File(fullPath); + } + + @override + Future> getBlacklist() async { + var file = await _localFile(); + var data = await file.readAsString(); + final Iterable iterable = await jsonDecode(data); + List parsedData = List.from( + iterable.map((model) => BlacklistEntry.fromJson(model))); + LogService.log('read ' + data); + return parsedData; + } + + @override + Future addToBlacklist(BlacklistEntry data) async { + var file = await _localFile(); + + List dataToStore = await getBlacklist(); + dataToStore.add(BlacklistEntry(data.postalcodeNumeric, data.postalcodeAplha, + data.houseNumber, data.houseNumberExtra)); + + LogService.log('writing ' + jsonEncode(dataToStore)); + file.writeAsString(jsonEncode(dataToStore)); + } +} -- cgit v1.2.3-70-g09d2