/** Отображаемое имя продукта (с пробелом), не путать с `productName` сборки (`TTRPGPlayer`). */
export const APP_DISPLAY_NAME_EN = 'TTRPG Player';
export const APP_DISPLAY_NAME_RU = 'НРИ Плеер';

/** Системный идентификатор приложения (exe, AppImage, appId). */
export const APP_PRODUCT_NAME = 'TTRPGPlayer';
export const APP_BUNDLE_ID = 'com.ttrpgplayer.app';

export function appDisplayNameForLocale(localeTag: string): string {
  const tag = localeTag.trim().toLowerCase();
  if (tag.startsWith('ru')) return APP_DISPLAY_NAME_RU;
  return APP_DISPLAY_NAME_EN;
}

/** Префикс заголовка окон (EN): `TTRPG - Editor`. RU — полное имя «НРИ Плеер». */
export const APP_WINDOW_BRAND = 'TTRPG';

export type AppWindowKind =
  | 'editor'
  | 'presentation'
  | 'control'
  | 'boot'
  | 'sceneDescription'
  | 'materials'
  | 'npcsEditor'
  | 'sceneEditor'
  | 'tokenPathEditor'
  | 'npcs';

const WINDOW_SUFFIX: Record<AppWindowKind, { ru: string; en: string }> = {
  editor: { ru: 'Редактор компании', en: 'Campaign editor' },
  presentation: { ru: 'Презентация', en: 'Presentation' },
  control: { ru: 'Пульт управления', en: 'Control deck' },
  boot: { ru: 'Загрузка', en: 'Loading' },
  sceneDescription: { ru: 'Описание сцены', en: 'Scene description' },
  materials: { ru: 'Материалы', en: 'Materials' },
  npcsEditor: { ru: 'НПС', en: 'NPCs' },
  sceneEditor: { ru: 'Редактор сцены', en: 'Scene editor' },
  tokenPathEditor: { ru: 'Движение токена', en: 'Token path' },
  npcs: { ru: 'НПС', en: 'NPCs' },
};

export function windowChromeTitle(kind: AppWindowKind, localeTag: string): string {
  const tag = localeTag.trim().toLowerCase();
  const ru = tag.startsWith('ru');
  const prefix = ru ? APP_DISPLAY_NAME_RU : APP_WINDOW_BRAND;
  const suffix = ru ? WINDOW_SUFFIX[kind].ru : WINDOW_SUFFIX[kind].en;
  return `${prefix} - ${suffix}`;
}

/** Подписи фильтров в системных диалогах выбора файла (main process). */
export function openDialogFilterLabel(
  kind: 'images' | 'imagesAndVideo' | 'audio' | 'videoAndAudio',
  localeTag: string,
): string {
  const ru = localeTag.trim().toLowerCase().startsWith('ru');
  switch (kind) {
    case 'imagesAndVideo':
      return ru ? 'Изображения и видео' : 'Images and video';
    case 'audio':
      return ru ? 'Аудио' : 'Audio';
    case 'videoAndAudio':
      return ru ? 'Видео и аудио' : 'Video and audio';
    default:
      return ru ? 'Изображения' : 'Images';
  }
}
