Skip to content

Commit

Permalink
Merge branch 'main' into lw-10270-styling
Browse files Browse the repository at this point in the history
  • Loading branch information
renanvalentin committed Apr 19, 2024
2 parents 8ad71eb + e511860 commit bc14a1b
Show file tree
Hide file tree
Showing 44 changed files with 637 additions and 617 deletions.
12 changes: 6 additions & 6 deletions apps/browser-extension-wallet/package.json
Expand Up @@ -39,14 +39,14 @@
},
"dependencies": {
"@ant-design/icons": "^4.7.0",
"@cardano-sdk/cardano-services-client": "0.18.0",
"@cardano-sdk/cardano-services-client": "0.19.0",
"@cardano-sdk/core": "0.30.0",
"@cardano-sdk/dapp-connector": "0.12.14",
"@cardano-sdk/input-selection": "0.12.26",
"@cardano-sdk/tx-construction": "0.18.2",
"@cardano-sdk/input-selection": "0.12.27",
"@cardano-sdk/tx-construction": "0.18.3",
"@cardano-sdk/util": "0.15.0",
"@cardano-sdk/wallet": "0.36.0",
"@cardano-sdk/web-extension": "0.26.2",
"@cardano-sdk/wallet": "0.37.0",
"@cardano-sdk/web-extension": "0.27.0",
"@emurgo/cip14-js": "~3.0.1",
"@koralabs/handles-public-api-interfaces": "^1.6.6",
"@lace/cardano": "0.1.0",
Expand All @@ -59,7 +59,7 @@
"@vespaiach/axios-fetch-adapter": "^0.3.0",
"antd": "^4.24.10",
"are-you-es5": "^2.1.2",
"axios": "0.21.4",
"axios": "0.28.0",
"bignumber.js": "9.0.1",
"bip39": "^3.0.4",
"blake2b-no-wasm": "2.1.4",
Expand Down
Expand Up @@ -33,7 +33,9 @@ const hash = Crypto.Hash28ByteBase16(Buffer.from('dRepCredentialHashdRepCreden')
const getPubDRepKey = async () => await hash;

const inMemoryWallet = {
getPubDRepKey,
governance: {
getPubDRepKey
},
assetInfo$,
balance: {
utxo: {
Expand Down
Expand Up @@ -307,7 +307,9 @@ describe('Testing hooks', () => {
mockUseWalletStore.mockReset();
mockUseWalletStore.mockReturnValue({
inMemoryWallet: {
getPubDRepKey: jest.fn(async () => await ed25519PublicKeyHexMock)
governance: {
getPubDRepKey: jest.fn(async () => await ed25519PublicKeyHexMock)
}
}
});

Expand Down
Expand Up @@ -205,7 +205,7 @@ export const useGetOwnPubDRepKeyHash = (): UseGetOwnPubDRepKeyHash => {
useEffect(() => {
if (!inMemoryWallet) return;
const get = async () => {
const ownPubDRepKey = await inMemoryWallet.getPubDRepKey();
const ownPubDRepKey = await inMemoryWallet.governance.getPubDRepKey();
const ownDRepKeyHash = await pubDRepKeyToHash(ownPubDRepKey);

setOwnPubDRepKeyHash(ownDRepKeyHash);
Expand Down
5 changes: 5 additions & 0 deletions apps/browser-extension-wallet/src/hooks/useWalletState.ts
Expand Up @@ -52,6 +52,7 @@ const combineObservable = ({ wallet }: Wallet.CardanoWallet): Observable<Observa
wallet.delegation.rewardsHistory$,
wallet.eraSummaries$,
wallet.genesisParameters$,
wallet.governance.isRegisteredAsDRep$,
wallet.handles$,
wallet.protocolParameters$,
wallet.publicStakeKeys$,
Expand Down Expand Up @@ -82,6 +83,7 @@ const combineObservable = ({ wallet }: Wallet.CardanoWallet): Observable<Observa
delegationRewardsHistory,
eraSummaries,
genesisParameters,
isRegisteredAsDRep,
handles,
protocolParameters,
publicStakeKeys,
Expand Down Expand Up @@ -117,6 +119,9 @@ const combineObservable = ({ wallet }: Wallet.CardanoWallet): Observable<Observa
},
eraSummaries,
genesisParameters,
governance: {
isRegisteredAsDRep
},
handles,
protocolParameters,
publicStakeKeys,
Expand Down
@@ -1,4 +1,5 @@
import { runtime } from 'webextension-polyfill';
import { AllowedOrigins } from './types';

// Communicate from background script to popup
let port = runtime.connect({ name: 'trezor-connect' });
Expand All @@ -12,6 +13,7 @@ port.onDisconnect.addListener(() => {

// communicate from popup to background script
window.addEventListener('message', (event) => {
if (event.origin !== AllowedOrigins.TREZOR_CONNECT) throw new Error('Origin not allowed');
if (port && event.source === window && event.data) {
port.postMessage({ data: event.data });
}
Expand Down
@@ -1,8 +1,5 @@
import { runtime, tabs } from 'webextension-polyfill';

// Handling messages from usb permissions iframe

const url = 'https://connect.trezor.io/8/';
import { AllowedOrigins } from './types';

/* Handling messages from usb permissions iframe */
const switchToPopupTab = async (event?: BeforeUnloadEvent) => {
Expand All @@ -21,13 +18,15 @@ const switchToPopupTab = async (event?: BeforeUnloadEvent) => {

// find tab by popup pattern and switch to it
const currentTabs = await tabs.query({
url: `${url}popup.html`
url: `${AllowedOrigins.TREZOR_CONNECT_POPUP_BASE_URL}/popup.html`
});
if (currentTabs.length < 0) return;
tabs.update(currentTabs[0].id, { active: true });
};

window.addEventListener('message', async (event) => {
if (event.origin !== AllowedOrigins.TREZOR_CONNECT) throw new Error('Origin not allowed');

if (event.data === 'usb-permissions-init') {
const iframe = document.querySelector('#trezor-usb-permissions');
if (!iframe || !(iframe instanceof HTMLIFrameElement)) {
Expand Down Expand Up @@ -55,7 +54,7 @@ window.addEventListener('load', () => {
instance.style.border = '0px';
instance.style.width = '100%';
instance.style.height = '100%';
instance.setAttribute('src', `${url}extension-permissions.html`);
instance.setAttribute('src', `${AllowedOrigins.TREZOR_CONNECT_POPUP_BASE_URL}/extension-permissions.html`);
instance.setAttribute('allow', 'usb');

if (document.body) {
Expand Down
4 changes: 4 additions & 0 deletions apps/browser-extension-wallet/src/lib/scripts/trezor/types.ts
@@ -0,0 +1,4 @@
export enum AllowedOrigins {
TREZOR_CONNECT = 'https://connect.trezor.io',
TREZOR_CONNECT_POPUP_BASE_URL = 'https://connect.trezor.io/8'
}
10 changes: 5 additions & 5 deletions packages/cardano/package.json
Expand Up @@ -38,15 +38,15 @@
"watch": "yarn build --watch"
},
"dependencies": {
"@cardano-sdk/cardano-services-client": "0.18.0",
"@cardano-sdk/cardano-services-client": "0.19.0",
"@cardano-sdk/core": "0.30.0",
"@cardano-sdk/crypto": "0.1.22",
"@cardano-sdk/hardware-ledger": "0.9.0",
"@cardano-sdk/hardware-trezor": "0.4.19",
"@cardano-sdk/hardware-ledger": "0.9.1",
"@cardano-sdk/hardware-trezor": "0.4.20",
"@cardano-sdk/key-management": "0.20.1",
"@cardano-sdk/util": "0.15.0",
"@cardano-sdk/wallet": "0.36.0",
"@cardano-sdk/web-extension": "0.26.2",
"@cardano-sdk/wallet": "0.37.0",
"@cardano-sdk/web-extension": "0.27.0",
"@lace/common": "0.1.0",
"@ledgerhq/devices": "^8.2.1",
"@stablelib/chacha20poly1305": "1.0.1",
Expand Down
2 changes: 1 addition & 1 deletion packages/common/src/ui/components/Loader/Loader.tsx
Expand Up @@ -8,5 +8,5 @@ export interface LoaderProps {
}

export const Loader = ({ className }: LoaderProps): React.ReactElement => (
<img src={LoaderIcon} className={cn(styles.loader, { [className]: className })} />
<img src={LoaderIcon} className={cn(styles.loader, { [className]: className })} data-testid="loader-image" />
);
2 changes: 1 addition & 1 deletion packages/core/package.json
Expand Up @@ -45,7 +45,7 @@
"@lace/icons": "0.1.0",
"@lace/ui": "^0.1.0",
"antd": "^4.24.10",
"axios": "0.21.4",
"axios": "0.28.0",
"axios-cache-adapter": "2.7.3",
"classnames": "^2.3.1",
"debounce-promise": "^3.1.2",
Expand Down
Expand Up @@ -36,7 +36,12 @@ export const WalletSetupConnectHardwareWalletStepRevamp = ({
)}
{state === 'error' && (
<>
<img src={ExclamationCircleIcon} className={styles.errorImage} alt="hardware wallet connection error image" />
<img
src={ExclamationCircleIcon}
className={styles.errorImage}
alt="hardware wallet connection error image"
data-testid="error-image"
/>
<Banner message={translations.errorMessage} />
</>
)}
Expand Down
Expand Up @@ -8,6 +8,10 @@ import { StakePoolListItem } from '../../elements/multidelegation/StakePoolListI
import Tooltip from '../../elements/Tooltip';
import testContext from '../../utils/testContext';
import { StakePoolGridCard } from '../../elements/multidelegation/StakePoolGridCard';
import { StakePoolListColumnName } from '../../types/staking';
import { SortingOrder } from '../../types/sortingOrder';
import { mapColumnNameStringToEnum, sortColumnContent } from '../../utils/stakePoolListContent';
import { StakePoolListColumn } from '../../enums/StakePoolListColumn';

class MultidelegationPageAssert {
assertSeeStakingOnPoolsCounter = async (poolsCount: number) => {
Expand Down Expand Up @@ -188,36 +192,37 @@ class MultidelegationPageAssert {
expect(await firstStakePool.ticker.getText()).to.equal(expectedTicker);
};

assertSeeTooltipForColumn = async (columnName: string) => {
assertSeeTooltipForColumn = async (column: StakePoolListColumn) => {
await MultidelegationPage.tooltip.waitForStable();
await MultidelegationPage.tooltip.waitForDisplayed();
let expectedTooltipText;
switch (columnName) {
case 'Ticker':
switch (column) {
case StakePoolListColumn.Ticker:
expectedTooltipText = await t('browsePools.tooltips.ticker', 'staking');
break;
case 'Saturation':
case StakePoolListColumn.Saturation:
expectedTooltipText = await t('browsePools.tooltips.saturation', 'staking');
break;
case 'ROS':
case StakePoolListColumn.ROS:
expectedTooltipText = await t('browsePools.tooltips.ros', 'staking');
break;
case 'Cost':
case StakePoolListColumn.Cost:
expectedTooltipText = await t('browsePools.tooltips.cost', 'staking');
break;
case 'Margin':
case StakePoolListColumn.Margin:
expectedTooltipText = await t('browsePools.tooltips.margin', 'staking');
break;
case 'Blocks':
case StakePoolListColumn.Blocks:
expectedTooltipText = await t('browsePools.tooltips.blocks', 'staking');
break;
case 'Pledge':
case StakePoolListColumn.Pledge:
expectedTooltipText = await t('browsePools.tooltips.pledge', 'staking');
break;
case 'Live Stake':
case StakePoolListColumn.LiveStake:
expectedTooltipText = await t('browsePools.tooltips.liveStake', 'staking');
break;
default:
throw new Error(`Unsupported column name: ${columnName}`);
throw new Error(`Unsupported column name: ${column}`);
}
expect(await MultidelegationPage.tooltip.getText()).to.equal(expectedTooltipText);
};
Expand Down Expand Up @@ -300,6 +305,39 @@ class MultidelegationPageAssert {
const cardsInARow = Math.floor(rowWidth / cardWidth);
expect(cardsInARow).to.equal(expectedCardsCount);
};

assertSeeColumnSortingIndicator = async (column: StakePoolListColumnName, order: 'ascending' | 'descending') => {
await (
await MultidelegationPage.getColumnSortingIndicator(mapColumnNameStringToEnum(column), order)
).waitForDisplayed();
};

assertSeeStakePoolsSorted = async (
stakePoolsDisplayType: 'list rows' | 'cards',
sortingOption: StakePoolListColumnName,
order: SortingOrder,
poolLimit?: number
) => {
await MultidelegationPage.waitForPoolsCounterToBeGreaterThanZero();
poolLimit ??= await MultidelegationPage.getNumberOfPoolsFromCounter();
if (stakePoolsDisplayType === 'cards') {
// TODO: add code to handle grid cards - LW-10284
throw new Error('Please add validation for grid cards sorting');
} else {
const columnContent = await MultidelegationPage.extractColumnContent(
mapColumnNameStringToEnum(sortingOption),
poolLimit
);
const sortedColumnContent = await sortColumnContent(
columnContent,
mapColumnNameStringToEnum(sortingOption),
order
);

expect(columnContent).to.not.be.empty;
expect(columnContent).to.deep.equal(sortedColumnContent);
}
};
}

export default new MultidelegationPageAssert();
@@ -0,0 +1,42 @@
import ConnectYourDevicePage from '../../elements/onboarding/ConnectYourDevicePage';
import { t } from '../../utils/translationService';
import { expect } from 'chai';
import OnboardingCommonAssert from './onboardingCommonAssert';

class ConnectYourDevicePageAssert extends OnboardingCommonAssert {
async assertSeeConnectYourDevicePage() {
await this.assertSeeStepTitle(await t('core.walletSetupConnectHardwareWalletStepRevamp.title'));
// TODO: replace subtitle assertions when USE_TREZOR_HW=true
// await this.assertSeeStepSubtitle(await t('core.walletSetupConnectHardwareWalletStepRevamp.subTitle'));
await this.assertSeeStepSubtitle(await t('core.walletSetupConnectHardwareWalletStepRevamp.subTitleLedgerOnly'));

await ConnectYourDevicePage.loader.waitForDisplayed();

await this.assertSeeBackButton();
await this.assertSeeTryAgainButton(false);

await this.assertSeeLegalLinks();
await this.assertSeeHelpAndSupportButton();
}

async assertSeeError(expectedErrorMessage: string) {
await ConnectYourDevicePage.errorImage.waitForDisplayed();
await ConnectYourDevicePage.banner.container.waitForDisplayed();
expect(await ConnectYourDevicePage.banner.description.getText()).to.equal(expectedErrorMessage);
}

async assertSeeTryAgainButton(shouldBeVisible: boolean) {
await ConnectYourDevicePage.tryAgainButton.waitForDisplayed({ reverse: !shouldBeVisible });
if (shouldBeVisible) {
expect(await ConnectYourDevicePage.tryAgainButton.getText()).to.equal(
await t('core.walletSetupConnectHardwareWalletStepRevamp.errorCta')
);
}
}

async assertSeeTryAgainButtonEnabled(shouldBeEnabled: boolean) {
await ConnectYourDevicePage.tryAgainButton.waitForEnabled({ reverse: !shouldBeEnabled });
}
}

export default new ConnectYourDevicePageAssert();

This file was deleted.

0 comments on commit bc14a1b

Please sign in to comment.