mirror of
https://github.com/cheveguerra/whaticket-community.git
synced 2026-04-18 03:39:29 +00:00
improvement: started translation of backend errors
This commit is contained in:
@@ -8,9 +8,7 @@ const CheckContactOpenTickets = async (contactId: number): Promise<void> => {
|
||||
});
|
||||
|
||||
if (ticket) {
|
||||
throw new AppError(
|
||||
"There's already an open or pending ticket for this contact."
|
||||
);
|
||||
throw new AppError("ERR_OTHER_OPEN_TICKET");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ const GetDefaultWhatsApp = async (): Promise<Whatsapp> => {
|
||||
});
|
||||
|
||||
if (!defaultWhatsapp) {
|
||||
throw new AppError("No default WhatsApp found. Check Connection page.");
|
||||
throw new AppError("ERR_NO_WAPP_FOUND");
|
||||
}
|
||||
|
||||
return defaultWhatsapp;
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { Client as Session } from "whatsapp-web.js";
|
||||
import { getWbot } from "../libs/wbot";
|
||||
import AppError from "../errors/AppError";
|
||||
import GetDefaultWhatsApp from "./GetDefaultWhatsApp";
|
||||
import Ticket from "../models/Ticket";
|
||||
|
||||
@@ -8,9 +7,6 @@ const GetTicketWbot = async (ticket: Ticket): Promise<Session> => {
|
||||
if (!ticket.whatsappId) {
|
||||
const defaultWhatsapp = await GetDefaultWhatsApp();
|
||||
|
||||
if (!defaultWhatsapp) {
|
||||
throw new AppError("No default WhatsApp found. Check Connection page.");
|
||||
}
|
||||
await ticket.$set("whatsapp", defaultWhatsapp);
|
||||
}
|
||||
|
||||
|
||||
@@ -17,10 +17,6 @@ const CreateTicketService = async ({
|
||||
}: Request): Promise<Ticket> => {
|
||||
const defaultWhatsapp = await GetDefaultWhatsApp();
|
||||
|
||||
if (!defaultWhatsapp) {
|
||||
throw new AppError("No default WhatsApp found. Check Connection page.");
|
||||
}
|
||||
|
||||
await CheckContactOpenTickets(contactId);
|
||||
|
||||
const { isGroup } = await ShowContactService(contactId);
|
||||
|
||||
@@ -25,11 +25,11 @@ const AuthUserService = async ({
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
throw new AppError("Incorrect user/password combination.", 401);
|
||||
throw new AppError("ERR_INVALID_CREDENTIALS", 401);
|
||||
}
|
||||
|
||||
if (!(await user.checkPassword(password))) {
|
||||
throw new AppError("Incorrect user/password combination.", 401);
|
||||
throw new AppError("ERR_INVALID_CREDENTIALS", 401);
|
||||
}
|
||||
|
||||
const token = createAccessToken(user);
|
||||
|
||||
@@ -25,9 +25,7 @@ const DeleteWhatsAppMessage = async (messageId: string): Promise<Message> => {
|
||||
try {
|
||||
await messageToDelete.delete(true);
|
||||
} catch (err) {
|
||||
throw new AppError(
|
||||
"Couldn't delete message from WhatsApp. Check connections page."
|
||||
);
|
||||
throw new AppError("ERR_DELETE_WAPP_MSG");
|
||||
}
|
||||
|
||||
await message.update({ isDeleted: true });
|
||||
|
||||
@@ -31,9 +31,7 @@ const SendWhatsAppMedia = async ({
|
||||
return sentMessage;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
throw new AppError(
|
||||
"Could not send whatsapp message. Check connections page."
|
||||
);
|
||||
throw new AppError("ERR_SENDING_WAPP_MSG");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -24,9 +24,7 @@ const SendWhatsAppMessage = async ({
|
||||
return sentMessage;
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
throw new AppError(
|
||||
"Could not send whatsapp message. Check connections page."
|
||||
);
|
||||
throw new AppError("ERR_SENDING_WAPP_MSG");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -156,6 +156,7 @@ const MessageInput = ({ ticketStatus }) => {
|
||||
const handleUploadMedia = async e => {
|
||||
setLoading(true);
|
||||
e.preventDefault();
|
||||
|
||||
const formData = new FormData();
|
||||
formData.append("media", media.raw);
|
||||
formData.append("fromMe", true);
|
||||
@@ -164,11 +165,14 @@ const MessageInput = ({ ticketStatus }) => {
|
||||
try {
|
||||
await api.post(`/messages/${ticketId}`, formData);
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
if (err.response && err.response.data && err.response.data.error) {
|
||||
const errorMsg = err.response?.data?.error;
|
||||
if (errorMsg === "ERR_SENDING_WAPP_MSG") {
|
||||
toast.error(i18n.t("messagesInput.toasts.error"));
|
||||
} else {
|
||||
toast.error(err.response.data.error);
|
||||
}
|
||||
}
|
||||
|
||||
setLoading(false);
|
||||
setMedia(mediaInitialState);
|
||||
};
|
||||
@@ -176,6 +180,7 @@ const MessageInput = ({ ticketStatus }) => {
|
||||
const handleSendMessage = async () => {
|
||||
if (inputMessage.trim() === "") return;
|
||||
setLoading(true);
|
||||
|
||||
const message = {
|
||||
read: 1,
|
||||
fromMe: true,
|
||||
@@ -185,11 +190,18 @@ const MessageInput = ({ ticketStatus }) => {
|
||||
try {
|
||||
await api.post(`/messages/${ticketId}`, message);
|
||||
} 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");
|
||||
}
|
||||
}
|
||||
|
||||
setInputMessage("");
|
||||
setShowEmoji(false);
|
||||
setLoading(false);
|
||||
@@ -225,15 +237,21 @@ const MessageInput = ({ ticketStatus }) => {
|
||||
formData.append("fromMe", true);
|
||||
|
||||
await api.post(`/messages/${ticketId}`, formData);
|
||||
|
||||
setRecording(false);
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
setRecording(false);
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
const handleCancelAudio = async () => {
|
||||
|
||||
@@ -16,9 +16,15 @@ const MessageOptionsMenu = ({ messageId, menuOpen, handleClose, anchorEl }) => {
|
||||
try {
|
||||
await api.delete(`/messages/${messageId}`);
|
||||
} 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");
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -25,12 +25,6 @@ const useStyles = makeStyles(theme => ({
|
||||
display: "flex",
|
||||
flexWrap: "wrap",
|
||||
},
|
||||
|
||||
// btnWrapper: {
|
||||
// // margin: theme.spacing(1),
|
||||
// // position: "relative",
|
||||
// display: "flex",
|
||||
// },
|
||||
}));
|
||||
|
||||
const filterOptions = createFilterOptions({
|
||||
@@ -89,9 +83,15 @@ const NewTicketModal = ({ modalOpen, onClose }) => {
|
||||
});
|
||||
history.push(`/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");
|
||||
}
|
||||
}
|
||||
setLoading(false);
|
||||
|
||||
@@ -72,6 +72,7 @@ const useAuth = () => {
|
||||
const handleLogin = async (e, user) => {
|
||||
setLoading(true);
|
||||
e.preventDefault();
|
||||
|
||||
try {
|
||||
const { data } = await api.post("/auth/login", user);
|
||||
localStorage.setItem("token", JSON.stringify(data.token));
|
||||
@@ -79,17 +80,24 @@ const useAuth = () => {
|
||||
localStorage.setItem("profile", data.profile);
|
||||
localStorage.setItem("userId", data.userId);
|
||||
api.defaults.headers.Authorization = `Bearer ${data.token}`;
|
||||
|
||||
setIsAuth(true);
|
||||
toast.success(i18n.t("auth.toasts.success"));
|
||||
setLoading(false);
|
||||
history.push("/tickets");
|
||||
} 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");
|
||||
}
|
||||
setLoading(false);
|
||||
}
|
||||
|
||||
setLoading(false);
|
||||
};
|
||||
|
||||
const handleLogout = e => {
|
||||
|
||||
@@ -31,7 +31,6 @@ const messages = {
|
||||
auth: {
|
||||
toasts: {
|
||||
success: "Login successfully!",
|
||||
fail: "Authentication error. Please log in again",
|
||||
},
|
||||
},
|
||||
dashboard: {
|
||||
@@ -287,6 +286,16 @@ const messages = {
|
||||
message: "This action cannot be reverted.",
|
||||
},
|
||||
},
|
||||
backendErrors: {
|
||||
ERR_NO_WAPP_FOUND: "No default WhatsApp found. Check connections page.",
|
||||
ERR_INVALID_CREDENTIALS: "Authentication error. Please try again.",
|
||||
ERR_SENDING_WAPP_MSG:
|
||||
"Error sending WhatsApp message. Check connections page.",
|
||||
ERR_DELETE_WAPP_MSG:
|
||||
"Couldn't delete message from WhatsApp. Check connections page.",
|
||||
ERR_OTHER_OPEN_TICKET:
|
||||
"There's already an open or pending ticket for this contact.",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -32,7 +32,6 @@ const messages = {
|
||||
auth: {
|
||||
toasts: {
|
||||
success: "¡Inicio de sesión exitoso!",
|
||||
fail: "Error de autenticación. Por favor intenta de nuevo.",
|
||||
},
|
||||
},
|
||||
dashboard: {
|
||||
@@ -292,6 +291,17 @@ const messages = {
|
||||
message: "Esta acción no puede ser revertida.",
|
||||
},
|
||||
},
|
||||
backendErrors: {
|
||||
ERR_NO_WAPP_FOUND:
|
||||
"No se encontró WhatsApp predeterminado. 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.",
|
||||
ERR_DELETE_WAPP_MSG:
|
||||
"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.",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -31,7 +31,6 @@ const messages = {
|
||||
auth: {
|
||||
toasts: {
|
||||
success: "Login efetuado com sucesso!",
|
||||
fail: "Erro de autenticação. Por favor, faça login novamente",
|
||||
},
|
||||
},
|
||||
dashboard: {
|
||||
@@ -290,6 +289,18 @@ const messages = {
|
||||
message: "Esta ação não pode ser revertida.",
|
||||
},
|
||||
},
|
||||
backendErrors: {
|
||||
ERR_NO_WAPP_FOUND:
|
||||
"Nenhum WhatsApp padrão encontrado. Verifique a página de conexões.",
|
||||
ERR_INVALID_CREDENTIALS:
|
||||
"Erro de autenticação. Por favor, tente novamente.",
|
||||
ERR_SENDING_WAPP_MSG:
|
||||
"Erro ao enviar mensagem do WhatsApp. Verifique a página de conexões.",
|
||||
ERR_DELETE_WAPP_MSG:
|
||||
"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.",
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user