function PageMerge(props) { const { useRef, useState, useEffect } = React; const { userImage, userDemo, userTemplate } = props; const [ loading, setLoading ] = useState(false); const refDisplayImage = useRef(); const _self = this; function goNext(_mergeImage) { props.next(_mergeImage); } function goBack() { props.back(); } function doFaceMerge() { return new Promise((resolve, reject) => { const faceFusionAPI = new FaceFusionAPI(); faceFusionAPI.start( userTemplate, userImage, 0.29, async (_merge_image: string) => { resolve(_merge_image); }, (errMsg: string) => { reject(new Error(errMsg)); }, ); }); } function mergeFace() { setLoading(true); doFaceMerge().then((_mergeImage) => { setLoading(false); goNext(_mergeImage); }).catch((error) => { console.log('MergeFace error: \n' + error.name + 'Message: \n' + error.message); if (confirm('融合失敗, 是否要再試一次?')) { mergeFace(); } else { goBack(); } }); } useEffect(() => { mergeFace(); return () => {}; }, []); return (
{ (loading) ? (
您的專屬菜單正在輸出...
) : ('') }
); }