import { Capacitor, registerPlugin } from '@capacitor/core';

/**
 * 네이티브 이미지 플러그인 인터페이스
 */
export interface ImagePluginInterface {
  getResourceImage(options: { resourceName: string }): Promise<{ base64Image: string }>;
}

// 네이티브 플러그인을 사용할 수 없을 때 대체할 웹 구현
const ImagePluginWeb: ImagePluginInterface = {
  async getResourceImage(options: { resourceName: string }): Promise<{ base64Image: string }> {
    // 웹에서는 일반 경로 사용
    return { base64Image: `/${options.resourceName}.png` };
  },
};

// 네이티브 플러그인 등록
const ImagePlugin = registerPlugin<ImagePluginInterface>('ImagePlugin', {
  web: ImagePluginWeb,
});

/**
 * 이미지 리소스를 가져오는 함수
 * 
 * @param resourceName 리소스 이름 (확장자 제외)
 * @returns 플랫폼에 맞는 이미지 경로 또는 Base64 문자열
 */
export async function getResourceImage(resourceName: string): Promise<string> {
  try {
    if (Capacitor.isNativePlatform()) {
      // 네이티브 환경에서는 플러그인 사용
      const result = await ImagePlugin.getResourceImage({ resourceName });
      return result.base64Image;
    } else {
      // 웹 환경에서는 일반 URL 반환
      return `/${resourceName}.png`;
    }
  } catch (error) {
    console.error('이미지 리소스 로드 오류:', error);
    return `/${resourceName}.png`; // 오류 시 기본 경로 사용
  }
}
