print("file_store.py loaded")

from pyrogram import Client, filters
from pyrogram.types import Message

from config import OWNER_ID, ADMINS
from helper.db_channels import send_to_db
from helper.shortlink import generate_shortlink


# =========================
# CHECK ADMIN
# =========================
def is_admin(user_id: int) -> bool:
    return user_id == OWNER_ID or user_id in ADMINS


# =========================
# HANDLE FILE / TEXT
# =========================
@Client.on_message(
    filters.private
    & filters.incoming
    & ~filters.command(["start"])
    & (filters.media | filters.text),
    group=1
)
async def save_file_handler(bot: Client, message: Message):

    print("FILE HANDLER MASUK")

    if not message.from_user:
        return

    user_id = message.from_user.id
    print("USER:", user_id)

    # =========================
    # ADMIN ONLY
    # =========================
    if not is_admin(user_id):
        print("BUKAN ADMIN")
        return

    try:
        # =========================
        # SAVE TO DB CHANNEL
        # =========================
        print("SAVE TO DB...")

        message_id = await send_to_db(bot, message)

        if not message_id:
            return await message.reply_text("Gagal menyimpan file")

        print("TERSIMPAN:", message_id)

        # =========================
        # GET BOT USERNAME
        # =========================
        if not hasattr(bot, "username"):
            me = await bot.get_me()
            bot.username = me.username

        # =========================
        # BASE LINK
        # =========================
        payload = f"get-{message_id}"
        base_link = f"https://t.me/{bot.username}?start={payload}"

        print("BASE LINK:", base_link)

        # =========================
        # SHORTLINK (OPTIONAL)
        # =========================
        try:
            short_link = await generate_shortlink(base_link)
        except Exception as e:
            print("SHORTLINK ERROR:", e)
            short_link = base_link

        print("SHORT LINK:", short_link)

        # =========================
        # RESPONSE
        # =========================
        await message.reply_text(
            f"File berhasil disimpan\n\n"
            f"ID: {message_id}\n\n"
            f"Link:\n{base_link}\n\n"
            f"Shortlink:\n{short_link}",
            disable_web_page_preview=True
        )

    except Exception as e:
        print("FILE STORE ERROR:", e)
        await message.reply_text("Terjadi kesalahan saat menyimpan file")