diff --git a/core/lib/utils/file_utils.dart b/core/lib/utils/file_utils.dart index 47f2cc67f..69ab9630b 100644 --- a/core/lib/utils/file_utils.dart +++ b/core/lib/utils/file_utils.dart @@ -6,7 +6,7 @@ import 'package:path_provider/path_provider.dart'; class FileUtils { - static Future _getInternalStorageDirPath( + Future _getInternalStorageDirPath( String nameFile, { String? folderPath, @@ -14,25 +14,32 @@ class FileUtils { } ) async { if (!BuildUtils.isWeb) { + String fileDirectory = (await getApplicationDocumentsDirectory()).absolute.path; - if (folderPath != null) { - fileDirectory = '$fileDirectory.$folderPath'; + fileDirectory = '$fileDirectory/$folderPath'; } - fileDirectory = '$fileDirectory.$nameFile'; + Directory directory = Directory(fileDirectory); + + if (!await directory.exists()) { + await directory.create(recursive: true); + } + + fileDirectory = '$fileDirectory/$nameFile'; if (extensionFile != null) { fileDirectory = '$fileDirectory.$extensionFile'; } + return fileDirectory; } else { throw DeviceNotSupportedException(); } } - static Future saveToFile( + Future saveToFile( String nameFile, String content, { @@ -46,20 +53,19 @@ class FileUtils { extensionFile: extensionFile ); - final file = File('$internalStorageDirPath.txt'); + final file = File(internalStorageDirPath); log("FileUtils()::saveToFile: $file"); return await file.writeAsString(content, mode: FileMode.append); } - static Future getFromFile( + Future getFromFile( String nameFile, { String? folderPath, String? extensionFile } ) async { - String emailContent = ''; final internalStorageDirPath = await _getInternalStorageDirPath( nameFile, @@ -67,8 +73,8 @@ class FileUtils { extensionFile: extensionFile ); - final file = File('$internalStorageDirPath.txt'); - emailContent = await file.readAsString(); + final file = File(internalStorageDirPath); + final emailContent = await file.readAsString(); log("FileUtils()::getFromFile: $emailContent"); diff --git a/core/pubspec.lock b/core/pubspec.lock index 6cc89c3d3..cee21d210 100644 --- a/core/pubspec.lock +++ b/core/pubspec.lock @@ -121,14 +121,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.5" - external_path: - dependency: "direct main" - description: - name: external_path - sha256: "2095c626fbbefe70d5a4afc9b1137172a68ee2c276e51c3c1283394485bea8f4" - url: "https://pub.dev" - source: hosted - version: "1.0.3" fake_async: dependency: transitive description: diff --git a/core/pubspec.yaml b/core/pubspec.yaml index 7c8c8c57e..b85248303 100644 --- a/core/pubspec.yaml +++ b/core/pubspec.yaml @@ -65,8 +65,6 @@ dependencies: path_provider: 2.0.13 - external_path: 1.0.3 - path_provider_platform_interface: 2.0.1 # flutter_test from sdk depends on collection 1.17.0 diff --git a/core/test/utils/file_utils_test.dart b/core/test/utils/file_utils_test.dart new file mode 100644 index 000000000..309888696 --- /dev/null +++ b/core/test/utils/file_utils_test.dart @@ -0,0 +1,51 @@ +import 'package:core/utils/file_utils.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:path_provider_platform_interface/path_provider_platform_interface.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +const String kApplicationDocumentsPath = 'applicationDocumentsPath'; + +void main() { + const fileName = 'test_file'; + const fileContent = 'Hello, World!'; + + group('fileUtils test', () { + setUp(() async { + PathProviderPlatform.instance = FakePathProviderPlatform(); + }); + + test('Store private HTLM String to File', () async { + + final file = await FileUtils().saveToFile(fileName, fileContent); + + expect(await file.exists(), equals(true)); + + expect(await file.readAsString(), equals(fileContent)); + + file.delete(); + }); + + test('Get HTML String from File Private', () async { + + /// Create a temporary file that will be deleted after `getFromFile` is done + final file = await FileUtils().saveToFile(fileName, fileContent); + + final htmlString = await FileUtils().getFromFile(fileName); + + expect(htmlString.isNotEmpty, equals(true)); + + expect(htmlString, equals(fileContent)); + + file.delete(); + }); + }); +} + +class FakePathProviderPlatform extends Fake + with MockPlatformInterfaceMixin + implements PathProviderPlatform { + @override + Future getApplicationDocumentsPath() async { + return kApplicationDocumentsPath; + } +} \ No newline at end of file