import { Bot, Context } from "grammy";
import { CHANNEL_ID } from "../config/mod.ts";
import { BotContext } from "../mod.ts";
import {
  getPostOutcomeKeyboard,
  IButtonCallbackData,
} from "../keyboards/mod.ts";
import { CallbackQueryEnum } from "./mod.ts";
import { getChatIdFromSession } from "../session/mod.ts";

export const voteCallback = async (
  ctx: Context,
  bot: Bot<BotContext>,
  callbackQueryData: IButtonCallbackData,
) => {
  await ctx.answerCallbackQuery();
  if (!callbackQueryData.sid) return;

  const isApproved = callbackQueryData.cq === CallbackQueryEnum.APPROVE;
  if (isApproved) {
    await ctx.copyMessage(CHANNEL_ID);
    bot.api.sendMessage(
      getChatIdFromSession(callbackQueryData.sid),
      "Post Approvato",
    );
  } else {
    bot.api.sendMessage(
      getChatIdFromSession(callbackQueryData.sid),
      "Post Rifiutato",
    );
  }

  // edit the message to show the outcome of approval
  await ctx.editMessageReplyMarkup({
    reply_markup: getPostOutcomeKeyboard(isApproved)
  });
};