import '../marianumcloud/talk/talk_error.dart'; import 'app_exception.dart'; class TalkException extends AppException { final TalkError source; TalkException(this.source) : super( userMessage: _mapMessage(source), technicalDetails: 'Talk ${source.status} (${source.code}): ${source.message}', allowRetry: source.code >= 500, ); static String _mapMessage(TalkError e) { switch (e.code) { case 401: return 'Bitte melde dich erneut an, um auf Talk zuzugreifen.'; case 403: return 'Du hast keine Berechtigung für diese Talk-Aktion.'; case 404: return 'Dieser Chat existiert nicht oder wurde entfernt.'; case 412: return 'Diese Aktion ist im aktuellen Chat-Zustand nicht erlaubt.'; case 429: return 'Zu viele Anfragen. Bitte kurz warten und erneut versuchen.'; default: if (e.code >= 500) { return 'Talk-Server hat gerade Probleme (${e.code}).'; } return e.message.isNotEmpty ? e.message : 'Talk meldet einen Fehler (${e.code}).'; } } }