Commit f9e590b8 authored by tom's avatar tom

bug fixes

parent 4546db73
...@@ -13,6 +13,7 @@ import DataListDisplay from 'ui/shared/DataListDisplay'; ...@@ -13,6 +13,7 @@ import DataListDisplay from 'ui/shared/DataListDisplay';
import PageTitle from 'ui/shared/Page/PageTitle'; import PageTitle from 'ui/shared/Page/PageTitle';
import Pagination from 'ui/shared/pagination/Pagination'; import Pagination from 'ui/shared/pagination/Pagination';
import useQueryWithPages from 'ui/shared/pagination/useQueryWithPages'; import useQueryWithPages from 'ui/shared/pagination/useQueryWithPages';
import useProfileQuery from 'ui/snippets/auth/useProfileQuery';
import useRedirectForInvalidAuthToken from 'ui/snippets/auth/useRedirectForInvalidAuthToken'; import useRedirectForInvalidAuthToken from 'ui/snippets/auth/useRedirectForInvalidAuthToken';
import AddressModal from 'ui/watchlist/AddressModal/AddressModal'; import AddressModal from 'ui/watchlist/AddressModal/AddressModal';
import DeleteAddressModal from 'ui/watchlist/DeleteAddressModal'; import DeleteAddressModal from 'ui/watchlist/DeleteAddressModal';
...@@ -28,6 +29,7 @@ const WatchList: React.FC = () => { ...@@ -28,6 +29,7 @@ const WatchList: React.FC = () => {
}, },
}); });
const queryClient = useQueryClient(); const queryClient = useQueryClient();
const profileQuery = useProfileQuery();
const addressModalProps = useDisclosure(); const addressModalProps = useDisclosure();
const deleteModalProps = useDisclosure(); const deleteModalProps = useDisclosure();
...@@ -93,6 +95,7 @@ const WatchList: React.FC = () => { ...@@ -93,6 +95,7 @@ const WatchList: React.FC = () => {
isLoading={ isPlaceholderData } isLoading={ isPlaceholderData }
onDeleteClick={ onDeleteClick } onDeleteClick={ onDeleteClick }
onEditClick={ onEditClick } onEditClick={ onEditClick }
hasEmail={ Boolean(profileQuery.data?.email) }
/> />
)) } )) }
</Box> </Box>
...@@ -103,6 +106,7 @@ const WatchList: React.FC = () => { ...@@ -103,6 +106,7 @@ const WatchList: React.FC = () => {
onDeleteClick={ onDeleteClick } onDeleteClick={ onDeleteClick }
onEditClick={ onEditClick } onEditClick={ onEditClick }
top={ pagination.isVisible ? ACTION_BAR_HEIGHT_DESKTOP : 0 } top={ pagination.isVisible ? ACTION_BAR_HEIGHT_DESKTOP : 0 }
hasEmail={ Boolean(profileQuery.data?.email) }
/> />
</Box> </Box>
</> </>
......
...@@ -20,7 +20,7 @@ const UserProfileContentNavLink = ({ href, icon, text, onClick, py }: Props) => ...@@ -20,7 +20,7 @@ const UserProfileContentNavLink = ({ href, icon, text, onClick, py }: Props) =>
alignItems="center" alignItems="center"
columnGap={ 3 } columnGap={ 3 }
py={ py ?? '14px' } py={ py ?? '14px' }
color="initial" color="inherit"
_hover={{ textDecoration: 'none', color: 'link_hovered' }} _hover={{ textDecoration: 'none', color: 'link_hovered' }}
onClick={ onClick } onClick={ onClick }
> >
......
...@@ -17,9 +17,10 @@ interface Props { ...@@ -17,9 +17,10 @@ interface Props {
isLoading?: boolean; isLoading?: boolean;
onEditClick: (data: WatchlistAddress) => void; onEditClick: (data: WatchlistAddress) => void;
onDeleteClick: (data: WatchlistAddress) => void; onDeleteClick: (data: WatchlistAddress) => void;
hasEmail: boolean;
} }
const WatchListItem = ({ item, isLoading, onEditClick, onDeleteClick }: Props) => { const WatchListItem = ({ item, isLoading, onEditClick, onDeleteClick, hasEmail }: Props) => {
const [ notificationEnabled, setNotificationEnabled ] = useState(item.notification_methods.email); const [ notificationEnabled, setNotificationEnabled ] = useState(item.notification_methods.email);
const [ switchDisabled, setSwitchDisabled ] = useState(false); const [ switchDisabled, setSwitchDisabled ] = useState(false);
const onItemEditClick = useCallback(() => { const onItemEditClick = useCallback(() => {
...@@ -49,7 +50,7 @@ const WatchListItem = ({ item, isLoading, onEditClick, onDeleteClick }: Props) = ...@@ -49,7 +50,7 @@ const WatchListItem = ({ item, isLoading, onEditClick, onDeleteClick }: Props) =
const showNotificationToast = useCallback((isOn: boolean) => { const showNotificationToast = useCallback((isOn: boolean) => {
notificationToast({ notificationToast({
position: 'top-right', position: 'top-right',
description: isOn ? 'Email notification is ON' : 'Email notification is OFF', description: !isOn ? 'Email notification is ON' : 'Email notification is OFF',
colorScheme: 'green', colorScheme: 'green',
status: 'success', status: 'success',
variant: 'subtle', variant: 'subtle',
...@@ -103,7 +104,7 @@ const WatchListItem = ({ item, isLoading, onEditClick, onDeleteClick }: Props) = ...@@ -103,7 +104,7 @@ const WatchListItem = ({ item, isLoading, onEditClick, onDeleteClick }: Props) =
isChecked={ notificationEnabled } isChecked={ notificationEnabled }
onChange={ onSwitch } onChange={ onSwitch }
aria-label="Email notification" aria-label="Email notification"
isDisabled={ switchDisabled } isDisabled={ !hasEmail || switchDisabled }
/> />
</Skeleton> </Skeleton>
</HStack> </HStack>
......
...@@ -21,9 +21,10 @@ interface Props { ...@@ -21,9 +21,10 @@ interface Props {
isLoading?: boolean; isLoading?: boolean;
onEditClick: (data: WatchlistAddress) => void; onEditClick: (data: WatchlistAddress) => void;
onDeleteClick: (data: WatchlistAddress) => void; onDeleteClick: (data: WatchlistAddress) => void;
hasEmail: boolean;
} }
const WatchlistTableItem = ({ item, isLoading, onEditClick, onDeleteClick }: Props) => { const WatchlistTableItem = ({ item, isLoading, onEditClick, onDeleteClick, hasEmail }: Props) => {
const [ notificationEnabled, setNotificationEnabled ] = useState(item.notification_methods.email); const [ notificationEnabled, setNotificationEnabled ] = useState(item.notification_methods.email);
const [ switchDisabled, setSwitchDisabled ] = useState(false); const [ switchDisabled, setSwitchDisabled ] = useState(false);
const onItemEditClick = useCallback(() => { const onItemEditClick = useCallback(() => {
...@@ -53,7 +54,7 @@ const WatchlistTableItem = ({ item, isLoading, onEditClick, onDeleteClick }: Pro ...@@ -53,7 +54,7 @@ const WatchlistTableItem = ({ item, isLoading, onEditClick, onDeleteClick }: Pro
const showNotificationToast = useCallback((isOn: boolean) => { const showNotificationToast = useCallback((isOn: boolean) => {
notificationToast({ notificationToast({
position: 'top-right', position: 'top-right',
description: isOn ? 'Email notification is ON' : 'Email notification is OFF', description: !isOn ? 'Email notification is ON' : 'Email notification is OFF',
colorScheme: 'green', colorScheme: 'green',
status: 'success', status: 'success',
variant: 'subtle', variant: 'subtle',
...@@ -101,7 +102,7 @@ const WatchlistTableItem = ({ item, isLoading, onEditClick, onDeleteClick }: Pro ...@@ -101,7 +102,7 @@ const WatchlistTableItem = ({ item, isLoading, onEditClick, onDeleteClick }: Pro
size="md" size="md"
isChecked={ notificationEnabled } isChecked={ notificationEnabled }
onChange={ onSwitch } onChange={ onSwitch }
isDisabled={ switchDisabled } isDisabled={ !hasEmail || switchDisabled }
aria-label="Email notification" aria-label="Email notification"
/> />
</Skeleton> </Skeleton>
......
...@@ -18,9 +18,10 @@ interface Props { ...@@ -18,9 +18,10 @@ interface Props {
onEditClick: (data: WatchlistAddress) => void; onEditClick: (data: WatchlistAddress) => void;
onDeleteClick: (data: WatchlistAddress) => void; onDeleteClick: (data: WatchlistAddress) => void;
top: number; top: number;
hasEmail: boolean;
} }
const WatchlistTable = ({ data, isLoading, onDeleteClick, onEditClick, top }: Props) => { const WatchlistTable = ({ data, isLoading, onDeleteClick, onEditClick, top, hasEmail }: Props) => {
return ( return (
<Table variant="simple" minWidth="600px"> <Table variant="simple" minWidth="600px">
<TheadSticky top={ top }> <TheadSticky top={ top }>
...@@ -39,6 +40,7 @@ const WatchlistTable = ({ data, isLoading, onDeleteClick, onEditClick, top }: Pr ...@@ -39,6 +40,7 @@ const WatchlistTable = ({ data, isLoading, onDeleteClick, onEditClick, top }: Pr
isLoading={ isLoading } isLoading={ isLoading }
onDeleteClick={ onDeleteClick } onDeleteClick={ onDeleteClick }
onEditClick={ onEditClick } onEditClick={ onEditClick }
hasEmail={ hasEmail }
/> />
)) } )) }
</Tbody> </Tbody>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment