import 'dart:async'; import 'dart:io'; import 'package:path/path.dart' as p; import 'package:pyramid/core/app_dirs.dart'; /// Schreibt Login-/Logout-relevante Ereignisse in eine Datei, die einen /// App-Neustart übersteht. Zweck: den Uta-Random-Logout-Bug nachvollziehen /// können, auch wenn die App zwischen dem Logout und dem nächsten Blick ins /// Log neu gestartet wurde (siehe ROADMAP M1). class AuthLog { static const _maxLines = 500; static File? _file; static Future _ensureFile() async { final existing = _file; if (existing != null) return existing; final dir = await appSupportDir(); final file = File(p.join(dir.path, 'auth_log.txt')); return _file = file; } static Future write(String message) async { try { final file = await _ensureFile(); await file.writeAsString( '${DateTime.now().toIso8601String()} $message\n', mode: FileMode.append, flush: true, ); final lines = await file.readAsLines(); if (lines.length > _maxLines) { await file.writeAsString( '${lines.sublist(lines.length - _maxLines).join('\n')}\n', ); } } catch (_) { // Logging darf selbst nie einen Fehlerpfad (oder gar einen Logout) auslösen. } } static Future read() async { try { final file = await _ensureFile(); if (!await file.exists()) return '(noch keine Einträge)'; return await file.readAsString(); } catch (e) { return 'Log konnte nicht gelesen werden: $e'; } } }