2026-03-29 20:26:30 +08:00
|
|
|
import '../../core/l10n/l10n.dart';
|
2026-03-27 14:05:03 +08:00
|
|
|
|
|
|
|
|
String? mapErrorCodeToL10nKey(
|
|
|
|
|
String? errorCode, {
|
|
|
|
|
Map<String, dynamic>? params,
|
|
|
|
|
}) {
|
|
|
|
|
if (errorCode == null || errorCode.isEmpty) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (errorCode) {
|
|
|
|
|
case 'AGENT_RUN_INPUT_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_RUN_MESSAGES_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_INVALID_LAST_EVENT_ID':
|
|
|
|
|
return 'errorAgentInvalidLastEventId';
|
|
|
|
|
case 'AGENT_SSE_CONNECTION_LIMIT':
|
|
|
|
|
return 'errorAgentSseConnectionLimit';
|
|
|
|
|
case 'AGENT_ATTACHMENT_EMPTY':
|
|
|
|
|
return 'errorAgentAttachmentEmpty';
|
|
|
|
|
case 'AGENT_ATTACHMENT_TOO_LARGE':
|
|
|
|
|
return 'errorAgentAttachmentTooLarge';
|
|
|
|
|
case 'AGENT_AUDIO_UNSUPPORTED_FORMAT':
|
|
|
|
|
return 'errorAgentAudioUnsupportedFormat';
|
|
|
|
|
case 'AGENT_AUDIO_TOO_LARGE':
|
|
|
|
|
return 'errorAgentAudioTooLarge';
|
|
|
|
|
case 'AGENT_AUDIO_EMPTY':
|
|
|
|
|
return 'errorAgentAudioEmpty';
|
|
|
|
|
case 'AGENT_ASR_UNAVAILABLE':
|
|
|
|
|
return 'errorAgentAsrUnavailable';
|
|
|
|
|
case 'AGENT_FORBIDDEN':
|
|
|
|
|
return 'errorForbidden';
|
|
|
|
|
case 'AGENT_PAYLOAD_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_ATTACHMENTS_TOO_MANY':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_SIGNED_IMAGE_URL_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_ATTACHMENT_STORAGE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'AGENT_ATTACHMENT_UNSUPPORTED_TYPE':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_ATTACHMENT_UPLOAD_FAILED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_ATTACHMENT_BUCKET_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_ATTACHMENT_PATH_SCOPE_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_SIGNED_URL_GENERATION_FAILED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_SESSION_ID_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AGENT_SESSION_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'AGENT_USER_ID_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'INVALID_BINARY_URL_HOST':
|
|
|
|
|
return 'errorAgentInvalidBinaryUrl';
|
|
|
|
|
case 'INVALID_BINARY_URL_BUCKET':
|
|
|
|
|
return 'errorAgentInvalidBinaryUrl';
|
|
|
|
|
case 'INVALID_BINARY_URL_PATH_SCOPE':
|
|
|
|
|
return 'errorAgentInvalidBinaryUrl';
|
|
|
|
|
case 'AUTH_SERVICE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'AUTH_TOO_MANY_REQUESTS':
|
|
|
|
|
return 'errorTooManyRequests';
|
|
|
|
|
case 'AUTH_VERIFICATION_CODE_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AUTH_REFRESH_TOKEN_INVALID':
|
|
|
|
|
return 'errorReLogin';
|
|
|
|
|
case 'AUTH_REFRESH_TOKEN_MISSING':
|
|
|
|
|
return 'errorReLogin';
|
|
|
|
|
case 'AUTH_USER_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'AUTH_UNAUTHORIZED':
|
|
|
|
|
return 'errorReLogin';
|
|
|
|
|
case 'JWT_VERIFIER_NOT_CONFIGURED':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'AUTOMATION_JOB_LIMIT_EXCEEDED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'AUTOMATION_SYSTEM_JOB_MODIFICATION_FORBIDDEN':
|
|
|
|
|
return 'errorForbidden';
|
|
|
|
|
case 'AUTOMATION_JOB_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'AUTOMATION_JOB_STORE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'LOOKUP_FAILED':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'INTERNAL_ERROR':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'MISSING_RUNTIME_ARGS':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'TOOL_PENDING_APPROVAL':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'TOOL_REJECTED':
|
|
|
|
|
return 'errorForbidden';
|
|
|
|
|
case 'USER_STORE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'USER_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'USER_UPDATE_FIELDS_EMPTY':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'USER_AVATAR_UNSUPPORTED_TYPE':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'USER_AVATAR_TOO_LARGE':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'USER_AVATAR_EMPTY':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'USER_AVATAR_UPLOAD_FAILED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'USER_AUTH_LOOKUP_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'TODO_SERVICE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'TODO_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'TODO_ACCESS_FORBIDDEN':
|
|
|
|
|
return 'errorForbidden';
|
|
|
|
|
case 'TODO_REORDER_DUPLICATE_ID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'TODO_STATUS_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'TODO_PRIORITY_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_INVALID_TIME_RANGE':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_STORE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'SCHEDULE_ITEM_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'SCHEDULE_ITEM_START_AT_TIMEZONE_REQUIRED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_PAGE_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_PAGE_SIZE_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_SHARE_FORBIDDEN':
|
|
|
|
|
return 'errorForbidden';
|
|
|
|
|
case 'SCHEDULE_ITEM_SHARE_PERMISSION_EXCEEDED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_SUBSCRIPTION_ALREADY_ACTIVE':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_INVITE_ALREADY_SUBSCRIBED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_INVITE_ALREADY_PENDING':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_AUTH_LOOKUP_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'SCHEDULE_ITEM_PENDING_INVITE_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'SCHEDULE_ITEM_ACCEPT_SUBSCRIPTION_FAILED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_REJECT_SUBSCRIPTION_FAILED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_DATETIME_TIMEZONE_REQUIRED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'SCHEDULE_ITEM_DATETIME_REQUIRED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'INBOX_MESSAGE_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'INBOX_MESSAGE_STORE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'MEMORIES_USER_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'MEMORIES_WORK_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'MEMORIES_SERVICE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'FRIEND_REQUEST_SELF_NOT_ALLOWED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'FRIEND_ALREADY_ACCEPTED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'FRIEND_REQUEST_BLOCKED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'FRIEND_REQUEST_ALREADY_SENT':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'FRIENDSHIP_SERVICE_UNAVAILABLE':
|
|
|
|
|
return 'errorServer';
|
|
|
|
|
case 'FRIEND_REQUEST_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'FRIEND_REQUEST_FORBIDDEN':
|
|
|
|
|
return 'errorForbidden';
|
|
|
|
|
case 'FRIEND_REQUEST_NOT_PENDING':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'FRIEND_INBOX_MESSAGE_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'FRIENDSHIP_DATA_INVALID':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
case 'FRIENDSHIP_NOT_FOUND':
|
|
|
|
|
return 'errorNotFound';
|
|
|
|
|
case 'FRIENDSHIP_REMOVE_REQUIRES_ACCEPTED':
|
|
|
|
|
return 'errorGenericSafe';
|
|
|
|
|
default:
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String? resolveErrorCodeMessage(
|
|
|
|
|
String? errorCode, {
|
|
|
|
|
Map<String, dynamic>? params,
|
|
|
|
|
}) {
|
|
|
|
|
final key = mapErrorCodeToL10nKey(errorCode, params: params);
|
|
|
|
|
if (key == null) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (key) {
|
|
|
|
|
case 'errorAgentSseConnectionLimit':
|
|
|
|
|
return L10n.current.errorAgentSseConnectionLimit;
|
|
|
|
|
case 'errorAgentAttachmentEmpty':
|
|
|
|
|
return L10n.current.errorAgentAttachmentEmpty;
|
|
|
|
|
case 'errorAgentAttachmentTooLarge':
|
|
|
|
|
return L10n.current.errorAgentAttachmentTooLarge;
|
|
|
|
|
case 'errorAgentAudioEmpty':
|
|
|
|
|
return L10n.current.errorAgentAudioEmpty;
|
|
|
|
|
case 'errorAgentAudioTooLarge':
|
|
|
|
|
return L10n.current.errorAgentAudioTooLarge;
|
|
|
|
|
case 'errorAgentAudioUnsupportedFormat':
|
|
|
|
|
return L10n.current.errorAgentAudioUnsupportedFormat;
|
|
|
|
|
case 'errorAgentAsrUnavailable':
|
|
|
|
|
return L10n.current.errorAgentAsrUnavailable;
|
|
|
|
|
case 'errorAgentInvalidLastEventId':
|
|
|
|
|
return L10n.current.errorAgentInvalidLastEventId;
|
|
|
|
|
case 'errorAgentInvalidBinaryUrl':
|
|
|
|
|
return L10n.current.errorAgentInvalidBinaryUrl;
|
|
|
|
|
case 'errorForbidden':
|
|
|
|
|
return L10n.current.errorForbidden;
|
|
|
|
|
case 'errorNotFound':
|
|
|
|
|
return L10n.current.errorNotFound;
|
|
|
|
|
case 'errorTooManyRequests':
|
|
|
|
|
return L10n.current.errorTooManyRequests;
|
|
|
|
|
case 'errorServer':
|
|
|
|
|
return L10n.current.errorServer;
|
|
|
|
|
case 'errorGenericSafe':
|
|
|
|
|
return L10n.current.errorGenericSafe;
|
|
|
|
|
case 'errorReLogin':
|
|
|
|
|
return L10n.current.errorReLogin;
|
|
|
|
|
default:
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
}
|