mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-20 20:59:16 +00:00
improvement: translated all backend errors messages
This commit is contained in:
@@ -30,7 +30,7 @@ export const update = async (
|
|||||||
const token: string = req.cookies.jrt;
|
const token: string = req.cookies.jrt;
|
||||||
|
|
||||||
if (!token) {
|
if (!token) {
|
||||||
throw new AppError("Invalid session. Please login.", 401);
|
throw new AppError("ERR_SESSION_EXPIRED", 401);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { newToken, refreshToken } = await RefreshTokenService(token);
|
const { newToken, refreshToken } = await RefreshTokenService(token);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import ListSettingsService from "../services/SettingServices/ListSettingsService
|
|||||||
|
|
||||||
export const index = async (req: Request, res: Response): Promise<Response> => {
|
export const index = async (req: Request, res: Response): Promise<Response> => {
|
||||||
if (req.user.profile !== "admin") {
|
if (req.user.profile !== "admin") {
|
||||||
throw new AppError("Only administrators can access resource.", 403);
|
throw new AppError("ERR_NO_PERMISSION", 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
const settings = await ListSettingsService();
|
const settings = await ListSettingsService();
|
||||||
@@ -21,7 +21,7 @@ export const update = async (
|
|||||||
res: Response
|
res: Response
|
||||||
): Promise<Response> => {
|
): Promise<Response> => {
|
||||||
if (req.user.profile !== "admin") {
|
if (req.user.profile !== "admin") {
|
||||||
throw new AppError("Only administrators can access this route.", 403);
|
throw new AppError("ERR_NO_PERMISSION", 403);
|
||||||
}
|
}
|
||||||
const { settingKey: key } = req.params;
|
const { settingKey: key } = req.params;
|
||||||
const { value } = req.body;
|
const { value } = req.body;
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ type IndexQuery = {
|
|||||||
|
|
||||||
export const index = async (req: Request, res: Response): Promise<Response> => {
|
export const index = async (req: Request, res: Response): Promise<Response> => {
|
||||||
if (req.user.profile !== "admin") {
|
if (req.user.profile !== "admin") {
|
||||||
throw new AppError("Only administrators can access this route.", 403); // should be handled better.
|
throw new AppError("ERR_NO_PERMISSION", 403); // should be handled better.
|
||||||
}
|
}
|
||||||
const { searchParam, pageNumber } = req.query as IndexQuery;
|
const { searchParam, pageNumber } = req.query as IndexQuery;
|
||||||
|
|
||||||
@@ -36,9 +36,9 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
|
|||||||
req.url === "/signup" &&
|
req.url === "/signup" &&
|
||||||
(await CheckSettingsHelper("userCreation")) === "disabled"
|
(await CheckSettingsHelper("userCreation")) === "disabled"
|
||||||
) {
|
) {
|
||||||
throw new AppError("User creation is disabled by administrator.", 403);
|
throw new AppError("ERR_USER_CREATION_DISABLED", 403);
|
||||||
} else if (req.url !== "/signup" && req.user.profile !== "admin") {
|
} else if (req.url !== "/signup" && req.user.profile !== "admin") {
|
||||||
throw new AppError("Only administrators can create users.", 403);
|
throw new AppError("ERR_NO_PERMISSION", 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
const user = await CreateUserService({
|
const user = await CreateUserService({
|
||||||
@@ -70,7 +70,7 @@ export const update = async (
|
|||||||
res: Response
|
res: Response
|
||||||
): Promise<Response> => {
|
): Promise<Response> => {
|
||||||
if (req.user.profile !== "admin") {
|
if (req.user.profile !== "admin") {
|
||||||
throw new AppError("Only administrators can edit users.", 403);
|
throw new AppError("ERR_NO_PERMISSION", 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { userId } = req.params;
|
const { userId } = req.params;
|
||||||
@@ -94,7 +94,7 @@ export const remove = async (
|
|||||||
const { userId } = req.params;
|
const { userId } = req.params;
|
||||||
|
|
||||||
if (req.user.profile !== "admin") {
|
if (req.user.profile !== "admin") {
|
||||||
throw new AppError("Only administrators can delete users.", 403);
|
throw new AppError("ERR_NO_PERMISSION", 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
await DeleteUserService(userId);
|
await DeleteUserService(userId);
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const CheckSettings = async (key: string): Promise<string> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!setting) {
|
if (!setting) {
|
||||||
throw new AppError("No setting found with this id.", 404);
|
throw new AppError("ERR_NO_SETTING_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
return setting.value;
|
return setting.value;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const GetDefaultWhatsApp = async (): Promise<Whatsapp> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!defaultWhatsapp) {
|
if (!defaultWhatsapp) {
|
||||||
throw new AppError("ERR_NO_WAPP_FOUND");
|
throw new AppError("ERR_NO_DEF_WAPP_FOUND");
|
||||||
}
|
}
|
||||||
|
|
||||||
return defaultWhatsapp;
|
return defaultWhatsapp;
|
||||||
|
|||||||
@@ -19,20 +19,13 @@ export const GetWbotMessage = async (
|
|||||||
const msgToDelete = chatMessages.find(msg => msg.id.id === messageId);
|
const msgToDelete = chatMessages.find(msg => msg.id.id === messageId);
|
||||||
|
|
||||||
if (!msgToDelete) {
|
if (!msgToDelete) {
|
||||||
throw new AppError("msgNotFound");
|
throw new Error();
|
||||||
}
|
}
|
||||||
|
|
||||||
return msgToDelete;
|
return msgToDelete;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
if (err.message === "msgNotFound") {
|
throw new AppError("ERR_DELETE_WAPP_MSG");
|
||||||
throw new AppError(
|
|
||||||
"Could not find a message witht this ID in WhatsApp chat."
|
|
||||||
);
|
|
||||||
}
|
|
||||||
throw new AppError(
|
|
||||||
"Could not valid WhatsApp contact. Check connections page"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -92,9 +92,7 @@ export const getWbot = (whatsappId: number): Session => {
|
|||||||
const sessionIndex = sessions.findIndex(s => s.id === whatsappId);
|
const sessionIndex = sessions.findIndex(s => s.id === whatsappId);
|
||||||
|
|
||||||
if (sessionIndex === -1) {
|
if (sessionIndex === -1) {
|
||||||
throw new AppError(
|
throw new AppError("ERR_WAPP_NOT_INITIALIZED");
|
||||||
"This WhatsApp session is not initialized. Check connections page."
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
return sessions[sessionIndex];
|
return sessions[sessionIndex];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ export const RefreshTokenService = async (token: string): Promise<Response> => {
|
|||||||
try {
|
try {
|
||||||
decoded = verify(token, authConfig.refreshSecret);
|
decoded = verify(token, authConfig.refreshSecret);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
throw new AppError("Session expire. Please login.", 401);
|
throw new AppError("ERR_SESSION_EXPIRED", 401);
|
||||||
}
|
}
|
||||||
|
|
||||||
const { id, tokenVersion } = decoded as RefreshTokenPayload;
|
const { id, tokenVersion } = decoded as RefreshTokenPayload;
|
||||||
@@ -31,7 +31,7 @@ export const RefreshTokenService = async (token: string): Promise<Response> => {
|
|||||||
const user = await ShowUserService(id);
|
const user = await ShowUserService(id);
|
||||||
|
|
||||||
if (user.tokenVersion !== tokenVersion) {
|
if (user.tokenVersion !== tokenVersion) {
|
||||||
throw new AppError("Session revoked. Please login.", 401);
|
throw new AppError("ERR_SESSION_EXPIRED", 401);
|
||||||
}
|
}
|
||||||
|
|
||||||
const newToken = createAccessToken(user);
|
const newToken = createAccessToken(user);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ const CreateContactService = async ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (numberExists) {
|
if (numberExists) {
|
||||||
throw new AppError("A contact with this number already exists.");
|
throw new AppError("ERR_DUPLICATED_CONTACT");
|
||||||
}
|
}
|
||||||
|
|
||||||
const contact = await Contact.create(
|
const contact = await Contact.create(
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const DeleteContactService = async (id: string): Promise<void> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!contact) {
|
if (!contact) {
|
||||||
throw new AppError("No contact found with this ID.", 404);
|
throw new AppError("ERR_NO_CONTACT_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
await contact.destroy();
|
await contact.destroy();
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ const ShowContactService = async (id: string | number): Promise<Contact> => {
|
|||||||
const contact = await Contact.findByPk(id, { include: ["extraInfo"] });
|
const contact = await Contact.findByPk(id, { include: ["extraInfo"] });
|
||||||
|
|
||||||
if (!contact) {
|
if (!contact) {
|
||||||
throw new AppError("No contact found with this ID.", 404);
|
throw new AppError("ERR_NO_CONTACT_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
return contact;
|
return contact;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ const UpdateContactService = async ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!contact) {
|
if (!contact) {
|
||||||
throw new AppError("No contact found with this ID.", 404);
|
throw new AppError("ERR_NO_CONTACT_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extraInfo) {
|
if (extraInfo) {
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ const CreateMessageService = async ({
|
|||||||
const ticket = await ShowTicketService(messageData.ticketId);
|
const ticket = await ShowTicketService(messageData.ticketId);
|
||||||
|
|
||||||
if (!ticket) {
|
if (!ticket) {
|
||||||
throw new AppError("No ticket found with this ID", 404);
|
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
await Message.upsert(messageData);
|
await Message.upsert(messageData);
|
||||||
@@ -32,7 +32,7 @@ const CreateMessageService = async ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!message) {
|
if (!message) {
|
||||||
throw new AppError("Error while creating message on database.", 501);
|
throw new AppError("ERR_CREATING_MESSAGE", 501);
|
||||||
}
|
}
|
||||||
|
|
||||||
return message;
|
return message;
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ const ListMessagesService = async ({
|
|||||||
const ticket = await ShowTicketService(ticketId);
|
const ticket = await ShowTicketService(ticketId);
|
||||||
|
|
||||||
if (!ticket) {
|
if (!ticket) {
|
||||||
throw new AppError("No ticket found with this ID", 404);
|
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
const whereCondition = {
|
const whereCondition = {
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ const UpdateSettingService = async ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!setting) {
|
if (!setting) {
|
||||||
throw new AppError("No setting found with this ID.", 404);
|
throw new AppError("ERR_NO_SETTING_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
await setting.update({ value });
|
await setting.update({ value });
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ const CreateTicketService = async ({
|
|||||||
const ticket = await Ticket.findByPk(id, { include: ["contact"] });
|
const ticket = await Ticket.findByPk(id, { include: ["contact"] });
|
||||||
|
|
||||||
if (!ticket) {
|
if (!ticket) {
|
||||||
throw new AppError("Error, ticket not created.");
|
throw new AppError("ERR_CREATING_TICKET");
|
||||||
}
|
}
|
||||||
|
|
||||||
return ticket;
|
return ticket;
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const DeleteTicketService = async (id: string): Promise<Ticket> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!ticket) {
|
if (!ticket) {
|
||||||
throw new AppError("No ticket found with this ID.", 404);
|
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
await ticket.destroy();
|
await ticket.destroy();
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ const ShowTicketService = async (id: string | number): Promise<Ticket> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!ticket) {
|
if (!ticket) {
|
||||||
throw new AppError("No ticket found with this ID", 404);
|
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ticket;
|
return ticket;
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ const UpdateTicketService = async ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!ticket) {
|
if (!ticket) {
|
||||||
throw new AppError("No ticket found with this ID.", 404);
|
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
await SetTicketMessagesAsRead(ticket);
|
await SetTicketMessagesAsRead(ticket);
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ const DeleteUserService = async (id: string): Promise<void> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
throw new AppError("No user found with this ID.", 404);
|
throw new AppError("ERR_NO_USER_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
const userOpenTickets: Ticket[] = await user.$get("tickets", {
|
const userOpenTickets: Ticket[] = await user.$get("tickets", {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const ShowUserService = async (id: string | number): Promise<User> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
throw new AppError("No user found with this ID.", 404);
|
throw new AppError("ERR_NO_USER_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
return user;
|
return user;
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ const UpdateUserService = async ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!user) {
|
if (!user) {
|
||||||
throw new AppError("No user found with this ID.", 404);
|
throw new AppError("ERR_NO_USER_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
const schema = Yup.object().shape({
|
const schema = Yup.object().shape({
|
||||||
|
|||||||
@@ -15,11 +15,9 @@ const CheckIsValidContact = async (number: string): Promise<void> => {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
if (err.message === "invalidNumber") {
|
if (err.message === "invalidNumber") {
|
||||||
throw new AppError("This is not a valid whatsapp number.");
|
throw new AppError("ERR_WAPP_INVALID_CONTACT");
|
||||||
}
|
}
|
||||||
throw new AppError(
|
throw new AppError("ERR_WAPP_CHECK_CONTACT");
|
||||||
"Could not valid WhatsApp contact. Check connections page"
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ const handlMedia = async (
|
|||||||
const media = await msg.downloadMedia();
|
const media = await msg.downloadMedia();
|
||||||
|
|
||||||
if (!media) {
|
if (!media) {
|
||||||
throw new AppError("Cannot download media from whatsapp.");
|
throw new AppError("ERR_WAPP_DOWNLOAD_MEDIA");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!media.filename) {
|
if (!media.filename) {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const DeleteWhatsApprService = async (id: string): Promise<void> => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!whatsapp) {
|
if (!whatsapp) {
|
||||||
throw new AppError("No whatsapp found with this ID.", 404);
|
throw new AppError("ERR_NO_WAPP_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
await whatsapp.destroy();
|
await whatsapp.destroy();
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const ShowWhatsAppService = async (
|
|||||||
const whatsapp = await Whatsapp.findByPk(id);
|
const whatsapp = await Whatsapp.findByPk(id);
|
||||||
|
|
||||||
if (!whatsapp) {
|
if (!whatsapp) {
|
||||||
throw new AppError("No whatsapp found with this conditions.", 404);
|
throw new AppError("ERR_NO_WAPP_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
return whatsapp;
|
return whatsapp;
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ const UpdateWhatsAppService = async ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (!whatsapp) {
|
if (!whatsapp) {
|
||||||
throw new AppError("No whatsapp found with this ID.", 404);
|
throw new AppError("ERR_NO_WAPP_FOUND", 404);
|
||||||
}
|
}
|
||||||
|
|
||||||
await whatsapp.update({
|
await whatsapp.update({
|
||||||
|
|||||||
@@ -81,10 +81,16 @@ const ContactModal = ({ open, onClose, contactId }) => {
|
|||||||
const { data } = await api.get(`/contacts/${contactId}`);
|
const { data } = await api.get(`/contacts/${contactId}`);
|
||||||
setContact(data);
|
setContact(data);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -105,10 +111,16 @@ const ContactModal = ({ open, onClose, contactId }) => {
|
|||||||
}
|
}
|
||||||
toast.success(i18n.t("contactModal.success"));
|
toast.success(i18n.t("contactModal.success"));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
handleClose();
|
handleClose();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ import ModalImageCors from "../ModalImageCors";
|
|||||||
import MessageOptionsMenu from "../MessageOptionsMenu";
|
import MessageOptionsMenu from "../MessageOptionsMenu";
|
||||||
import whatsBackground from "../../assets/wa-background.png";
|
import whatsBackground from "../../assets/wa-background.png";
|
||||||
|
|
||||||
|
import { i18n } from "../../translate/i18n";
|
||||||
import api from "../../services/api";
|
import api from "../../services/api";
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
|
|
||||||
@@ -284,10 +285,16 @@ const MessagesList = ({ ticketId, isGroup }) => {
|
|||||||
scrollToBottom();
|
scrollToBottom();
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -53,10 +53,16 @@ const NewTicketModal = ({ modalOpen, onClose }) => {
|
|||||||
setOptions(data.contacts);
|
setOptions(data.contacts);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,16 @@ const QrcodeModal = ({ open, onClose, whatsAppId }) => {
|
|||||||
const { data } = await api.get(`/whatsapp/${whatsAppId}`);
|
const { data } = await api.get(`/whatsapp/${whatsAppId}`);
|
||||||
setQrCode(data.qrcode);
|
setQrCode(data.qrcode);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchSession();
|
fetchSession();
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import TicketInfo from "../TicketInfo";
|
|||||||
import TicketActionButtons from "../TicketActionButtons";
|
import TicketActionButtons from "../TicketActionButtons";
|
||||||
import MessagesList from "../MessagesList";
|
import MessagesList from "../MessagesList";
|
||||||
import api from "../../services/api";
|
import api from "../../services/api";
|
||||||
|
import { i18n } from "../../translate/i18n";
|
||||||
|
|
||||||
const drawerWidth = 320;
|
const drawerWidth = 320;
|
||||||
|
|
||||||
@@ -76,12 +77,18 @@ const Ticket = () => {
|
|||||||
setTicket(data);
|
setTicket(data);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
|
}
|
||||||
if (err.response.status === 404) {
|
if (err.response.status === 404) {
|
||||||
history.push("/tickets");
|
history.push("/tickets");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -54,11 +54,16 @@ const TicketActionButtons = ({ ticket }) => {
|
|||||||
history.push("/tickets");
|
history.push("/tickets");
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
setLoading(false);
|
const errorMsg = err.response?.data?.error;
|
||||||
console.log(err);
|
if (errorMsg) {
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,16 @@ const TicketOptionsMenu = ({ ticket, menuOpen, handleClose, anchorEl }) => {
|
|||||||
try {
|
try {
|
||||||
await api.delete(`/tickets/${ticket.id}`);
|
await api.delete(`/tickets/${ticket.id}`);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -83,10 +83,16 @@ const UserModal = ({ open, onClose, userId }) => {
|
|||||||
return { ...prevState, ...data };
|
return { ...prevState, ...data };
|
||||||
});
|
});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -107,10 +113,16 @@ const UserModal = ({ open, onClose, userId }) => {
|
|||||||
}
|
}
|
||||||
toast.success(i18n.t("userModal.success"));
|
toast.success(i18n.t("userModal.success"));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
handleClose();
|
handleClose();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -73,10 +73,16 @@ const WhatsAppModal = ({ open, onClose, whatsAppId }) => {
|
|||||||
const { data } = await api.get(`whatsapp/${whatsAppId}`);
|
const { data } = await api.get(`whatsapp/${whatsAppId}`);
|
||||||
setWhatsApp(data);
|
setWhatsApp(data);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchSession();
|
fetchSession();
|
||||||
@@ -94,10 +100,16 @@ const WhatsAppModal = ({ open, onClose, whatsAppId }) => {
|
|||||||
}
|
}
|
||||||
toast.success(i18n.t("whatsappModal.success"));
|
toast.success(i18n.t("whatsappModal.success"));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
handleClose();
|
handleClose();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { useState, useEffect } from "react";
|
|||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
|
|
||||||
import api from "../../services/api";
|
import api from "../../services/api";
|
||||||
|
import { i18n } from "../../translate/i18n";
|
||||||
|
|
||||||
const useTickets = ({
|
const useTickets = ({
|
||||||
searchParam,
|
searchParam,
|
||||||
@@ -34,10 +35,16 @@ const useTickets = ({
|
|||||||
setHasMore(data.hasMore);
|
setHasMore(data.hasMore);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchTickets();
|
fetchTickets();
|
||||||
|
|||||||
@@ -103,10 +103,16 @@ const Connections = () => {
|
|||||||
const { data } = await api.get("/whatsapp/");
|
const { data } = await api.get("/whatsapp/");
|
||||||
dispatch({ type: "LOAD_WHATSAPPS", payload: data });
|
dispatch({ type: "LOAD_WHATSAPPS", payload: data });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchSession();
|
fetchSession();
|
||||||
@@ -182,10 +188,16 @@ const Connections = () => {
|
|||||||
await api.delete(`/whatsapp/${whatsAppId}`);
|
await api.delete(`/whatsapp/${whatsAppId}`);
|
||||||
toast.success(i18n.t("connections.toasts.deleted"));
|
toast.success(i18n.t("connections.toasts.deleted"));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setDeletingWhatsApp(null);
|
setDeletingWhatsApp(null);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -114,10 +114,16 @@ const Contacts = () => {
|
|||||||
setHasMore(data.hasMore);
|
setHasMore(data.hasMore);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchContacts();
|
fetchContacts();
|
||||||
@@ -166,10 +172,16 @@ const Contacts = () => {
|
|||||||
await api.delete(`/contacts/${contactId}`);
|
await api.delete(`/contacts/${contactId}`);
|
||||||
toast.success(i18n.t("contacts.toasts.deleted"));
|
toast.success(i18n.t("contacts.toasts.deleted"));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setDeletingContact(null);
|
setDeletingContact(null);
|
||||||
setSearchParam("");
|
setSearchParam("");
|
||||||
@@ -180,10 +192,16 @@ const Contacts = () => {
|
|||||||
try {
|
try {
|
||||||
await api.post("/contacts/import");
|
await api.post("/contacts/import");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -43,10 +43,16 @@ const Settings = () => {
|
|||||||
const { data } = await api.get("/settings");
|
const { data } = await api.get("/settings");
|
||||||
setSettings(data);
|
setSettings(data);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchSession();
|
fetchSession();
|
||||||
@@ -81,10 +87,16 @@ const Settings = () => {
|
|||||||
});
|
});
|
||||||
toast.success(i18n.t("settings.success"));
|
toast.success(i18n.t("settings.success"));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -78,10 +78,16 @@ const SignUp = () => {
|
|||||||
toast.success(i18n.t("signup.toasts.success"));
|
toast.success(i18n.t("signup.toasts.success"));
|
||||||
history.push("/login");
|
history.push("/login");
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -112,10 +112,16 @@ const Users = () => {
|
|||||||
setHasMore(data.hasMore);
|
setHasMore(data.hasMore);
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
fetchUsers();
|
fetchUsers();
|
||||||
@@ -164,10 +170,16 @@ const Users = () => {
|
|||||||
await api.delete(`/users/${userId}`);
|
await api.delete(`/users/${userId}`);
|
||||||
toast.success(i18n.t("users.toasts.deleted"));
|
toast.success(i18n.t("users.toasts.deleted"));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.log(err);
|
const errorMsg = err.response?.data?.error;
|
||||||
if (err.response && err.response.data && err.response.data.error) {
|
if (errorMsg) {
|
||||||
|
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||||
|
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||||
|
} else {
|
||||||
toast.error(err.response.data.error);
|
toast.error(err.response.data.error);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
toast.error("Unknown error");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setDeletingUser(null);
|
setDeletingUser(null);
|
||||||
setSearchParam("");
|
setSearchParam("");
|
||||||
|
|||||||
@@ -287,7 +287,15 @@ const messages = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
backendErrors: {
|
backendErrors: {
|
||||||
ERR_NO_WAPP_FOUND: "No default WhatsApp found. Check connections page.",
|
ERR_NO_DEF_WAPP_FOUND:
|
||||||
|
"No default WhatsApp found. Check connections page.",
|
||||||
|
ERR_WAPP_NOT_INITIALIZED:
|
||||||
|
"This WhatsApp session is not initialized. Check connections page.",
|
||||||
|
ERR_WAPP_CHECK_CONTACT:
|
||||||
|
"Could not check WhatsApp contact. Check connections page.",
|
||||||
|
ERR_WAPP_INVALID_CONTACT: "This is not a valid whatsapp number.",
|
||||||
|
ERR_WAPP_DOWNLOAD_MEDIA:
|
||||||
|
"Could not download media from WhatsApp. Check connections page.",
|
||||||
ERR_INVALID_CREDENTIALS: "Authentication error. Please try again.",
|
ERR_INVALID_CREDENTIALS: "Authentication error. Please try again.",
|
||||||
ERR_SENDING_WAPP_MSG:
|
ERR_SENDING_WAPP_MSG:
|
||||||
"Error sending WhatsApp message. Check connections page.",
|
"Error sending WhatsApp message. Check connections page.",
|
||||||
@@ -295,6 +303,18 @@ const messages = {
|
|||||||
"Couldn't delete message from WhatsApp. Check connections page.",
|
"Couldn't delete message from WhatsApp. Check connections page.",
|
||||||
ERR_OTHER_OPEN_TICKET:
|
ERR_OTHER_OPEN_TICKET:
|
||||||
"There's already an open or pending ticket for this contact.",
|
"There's already an open or pending ticket for this contact.",
|
||||||
|
ERR_SESSION_EXPIRED: "Session expired. Please login.",
|
||||||
|
ERR_USER_CREATION_DISABLED:
|
||||||
|
"User creation was disabled by administrator.",
|
||||||
|
ERR_NO_PERMISSION: "You don't have permission to access this resource.",
|
||||||
|
ERR_DUPLICATED_CONTACT: "A contact with this number already exists.",
|
||||||
|
ERR_NO_SETTING_FOUND: "No setting found with this ID.",
|
||||||
|
ERR_NO_CONTACT_FOUND: "No contact found with this ID.",
|
||||||
|
ERR_NO_TICKET_FOUND: "No ticket found with this ID.",
|
||||||
|
ERR_NO_USER_FOUND: "No user found with this ID.",
|
||||||
|
ERR_NO_WAPP_FOUND: "No WhatsApp found with this ID.",
|
||||||
|
ERR_CREATING_MESSAGE: "Error while creating message on database.",
|
||||||
|
ERR_CREATING_TICKET: "Error while creating ticket on database.",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -292,8 +292,15 @@ const messages = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
backendErrors: {
|
backendErrors: {
|
||||||
ERR_NO_WAPP_FOUND:
|
ERR_NO_DEF_WAPP_FOUND:
|
||||||
"No se encontró WhatsApp predeterminado. Verifique la página de conexiones.",
|
"No se encontró WhatsApp predeterminado. Verifique la página de conexiones.",
|
||||||
|
ERR_WAPP_NOT_INITIALIZED:
|
||||||
|
"Esta sesión de WhatsApp no está inicializada. Verifique la página de conexiones.",
|
||||||
|
ERR_WAPP_CHECK_CONTACT:
|
||||||
|
"No se pudo verificar el contacto de WhatsApp. Verifique la página de conexiones.",
|
||||||
|
ERR_WAPP_INVALID_CONTACT: "Este no es un número de whatsapp válido.",
|
||||||
|
ERR_WAPP_DOWNLOAD_MEDIA:
|
||||||
|
"No se pudieron descargar los medios de WhatsApp. Verifique la página de conexiones.",
|
||||||
ERR_INVALID_CREDENTIALS: "Error de autenticación. Vuelva a intentarlo.",
|
ERR_INVALID_CREDENTIALS: "Error de autenticación. Vuelva a intentarlo.",
|
||||||
ERR_SENDING_WAPP_MSG:
|
ERR_SENDING_WAPP_MSG:
|
||||||
"Error al enviar el mensaje de WhatsApp. Verifique la página de conexiones.",
|
"Error al enviar el mensaje de WhatsApp. Verifique la página de conexiones.",
|
||||||
@@ -301,6 +308,19 @@ const messages = {
|
|||||||
"No se pudo borrar el mensaje de WhatsApp. Verifique la página de conexiones.",
|
"No se pudo borrar el mensaje de WhatsApp. Verifique la página de conexiones.",
|
||||||
ERR_OTHER_OPEN_TICKET:
|
ERR_OTHER_OPEN_TICKET:
|
||||||
"Ya hay un ticket abierto o pendiente para este contacto.",
|
"Ya hay un ticket abierto o pendiente para este contacto.",
|
||||||
|
ERR_SESSION_EXPIRED: "Sesión caducada. Inicie sesión.",
|
||||||
|
ERR_USER_CREATION_DISABLED:
|
||||||
|
"La creación de usuarios fue deshabilitada por el administrador.",
|
||||||
|
ERR_NO_PERMISSION: "No tienes permiso para acceder a este recurso.",
|
||||||
|
ERR_DUPLICATED_CONTACT: "Ya existe un contacto con este número.",
|
||||||
|
ERR_NO_SETTING_FOUND:
|
||||||
|
"No se encontró ninguna configuración con este ID.",
|
||||||
|
ERR_NO_CONTACT_FOUND: "No se encontró ningún contacto con este ID.",
|
||||||
|
ERR_NO_TICKET_FOUND: "No se encontró ningún ticket con este ID.",
|
||||||
|
ERR_NO_USER_FOUND: "No se encontró ningún usuario con este ID.",
|
||||||
|
ERR_NO_WAPP_FOUND: "No se encontró WhatsApp con este ID.",
|
||||||
|
ERR_CREATING_MESSAGE: "Error al crear el mensaje en la base de datos.",
|
||||||
|
ERR_CREATING_TICKET: "Error al crear el ticket en la base de datos.",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -290,8 +290,15 @@ const messages = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
backendErrors: {
|
backendErrors: {
|
||||||
ERR_NO_WAPP_FOUND:
|
ERR_NO_DEF_WAPP_FOUND:
|
||||||
"Nenhum WhatsApp padrão encontrado. Verifique a página de conexões.",
|
"Nenhum WhatsApp padrão encontrado. Verifique a página de conexões.",
|
||||||
|
ERR_WAPP_NOT_INITIALIZED:
|
||||||
|
"Esta sessão do WhatsApp não foi inicializada. Verifique a página de conexões.",
|
||||||
|
ERR_WAPP_CHECK_CONTACT:
|
||||||
|
"Não foi possível verificar o contato do WhatsApp. Verifique a página de conexões",
|
||||||
|
ERR_WAPP_INVALID_CONTACT: "Este não é um número de Whatsapp válido.",
|
||||||
|
ERR_WAPP_DOWNLOAD_MEDIA:
|
||||||
|
"Não foi possível baixar mídia do WhatsApp. Verifique a página de conexões.",
|
||||||
ERR_INVALID_CREDENTIALS:
|
ERR_INVALID_CREDENTIALS:
|
||||||
"Erro de autenticação. Por favor, tente novamente.",
|
"Erro de autenticação. Por favor, tente novamente.",
|
||||||
ERR_SENDING_WAPP_MSG:
|
ERR_SENDING_WAPP_MSG:
|
||||||
@@ -300,6 +307,18 @@ const messages = {
|
|||||||
"Não foi possível excluir a mensagem do WhatsApp. Verifique a página de conexões.",
|
"Não foi possível excluir a mensagem do WhatsApp. Verifique a página de conexões.",
|
||||||
ERR_OTHER_OPEN_TICKET:
|
ERR_OTHER_OPEN_TICKET:
|
||||||
"Já existe um tíquete aberto ou pendente para este contato.",
|
"Já existe um tíquete aberto ou pendente para este contato.",
|
||||||
|
ERR_SESSION_EXPIRED: "Sessão expirada. Por favor entre.",
|
||||||
|
ERR_USER_CREATION_DISABLED:
|
||||||
|
"A criação do usuário foi desabilitada pelo administrador.",
|
||||||
|
ERR_NO_PERMISSION: "Você não tem permissão para acessar este recurso.",
|
||||||
|
ERR_DUPLICATED_CONTACT: "Já existe um contato com este número.",
|
||||||
|
ERR_NO_SETTING_FOUND: "Nenhuma configuração encontrada com este ID.",
|
||||||
|
ERR_NO_CONTACT_FOUND: "Nenhum contato encontrado com este ID.",
|
||||||
|
ERR_NO_TICKET_FOUND: "Nenhum tíquete encontrado com este ID.",
|
||||||
|
ERR_NO_USER_FOUND: "Nenhum usuário encontrado com este ID.",
|
||||||
|
ERR_NO_WAPP_FOUND: "Nenhum WhatsApp encontrado com este ID.",
|
||||||
|
ERR_CREATING_MESSAGE: "Erro ao criar mensagem no banco de dados.",
|
||||||
|
ERR_CREATING_TICKET: "Erro ao criar tíquete no banco de dados.",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user