import { app, nativeImage } from 'electron';

import { getMainWindow } from './window';

/**
 * 未读角标：按平台分支实现
 * - mac：Dock 图标原生支持文字角标，直接 setBadge
 * - Windows：任务栏无原生数字角标，用「覆盖图标」实现（图由 preload 侧 canvas 绘制成 dataURL 传来，
 *   因为主进程没有 DOM/canvas，在渲染侧画图是社区标准做法）
 */
export function applyBadge(count: number, image?: string): void {
  if (process.platform === 'darwin') {
    app.dock?.setBadge(count > 0 ? String(Math.min(count, 99)) : '');
    return;
  }
  const win = getMainWindow();
  if (!win) return;
  if (count > 0 && image) {
    win.setOverlayIcon(nativeImage.createFromDataURL(image), `${count} 条未读消息`);
  } else {
    // 数量归零或没有角标图时清除覆盖图标
    win.setOverlayIcon(null, '');
  }
}
