diff --git a/app/lib/common/utilities/hive_utils.dart b/app/lib/common/utilities/hive_utils.dart index 9abc3a5f..465e5b89 100644 --- a/app/lib/common/utilities/hive_utils.dart +++ b/app/lib/common/utilities/hive_utils.dart @@ -1,7 +1,11 @@ import 'dart:convert'; +import 'dart:io'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:hive/hive.dart'; +import 'package:path_provider/path_provider.dart'; + +import '../module.dart'; Future> retrieveExistingOrGenerateKey() async { const secureStorage = FlutterSecureStorage(); @@ -17,3 +21,31 @@ Future> retrieveExistingOrGenerateKey() async { final key = await secureStorage.read(key: 'key'); return base64Url.decode(key!); } + +Future deleteAllAppData() async { + await _deleteCacheDir(); + await _deleteAppDir(); + await UserData.erase(); + await MetaData.erase(); + await DrugsWithGuidelines.erase(); +} + +// The folders themselves cannot be deleted on iOS, therefore delete all content +// inside the folders +void _deleteFolderContent(Directory directory) { + if (!directory.existsSync()) return; + for (final item in directory.listSync()) { + item.deleteSync(recursive: true); + } +} + +Future _deleteCacheDir() async { + final tempDir = await getTemporaryDirectory(); + _deleteFolderContent(tempDir); +} + +Future _deleteAppDir() async { + final appDocDir = await getApplicationDocumentsDirectory(); + _deleteFolderContent(appDocDir); +} + diff --git a/app/lib/more/pages/more.dart b/app/lib/more/pages/more.dart index c6e123c9..cd296ac1 100644 --- a/app/lib/more/pages/more.dart +++ b/app/lib/more/pages/more.dart @@ -1,5 +1,5 @@ import '../../common/module.dart'; -import '../utils.dart'; +import '../../common/utilities/hive_utils.dart'; @RoutePage() class MorePage extends StatelessWidget { diff --git a/app/lib/more/utils.dart b/app/lib/more/utils.dart deleted file mode 100644 index 39f3f341..00000000 --- a/app/lib/more/utils.dart +++ /dev/null @@ -1,32 +0,0 @@ -import 'dart:io'; - -import 'package:path_provider/path_provider.dart'; - -import '../common/module.dart'; - -Future deleteAllAppData() async { - await _deleteCacheDir(); - await _deleteAppDir(); - await UserData.erase(); - await MetaData.erase(); - await DrugsWithGuidelines.erase(); -} - -// The folders themself cannot be deleted on iOS, therefore delete all content -// inside the folders -void _deleteFolderContent(Directory directory) { - if (!directory.existsSync()) return; - for (final item in directory.listSync()) { - item.deleteSync(recursive: true); - } -} - -Future _deleteCacheDir() async { - final tempDir = await getTemporaryDirectory(); - _deleteFolderContent(tempDir); -} - -Future _deleteAppDir() async { - final appDocDir = await getApplicationDocumentsDirectory(); - _deleteFolderContent(appDocDir); -}