@sky-mavis/tanto-widget
Version:
Tanto Widget
39 lines (35 loc) • 1.29 kB
JavaScript
;
var react = require('react');
var wagmi = require('wagmi');
var index = require('../utils/index.cjs');
// Resolve conflicts caused by having two Ronin connectors with different IDs (RONIN_WALLET and com.roninchain.wallet)
const useSolveRoninConnectionConflict = () => {
const {
subscribe,
setState
} = wagmi.useConfig();
react.useEffect(() => {
const unsubscribe = subscribe(state => state, (_, prevState) => {
setState(state => {
const {
connections,
current: currentUID
} = state;
if (!currentUID || connections.size <= 1) return state;
const currentConnection = connections.get(currentUID);
if (!currentConnection) return state;
if (index.isRoninWallet(currentConnection.connector.id)) return state;
if (index.isRoninWalletInjected(currentConnection.connector.id)) {
const tantoConnection = Array.from(connections.values()).find(({
connector
}) => index.isRoninWallet(connector.id));
if (!tantoConnection) return state;
return prevState;
}
return state;
});
});
return () => unsubscribe();
}, [subscribe]);
};
exports.useSolveRoninConnectionConflict = useSolveRoninConnectionConflict;