Files
Redesnigned-Finamp/lib/services/finamp_logs_helper.dart
Zakaria 1563409cb1
Build / Build for Android (push) Has been cancelled
Build / Build for iOS (push) Has been cancelled
first commit
2026-05-18 14:15:38 -04:00

50 lines
1.3 KiB
Dart

import 'dart:io';
import 'package:clipboard/clipboard.dart';
import 'package:finamp/services/censored_log.dart';
import 'package:logging/logging.dart';
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:path/path.dart' as path_helper;
class FinampLogsHelper {
final List<LogRecord> logs = [];
void addLog(LogRecord log) {
logs.add(log);
// We don't want to keep logs forever due to memory constraints.
if (logs.length > 1000) {
logs.removeAt(0);
}
}
/// Sanitises all logs and returns a massive string
String getSanitisedLogs() {
final logsStringBuffer = StringBuffer();
for (final log in logs) {
logsStringBuffer.writeln(log.censoredMessage);
}
return logsStringBuffer.toString();
}
Future<void> copyLogs() async =>
await FlutterClipboard.copy(getSanitisedLogs());
/// Write logs to a file and share the file
Future<void> shareLogs() async {
final tempDir = await getTemporaryDirectory();
final tempFile = File(path_helper.join(tempDir.path, "finamp-logs.txt"));
await tempFile.writeAsString(getSanitisedLogs());
final xFile = XFile(tempFile.path, mimeType: "text/plain");
await Share.shareXFiles([xFile]);
await tempFile.delete();
}
}