@@ -18,18 +18,46 @@ export const WidgetPreview = ({
1818 const widgetRef = useRef < WidgetComponent > ( null )
1919
2020 useEffect ( ( ) => {
21- const loadWidgetElement = async ( ) => {
22- if ( ! customElements . get ( 'wm-payment-widget' ) ) {
21+ const name = 'wm-payment-widget'
22+ const load = async ( ) => {
23+ if ( ! customElements . get ( name ) ) {
2324 // dynamic import - ensure component only runs on the client side and not on SSR
2425 const { PaymentWidget } = await import ( '@tools/components/widget/index' )
25- if ( ! customElements . get ( 'wm-payment-widget' ) ) {
26- customElements . define ( 'wm-payment-widget' , PaymentWidget )
26+ if ( ! customElements . get ( name ) ) {
27+ customElements . define ( name , PaymentWidget )
2728 }
2829 }
30+
31+ const el = document . querySelector ( name ) !
32+ el . setController ( {
33+ isPreviewMode : true ,
34+ getWallet : NO_OP_CONTROLLER . getWallet ,
35+ async fetchQuote ( request ) {
36+ await sleep ( 500 )
37+ return NO_OP_CONTROLLER . fetchQuote ( request )
38+ } ,
39+ async initiatePayment ( request ) {
40+ await sleep ( 500 )
41+ return NO_OP_CONTROLLER . initiatePayment ( request )
42+ } ,
43+ async * getStatus ( ) {
44+ const outgoingPaymentId = 'https://example.com/outgoing-payments/id'
45+ yield { type : 'PENDING_GRANT_INTERACTION' }
46+ await sleep ( 2000 )
47+ yield { type : 'OUTGOING_PAYMENT_CREATED' , outgoingPaymentId }
48+ await sleep ( 2000 )
49+ yield {
50+ type : 'OUTGOING_PAYMENT_DONE' ,
51+ result : 'success' ,
52+ outgoingPaymentId,
53+ }
54+ } ,
55+ } )
56+
2957 setIsLoaded ( true )
3058 }
3159
32- loadWidgetElement ( )
60+ load ( )
3361 } , [ ] )
3462
3563 const widgetConfig = useMemo ( ( ) => {
@@ -41,34 +69,6 @@ export const WidgetPreview = ({
4169 }
4270 } , [ profile , serviceUrls , opWallet ] )
4371
44- useEffect ( ( ) => {
45- if ( ! isLoaded ) return
46- widgetRef . current ?. setController ( {
47- isPreviewMode : true ,
48- getWallet : NO_OP_CONTROLLER . getWallet ,
49- async fetchQuote ( request ) {
50- await sleep ( 500 )
51- return NO_OP_CONTROLLER . fetchQuote ( request )
52- } ,
53- async initiatePayment ( request ) {
54- await sleep ( 500 )
55- return NO_OP_CONTROLLER . initiatePayment ( request )
56- } ,
57- async * getStatus ( ) {
58- const outgoingPaymentId = 'https://example.com/outgoing-payments/id'
59- yield { type : 'PENDING_GRANT_INTERACTION' }
60- await sleep ( 2000 )
61- yield { type : 'OUTGOING_PAYMENT_CREATED' , outgoingPaymentId }
62- await sleep ( 2000 )
63- yield {
64- type : 'OUTGOING_PAYMENT_DONE' ,
65- result : 'success' ,
66- outgoingPaymentId,
67- }
68- } ,
69- } )
70- } , [ widgetRef . current , isLoaded ] )
71-
7272 useEffect ( ( ) => {
7373 if ( widgetRef . current && isLoaded ) {
7474 const widget = widgetRef . current
@@ -77,10 +77,6 @@ export const WidgetPreview = ({
7777 }
7878 } , [ widgetConfig , isLoaded ] )
7979
80- if ( ! isLoaded ) {
81- return < div > Loading widget...</ div >
82- }
83-
8480 return (
8581 < div
8682 style = { {
0 commit comments