"""Shared handler helpers."""

from __future__ import annotations

from aiogram.fsm.context import FSMContext
from aiogram.types import CallbackQuery, InlineKeyboardMarkup, Message

from app.context import AppContext
from app.keyboards.inline import main_menu


async def show(
    event: Message | CallbackQuery,
    text: str,
    keyboard: InlineKeyboardMarkup | None = None,
    *,
    disable_preview: bool = True,
) -> None:
    if isinstance(event, CallbackQuery):
        if event.message is None:
            await event.answer("پیام در دسترس نیست.", show_alert=True)
            return
        try:
            await event.message.edit_text(
                text,
                reply_markup=keyboard,
                disable_web_page_preview=disable_preview,
            )
        except Exception:
            await event.message.answer(
                text,
                reply_markup=keyboard,
                disable_web_page_preview=disable_preview,
            )
    else:
        await event.answer(
            text,
            reply_markup=keyboard,
            disable_web_page_preview=disable_preview,
        )


async def show_home(event: Message | CallbackQuery, ctx: AppContext) -> None:
    user_id = event.from_user.id if event.from_user else 0
    is_primary = await ctx.admins.is_primary(user_id)
    await show(
        event,
        "🎛 پنل مدیریت رسانه\nیک بخش را انتخاب کنید:",
        main_menu(is_primary=is_primary),
    )


async def clear_flow(state: FSMContext) -> None:
    await state.clear()
