34 lines
1.1 KiB
Dart
34 lines
1.1 KiB
Dart
import '../marianumcloud/talk/talkError.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}).';
|
|
}
|
|
}
|
|
}
|