mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-12-23 09:52:26 +01:00
[MMI] Connect MMI flow in one step less (#20143)
* First approach to fix the issue that we are displaying one extra step * Fixed issues
This commit is contained in:
parent
b584b82dbd
commit
270f74c209
@ -73,7 +73,7 @@ const CustodyPage = () => {
|
|||||||
const [jwtList, setJwtList] = useState([]);
|
const [jwtList, setJwtList] = useState([]);
|
||||||
const [apiUrl, setApiUrl] = useState('');
|
const [apiUrl, setApiUrl] = useState('');
|
||||||
const [addNewTokenClicked, setAddNewTokenClicked] = useState(false);
|
const [addNewTokenClicked, setAddNewTokenClicked] = useState(false);
|
||||||
const [chainId, setChainId] = useState(0);
|
const [chainId, setChainId] = useState(parseInt(currentChainId, 16));
|
||||||
const [connectRequest, setConnectRequest] = useState(undefined);
|
const [connectRequest, setConnectRequest] = useState(undefined);
|
||||||
const [accounts, setAccounts] = useState();
|
const [accounts, setAccounts] = useState();
|
||||||
const address = useSelector(getSelectedAddress);
|
const address = useSelector(getSelectedAddress);
|
||||||
@ -133,7 +133,7 @@ const CustodyPage = () => {
|
|||||||
<Button
|
<Button
|
||||||
size={BUTTON_SIZES.SM}
|
size={BUTTON_SIZES.SM}
|
||||||
data-testid="custody-connect-button"
|
data-testid="custody-connect-button"
|
||||||
onClick={async (_) => {
|
onClick={async () => {
|
||||||
const jwtListValue = await dispatch(
|
const jwtListValue = await dispatch(
|
||||||
mmiActions.getCustodianJWTList(custodian.name),
|
mmiActions.getCustodianJWTList(custodian.name),
|
||||||
);
|
);
|
||||||
@ -206,75 +206,54 @@ const CustodyPage = () => {
|
|||||||
[selectedCustodianName, trackEvent],
|
[selectedCustodianName, trackEvent],
|
||||||
);
|
);
|
||||||
|
|
||||||
const getCustodianAccounts = useCallback(
|
|
||||||
async (token, getNonImportedAccounts) => {
|
|
||||||
return await dispatch(
|
|
||||||
mmiActions.getCustodianAccounts(
|
|
||||||
token,
|
|
||||||
apiUrl,
|
|
||||||
selectedCustodianType,
|
|
||||||
getNonImportedAccounts,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
},
|
|
||||||
[dispatch, mmiActions, apiUrl, selectedCustodianType],
|
|
||||||
);
|
|
||||||
|
|
||||||
const connect = useCallback(async () => {
|
|
||||||
try {
|
|
||||||
// If you have one JWT already, but no dropdown yet, currentJwt is null!
|
|
||||||
const jwt = currentJwt || jwtList[0];
|
|
||||||
setConnectError('');
|
|
||||||
const accountsValue = await getCustodianAccounts(jwt, true);
|
|
||||||
|
|
||||||
setAccounts(accountsValue);
|
|
||||||
trackEvent({
|
|
||||||
category: MetaMetricsEventCategory.MMI,
|
|
||||||
event: MetaMetricsEventName.CustodianConnected,
|
|
||||||
properties: {
|
|
||||||
custodian: selectedCustodianName,
|
|
||||||
apiUrl,
|
|
||||||
rpc: Boolean(connectRequest),
|
|
||||||
},
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
handleConnectError(e);
|
|
||||||
}
|
|
||||||
}, [
|
|
||||||
apiUrl,
|
|
||||||
connectRequest,
|
|
||||||
currentJwt,
|
|
||||||
getCustodianAccounts,
|
|
||||||
handleConnectError,
|
|
||||||
jwtList,
|
|
||||||
selectedCustodianName,
|
|
||||||
trackEvent,
|
|
||||||
]);
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setLoading(true);
|
|
||||||
const fetchConnectRequest = async () => {
|
const fetchConnectRequest = async () => {
|
||||||
const connectRequestValue = await dispatch(
|
const connectRequestValue = await dispatch(
|
||||||
mmiActions.getCustodianConnectRequest(),
|
mmiActions.getCustodianConnectRequest(),
|
||||||
);
|
);
|
||||||
|
|
||||||
setChainId(parseInt(currentChainId, 16));
|
|
||||||
|
|
||||||
// check if it's empty object
|
|
||||||
if (Object.keys(connectRequestValue).length) {
|
if (Object.keys(connectRequestValue).length) {
|
||||||
setConnectRequest(connectRequestValue);
|
const {
|
||||||
setCurrentJwt(
|
token,
|
||||||
connectRequestValue.token ||
|
custodianName,
|
||||||
(await dispatch(mmiActions.getCustodianToken(address))),
|
custodianType,
|
||||||
|
apiUrl: custodianApiUrl,
|
||||||
|
} = connectRequestValue;
|
||||||
|
|
||||||
|
const jwt =
|
||||||
|
token || (await dispatch(mmiActions.getCustodianToken(address)));
|
||||||
|
const accountsValue = await dispatch(
|
||||||
|
mmiActions.getCustodianAccounts(
|
||||||
|
jwt,
|
||||||
|
custodianApiUrl,
|
||||||
|
custodianType,
|
||||||
|
true,
|
||||||
|
),
|
||||||
);
|
);
|
||||||
setSelectedCustodianType(connectRequestValue.custodianType);
|
|
||||||
setSelectedCustodianName(connectRequestValue.custodianName);
|
setConnectRequest(connectRequestValue);
|
||||||
setApiUrl(connectRequestValue.apiUrl);
|
setCurrentJwt(jwt);
|
||||||
|
setSelectedCustodianType(custodianType);
|
||||||
|
setSelectedCustodianName(custodianName);
|
||||||
|
setApiUrl(custodianApiUrl);
|
||||||
|
setConnectError('');
|
||||||
|
setAccounts(accountsValue);
|
||||||
|
|
||||||
|
trackEvent({
|
||||||
|
category: MetaMetricsEventCategory.MMI,
|
||||||
|
event: MetaMetricsEventName.CustodianConnected,
|
||||||
|
properties: {
|
||||||
|
custodian: custodianName,
|
||||||
|
apiUrl,
|
||||||
|
rpc: Boolean(connectRequest),
|
||||||
|
},
|
||||||
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleFetchConnectRequest = async () => {
|
const handleFetchConnectRequest = async () => {
|
||||||
try {
|
try {
|
||||||
|
setLoading(true);
|
||||||
await fetchConnectRequest();
|
await fetchConnectRequest();
|
||||||
setLoading(false);
|
setLoading(false);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -288,29 +267,32 @@ const CustodyPage = () => {
|
|||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleNetworkChange = async () => {
|
async function handleNetworkChange() {
|
||||||
if (!isNaN(chainId)) {
|
if (!isNaN(chainId)) {
|
||||||
const jwt = currentJwt || jwtList[0];
|
const jwt = currentJwt || jwtList[0];
|
||||||
|
|
||||||
if (jwt && jwt.length) {
|
if (jwt && jwt.length) {
|
||||||
setAccounts(await getCustodianAccounts(jwt, true));
|
setAccounts(
|
||||||
|
await dispatch(
|
||||||
|
mmiActions.getCustodianAccounts(
|
||||||
|
jwt,
|
||||||
|
apiUrl,
|
||||||
|
selectedCustodianType,
|
||||||
|
true,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|
|
||||||
if (parseInt(chainId, 16) !== chainId) {
|
if (parseInt(chainId, 16) !== chainId) {
|
||||||
setChainId(parseInt(currentChainId, 16));
|
setChainId(parseInt(currentChainId, 16));
|
||||||
handleNetworkChange();
|
handleNetworkChange();
|
||||||
}
|
}
|
||||||
}, [
|
|
||||||
getCustodianAccounts,
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
apiUrl,
|
}, [currentChainId]);
|
||||||
currentJwt,
|
|
||||||
jwtList,
|
|
||||||
selectedCustodianType,
|
|
||||||
currentChainId,
|
|
||||||
chainId,
|
|
||||||
]);
|
|
||||||
|
|
||||||
const cancelConnectCustodianToken = () => {
|
const cancelConnectCustodianToken = () => {
|
||||||
setSelectedCustodianName('');
|
setSelectedCustodianName('');
|
||||||
@ -422,7 +404,7 @@ const CustodyPage = () => {
|
|||||||
iconName={IconName.ArrowLeft}
|
iconName={IconName.ArrowLeft}
|
||||||
size={IconSize.Sm}
|
size={IconSize.Sm}
|
||||||
color={Color.iconDefault}
|
color={Color.iconDefault}
|
||||||
onClick={() => cancelConnectCustodianToken()}
|
onClick={cancelConnectCustodianToken}
|
||||||
display={[Display.Flex]}
|
display={[Display.Flex]}
|
||||||
/>
|
/>
|
||||||
<Text>{t('back')}</Text>
|
<Text>{t('back')}</Text>
|
||||||
@ -466,9 +448,7 @@ const CustodyPage = () => {
|
|||||||
block
|
block
|
||||||
variant={BUTTON_VARIANT.SECONDARY}
|
variant={BUTTON_VARIANT.SECONDARY}
|
||||||
size={BUTTON_SIZES.LG}
|
size={BUTTON_SIZES.LG}
|
||||||
onClick={() => {
|
onClick={cancelConnectCustodianToken}
|
||||||
cancelConnectCustodianToken();
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
{t('cancel')}
|
{t('cancel')}
|
||||||
</Button>
|
</Button>
|
||||||
@ -476,7 +456,33 @@ const CustodyPage = () => {
|
|||||||
block
|
block
|
||||||
data-testid="jwt-form-connect-button"
|
data-testid="jwt-form-connect-button"
|
||||||
size={BUTTON_SIZES.LG}
|
size={BUTTON_SIZES.LG}
|
||||||
onClick={connect}
|
onClick={async () => {
|
||||||
|
try {
|
||||||
|
setConnectError('');
|
||||||
|
|
||||||
|
const accountsValue = await dispatch(
|
||||||
|
mmiActions.getCustodianAccounts(
|
||||||
|
currentJwt || jwtList[0],
|
||||||
|
apiUrl,
|
||||||
|
selectedCustodianType,
|
||||||
|
true,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
setAccounts(accountsValue);
|
||||||
|
trackEvent({
|
||||||
|
category: MetaMetricsEventCategory.MMI,
|
||||||
|
event: MetaMetricsEventName.CustodianConnected,
|
||||||
|
properties: {
|
||||||
|
custodian: selectedCustodianName,
|
||||||
|
apiUrl,
|
||||||
|
rpc: Boolean(connectRequest),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
handleConnectError(e);
|
||||||
|
}
|
||||||
|
}}
|
||||||
disabled={
|
disabled={
|
||||||
!selectedCustodianName ||
|
!selectedCustodianName ||
|
||||||
(addNewTokenClicked && !currentJwt)
|
(addNewTokenClicked && !currentJwt)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user