improvement: started translation of backend errors

This commit is contained in:
canove
2020-10-13 06:50:00 -03:00
parent 09f8ef9be0
commit 011d8d5dfe
15 changed files with 100 additions and 54 deletions

View File

@@ -8,9 +8,7 @@ const CheckContactOpenTickets = async (contactId: number): Promise<void> => {
}); });
if (ticket) { if (ticket) {
throw new AppError( throw new AppError("ERR_OTHER_OPEN_TICKET");
"There's already an open or pending ticket for this contact."
);
} }
}; };

View File

@@ -7,7 +7,7 @@ const GetDefaultWhatsApp = async (): Promise<Whatsapp> => {
}); });
if (!defaultWhatsapp) { if (!defaultWhatsapp) {
throw new AppError("No default WhatsApp found. Check Connection page."); throw new AppError("ERR_NO_WAPP_FOUND");
} }
return defaultWhatsapp; return defaultWhatsapp;

View File

@@ -1,6 +1,5 @@
import { Client as Session } from "whatsapp-web.js"; import { Client as Session } from "whatsapp-web.js";
import { getWbot } from "../libs/wbot"; import { getWbot } from "../libs/wbot";
import AppError from "../errors/AppError";
import GetDefaultWhatsApp from "./GetDefaultWhatsApp"; import GetDefaultWhatsApp from "./GetDefaultWhatsApp";
import Ticket from "../models/Ticket"; import Ticket from "../models/Ticket";
@@ -8,9 +7,6 @@ const GetTicketWbot = async (ticket: Ticket): Promise<Session> => {
if (!ticket.whatsappId) { if (!ticket.whatsappId) {
const defaultWhatsapp = await GetDefaultWhatsApp(); const defaultWhatsapp = await GetDefaultWhatsApp();
if (!defaultWhatsapp) {
throw new AppError("No default WhatsApp found. Check Connection page.");
}
await ticket.$set("whatsapp", defaultWhatsapp); await ticket.$set("whatsapp", defaultWhatsapp);
} }

View File

@@ -17,10 +17,6 @@ const CreateTicketService = async ({
}: Request): Promise<Ticket> => { }: Request): Promise<Ticket> => {
const defaultWhatsapp = await GetDefaultWhatsApp(); const defaultWhatsapp = await GetDefaultWhatsApp();
if (!defaultWhatsapp) {
throw new AppError("No default WhatsApp found. Check Connection page.");
}
await CheckContactOpenTickets(contactId); await CheckContactOpenTickets(contactId);
const { isGroup } = await ShowContactService(contactId); const { isGroup } = await ShowContactService(contactId);

View File

@@ -25,11 +25,11 @@ const AuthUserService = async ({
}); });
if (!user) { if (!user) {
throw new AppError("Incorrect user/password combination.", 401); throw new AppError("ERR_INVALID_CREDENTIALS", 401);
} }
if (!(await user.checkPassword(password))) { if (!(await user.checkPassword(password))) {
throw new AppError("Incorrect user/password combination.", 401); throw new AppError("ERR_INVALID_CREDENTIALS", 401);
} }
const token = createAccessToken(user); const token = createAccessToken(user);

View File

@@ -25,9 +25,7 @@ const DeleteWhatsAppMessage = async (messageId: string): Promise<Message> => {
try { try {
await messageToDelete.delete(true); await messageToDelete.delete(true);
} catch (err) { } catch (err) {
throw new AppError( throw new AppError("ERR_DELETE_WAPP_MSG");
"Couldn't delete message from WhatsApp. Check connections page."
);
} }
await message.update({ isDeleted: true }); await message.update({ isDeleted: true });

View File

@@ -31,9 +31,7 @@ const SendWhatsAppMedia = async ({
return sentMessage; return sentMessage;
} catch (err) { } catch (err) {
console.log(err); console.log(err);
throw new AppError( throw new AppError("ERR_SENDING_WAPP_MSG");
"Could not send whatsapp message. Check connections page."
);
} }
}; };

View File

@@ -24,9 +24,7 @@ const SendWhatsAppMessage = async ({
return sentMessage; return sentMessage;
} catch (err) { } catch (err) {
console.log(err); console.log(err);
throw new AppError( throw new AppError("ERR_SENDING_WAPP_MSG");
"Could not send whatsapp message. Check connections page."
);
} }
}; };

View File

