Skip to content

Commit

Permalink
added cspr name support to contact details page
Browse files Browse the repository at this point in the history
  • Loading branch information
ost-ptk committed Oct 2, 2024
1 parent d9479cd commit 716a6f7
Show file tree
Hide file tree
Showing 11 changed files with 72 additions and 34 deletions.
6 changes: 3 additions & 3 deletions src/apps/connect-to-app/pages/switch-account/content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ type SwitchAccountContentProps = { requestId: string };
export function SwitchAccountContent({ requestId }: SwitchAccountContentProps) {
const activeOrigin = useSelector(selectActiveOrigin);
const activeAccount = useSelector(selectVaultActiveAccount);
const publicKeys = useSelector(selectVaultAccountsPublicKeys);
const accountsPublicKeys = useSelector(selectVaultAccountsPublicKeys);
const connectedAccountsToActiveTab = useSelector(
selectConnectedAccountsWithActiveOrigin
);
Expand Down Expand Up @@ -77,7 +77,7 @@ export function SwitchAccountContent({ requestId }: SwitchAccountContentProps) {
account => account.name !== activeAccount?.name
);

const accountsInfo = useFetchAccountsInfo(publicKeys);
const accountsInfo = useFetchAccountsInfo(accountsPublicKeys);

return (
<PageContainer>
Expand Down Expand Up @@ -141,7 +141,7 @@ export function SwitchAccountContent({ requestId }: SwitchAccountContentProps) {
<SpaceBetweenContainer>
<LeftAlignedFlexColumn>
<ConnectionStatusBadge
isConnected
isConnected={true}
displayContext="accountList"
/>
<Typography type="body">{account.name}</Typography>
Expand Down
4 changes: 3 additions & 1 deletion src/apps/popup/pages/account-settings/content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { dispatchToMainStore } from '@background/redux/utils';
import { hideAccountFromListChanged } from '@background/redux/vault/actions';
import {
selectVaultAccount,
selectVaultAccountsPublicKeys,
selectVaultHiddenAccountsNames,
selectVaultImportedAccountNames,
selectVaultLedgerAccountNames
Expand Down Expand Up @@ -42,13 +43,14 @@ export function AccountSettingsPageContent() {
const account = useSelector((state: RootState) =>
selectVaultAccount(state, accountName || '')
);
const accountsPublicKeys = useSelector(selectVaultAccountsPublicKeys);

if (!account) {
throw new Error("Account doesn't exist");
}

const accountsInfo = useFetchAccountsInfo(accountsPublicKeys);
const accountHash = getAccountHashFromPublicKey(account.publicKey);
const accountsInfo = useFetchAccountsInfo([account.publicKey]);

const csprName = accountsInfo && accountsInfo[accountHash]?.csprName;

Expand Down
4 changes: 2 additions & 2 deletions src/apps/popup/pages/connect-another-account/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ export function ConnectAnotherAccountPageContent() {
const { targetAccountName } = useParams();

const activeOrigin = useSelector(selectActiveOrigin);
const publicKeys = useSelector(selectVaultAccountsPublicKeys);
const accountsPublicKeys = useSelector(selectVaultAccountsPublicKeys);

const {
connectAnotherAccountWithEvent: connectAccount,
Expand Down Expand Up @@ -87,7 +87,7 @@ export function ConnectAnotherAccountPageContent() {
targetAccount?.publicKey
);

const accountsInfo = useFetchAccountsInfo(publicKeys);
const accountsInfo = useFetchAccountsInfo(accountsPublicKeys);

const targetAccountCsprName =
accountsInfo && accountsInfo[targetAccountHash]?.csprName;
Expand Down
4 changes: 2 additions & 2 deletions src/apps/popup/pages/connected-sites/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ export function ConnectedSitesPage() {

const accountsByOrigin = useSelector(selectAccountsByOriginDict);
const siteNameByOriginDict = useSelector(selectSiteNameByOriginDict);
const publicKeys = useSelector(selectVaultAccountsPublicKeys);
const accountsPublicKeys = useSelector(selectVaultAccountsPublicKeys);

const isNoSitesConnected = !Object.entries(accountsByOrigin).length;

const accountsInfo = useFetchAccountsInfo(publicKeys);
const accountsInfo = useFetchAccountsInfo(accountsPublicKeys);

if (isNoSitesConnected) {
return (
Expand Down
22 changes: 22 additions & 0 deletions src/apps/popup/pages/contact-details/details.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,19 @@
import React from 'react';
import { Trans, useTranslation } from 'react-i18next';
import { useSelector } from 'react-redux';
import styled from 'styled-components';

import { selectAllContactsPublicKeys } from '@background/redux/contacts/selectors';
import { Contact } from '@background/redux/contacts/types';

import { getAccountHashFromPublicKey } from '@libs/entities/Account';
import {
ContentContainer,
FlexColumn,
LeftAlignedFlexColumn,
SpacingSize
} from '@libs/layout';
import { useFetchAccountsInfo } from '@libs/services/account-info';
import {
Avatar,
Hash,
Expand All @@ -32,6 +37,13 @@ interface ContactDetailsProps {
export const ContactDetails = ({ contact }: ContactDetailsProps) => {
const { t } = useTranslation();

const contactPublicKeys = useSelector(selectAllContactsPublicKeys);

const accountsInfo = useFetchAccountsInfo(contactPublicKeys);

const accountHash = getAccountHashFromPublicKey(contact.publicKey);
const csprName = accountsInfo && accountsInfo[accountHash]?.csprName;

return (
<ContentContainer>
<Tile>
Expand All @@ -44,6 +56,16 @@ export const ContactDetails = ({ contact }: ContactDetailsProps) => {
variant={HashVariant.CaptionHash}
color="contentPrimary"
/>
{csprName ? (
<FlexColumn gap={SpacingSize.Small}>
<Typography type="bodySemiBold">
<Trans t={t}>CSPR.name</Trans>
</Typography>
<Typography type="captionRegular" color="contentSecondary">
{csprName}
</Typography>
</FlexColumn>
) : null}
<Typography type="captionRegular" color="contentSecondary">
<Trans t={t}>
Last edited: {formatShortTimestamp(contact.lastModified)}
Expand Down
17 changes: 5 additions & 12 deletions src/apps/popup/pages/contacts/components/contacts-plate.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import { Maybe } from 'casper-wallet-core/src/typings/common';
import React from 'react';
import { useSelector } from 'react-redux';
import styled from 'styled-components';

import { RouterPath, useTypedNavigate } from '@popup/router';

import { selectAllContactsPublicKeys } from '@background/redux/contacts/selectors';

import { AlignedFlexRow, FlexColumn, SpacingSize } from '@libs/layout';
import { useFetchAccountsInfo } from '@libs/services/account-info';
import { Avatar, Hash, HashVariant, Typography } from '@libs/ui/components';

const Container = styled(AlignedFlexRow)`
Expand All @@ -19,22 +16,18 @@ const Container = styled(AlignedFlexRow)`
interface ContactsPlateProps {
publicKey: string;
name: string;
accountHash: string;
csprName: Maybe<string> | undefined;
brandingLogo: Maybe<string> | undefined;
}

export const ContactsPlate = ({
publicKey,
name,
accountHash
csprName,
brandingLogo
}: ContactsPlateProps) => {
const navigate = useTypedNavigate();

const contactPublicKeys = useSelector(selectAllContactsPublicKeys);
const accountsInfo = useFetchAccountsInfo(contactPublicKeys);

const csprName = accountsInfo && accountsInfo[accountHash]?.csprName;
const brandingLogo = accountsInfo && accountsInfo[accountHash]?.brandingLogo;

return (
<Container
gap={SpacingSize.Medium}
Expand Down
26 changes: 19 additions & 7 deletions src/apps/popup/pages/contacts/content.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { EmptyContacts } from '@popup/pages/contacts/components/empty-contacts';

import {
selectAllContacts,
selectAllContactsPublicKeys,
selectLastModified
} from '@background/redux/contacts/selectors';

Expand All @@ -16,6 +17,7 @@ import {
ParagraphContainer,
SpacingSize
} from '@libs/layout';
import { useFetchAccountsInfo } from '@libs/services/account-info';
import { List, Typography } from '@libs/ui/components';
import { formatShortTimestamp } from '@libs/ui/utils';

Expand All @@ -24,13 +26,16 @@ export const ContactsBookPageContent = () => {

const contacts = useSelector(selectAllContacts);
const lastModified = useSelector(selectLastModified);
const contactPublicKeys = useSelector(selectAllContactsPublicKeys);

const contactsWithId = contacts.map((contact, index) => ({
...contact,
id: index,
accountHash: getAccountHashFromPublicKey(contact.publicKey)
}));

const accountsInfo = useFetchAccountsInfo(contactPublicKeys);

if (contactsWithId.length === 0) {
return <EmptyContacts />;
}
Expand All @@ -53,13 +58,20 @@ export const ContactsBookPageContent = () => {
)}
<List
rows={contactsWithId}
renderRow={({ publicKey, name, accountHash }) => (
<ContactsPlate
publicKey={publicKey}
name={name}
accountHash={accountHash}
/>
)}
renderRow={({ publicKey, name, accountHash }) => {
const csprName = accountsInfo && accountsInfo[accountHash]?.csprName;
const brandingLogo =
accountsInfo && accountsInfo[accountHash]?.brandingLogo;

return (
<ContactsPlate
publicKey={publicKey}
name={name}
csprName={csprName}
brandingLogo={brandingLogo}
/>
);
}}
marginLeftForItemSeparatorLine={54}
/>
</ContentContainer>
Expand Down
8 changes: 6 additions & 2 deletions src/libs/layout/header/header-connection-status.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import React from 'react';
import { useSelector } from 'react-redux';

import { selectVaultActiveAccount } from '@background/redux/vault/selectors';
import {
selectVaultAccountsPublicKeys,
selectVaultActiveAccount
} from '@background/redux/vault/selectors';

import { getAccountHashFromPublicKey } from '@libs/entities/Account';
import {
Expand Down Expand Up @@ -30,8 +33,9 @@ export function HeaderConnectionStatus({
isConnected
}: HeaderConnectionStatusProps) {
const activeAccount = useSelector(selectVaultActiveAccount);
const accountsPublicKeys = useSelector(selectVaultAccountsPublicKeys);

const accountsInfo = useFetchAccountsInfo([activeAccount?.publicKey!]);
const accountsInfo = useFetchAccountsInfo(accountsPublicKeys);

const accountHash = getAccountHashFromPublicKey(activeAccount?.publicKey);

Expand Down
2 changes: 1 addition & 1 deletion src/libs/services/account-info/use-fetch-accounts-info.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ export const useFetchAccountsInfo = (accountPublicKeys: string[]) => {
const accountHashesString = accountHashes.toString();

const { data: accountsInfo } = useQuery({
queryKey: ['ACCOUNT_INFO', accountHashesString],
queryKey: ['ACCOUNT_INFO', accountHashesString, network],
queryFn: async () => {
return await accountInfoRepository.getAccountsInfo({
accountHashes,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,10 @@ import { Trans, useTranslation } from 'react-i18next';
import { useSelector } from 'react-redux';
import styled from 'styled-components';

import { selectVaultActiveAccount } from '@background/redux/vault/selectors';
import {
selectVaultAccountsPublicKeys,
selectVaultActiveAccount
} from '@background/redux/vault/selectors';

import { getAccountHashFromPublicKey } from '@libs/entities/Account';
import {
Expand Down Expand Up @@ -56,11 +59,11 @@ export const ActiveAccountPlate = ({
const { t } = useTranslation();

const activeAccount = useSelector(selectVaultActiveAccount);
const accountsPublicKeys = useSelector(selectVaultAccountsPublicKeys);

const accountsInfo = useFetchAccountsInfo([activeAccount?.publicKey!]);
const accountsInfo = useFetchAccountsInfo(accountsPublicKeys);

const accountHash = getAccountHashFromPublicKey(activeAccount?.publicKey);

const csprName = accountsInfo && accountsInfo[accountHash]?.csprName;
const brandingLogo = accountsInfo && accountsInfo[accountHash]?.brandingLogo;

Expand Down
4 changes: 3 additions & 1 deletion src/libs/ui/forms/form-validation-rules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,9 @@ export const useRecipientPublicKeyRule = () => {

return false;
},
message: t('Recipient should be a valid public key or cspr name')
message: t(
'The recipient should be a valid public key, CSPR.name or contact name'
)
});
};

Expand Down

0 comments on commit 716a6f7

Please sign in to comment.