// Pure builder for the Telegram native popup (showPopup) used by the deep-link info modals
// (StaleInviteModal / WelcomeRedeemModal) inside the Mini App. Kept free of the SDK and the DOM so
// it unit-tests in the node environment; the showPopup transport wrapper lives in telegram.ts and
// the wiring (native inside Telegram, the in-app Modal elsewhere) in the modal components.

import type { TelegramPopupParams } from './telegram';

/** BOT_BUTTON_ID is the showPopup button id that means "open the bot chat". */
export const BOT_BUTTON_ID = 'bot';

/**
 * botInfoPopup builds the native popup for a deep-link info modal: the message with the `{bot}`
 * token replaced by the `@username` as plain text (a native popup has no inline link, unlike the
 * in-app Modal), plus an "open bot" button when a username is known and a closing OK button. With
 * no username it is the message (token removed) and OK only.
 */
export function botInfoPopup(title: string, message: string, username: string, okText: string): TelegramPopupParams {
  const handle = username ? `@${username}` : '';
  const text = (username ? message.replace('{bot}', handle) : message.replace('{bot}', '').replace('  ', ' ')).trim();
  const buttons = username
    ? [{ id: BOT_BUTTON_ID, text: handle }, { id: 'ok', text: okText }]
    : [{ id: 'ok', text: okText }];
  return { title, message: text, buttons };
}
