Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TW-1630 Apply new design for Tezos transfers and EVM unknown operations #1247

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
2bea1de
TW-1498 Implement connection to EVM dApps (raw version)
keshan3262 Nov 28, 2024
104d05e
TW-1498 Fix connection to dApps
keshan3262 Nov 29, 2024
24c6214
TW-1498 Fix signing
keshan3262 Dec 2, 2024
4bc19f8
TW-1498 Change UI for connection page
keshan3262 Dec 4, 2024
b3fb426
TW-1498 Add UI for signing EVM messages and data
keshan3262 Dec 5, 2024
2c63b26
TW-1498 Display active EVM connection on extension home page
keshan3262 Dec 5, 2024
5f3844e
TW-1498 Resolve merge conflicts
keshan3262 Dec 6, 2024
850c8ea
TW-1498 Display EVM DApps in settings
keshan3262 Dec 6, 2024
aca9cc4
TW-1498 Fix types errors
keshan3262 Dec 6, 2024
5d7a1a4
TW-1498 Fix behavior after a network that has a connection is disabled
keshan3262 Dec 6, 2024
de67fa9
TW-1498 Some refactoring
keshan3262 Dec 6, 2024
b7b4213
TW-1498 Fix 'Testnet mode' label
keshan3262 Dec 6, 2024
fec918f
TW-1498 Move EVM RPC requests to the background
keshan3262 Dec 9, 2024
a1f04fb
TW-1498 Resolve merge conflicts
keshan3262 Dec 9, 2024
e2262ba
TW-1498 Minor refactoring
keshan3262 Dec 9, 2024
904a6e0
TW-1498 Refactoring according to comments
keshan3262 Dec 13, 2024
634597d
TW-1498 Unhardcode 'All Networks' label
keshan3262 Dec 13, 2024
3c47d1b
Merge branch 'development-2' of https://github.com/madfish-solutions/…
keshan3262 Dec 16, 2024
74dd931
TW-1498 Fix connectivity for Firefox
keshan3262 Dec 16, 2024
490e863
TW-1600 Draft commit
keshan3262 Dec 17, 2024
3f812be
TW-1498 UI fixes
keshan3262 Dec 19, 2024
d155d1f
Merge branch 'TW-1498-evm-connect-wallet-to-dapps' of https://github.…
keshan3262 Dec 19, 2024
5dbca74
TW-1498 Fix requests freezing
keshan3262 Dec 19, 2024
d83d5a7
TW-1498 Remove an unused export
keshan3262 Dec 19, 2024
c0ca4b9
TW-1600 Resolve merge conflicts
keshan3262 Dec 19, 2024
8bb2ce2
TW-1600 Resolve merge conflicts
keshan3262 Dec 26, 2024
3e3a20c
TW-1600 Implement sending EVM transactions (raw version)
keshan3262 Dec 30, 2024
f6f8065
TW-1630 Resolve merge conflicts
keshan3262 Dec 30, 2024
45af51c
TW-1630 Major bugfixes for EVM transactions
keshan3262 Jan 6, 2025
7cdfabb
TW-1630 Update design for Tezos operations confirmation (raw version)
keshan3262 Jan 16, 2025
7497a90
TW-1630 Resolve merge conflicts
keshan3262 Jan 16, 2025
db1a343
TW-1630 Fix Tezos operations
keshan3262 Jan 20, 2025
1eff8c0
TW-1630 Implement estimating Tezos operations output
keshan3262 Jan 22, 2025
6d9bfb7
TW-1630 Implement output estimation for EVM
keshan3262 Jan 24, 2025
0aa782a
TW-1630 Add tests for balances changes estimations + fix some bugs
keshan3262 Jan 28, 2025
23e09e5
TW-1630 Implement trying to send an EVM transaction if estimation fails
keshan3262 Jan 29, 2025
7cdaeb7
TW-1630 Implement trying to send a Tezos transaction if estimation fails
keshan3262 Jan 29, 2025
736e3a8
TW-1630 Fix the pipeline
keshan3262 Jan 29, 2025
7decaca
TW-1630 Minor refactoring
keshan3262 Jan 29, 2025
df2b9b6
TW-1630 Fix some bugs
keshan3262 Jan 29, 2025
5587fad
Merge branch 'development-2' of https://github.com/madfish-solutions/…
keshan3262 Jan 30, 2025
9724156
TW-1630 Add an acronym for "Unknown token"
keshan3262 Jan 31, 2025
e01940f
Merge branch 'development-2' of https://github.com/madfish-solutions/…
keshan3262 Feb 3, 2025
d93899a
TW-1630 Refactoring according to comments
keshan3262 Feb 3, 2025
163ad3b
TW-1630 Refactoring according to comments
keshan3262 Feb 4, 2025
1d9e457
TW-1630 Resolve merge conflicts
keshan3262 Feb 4, 2025
da33065
Apply suggestions from code review
keshan3262 Feb 4, 2025
697ccf7
TW-1630 Fix signing payload when 'password' is null
keshan3262 Feb 6, 2025
015108e
TW-1630 Fix the look of 'Transaction info' section
keshan3262 Feb 6, 2025
f97fe37
TW-1630 Resolve merge conflicts
keshan3262 Feb 12, 2025
adf7054
TW-1630 Remove some dead code
keshan3262 Feb 12, 2025
d900f48
TW-1630 Remove an irrelevant comment
keshan3262 Feb 12, 2025
8f0d3ff
Merge branch 'development-2' of https://github.com/madfish-solutions/…
keshan3262 Feb 17, 2025
95edfc1
TW-1630 Refactoring according to the last comment
keshan3262 Feb 17, 2025
1db73b5
TW-1630 Upgrade 'elliptic' module
keshan3262 Feb 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@
"@taquito/contracts-library": "20.1.0",
"@taquito/tzip16": "20.1.0",
"bignumber.js": "9.1.2",
"elliptic": "6.6.1",
"graphql-request": "^6.1.0",
"json5": "^2.2.2",
"follow-redirects": "^1.15.4"
Expand Down
30 changes: 30 additions & 0 deletions public/_locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -1656,6 +1656,15 @@
"transaction": {
"message": "Transaction"
},
"transactionInfo": {
"message": "Transaction info"
},
"estimatedTxDetails": {
"message": "Est. transaction details"
},
"noValue": {
"message": "No value"
},
"recipient": {
"message": "Recipient"
},
Expand Down Expand Up @@ -1904,6 +1913,12 @@
"transfers": {
"message": "Transfers"
},
"unknownToken": {
"message": "Unknown Token"
},
"unknownTokenAcronym": {
"message": "UT"
},
"someUnknownToken": {
"message": "unknown token $token$",
"placeholders": {
Expand Down Expand Up @@ -3929,10 +3944,25 @@
"disabledInTestnetMode": {
"message": "Disabled in Testnet Mode"
},
"unknownTransaction": {
"message": "Unknown Transaction"
},
"interactionWith": {
"message": "Interaction With"
},
"earn": {
"message": "Earn"
},
"marketPageDisclaimer": {
"message": "Temple integrated third-party solutions to buy or exchange crypto."
},
"txCouldNotBeEstimated": {
"message": "Transaction could not be estimated"
},
"txCouldNotBeEstimatedDescription": {
"message": "Fee estimation isn't available. Default values are used, but the transaction may fail. Please retry or adjust transaction parameters manually."
},
"genericTxError": {
"message": "Something’s not right. Please review a message."
}
}
54 changes: 27 additions & 27 deletions src/app/ConfirmPage/add-asset/context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,34 +20,34 @@ export const [AddAssetProvider, useAddAsset] = constate(() => {

const handleConfirm = useCallback(
async (id: string, confirmed: boolean, dAppAssetMetadata: EvmAssetToAddMetadata) => {
if (confirmed) {
if (assetMetadata && accountPkh) {
const assetSlug = toTokenSlug(assetMetadata.address);

dispatch(
putNewEvmTokenAction({
publicKeyHash: accountPkh,
chainId: dAppAssetMetadata.chainId,
assetSlug
})
);

dispatch(
putEvmTokensMetadataAction({
chainId: dAppAssetMetadata.chainId,
records: { [assetSlug]: assetMetadata }
})
);

// ensuring the last changes to the store will be persisted before window closes
await persistor.flush();

confirmDAppEvmAssetAdding(id, confirmed);
} else {
setErrorMessage('Something’s not right. Please try again later.');
}
} else {
if (!confirmed) {
return void confirmDAppEvmAssetAdding(id, confirmed);
}

if (assetMetadata && accountPkh) {
const assetSlug = toTokenSlug(assetMetadata.address);

dispatch(
putNewEvmTokenAction({
publicKeyHash: accountPkh,
chainId: dAppAssetMetadata.chainId,
assetSlug
})
);

dispatch(
putEvmTokensMetadataAction({
chainId: dAppAssetMetadata.chainId,
records: { [assetSlug]: assetMetadata }
})
);

// ensuring the last changes to the store will be persisted before window closes
await persistor.flush();

confirmDAppEvmAssetAdding(id, confirmed);
} else {
setErrorMessage('Something’s not right. Please try again later.');
}
},
[accountPkh, assetMetadata, confirmDAppEvmAssetAdding]
Expand Down
65 changes: 47 additions & 18 deletions src/app/ConfirmPage/confirm-dapp-form.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,17 +20,28 @@ import { StoredAccount, TempleAccountType, TempleDAppPayload } from 'lib/temple/
import { useBooleanState, useSafeState } from 'lib/ui/hooks';
import { delay } from 'lib/utils';
import { useCurrentAccountId } from 'temple/front';
import { TempleChainKind } from 'temple/types';

import { useAddAsset } from './add-asset/context';
import { ConfirmPageSelectors } from './selectors';

export interface ConfirmDAppFormContentProps {
selectedAccount: StoredAccount;
error: any;
formId: string;
openAccountsModal: EmptyFn;
onSubmit: EmptyFn;
}

interface ConfirmDAppFormProps {
accounts: StoredAccount[];
payload: TempleDAppPayload;
onConfirm: (confirmed: boolean, selectedAccount: StoredAccount) => Promise<void>;
children: (openAccountsModal: EmptyFn, selectedAccount: StoredAccount) => ReactNode | ReactNode[];
children: (props: ConfirmDAppFormContentProps) => ReactNode | ReactNode[];
}

const CONFIRM_OPERATIONS_FORM_ID = 'confirm-operations-form';

export const ConfirmDAppForm = memo<ConfirmDAppFormProps>(({ accounts, payload, onConfirm, children }) => {
const [accountsModalIsOpen, openAccountsModal, closeAccountsModal] = useBooleanState(false);
const [bottomEdgeIsVisible, setBottomEdgeIsVisible] = useState(true);
Expand Down Expand Up @@ -79,16 +90,16 @@ export const ConfirmDAppForm = memo<ConfirmDAppFormProps>(({ accounts, payload,

setIsConfirming(true);
await confirm(true);
setIsDeclining(false);
}, [confirm, isConfirming, isDeclining, setIsConfirming, setIsDeclining]);
setIsConfirming(false);
}, [confirm, isConfirming, isDeclining, setIsConfirming]);

const handleDeclineClick = useCallback(async () => {
if (isConfirming || isDeclining) return;

setIsConfirming(true);
setIsDeclining(true);
await confirm(false);
setIsDeclining(false);
}, [confirm, isConfirming, isDeclining, setIsConfirming, setIsDeclining]);
}, [confirm, isConfirming, isDeclining, setIsDeclining]);

const handleErrorAlertClose = useCallback(() => setError(null), [setError]);

Expand All @@ -103,6 +114,15 @@ export const ConfirmDAppForm = memo<ConfirmDAppFormProps>(({ accounts, payload,
: ConfirmPageSelectors.ConnectAction_ConnectButton,
declineTestID: ConfirmPageSelectors.ConnectAction_CancelButton
};
case 'sign_typed':
case 'personal_sign':
case 'sign':
return {
title: <T id="signatureRequest" />,
confirmButtonName: <T id="signAction" />,
confirmTestID: ConfirmPageSelectors.SignAction_SignButton,
declineTestID: ConfirmPageSelectors.SignAction_RejectButton
};
case 'add_asset':
return {
title: <T id="addToken" />,
Expand All @@ -122,24 +142,25 @@ export const ConfirmDAppForm = memo<ConfirmDAppFormProps>(({ accounts, payload,
: ConfirmPageSelectors.ConfirmOperationsAction_ConfirmButton,
declineTestID: ConfirmPageSelectors.ConfirmOperationsAction_RejectButton
};
case 'confirm_operations':
default:
// TODO: add other variants of title using ABIs and payload data
return {
title: <T id="confirmAction" substitutions={<T id="operations" />} />,
title:
payload.chainType === TempleChainKind.EVM ? (
<T id="unknownTransaction" />
) : (
<T id="confirmAction" substitutions={<T id="transfer" />} />
),
confirmButtonName: <T id={error ? 'retry' : 'confirm'} />,
confirmTestID: error
? ConfirmPageSelectors.ConfirmOperationsAction_RetryButton
: ConfirmPageSelectors.ConfirmOperationsAction_ConfirmButton,
declineTestID: ConfirmPageSelectors.ConfirmOperationsAction_RejectButton
};
default:
return {
title: <T id="signatureRequest" />,
confirmButtonName: <T id="signAction" />,
confirmTestID: ConfirmPageSelectors.SignAction_SignButton,
declineTestID: ConfirmPageSelectors.SignAction_RejectButton
};
}
}, [addAssetErrorMessage, error, payload.type]);
}, [payload.type, payload.chainType, error, addAssetErrorMessage]);

const isOperationsConfirm = payload.type === 'confirm_operations';

return (
<PageModal
Expand Down Expand Up @@ -190,7 +211,7 @@ export const ConfirmDAppForm = memo<ConfirmDAppFormProps>(({ accounts, payload,
</div>
)}

{error && (
{error && !isOperationsConfirm && (
<Alert
closable
onClose={handleErrorAlertClose}
Expand All @@ -201,7 +222,13 @@ export const ConfirmDAppForm = memo<ConfirmDAppFormProps>(({ accounts, payload,
/>
)}

{children(openAccountsModal, selectedAccount)}
{children({
openAccountsModal,
selectedAccount,
formId: CONFIRM_OPERATIONS_FORM_ID,
onSubmit: handleConfirmClick,
error
})}
</ScrollView>

<ActionsButtonsBox shouldCastShadow={!bottomEdgeIsVisible} flexDirection="row">
Expand All @@ -222,7 +249,9 @@ export const ConfirmDAppForm = memo<ConfirmDAppFormProps>(({ accounts, payload,
className="w-full"
loading={isConfirming}
testID={confirmTestID}
onClick={handleConfirmClick}
type={isOperationsConfirm ? 'submit' : 'button'}
onClick={isOperationsConfirm ? undefined : handleConfirmClick}
form={isOperationsConfirm ? CONFIRM_OPERATIONS_FORM_ID : undefined}
disabled={confirmDisabled}
>
{confirmButtonName}
Expand Down
33 changes: 0 additions & 33 deletions src/app/ConfirmPage/connect-view.tsx

This file was deleted.

Loading
Loading