@@ -3,6 +3,8 @@ import { useEffect } from "react";
33import styles from "@/components/Home/Home.module.scss" ;
44import { AppBridgeMessageType } from "@/components/provider/AppBridgeProvider/AppBridgeMessage.types" ;
55import { useAppBridge } from "@/components/provider/AppBridgeProvider/AppBridgeProvider" ;
6+ import { WebBridgeMessageType } from "@/components/provider/WebBridgeProvider/WebBridgeProvider" ;
7+ import { useWebBridge } from "@/components/provider/WebBridgeProvider/WebBridgeProvider" ;
68import IconButton from "@/components/ui/IconButton/IconButton" ;
79import Text from "@/components/ui/Text/Text" ;
810
@@ -17,23 +19,34 @@ export interface ScanResult {
1719const Home = ( ) => {
1820 const { send } = useAppBridge ( ) ;
1921
22+ const { receive } = useWebBridge ( ) ;
23+
2024 const { setScanData } = useScanDataStore ( ) ;
2125
2226 const { navigateToReceiptEdit } = useRoute ( ) ;
2327
2428 useEffect ( ( ) => {
25- window . response = {
26- receiveScanResult : ( jsonData : string ) => {
27- try {
28- const data : ScanResult [ ] = JSON . parse ( jsonData ) ;
29- setScanData ( data ) ;
30- navigateToReceiptEdit ( ) ;
31- } catch ( error ) {
32- console . error ( "Error parsing scan result JSON:" , error ) ;
33- }
34- } ,
35- } ;
36- } , [ ] ) ;
29+ if ( typeof window !== "undefined" && ! window . response ) {
30+ window . response = {
31+ receiveScanResult : ( jsonData : string ) => {
32+ try {
33+ const data : ScanResult [ ] = JSON . parse ( jsonData ) ;
34+ receive ( {
35+ type : WebBridgeMessageType . RECEIVE_SCAN_RESULT ,
36+ payload : data ,
37+ } ) ;
38+
39+ setScanData ( data ) ;
40+ setTimeout ( ( ) => {
41+ navigateToReceiptEdit ( ) ;
42+ } , 0 ) ;
43+ } catch ( error ) {
44+ console . error ( "Error parsing scan result JSON:" , error ) ;
45+ }
46+ } ,
47+ } ;
48+ }
49+ } , [ receive , navigateToReceiptEdit , setScanData ] ) ;
3750
3851 return (
3952 < div className = { styles . Home } >
@@ -57,20 +70,30 @@ const Home = () => {
5770 < IconButton
5871 text = "카메라"
5972 iconName = "camera"
60- onClick = { ( ) => send ( { type : AppBridgeMessageType . OPEN_CAMERA , payload : "" } ) }
61- />
62-
63- < button
6473 onClick = { ( ) => {
65- if ( window . response ) {
66- window . response . receiveScanResult (
67- JSON . stringify ( [ { sampleKey : "sampleValue" } , { sampleKey2 : "sampleValue2" } ] ) ,
68- ) ;
74+ send ( { type : AppBridgeMessageType . OPEN_CAMERA , payload : "" } ) ;
75+ if ( typeof window !== "undefined" && ! window . response ) {
76+ window . response = {
77+ receiveScanResult : ( jsonData : string ) => {
78+ try {
79+ const data : ScanResult [ ] = JSON . parse ( jsonData ) ;
80+ receive ( {
81+ type : WebBridgeMessageType . RECEIVE_SCAN_RESULT ,
82+ payload : data ,
83+ } ) ;
84+
85+ setScanData ( data ) ;
86+ setTimeout ( ( ) => {
87+ navigateToReceiptEdit ( ) ;
88+ } , 0 ) ;
89+ } catch ( error ) {
90+ console . error ( "Error parsing scan result JSON:" , error ) ;
91+ }
92+ } ,
93+ } ;
6994 }
7095 } }
71- >
72- 테스트 데이터 전송
73- </ button >
96+ />
7497 </ div >
7598 </ div >
7699 ) ;
0 commit comments