from __future__ import annotations

from telegram import InlineKeyboardButton, InlineKeyboardMarkup

from app.bot.messages import t


def save_mode_keyboard(lang: str = "ar") -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup([
        [
            InlineKeyboardButton(t("btn_link_only", lang), callback_data="save:link"),
            InlineKeyboardButton(t("btn_with_media", lang), callback_data="save:media"),
        ],
        [InlineKeyboardButton(t("btn_cancel", lang), callback_data="save:cancel")],
    ])


def download_failed_keyboard(lang: str = "ar") -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup([
        [
            InlineKeyboardButton(t("btn_retry", lang), callback_data="retry:download"),
            InlineKeyboardButton(t("btn_save_link_instead", lang), callback_data="save:link"),
        ],
        [InlineKeyboardButton(t("btn_dismiss", lang), callback_data="dismiss")],
    ])


def duplicate_keyboard(lang: str = "ar") -> InlineKeyboardMarkup:
    return InlineKeyboardMarkup([
        [InlineKeyboardButton(t("btn_view_saved", lang), callback_data="view:saved")],
        [InlineKeyboardButton(t("btn_cancel", lang), callback_data="dismiss")],
    ])


def search_result_keyboard(
    result_num: int,
    total: int,
    entity_id: str,
    url: str,
    lang: str = "ar",
) -> InlineKeyboardMarkup:
    nav_row = []
    if result_num > 1:
        nav_row.append(
            InlineKeyboardButton(t("btn_prev", lang), callback_data=f"search:page:{result_num - 1}")
        )
    if result_num < total:
        nav_row.append(
            InlineKeyboardButton(t("btn_next", lang), callback_data=f"search:page:{result_num + 1}")
        )

    return InlineKeyboardMarkup([
        [
            InlineKeyboardButton(t("btn_open", lang), url=url),
            InlineKeyboardButton(t("btn_details", lang), callback_data=f"details:{entity_id}"),
        ],
        nav_row,
        [InlineKeyboardButton(t("btn_new_search", lang), callback_data="search:new")],
    ])
