on master help sign in
ux: address PR feedback

- User can now close Connect modal and open it again - style Connect button to match other Login buttons also: - simplify WalletConnect Login component click handlers

commitbf9c5f28081b96f58fe5ec14ba4d4c45b26b520f authortomholford <tomholford@users.noreply.github.com> dateMon 2 Aug 2021, 17:58 (5 years ago) parent0cd0df9
2 files changed+23−18
src/lib/useWalletConnect.ts+21−5 src/views/Login/WalletConnect.tsx+2−13
src/lib/useWalletConnect.ts+21−5
@@ -33,8 +33,7 @@ export const useWalletConnect = () => {
3333 const [address, setAddress] = useState<string | null>(null);
3434 const [peerMeta, setPeerMeta] = useState<PeerMeta | null>(null);
3535
36− // Init connector
37− useEffect(() => {
36+ const resetConnector = () => {
3837 const newConnector = new WalletConnect({
3938 bridge: 'https://bridge.walletconnect.org',
4039 qrcodeModal: QRCodeModal,
@@ -50,6 +49,11 @@ export const useWalletConnect = () => {
5049 if (newConnector.peerMeta) {
5150 setPeerMeta(newConnector.peerMeta);
5251 }
52+ };
53+
54+ // Init connector
55+ useEffect(() => {
56+ resetConnector();
5357 // eslint-disable-next-line react-hooks/exhaustive-deps
5458 }, []);
5559
@@ -62,13 +66,12 @@ export const useWalletConnect = () => {
6266 connector.createSession();
6367 };
6468
65− const disconnect = () => {
69+ const disconnect = async () => {
6670 if (!connector) {
67− console.warn('Nothing to disconnect');
6871 return;
6972 }
7073
71− connector.killSession();
74+ await connector.killSession();
7275 };
7376
7477 type AuthenticateArgs = {
@@ -155,6 +158,17 @@ export const useWalletConnect = () => {
155158 });
156159 };
157160
161+ const initModalClosedHandler = () => {
162+ if (!connector) {
163+ return;
164+ }
165+
166+ connector.on('modal_closed', () => {
167+ resetWallet();
168+ resetConnector();
169+ });
170+ };
171+
158172 // Init and clean up
159173 useEffect(() => {
160174 if (!connector) {
@@ -164,6 +178,7 @@ export const useWalletConnect = () => {
164178 initConnectHandler();
165179 initDisconnectHandler();
166180 initSessionUpdateHandler();
181+ initModalClosedHandler();
167182
168183 return () => {
169184 // Clean up listeners
@@ -182,5 +197,6 @@ export const useWalletConnect = () => {
182197 disconnect,
183198 isConnected,
184199 peerMeta,
200+ resetConnector,
185201 };
186202};
src/views/Login/WalletConnect.tsx+2−13
@@ -30,14 +30,6 @@ const WalletConnectLogin = ({ className, goHome }) => {
3030 peerMeta,
3131 } = useWalletConnect();
3232
33− const handleConnectButtonClick = () => {
34− if (isConnected()) {
35− disconnect();
36− } else {
37− connect();
38− }
39− };
40−
4133 const initialValues = useMemo(
4234 () => ({
4335 useCustomPath: false,
@@ -100,7 +92,7 @@ const WalletConnectLogin = ({ className, goHome }) => {
10092 <RestartButton
10193 as="a"
10294 className={'gray3'}
103− onClick={handleConnectButtonClick}>
95+ onClick={disconnect}>
10496 disconnect
10597 </RestartButton>
10698 </Grid.Item>
@@ -148,10 +140,7 @@ const WalletConnectLogin = ({ className, goHome }) => {
148140 </>
149141 ) : (
150142 <>
151− <Grid.Item
152− full
153− as={ForwardButton}
154− onClick={handleConnectButtonClick}>
143+ <Grid.Item full as={ForwardButton} solid onClick={connect}>
155144 {'Connect'}
156145 </Grid.Item>
157146 </>