"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetWbotMessage = void 0;
const AppError_1 = __importDefault(require("../errors/AppError"));
const EndPointQuery_1 = __importDefault(require("./EndPointQuery"));
const wbot_1 = require("../libs/wbot");
const GetWbotMessage = (ticket, messageId) => __awaiter(void 0, void 0, void 0, function* () {
    let limit = 20;
    const wbot_url = yield wbot_1.getWbot(ticket.whatsappId);
    const msgFound = yield EndPointQuery_1.default(`${wbot_url}/api/getWbotMessage`, {
        number: `${ticket.contact.number}@${ticket.isGroup ? "g" : "c"}.us`,
        messageId: messageId,
        limit: limit
    });
    // console.log('----------> msgFound: ', msgFound)  
    // const wbot = await GetTicketWbot(ticket);
    /* const wbotChat = await wbot.getChatById(`${ticket.contact.number}@${ticket.isGroup ? "g" : "c"}.us`);
   
     const fetchWbotMessagesGradually = async (): Promise<void | WbotMessage> => {
       
       const chatMessages = await wbotChat.fetchMessages({ limit });
   
       const msgFound = chatMessages.find(msg => msg.id.id === messageId);
   
       if (!msgFound && limit < 100) {
         limit += 20;
         return fetchWbotMessagesGradually();
       }
   
       return msgFound;
     };*/
    try {
        // const msgFound = await fetchWbotMessagesGradually();
        if (!msgFound) {
            throw new Error("Cannot found message within 100 last messages");
        }
        return msgFound.data.data;
    }
    catch (err) {
        throw new AppError_1.default("ERR_FETCH_WAPP_MSG");
    }
});
exports.GetWbotMessage = GetWbotMessage;
exports.default = exports.GetWbotMessage;
