import fs from "fs"; import path from "path"; import { MessageMedia, Message as WbotMessage } from "whatsapp-web.js"; import AppError from "../../errors/AppError"; import GetTicketWbot from "../../helpers/GetTicketWbot"; import Ticket from "../../models/Ticket"; import { updateTicketCacheByTicketId } from "../../helpers/TicketCache"; import { date } from "faker"; import { getIO } from "../../libs/socket"; import sendWhatsAppMessageSocket from "../../helpers/SendWhatsappMessageSocket"; import sendWhatsAppMediaSocket from "../../helpers/SendWhatsappMessageMediaSocket"; import sendWhatsMediaOfficialAPI from "../../helpers/sendWhatsMediaOfficialAPI"; import { mediaTypeWhatsappOfficial } from "./wbotMessageListener"; import { bytesToMB } from "../../helpers/BytesToMB"; interface Request { media?: Express.Multer.File; ticket: Ticket; mic_audio?: any; filePath?: string; } const SendWhatsAppMedia = async ({ media, ticket, mic_audio, filePath }: Request): Promise => { const { phoneNumberId } = ticket; if (phoneNumberId) { if (media) { const { type, mbMaxSize }: any = mediaTypeWhatsappOfficial(media.mimetype); const filesize: any = bytesToMB(media.size); if (filesize > mbMaxSize) { throw new AppError("FILE TOO LARGE!"); } if (!type) { throw new AppError("FILE TYPE NOT SUPPORTED!"); } sendWhatsMediaOfficialAPI(ticket, media, type, mic_audio); return; } } try { let newMedia: MessageMedia; if (filePath) { newMedia = MessageMedia.fromFilePath(filePath); } else if (media) { newMedia = MessageMedia.fromFilePath(media.path); } else { throw new AppError("No media provided!"); } sendWhatsAppMediaSocket(ticket, newMedia); const lastMessage = filePath ? path.basename(filePath) : media?.filename; await ticket.update({ lastMessage }); await updateTicketCacheByTicketId(ticket.id, { lastMessage, updatedAt: new Date(ticket.updatedAt).toISOString() }); if (media) { fs.unlinkSync(media.path); } } catch (err) { throw new AppError("ERR_SENDING_WAPP_MSG"); } // const { phoneNumberId } = ticket; // if (phoneNumberId) { // const { type, mbMaxSize }: any = mediaTypeWhatsappOfficial(media.mimetype); // const filesize: any = bytesToMB(media.size); // if (filesize > mbMaxSize) { // throw new AppError("FILE TOO LARGE!"); // } // if (!type) { // throw new AppError("FILE TYPE NOT SUPPORTED!"); // } // sendWhatsMediaOfficialAPI(ticket, media, type, mic_audio); // return; // } // try { // //const newMedia = MessageMedia.fromFilePath(media.path); // let newMedia: MessageMedia; // if (filePath) { // newMedia = MessageMedia.fromFilePath(filePath); // } else if (media) { // newMedia = MessageMedia.fromFilePath(media.path); // } else { // throw new AppError("No media provided!"); // } // sendWhatsAppMediaSocket(ticket, newMedia); // await ticket.update({ lastMessage: media.filename }); // await updateTicketCacheByTicketId(ticket.id, { // lastMessage: media.filename, // updatedAt: new Date(ticket.updatedAt).toISOString() // }); // console.log("media.path: ", media.path); // fs.unlinkSync(media.path); // } catch (err) { // throw new AppError("ERR_SENDING_WAPP_MSG"); // } }; export default SendWhatsAppMedia;