Files
Client/lib/api/errors/talk_exception.dart
T

44 lines
1.4 KiB
Dart

import '../marianumcloud/talk/talk_error.dart';
import 'app_exception.dart';
class TalkException extends AppException {
final TalkError source;
TalkException(this.source, {String? technicalDetails})
: super(
userMessage: _mapMessage(source),
technicalDetails:
technicalDetails ??
'Talk ${source.status} (${source.code}): ${source.message}',
allowRetry: source.code >= 500,
);
static String _mapMessage(TalkError e) {
switch (e.code) {
case 400:
return 'Talk hat diese Anfrage abgelehnt. Bitte lade den Chat neu und '
'versuche es erneut.';
case 413:
return 'Diese Nachricht ist zu lang.';
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 'Der Chat-Server konnte die Anfrage gerade nicht verarbeiten. '
'Bitte versuche es in einem Moment erneut.';
}
return e.message.isNotEmpty
? e.message
: 'Talk meldet einen Fehler (${e.code}).';
}
}
}