Files
zellyy-finance/android/app/src/main/java/com/zellyy/finance/ImagePlugin.java
hansoo 8343b25439 feat: Stage 2 TypeScript 타입 안전성 개선 - any 타입 83개 → 62개 대폭 감소
 주요 개선사항:
- any 타입 83개에서 62개로 21개 수정 (25% 감소)
- 모든 ESLint 에러 11개 → 0개 완전 해결
- 타입 안전성 대폭 향상으로 런타임 오류 가능성 감소

🔧 수정된 파일들:
• PWADebug.tsx - 사용하지 않는 import들에 _ prefix 추가
• categoryUtils.ts - 불필요한 any 캐스트 제거
• TransactionsHeader.tsx - BudgetData 인터페이스 정의
• storageUtils.ts - generic 타입과 unknown 타입 적용
• 각종 error handler들 - Error | {message?: string} 타입 적용
• test 파일들 - 적절한 mock 인터페이스 정의
• 유틸리티 파일들 - any → unknown 또는 적절한 타입으로 교체

🏆 성과:
- 코드 품질 크게 향상 (280 → 80 문제로 71% 감소)
- TypeScript 컴파일러의 타입 체크 효과성 증대
- 개발자 경험 개선 (IDE 자동완성, 타입 추론 등)

🧹 추가 정리:
- ESLint no-console/no-alert 경고 해결
- Prettier 포맷팅 적용으로 코드 스타일 통일

🎯 다음 단계: 남은 62개 any 타입 계속 개선 예정

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 10:08:51 +09:00

55 lines
1.8 KiB
Java

package com.zellyy.finance;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Base64;
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
import com.getcapacitor.PluginCall;
import java.io.ByteArrayOutputStream;
@CapacitorPlugin(name = "ImagePlugin")
public class ImagePlugin extends Plugin {
@PluginMethod
public void getResourceImage(PluginCall call) {
String resourceName = call.getString("resourceName");
if (resourceName == null) {
call.reject("Resource name is required");
return;
}
try {
// 리소스 ID 찾기
int resourceId = getContext().getResources().getIdentifier(
resourceName, "drawable", getContext().getPackageName());
if (resourceId == 0) {
call.reject("Resource not found: " + resourceName);
return;
}
// 비트맵으로 변환
Bitmap bitmap = BitmapFactory.decodeResource(getContext().getResources(), resourceId);
// Base64로 인코딩
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);
byte[] byteArray = byteArrayOutputStream.toByteArray();
String base64Image = Base64.encodeToString(byteArray, Base64.DEFAULT);
// 응답 생성
JSObject ret = new JSObject();
ret.put("base64Image", "data:image/png;base64," + base64Image);
call.resolve(ret);
} catch (Exception e) {
call.reject("Error loading image", e);
}
}
}