useAppBridge Hook 패턴으로 이미지 저장 기능 개선
iOS 웹뷰에서 이미지 다운로드를 위한 네이티브 브릿지 기능을 React Hook 패턴으로 리팩토링하여 일관성과 재사용성 개선 변경사항: - useAppBridge Hook에 saveImage 메서드 추가 - utils/appBridge.ts에 saveImage 메서드 구현 - 세 개의 샘플 컴포넌트에서 useAppBridge Hook 사용 * cash-receipt-sample.tsx * deposit-receipt-sample.tsx * tax-invoice-sample.tsx - 직접 appBridge import 제거, Hook 패턴으로 통일 - TypeScript 타입 안전성 개선 (null 체크 추가) 기술 개선: - React Hook 패턴으로 컴포넌트 라이프사이클과 통합 - safeCall을 통한 자동 에러 처리 - iOS 환경에서만 네이티브 브릿지 사용 - Android/웹은 기존 다운로드 방식 유지 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { useState, useEffect, useCallback } from 'react';
|
||||
import { appBridge } from '@/utils/appBridge';
|
||||
import { DeviceInfo, NotificationSettingResponse, ShareContent } from '@/types';
|
||||
import { DeviceInfo, NotificationSettingResponse, ShareContent, SaveImageRequest, SaveImageResponse } from '@/types';
|
||||
import { LoginResponse } from '@/entities/user/model/types';
|
||||
|
||||
interface UseAppBridgeReturn {
|
||||
@@ -75,6 +75,9 @@ interface UseAppBridgeReturn {
|
||||
|
||||
// 알림 링크 확인
|
||||
checkAlarmLink: () => Promise<void>;
|
||||
|
||||
// 이미지 저장
|
||||
saveImage: (request: SaveImageRequest) => Promise<SaveImageResponse | undefined>;
|
||||
}
|
||||
|
||||
export const useAppBridge = (): UseAppBridgeReturn => {
|
||||
@@ -325,6 +328,14 @@ export const useAppBridge = (): UseAppBridgeReturn => {
|
||||
return appBridge.safeCall(() => appBridge.checkAlarmLink());
|
||||
}, [isNativeEnvironment]);
|
||||
|
||||
const saveImage = useCallback(async (request: SaveImageRequest): Promise<SaveImageResponse | undefined> => {
|
||||
if (!isIOS) {
|
||||
// iOS가 아닌 경우 undefined 반환 (호출하는 쪽에서 fallback 처리)
|
||||
return undefined;
|
||||
}
|
||||
return appBridge.safeCall(() => appBridge.saveImage(request));
|
||||
}, [isIOS]);
|
||||
|
||||
return {
|
||||
isNativeEnvironment,
|
||||
isAndroid,
|
||||
@@ -353,6 +364,7 @@ export const useAppBridge = (): UseAppBridgeReturn => {
|
||||
getNotificationSetting,
|
||||
setNotificationSetting,
|
||||
getLanguage,
|
||||
checkAlarmLink
|
||||
checkAlarmLink,
|
||||
saveImage
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user