import type { NormalizedOfficeDocumentConfig, OpenOfficeDocumentConfig } from '../types';

/** 后端按扩展名决定 documentType，缺扩展名会直接被拒，故前端先给出更易懂的报错 */
export function validateOfficeDocumentConfig(config: OpenOfficeDocumentConfig) {
  if (!config?.file?.fileId) {
    throw new Error('[GlobalOfficeDocumentModal] file.fileId is required');
  }
  if (!resolveFileName(config)) {
    throw new Error('[GlobalOfficeDocumentModal] file.name is required');
  }
}

/**
 * 文件名优先取 file.name；没有就退回从 url 里截。
 * 后端靠文件名的扩展名推导 documentType 并判断能否编辑，所以这个值不能丢。
 */
export function resolveFileName(config: OpenOfficeDocumentConfig): string {
  const name = config?.file?.name?.trim();
  if (name) return name;

  const url = config?.file?.url;
  if (!url) return '';
  const path = url.split(/[#?]/)[0] || '';
  const lastSegment = path.split('/').pop() || '';
  return lastSegment.includes('.') ? lastSegment : '';
}

export function normalizeOfficeDocumentConfig(config: OpenOfficeDocumentConfig): NormalizedOfficeDocumentConfig {
  const fileName = resolveFileName(config);
  return {
    ...config,
    mode: config.mode === 'view' ? 'view' : 'edit',
    title: config.title?.trim() || fileName,
  };
}
