from aiogram.types import InlineKeyboardMarkup, InlineKeyboardButton


class Default:
    watermark_white_button = InlineKeyboardButton(
        text="📼 Поставить вотермарки (бел)", callback_data="2:w"
    )
    watermark_black_button = InlineKeyboardButton(
        text="📼 Поставить вотермарки (чёрн)", callback_data="2:b"
    )
    edit_video_button = InlineKeyboardButton(
        text="✂️ Подрезать видео", callback_data="3"
    )
    edit_audio_button = InlineKeyboardButton(text="👂 Убрать звук", callback_data="4")
    send_to_vk_button = InlineKeyboardButton(
        text="📤 Отправить в VK Video", callback_data="vk_upload"
    )
    cancel = InlineKeyboardButton(text="❌ Отмена", callback_data="cancel")

    default_row = [
        [edit_video_button, edit_audio_button],
        [watermark_white_button],
        [watermark_black_button],
        [send_to_vk_button],
    ]

    back_button = InlineKeyboardButton(text="🔙 Назад", callback_data="9")

    trim_watermark_row = [
        [watermark_black_button],
        [watermark_white_button],
        [back_button],
    ]

    cancel_row = [[cancel]]

    # Кнопка для отправки обработанного видео в VK
    send_processed_to_vk_row = [[send_to_vk_button], [cancel]]

    default_markup = InlineKeyboardMarkup(inline_keyboard=default_row)
    cancel_markup = InlineKeyboardMarkup(inline_keyboard=cancel_row)
    trim_watermark_markup = InlineKeyboardMarkup(inline_keyboard=trim_watermark_row)
    send_processed_to_vk_markup = InlineKeyboardMarkup(
        inline_keyboard=send_processed_to_vk_row
    )


def create_channel_buttons(groups_list):
    """
    Создает инлайн-кнопки для выбора канала из списка групп.

    Args:
        groups_list: Список словарей с информацией о группах [{'id': int, 'name': str, 'owner_id': int}, ...]

    Returns:
        InlineKeyboardMarkup: Разметка с кнопками для выбора канала
    """
    buttons = []
    for group in groups_list:
        # Ограничиваем длину названия для кнопки
        name = group["name"][:50] if len(group["name"]) > 50 else group["name"]
        button = InlineKeyboardButton(
            text=name, callback_data=f"vk_channel_{group['owner_id']}"
        )
        buttons.append([button])

    # Добавляем кнопку "Назад"
    back_button = InlineKeyboardButton(text="🔙 Назад", callback_data="9")
    buttons.append([back_button])

    return InlineKeyboardMarkup(inline_keyboard=buttons)


def create_playlist_buttons(albums_list):
    """
    Создает инлайн-кнопки для выбора плейлиста из списка альбомов.

    Args:
        albums_list: Список словарей с информацией об альбомах [{'id': int, 'title': str}, ...]

    Returns:
        InlineKeyboardMarkup: Разметка с кнопками для выбора плейлиста
    """
    buttons = []
    for album in albums_list:
        # Ограничиваем длину названия для кнопки
        title = album["title"][:50] if len(album["title"]) > 50 else album["title"]
        button = InlineKeyboardButton(
            text=title, callback_data=f"vk_playlist_{album['id']}"
        )
        buttons.append([button])

    # Добавляем кнопку "Назад"
    back_button = InlineKeyboardButton(
        text="🔙 Назад", callback_data="vk_back_to_channels"
    )
    buttons.append([back_button])

    return InlineKeyboardMarkup(inline_keyboard=buttons)
