mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-18 03:39:29 +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;
|
||||
|
||||
if (!token) {
|
||||
throw new AppError("Invalid session. Please login.", 401);
|
||||
throw new AppError("ERR_SESSION_EXPIRED", 401);
|
||||
}
|
||||
|
||||
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> => {
|
||||
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();
|
||||
@@ -21,7 +21,7 @@ export const update = async (
|
||||
res: Response
|
||||
): Promise<Response> => {
|
||||
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 { value } = req.body;
|
||||
|
||||
@@ -17,7 +17,7 @@ type IndexQuery = {
|
||||
|
||||
export const index = async (req: Request, res: Response): Promise<Response> => {
|
||||
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;
|
||||
|
||||
@@ -36,9 +36,9 @@ export const store = async (req: Request, res: Response): Promise<Response> => {
|
||||
req.url === "/signup" &&
|
||||
(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") {
|
||||
throw new AppError("Only administrators can create users.", 403);
|
||||
throw new AppError("ERR_NO_PERMISSION", 403);
|
||||
}
|
||||
|
||||
const user = await CreateUserService({
|
||||
@@ -70,7 +70,7 @@ export const update = async (
|
||||
res: Response
|
||||
): Promise<Response> => {
|
||||
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;
|
||||
@@ -94,7 +94,7 @@ export const remove = async (
|
||||
const { userId } = req.params;
|
||||
|
||||
if (req.user.profile !== "admin") {
|
||||
throw new AppError("Only administrators can delete users.", 403);
|
||||
throw new AppError("ERR_NO_PERMISSION", 403);
|
||||
}
|
||||
|
||||
await DeleteUserService(userId);
|
||||
|
||||
@@ -7,7 +7,7 @@ const CheckSettings = async (key: string): Promise<string> => {
|
||||
});
|
||||
|
||||
if (!setting) {
|
||||
throw new AppError("No setting found with this id.", 404);
|
||||
throw new AppError("ERR_NO_SETTING_FOUND", 404);
|
||||
}
|
||||
|
||||
return setting.value;
|
||||
|
||||
@@ -7,7 +7,7 @@ const GetDefaultWhatsApp = async (): Promise<Whatsapp> => {
|
||||
});
|
||||
|
||||
if (!defaultWhatsapp) {
|
||||
throw new AppError("ERR_NO_WAPP_FOUND");
|
||||
throw new AppError("ERR_NO_DEF_WAPP_FOUND");
|
||||
}
|
||||
|
||||
return defaultWhatsapp;
|
||||
|
||||
@@ -19,20 +19,13 @@ export const GetWbotMessage = async (
|
||||
const msgToDelete = chatMessages.find(msg => msg.id.id === messageId);
|
||||
|
||||
if (!msgToDelete) {
|
||||
throw new AppError("msgNotFound");
|
||||
throw new Error();
|
||||
}
|
||||
|
||||
return msgToDelete;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.message === "msgNotFound") {
|
||||
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"
|
||||
);
|
||||
throw new AppError("ERR_DELETE_WAPP_MSG");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -92,9 +92,7 @@ export const getWbot = (whatsappId: number): Session => {
|
||||
const sessionIndex = sessions.findIndex(s => s.id === whatsappId);
|
||||
|
||||
if (sessionIndex === -1) {
|
||||
throw new AppError(
|
||||
"This WhatsApp session is not initialized. Check connections page."
|
||||
);
|
||||
throw new AppError("ERR_WAPP_NOT_INITIALIZED");
|
||||
}
|
||||
return sessions[sessionIndex];
|
||||
};
|
||||
|
||||
@@ -23,7 +23,7 @@ export const RefreshTokenService = async (token: string): Promise<Response> => {
|
||||
try {
|
||||
decoded = verify(token, authConfig.refreshSecret);
|
||||
} catch (err) {
|
||||
throw new AppError("Session expire. Please login.", 401);
|
||||
throw new AppError("ERR_SESSION_EXPIRED", 401);
|
||||
}
|
||||
|
||||
const { id, tokenVersion } = decoded as RefreshTokenPayload;
|
||||
@@ -31,7 +31,7 @@ export const RefreshTokenService = async (token: string): Promise<Response> => {
|
||||
const user = await ShowUserService(id);
|
||||
|
||||
if (user.tokenVersion !== tokenVersion) {
|
||||
throw new AppError("Session revoked. Please login.", 401);
|
||||
throw new AppError("ERR_SESSION_EXPIRED", 401);
|
||||
}
|
||||
|
||||
const newToken = createAccessToken(user);
|
||||
|
||||
@@ -25,7 +25,7 @@ const CreateContactService = async ({
|
||||
});
|
||||
|
||||
if (numberExists) {
|
||||
throw new AppError("A contact with this number already exists.");
|
||||
throw new AppError("ERR_DUPLICATED_CONTACT");
|
||||
}
|
||||
|
||||
const contact = await Contact.create(
|
||||
|
||||
@@ -7,7 +7,7 @@ const DeleteContactService = async (id: string): Promise<void> => {
|
||||
});
|
||||
|
||||
if (!contact) {
|
||||
throw new AppError("No contact found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_CONTACT_FOUND", 404);
|
||||
}
|
||||
|
||||
await contact.destroy();
|
||||
|
||||
@@ -5,7 +5,7 @@ const ShowContactService = async (id: string | number): Promise<Contact> => {
|
||||
const contact = await Contact.findByPk(id, { include: ["extraInfo"] });
|
||||
|
||||
if (!contact) {
|
||||
throw new AppError("No contact found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_CONTACT_FOUND", 404);
|
||||
}
|
||||
|
||||
return contact;
|
||||
|
||||
@@ -32,7 +32,7 @@ const UpdateContactService = async ({
|
||||
});
|
||||
|
||||
if (!contact) {
|
||||
throw new AppError("No contact found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_CONTACT_FOUND", 404);
|
||||
}
|
||||
|
||||
if (extraInfo) {
|
||||
|
||||
@@ -22,7 +22,7 @@ const CreateMessageService = async ({
|
||||
const ticket = await ShowTicketService(messageData.ticketId);
|
||||
|
||||
if (!ticket) {
|
||||
throw new AppError("No ticket found with this ID", 404);
|
||||
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||
}
|
||||
|
||||
await Message.upsert(messageData);
|
||||
@@ -32,7 +32,7 @@ const CreateMessageService = async ({
|
||||
});
|
||||
|
||||
if (!message) {
|
||||
throw new AppError("Error while creating message on database.", 501);
|
||||
throw new AppError("ERR_CREATING_MESSAGE", 501);
|
||||
}
|
||||
|
||||
return message;
|
||||
|
||||
@@ -25,7 +25,7 @@ const ListMessagesService = async ({
|
||||
const ticket = await ShowTicketService(ticketId);
|
||||
|
||||
if (!ticket) {
|
||||
throw new AppError("No ticket found with this ID", 404);
|
||||
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||
}
|
||||
|
||||
const whereCondition = {
|
||||
|
||||
@@ -15,7 +15,7 @@ const UpdateSettingService = async ({
|
||||
});
|
||||
|
||||
if (!setting) {
|
||||
throw new AppError("No setting found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_SETTING_FOUND", 404);
|
||||
}
|
||||
|
||||
await setting.update({ value });
|
||||
|
||||
@@ -31,7 +31,7 @@ const CreateTicketService = async ({
|
||||
const ticket = await Ticket.findByPk(id, { include: ["contact"] });
|
||||
|
||||
if (!ticket) {
|
||||
throw new AppError("Error, ticket not created.");
|
||||
throw new AppError("ERR_CREATING_TICKET");
|
||||
}
|
||||
|
||||
return ticket;
|
||||
|
||||
@@ -7,7 +7,7 @@ const DeleteTicketService = async (id: string): Promise<Ticket> => {
|
||||
});
|
||||
|
||||
if (!ticket) {
|
||||
throw new AppError("No ticket found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||
}
|
||||
|
||||
await ticket.destroy();
|
||||
|
||||
@@ -21,7 +21,7 @@ const ShowTicketService = async (id: string | number): Promise<Ticket> => {
|
||||
});
|
||||
|
||||
if (!ticket) {
|
||||
throw new AppError("No ticket found with this ID", 404);
|
||||
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||
}
|
||||
|
||||
return ticket;
|
||||
|
||||
@@ -38,7 +38,7 @@ const UpdateTicketService = async ({
|
||||
});
|
||||
|
||||
if (!ticket) {
|
||||
throw new AppError("No ticket found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_TICKET_FOUND", 404);
|
||||
}
|
||||
|
||||
await SetTicketMessagesAsRead(ticket);
|
||||
|
||||
@@ -9,7 +9,7 @@ const DeleteUserService = async (id: string): Promise<void> => {
|
||||
});
|
||||
|
||||
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", {
|
||||
|
||||
@@ -7,7 +7,7 @@ const ShowUserService = async (id: string | number): Promise<User> => {
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
throw new AppError("No user found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_USER_FOUND", 404);
|
||||
}
|
||||
|
||||
return user;
|
||||
|
||||
@@ -32,7 +32,7 @@ const UpdateUserService = async ({
|
||||
});
|
||||
|
||||
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({
|
||||
|
||||
@@ -15,11 +15,9 @@ const CheckIsValidContact = async (number: string): Promise<void> => {
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.message === "invalidNumber") {
|
||||
throw new AppError("This is not a valid whatsapp number.");
|
||||
throw new AppError("ERR_WAPP_INVALID_CONTACT");
|
||||
}
|
||||
throw new AppError(
|
||||
"Could not valid WhatsApp contact. Check connections page"
|
||||
);
|
||||
throw new AppError("ERR_WAPP_CHECK_CONTACT");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ const handlMedia = async (
|
||||
const media = await msg.downloadMedia();
|
||||
|
||||
if (!media) {
|
||||
throw new AppError("Cannot download media from whatsapp.");
|
||||
throw new AppError("ERR_WAPP_DOWNLOAD_MEDIA");
|
||||
}
|
||||
|
||||
if (!media.filename) {
|
||||
|
||||
@@ -7,7 +7,7 @@ const DeleteWhatsApprService = async (id: string): Promise<void> => {
|
||||
});
|
||||
|
||||
if (!whatsapp) {
|
||||
throw new AppError("No whatsapp found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_WAPP_FOUND", 404);
|
||||
}
|
||||
|
||||
await whatsapp.destroy();
|
||||
|
||||
@@ -7,7 +7,7 @@ const ShowWhatsAppService = async (
|
||||
const whatsapp = await Whatsapp.findByPk(id);
|
||||
|
||||
if (!whatsapp) {
|
||||
throw new AppError("No whatsapp found with this conditions.", 404);
|
||||
throw new AppError("ERR_NO_WAPP_FOUND", 404);
|
||||
}
|
||||
|
||||
return whatsapp;
|
||||
|
||||
@@ -51,7 +51,7 @@ const UpdateWhatsAppService = async ({
|
||||
});
|
||||
|
||||
if (!whatsapp) {
|
||||
throw new AppError("No whatsapp found with this ID.", 404);
|
||||
throw new AppError("ERR_NO_WAPP_FOUND", 404);
|
||||
}
|
||||
|
||||
await whatsapp.update({
|
||||
|
||||
@@ -81,9 +81,15 @@ const ContactModal = ({ open, onClose, contactId }) => {
|
||||
const { data } = await api.get(`/contacts/${contactId}`);
|
||||
setContact(data);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -105,9 +111,15 @@ const ContactModal = ({ open, onClose, contactId }) => {
|
||||
}
|
||||
toast.success(i18n.t("contactModal.success"));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
handleClose();
|
||||
|
||||
@@ -26,6 +26,7 @@ import ModalImageCors from "../ModalImageCors";
|
||||
import MessageOptionsMenu from "../MessageOptionsMenu";
|
||||
import whatsBackground from "../../assets/wa-background.png";
|
||||
|
||||
import { i18n } from "../../translate/i18n";
|
||||
import api from "../../services/api";
|
||||
import { toast } from "react-toastify";
|
||||
|
||||
@@ -284,9 +285,15 @@ const MessagesList = ({ ticketId, isGroup }) => {
|
||||
scrollToBottom();
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -53,9 +53,15 @@ const NewTicketModal = ({ modalOpen, onClose }) => {
|
||||
setOptions(data.contacts);
|
||||
setLoading(false);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -18,9 +18,15 @@ const QrcodeModal = ({ open, onClose, whatsAppId }) => {
|
||||
const { data } = await api.get(`/whatsapp/${whatsAppId}`);
|
||||
setQrCode(data.qrcode);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -14,6 +14,7 @@ import TicketInfo from "../TicketInfo";
|
||||
import TicketActionButtons from "../TicketActionButtons";
|
||||
import MessagesList from "../MessagesList";
|
||||
import api from "../../services/api";
|
||||
import { i18n } from "../../translate/i18n";
|
||||
|
||||
const drawerWidth = 320;
|
||||
|
||||
@@ -76,12 +77,18 @@ const Ticket = () => {
|
||||
setTicket(data);
|
||||
setLoading(false);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
if (err.response.status === 404) {
|
||||
history.push("/tickets");
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -54,10 +54,15 @@ const TicketActionButtons = ({ ticket }) => {
|
||||
history.push("/tickets");
|
||||
}
|
||||
} catch (err) {
|
||||
setLoading(false);
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -16,9 +16,15 @@ const TicketOptionsMenu = ({ ticket, menuOpen, handleClose, anchorEl }) => {
|
||||
try {
|
||||
await api.delete(`/tickets/${ticket.id}`);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -83,9 +83,15 @@ const UserModal = ({ open, onClose, userId }) => {
|
||||
return { ...prevState, ...data };
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -107,9 +113,15 @@ const UserModal = ({ open, onClose, userId }) => {
|
||||
}
|
||||
toast.success(i18n.t("userModal.success"));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
handleClose();
|
||||
|
||||
@@ -73,9 +73,15 @@ const WhatsAppModal = ({ open, onClose, whatsAppId }) => {
|
||||
const { data } = await api.get(`whatsapp/${whatsAppId}`);
|
||||
setWhatsApp(data);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -94,9 +100,15 @@ const WhatsAppModal = ({ open, onClose, whatsAppId }) => {
|
||||
}
|
||||
toast.success(i18n.t("whatsappModal.success"));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
handleClose();
|
||||
|
||||
@@ -2,6 +2,7 @@ import { useState, useEffect } from "react";
|
||||
import { toast } from "react-toastify";
|
||||
|
||||
import api from "../../services/api";
|
||||
import { i18n } from "../../translate/i18n";
|
||||
|
||||
const useTickets = ({
|
||||
searchParam,
|
||||
@@ -34,9 +35,15 @@ const useTickets = ({
|
||||
setHasMore(data.hasMore);
|
||||
setLoading(false);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -103,9 +103,15 @@ const Connections = () => {
|
||||
const { data } = await api.get("/whatsapp/");
|
||||
dispatch({ type: "LOAD_WHATSAPPS", payload: data });
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -182,9 +188,15 @@ const Connections = () => {
|
||||
await api.delete(`/whatsapp/${whatsAppId}`);
|
||||
toast.success(i18n.t("connections.toasts.deleted"));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
setDeletingWhatsApp(null);
|
||||
|
||||
@@ -114,9 +114,15 @@ const Contacts = () => {
|
||||
setHasMore(data.hasMore);
|
||||
setLoading(false);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -166,9 +172,15 @@ const Contacts = () => {
|
||||
await api.delete(`/contacts/${contactId}`);
|
||||
toast.success(i18n.t("contacts.toasts.deleted"));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
setDeletingContact(null);
|
||||
@@ -180,9 +192,15 @@ const Contacts = () => {
|
||||
try {
|
||||
await api.post("/contacts/import");
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -43,9 +43,15 @@ const Settings = () => {
|
||||
const { data } = await api.get("/settings");
|
||||
setSettings(data);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -81,9 +87,15 @@ const Settings = () => {
|
||||
});
|
||||
toast.success(i18n.t("settings.success"));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -78,9 +78,15 @@ const SignUp = () => {
|
||||
toast.success(i18n.t("signup.toasts.success"));
|
||||
history.push("/login");
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -112,9 +112,15 @@ const Users = () => {
|
||||
setHasMore(data.hasMore);
|
||||
setLoading(false);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -164,9 +170,15 @@ const Users = () => {
|
||||
await api.delete(`/users/${userId}`);
|
||||
toast.success(i18n.t("users.toasts.deleted"));
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
toast.error(err.response.data.error);
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg) {
|
||||
if (i18n.exists(`backendErrors.${errorMsg}`)) {
|
||||
toast.error(i18n.t(`backendErrors.${errorMsg}`));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
} else {
|
||||
toast.error("Unknown error");
|
||||
}
|
||||
}
|
||||
setDeletingUser(null);
|
||||
|
||||
@@ -287,7 +287,15 @@ const messages = {
|
||||
},
|
||||
},
|
||||
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_SENDING_WAPP_MSG:
|
||||
"Error sending WhatsApp message. Check connections page.",
|
||||
@@ -295,6 +303,18 @@ const messages = {
|
||||
"Couldn't delete message from WhatsApp. Check connections page.",
|
||||
ERR_OTHER_OPEN_TICKET:
|
||||
"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: {
|
||||
ERR_NO_WAPP_FOUND:
|
||||
ERR_NO_DEF_WAPP_FOUND:
|
||||
"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_SENDING_WAPP_MSG:
|
||||
"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.",
|
||||
ERR_OTHER_OPEN_TICKET:
|
||||
"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: {
|
||||
ERR_NO_WAPP_FOUND:
|
||||
ERR_NO_DEF_WAPP_FOUND:
|
||||
"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:
|
||||
"Erro de autenticação. Por favor, tente novamente.",
|
||||
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.",
|
||||
ERR_OTHER_OPEN_TICKET:
|
||||
"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