@@ -156,6 +156,7 @@ const MessageInput = ({ ticketStatus }) => {
const handleUploadMedia = async e => { const handleUploadMedia = async e => {
setLoading(true); setLoading(true);
e.preventDefault(); e.preventDefault();
const formData = new FormData(); const formData = new FormData();
formData.append("media", media.raw); formData.append("media", media.raw);
formData.append("fromMe", true); formData.append("fromMe", true);
@@ -164,11 +165,14 @@ const MessageInput = ({ ticketStatus }) => {
try { try {
await api.post(`/messages/${ticketId}`, formData); await api.post(`/messages/${ticketId}`, formData);
} 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 === "ERR_SENDING_WAPP_MSG") {
toast.error(i18n.t("messagesInput.toasts.error"));
} else {
toast.error(err.response.data.error); toast.error(err.response.data.error);
} }
} }
setLoading(false); setLoading(false);
setMedia(mediaInitialState); setMedia(mediaInitialState);
}; };
@@ -176,6 +180,7 @@ const MessageInput = ({ ticketStatus }) => {
const handleSendMessage = async () => { const handleSendMessage = async () => {
if (inputMessage.trim() === "") return; if (inputMessage.trim() === "") return;
setLoading(true); setLoading(true);
const message = { const message = {
read: 1, read: 1,
fromMe: true, fromMe: true,
@@ -185,11 +190,18 @@ const MessageInput = ({ ticketStatus }) => {
try { try {
await api.post(`/messages/${ticketId}`, message); await api.post(`/messages/${ticketId}`, message);
} 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) {
toast.error(err.response.data.error); if (i18n.exists(`backendErrors.${errorMsg}`)) {
toast.error(i18n.t(`backendErrors.${errorMsg}`));
} else {
toast.error(err.response.data.error);
}
} else {
toast.error("Unknown error");
} }
} }
setInputMessage(""); setInputMessage("");
setShowEmoji(false); setShowEmoji(false);
setLoading(false); setLoading(false);
@@ -225,15 +237,21 @@ const MessageInput = ({ ticketStatus }) => {
formData.append("fromMe", true); formData.append("fromMe", true);
await api.post(`/messages/${ticketId}`, formData); await api.post(`/messages/${ticketId}`, formData);
setRecording(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) {
toast.error(err.response.data.error); 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 () => { const handleCancelAudio = async () => {

View File

@@ -16,9 +16,15 @@ const MessageOptionsMenu = ({ messageId, menuOpen, handleClose, anchorEl }) => {
try { try {
await api.delete(`/messages/${messageId}`); await api.delete(`/messages/${messageId}`);
} 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) {
toast.error(err.response.data.error); if (i18n.exists(`backendErrors.${errorMsg}`)) {
toast.error(i18n.t(`backendErrors.${errorMsg}`));
} else {
toast.error(err.response.data.error);
}
} else {
toast.error("Unknown error");
} }
} }
}; };

View File

@@ -25,12 +25,6 @@ const useStyles = makeStyles(theme => ({
display: "flex", display: "flex",
flexWrap: "wrap", flexWrap: "wrap",
}, },
// btnWrapper: {
// // margin: theme.spacing(1),
// // position: "relative",
// display: "flex",
// },
})); }));
const filterOptions = createFilterOptions({ const filterOptions = createFilterOptions({
@@ -89,9 +83,15 @@ const NewTicketModal = ({ modalOpen, onClose }) => {
}); });
history.push(`/tickets/${ticket.id}`); history.push(`/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) {
toast.error(err.response.data.error); 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);

View File

@@ -72,6 +72,7 @@ const useAuth = () => {
const handleLogin = async (e, user) => { const handleLogin = async (e, user) => {
setLoading(true); setLoading(true);
e.preventDefault(); e.preventDefault();
try { try {
const { data } = await api.post("/auth/login", user); const { data } = await api.post("/auth/login", user);
localStorage.setItem("token", JSON.stringify(data.token)); localStorage.setItem("token", JSON.stringify(data.token));
@@ -79,17 +80,24 @@ const useAuth = () => {
localStorage.setItem("profile", data.profile); localStorage.setItem("profile", data.profile);
localStorage.setItem("userId", data.userId); localStorage.setItem("userId", data.userId);
api.defaults.headers.Authorization = `Bearer ${data.token}`; api.defaults.headers.Authorization = `Bearer ${data.token}`;
setIsAuth(true); setIsAuth(true);
toast.success(i18n.t("auth.toasts.success")); toast.success(i18n.t("auth.toasts.success"));
setLoading(false);
history.push("/tickets"); history.push("/tickets");
} 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) {
toast.error(err.response.data.error); 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 => { const handleLogout = e => {

View File

@@ -31,7 +31,6 @@ const messages = {
auth: { auth: {
toasts: { toasts: {
success: "Login successfully!", success: "Login successfully!",
fail: "Authentication error. Please log in again",
}, },
}, },
dashboard: { dashboard: {
@@ -287,6 +286,16 @@ const messages = {
message: "This action cannot be reverted.", 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.",
},
}, },
}, },
}; };

View File

@@ -32,7 +32,6 @@ const messages = {
auth: { auth: {
toasts: { toasts: {
success: "¡Inicio de sesión exitoso!", success: "¡Inicio de sesión exitoso!",
fail: "Error de autenticación. Por favor intenta de nuevo.",
}, },
}, },
dashboard: { dashboard: {
@@ -292,6 +291,17 @@ const messages = {
message: "Esta acción no puede ser revertida.", 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.",
},
}, },
}, },
}; };

View File

@@ -31,7 +31,6 @@ const messages = {
auth: { auth: {
toasts: { toasts: {
success: "Login efetuado com sucesso!", success: "Login efetuado com sucesso!",
fail: "Erro de autenticação. Por favor, faça login novamente",
}, },
}, },
dashboard: { dashboard: {
@@ -290,6 +289,18 @@ const messages = {
message: "Esta ação não pode ser revertida.", 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.",
},
}, },
}, },
}; };