Files
tom goriunovandGitHub 401dc58402 Smart wallet auth (#3220)
* basic login button implementation

* refactoring and add dynamic auth button to the other pages

* connect wallet without authenticating an user

* login and logout user in blockscout account

* refactoring and RPC overrides

* authenticate user with connected wallet

* add ENS to profile button

* override evm chains and fix contract write with waas wallet

* disconnect wallet and fix docker build

* add dynamic imports to components that use web3 wallet packages

* refactor user profile directory

* clean up

* tweaks

* update pw ci script

* fix "connect wallet" button behavior

* handle linking email to profile with dynamic provider

* fix test

* async loading web3 hooks and remove dynamic loading from components that use them

* fix pw tests

* add account navigation in horizontal layout when auth provider is dynamic

* fix address verification modal

* review fixes

* spelling fixes
2026-02-18 19:42:44 +01:00

32 lines
1.1 KiB
TypeScript

import { useUserUpdateRequest } from '@dynamic-labs/sdk-react-core';
import { useQueryClient } from '@tanstack/react-query';
import React from 'react';
import type { UserInfo } from 'types/api/account';
import { getResourceKey } from 'lib/api/useApiQuery';
import * as mixpanel from 'lib/mixpanel/index';
export default function useLinkEmailDynamic(): () => void {
const { updateUserWithModal } = useUserUpdateRequest();
const queryClient = useQueryClient();
return React.useCallback(() => {
mixpanel.logEvent(mixpanel.EventTypes.ACCOUNT_LINK_INFO, {
Status: 'Started',
Type: 'Email',
Source: 'Profile dropdown',
});
updateUserWithModal([ 'email' ]).then((fields) => {
queryClient.setQueryData(getResourceKey('general:user_info'), (prevData: UserInfo | undefined) => {
return { ...prevData, email: fields.email };
});
mixpanel.logEvent(mixpanel.EventTypes.ACCOUNT_LINK_INFO, {
Status: 'Finished',
Type: 'Email',
Source: 'Profile dropdown',
});
});
}, [ queryClient, updateUserWithModal ]);
}