TelegramPWA/src/util/getReadableErrorText.ts

82 lines
4.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { ApiError } from '../api/types';
const READABLE_ERROR_MESSAGES: Record<string, string> = {
CHAT_RESTRICTED: 'You can\'t send messages in this chat, you were restricted',
CHAT_WRITE_FORBIDDEN: 'You can\'t write in this chat',
CHAT_SEND_POLL_FORBIDDEN: 'You can\'t create polls in this chat',
CHAT_SEND_STICKERS_FORBIDDEN: 'You can\'t send stickers in this chat',
CHAT_SEND_GIFS_FORBIDDEN: 'You can\'t send gifs in this chat',
CHAT_SEND_MEDIA_FORBIDDEN: 'You can\'t send media in this chat',
CHAT_LINK_EXISTS: 'The chat is public, you can\'t hide the history to new users',
// eslint-disable-next-line max-len
SLOWMODE_WAIT_X: 'Slowmode is enabled in this chat: you must wait for the specified number of seconds before sending another message to the chat.',
USER_BANNED_IN_CHANNEL: 'You\'re banned from sending messages in supergroups / channels',
USER_IS_BLOCKED: 'You were blocked by this user',
YOU_BLOCKED_USER: 'You blocked this user',
IMAGE_PROCESS_FAILED: 'Failure while processing image',
MEDIA_EMPTY: 'The provided media object is invalid',
MEDIA_INVALID: 'Media invalid',
PHOTO_EXT_INVALID: 'The extension of the photo is invalid',
PHOTO_INVALID_DIMENSIONS: 'The photo dimensions are invalid',
PHOTO_SAVE_FILE_INVALID: 'Internal issues, try again later',
// eslint-disable-next-line max-len
MESSAGE_DELETE_FORBIDDEN: 'You can\'t delete one of the messages you tried to delete, most likely because it is a service message.',
MESSAGE_POLL_CLOSED: 'Poll closed',
MESSAGE_EDIT_TIME_EXPIRED: 'You can\'t edit this message anymore.',
CHAT_ADMIN_REQUIRED: 'You must be an admin in this chat to do this',
PINNED_DIALOGS_TOO_MUCH: 'Sorry, you can only pin 5 chats to the top',
DIALOG_FILTERS_TOO_MUCH: 'Sorry, you can\'t have more than 10 folders',
CHANNEL_PRIVATE: 'This channel is private',
MEDIA_CAPTION_TOO_LONG: 'The provided caption is too long',
ADDRESS_STREET_LINE1_INVALID: 'The address you provided is not valid',
ADDRESS_STREET_LINE2_INVALID: 'The address you provided is not valid',
ADDRESS_CITY_INVALID: 'The city you provided is not valid',
ADDRESS_COUNTRY_INVALID: 'The country you provided is not valid',
ADDRESS_POSTCODE_INVALID: 'The postcode you provided is not valid',
ADDRESS_STATE_INVALID: 'The state you provided is not valid',
REQ_INFO_NAME_INVALID: 'The name you provided is not valid',
REQ_INFO_PHONE_INVALID: 'The phone you provided is not valid',
REQ_INFO_EMAIL_INVALID: 'The email you provided is not valid',
// TODO Bring back after fixing the weird bug
// CHANNEL_INVALID: 'An error occurred. Please try again later',
LINK_NOT_MODIFIED: 'This discussion is already linked to the channel',
// Non-API errors
SERVICE_WORKER_DISABLED: 'Service Worker is disabled. Please reload the page without holding <Shift> key.',
// eslint-disable-next-line max-len
CAPTION_TOO_LONG_PLEASE_REMOVE_CHARACTERS: 'The provided caption is too long. Please remove {EXTRA_CHARS_COUNT} character{PLURAL_S}.',
// eslint-disable-next-line max-len
FRESH_RESET_AUTHORISATION_FORBIDDEN: 'You cant logout other sessions if less than 24 hours have passed since you logged on the current session',
BOTS_TOO_MUCH: 'There are too many bots in this chat/channel',
BOT_GROUPS_BLOCKED: 'This bot can\'t be added to groups',
USERS_TOO_MUCH: 'The maximum number of users has been exceeded',
USER_CHANNELS_TOO_MUCH: 'One of the users you tried to add is already in too many channels/supergroups',
USER_KICKED: 'This user was kicked from this supergroup/channel',
USER_NOT_MUTUAL_CONTACT: 'The provided user is not a mutual contact',
USER_PRIVACY_RESTRICTED: 'The user\'s privacy settings do not allow you to do this',
INVITE_HASH_EMPTY: 'The invite hash is empty',
INVITE_HASH_EXPIRED: 'The invite link has expired',
INVITE_HASH_INVALID: 'The invite hash is invalid',
CHANNELS_TOO_MUCH: 'You have joined too many channels/supergroups',
USER_ALREADY_PARTICIPANT: 'You already in the group',
SCHEDULE_DATE_INVALID: 'Invalid schedule date provided',
WALLPAPER_DIMENSIONS_INVALID: 'The wallpaper dimensions are invalid, please select another file',
};
export default function getReadableErrorText(error: ApiError) {
const { message, isSlowMode, textParams } = error;
// Currently, Telegram API doesn't return `SLOWMODE_WAIT_X` error as described in the docs
if (isSlowMode) {
const extraPartIndex = message.indexOf(' (caused by');
return extraPartIndex > 0 ? message.substring(0, extraPartIndex) : message;
}
let errorMessage = READABLE_ERROR_MESSAGES[message];
if (errorMessage && textParams) {
errorMessage = Object.keys(textParams).reduce((acc, current) => {
return acc.replace(current, textParams[current]);
}, errorMessage as string);
}
return errorMessage;
}