|
|
|
@ -1,7 +1,14 @@
|
|
|
|
|
import React from 'react';
|
|
|
|
|
import { useAsync } from '@capital/common';
|
|
|
|
|
import React, { useEffect, useRef } from 'react';
|
|
|
|
|
import {
|
|
|
|
|
useAsync,
|
|
|
|
|
showToasts,
|
|
|
|
|
useNavigate,
|
|
|
|
|
loginWithToken,
|
|
|
|
|
setUserJWT,
|
|
|
|
|
} from '@capital/common';
|
|
|
|
|
import { Divider, Image, Tooltip } from '@capital/component';
|
|
|
|
|
import { request } from './request';
|
|
|
|
|
import { Translate } from './translate';
|
|
|
|
|
|
|
|
|
|
export const FimAction: React.FC = React.memo(() => {
|
|
|
|
|
const { loading, value: strategies } = useAsync(async () => {
|
|
|
|
@ -9,6 +16,37 @@ export const FimAction: React.FC = React.memo(() => {
|
|
|
|
|
|
|
|
|
|
return strategies;
|
|
|
|
|
}, []);
|
|
|
|
|
const newWin = useRef<Window>();
|
|
|
|
|
const navigate = useNavigate();
|
|
|
|
|
|
|
|
|
|
useEffect(() => {
|
|
|
|
|
const fn = (event: MessageEvent<any>) => {
|
|
|
|
|
if (newWin.current && event.source === newWin.current) {
|
|
|
|
|
newWin.current.close();
|
|
|
|
|
|
|
|
|
|
const payload = event.data;
|
|
|
|
|
|
|
|
|
|
if (payload.type === 'exist') {
|
|
|
|
|
showToasts(Translate.accountExistedTip, 'warning');
|
|
|
|
|
} else if (payload.type === 'token') {
|
|
|
|
|
const token = payload.token;
|
|
|
|
|
setUserJWT(token)
|
|
|
|
|
.then(loginWithToken(token))
|
|
|
|
|
.then(() => {
|
|
|
|
|
navigate('/main');
|
|
|
|
|
})
|
|
|
|
|
.catch(() => {
|
|
|
|
|
showToasts(Translate.loginFailed, 'error');
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
window.addEventListener('message', fn);
|
|
|
|
|
|
|
|
|
|
return () => {
|
|
|
|
|
window.removeEventListener('message', fn);
|
|
|
|
|
};
|
|
|
|
|
}, []);
|
|
|
|
|
|
|
|
|
|
if (loading) {
|
|
|
|
|
return null;
|
|
|
|
@ -17,7 +55,7 @@ export const FimAction: React.FC = React.memo(() => {
|
|
|
|
|
if (Array.isArray(strategies) && strategies.length > 0) {
|
|
|
|
|
return (
|
|
|
|
|
<div>
|
|
|
|
|
<Divider />
|
|
|
|
|
<Divider>{Translate.fimLogin}</Divider>
|
|
|
|
|
<div style={{ display: 'flex', justifyContent: 'center' }}>
|
|
|
|
|
{strategies.map((s) => (
|
|
|
|
|
<Tooltip key={s.name} title={s.name}>
|
|
|
|
@ -36,9 +74,7 @@ export const FimAction: React.FC = React.memo(() => {
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
const win = window.open(url, 'square', 'frame=true');
|
|
|
|
|
win.addEventListener('message', (...args) => {
|
|
|
|
|
console.log(...args);
|
|
|
|
|
});
|
|
|
|
|
newWin.current = win;
|
|
|
|
|
}
|
|
|
|
|
}}
|
|
|
|
|
/>
|
|
|
|
|