loading state and error handling refactor
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
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}).';
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user