Enhance file loading in exception handler

This commit is contained in:
OmarHatem 2024-02-02 13:18:24 +02:00
parent 1823d3f7b2
commit 2612c9afcf

View file

@ -16,11 +16,15 @@ import 'package:shared_preferences/shared_preferences.dart';
class ExceptionHandler {
static bool _hasError = false;
static const _coolDownDurationInDays = 7;
static File? _file;
static void _saveException(String? error, StackTrace? stackTrace, {String? library}) async {
final appDocDir = await getApplicationDocumentsDirectory();
if (_file == null) {
final appDocDir = await getApplicationDocumentsDirectory();
_file = File('${appDocDir.path}/error.txt');
}
final file = File('${appDocDir.path}/error.txt');
final exception = {
"${DateTime.now()}": {
"Error": "$error\n\n",
@ -33,14 +37,14 @@ class ExceptionHandler {
==========================================================\n\n''';
/// don't save existing errors
if (file.existsSync()) {
final String fileContent = await file.readAsString();
if (_file!.existsSync()) {
final String fileContent = await _file!.readAsString();
if (fileContent.contains("${exception.values.first}")) {
return;
}
}
file.writeAsStringSync(
_file!.writeAsStringSync(
"$exception $separator",
mode: FileMode.append,
);
@ -48,16 +52,18 @@ class ExceptionHandler {
static void _sendExceptionFile() async {
try {
final appDocDir = await getApplicationDocumentsDirectory();
if (_file == null) {
final appDocDir = await getApplicationDocumentsDirectory();
final file = File('${appDocDir.path}/error.txt');
_file = File('${appDocDir.path}/error.txt');
}
await _addDeviceInfo(file);
await _addDeviceInfo(_file!);
final MailOptions mailOptions = MailOptions(
subject: 'Mobile App Issue',
recipients: ['support@cakewallet.com'],
attachments: [file.path],
attachments: [_file!.path],
);
final result = await FlutterMailer.send(mailOptions);
@ -67,7 +73,7 @@ class ExceptionHandler {
if (result.name == MailerResponse.sent.name ||
result.name == MailerResponse.saved.name ||
result.name == MailerResponse.android.name) {
file.writeAsString("", mode: FileMode.write);
_file!.writeAsString("", mode: FileMode.write);
}
} catch (e, s) {
_saveException(e.toString(), s);