import { LiFiWidget, WidgetConfig } from '@lifi/widget';
import type { Route } from '@lifi/sdk';
import { useState } from 'react';
const composerWidgetConfig: WidgetConfig = {
integrator: 'YourAppName',
toChain: 8453,
toToken: '0x7BfA7C4f149E7415b73bdeDfe609237e29CBF34A',
disabledUI: ['toToken'],
chains: {
allow: [1, 10, 42161, 8453],
},
theme: {
container: {
borderRadius: '12px',
boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',
},
},
};
export function ComposerDepositWidget() {
const [status, setStatus] = useState<string>('等待用户输入');
const handleRouteStarted = (route: Route) => {
const isComposer = route.steps.some(step => step.tool === 'composer');
setStatus(isComposer ? 'Composer 执行已开始' : '执行已开始');
};
const handleRouteUpdated = (route: Route) => {
const currentStep = route.steps.find(step =>
step.execution?.status === 'PENDING'
);
if (currentStep) {
setStatus(`执行中:${currentStep.tool}`);
}
};
const handleRouteCompleted = (route: Route) => {
const isComposer = route.steps.some(step => step.tool === 'composer');
setStatus(isComposer ? 'Composer 存款完成!' : '执行完成!');
};
const handleRouteFailed = (route: Route, error: Error) => {
setStatus(`执行失败:${error.message}`);
};
return (
<div>
<div className="status-bar">
状态:{status}
</div>
<LiFiWidget
integrator="YourAppName"
config={composerWidgetConfig}
onRouteExecutionStarted={handleRouteStarted}
onRouteExecutionUpdated={handleRouteUpdated}
onRouteExecutionCompleted={handleRouteCompleted}
onRouteExecutionFailed={handleRouteFailed}
/>
</div>
);
}