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

Epic Seedless-onboarding #2534

Merged
merged 61 commits into from
Nov 9, 2023
Merged
Show file tree
Hide file tree
Changes from 59 commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
b3f3f9c
feat: Implement social login with MPC Core SDK
schmanu Sep 21, 2023
65dd3a4
test: mpc onboard module
schmanu Sep 21, 2023
19c4477
[Seedless-onboarding] - tests for useMPC hook (#2536)
schmanu Sep 22, 2023
387b156
fix: update mpc core sdk to 1.0.2
schmanu Sep 25, 2023
dbd1cc1
feat: MFA through password / device factors(#2559)
schmanu Oct 5, 2023
0989c9c
Merge remote-tracking branch 'origin/dev' into web3authcoresdk
schmanu Oct 5, 2023
cf8db3f
feat: redesign welcome page (#2593)
schmanu Oct 6, 2023
1a161da
feat: add sidebar design to welcome page (#2601)
schmanu Oct 6, 2023
e682af6
fix: layout without added Safes
schmanu Oct 9, 2023
5ab369e
feat: enable manualSync, commit MFA changes in batches (#2600)
schmanu Oct 9, 2023
6db3390
fix: Show safe list button on welcome page if there are owned safes (…
usame-algan Oct 10, 2023
cc7398b
[Seedless Onboarding] Account center redesign (#2607)
usame-algan Oct 11, 2023
daf6bdb
fix: Enable 1-click safe create for social login (#2620)
usame-algan Oct 12, 2023
92147fc
Merge remote-tracking branch 'origin/dev' into web3authcoresdk
schmanu Oct 17, 2023
3bec181
tests: apply transformIgnorePatterns after nextJest
schmanu Oct 17, 2023
5d1939d
Merge remote-tracking branch 'origin/dev' into web3authcoresdk
usame-algan Oct 17, 2023
dcc5ad4
fix: Update yarn lock
usame-algan Oct 17, 2023
2747747
fix: Add social login feature toggle from config service (#2635)
usame-algan Oct 18, 2023
df74f4e
[Seedless-Onboarding] Add tracking (#2626)
schmanu Oct 18, 2023
1b153d4
[Seedless-Onboarding] export account (#2610)
schmanu Oct 20, 2023
0140ec0
[Seedless Onboarding]: Settings password form (#2644)
usame-algan Oct 23, 2023
8500cdf
[Seedless Onboarding]: Add password recovery modal design (#2653)
usame-algan Oct 23, 2023
f31099b
[Seedless-Onboarding] Add signer account to address book on login (#2…
schmanu Oct 23, 2023
5d05596
fix: Address design review, restructure components (#2683)
usame-algan Oct 23, 2023
3352841
[Seedless Onboarding] Adjust Account center design (#2673)
usame-algan Oct 25, 2023
0f2ba8b
fix: Disable network selector if social login wallet not supported (#…
usame-algan Oct 25, 2023
748b145
[Seedless Onboarding]: Adjust password form (#2692)
usame-algan Oct 26, 2023
672523f
fix: Safe creation e2e test for seedless onboarding (#2694)
usame-algan Oct 27, 2023
0666620
Merge remote-tracking branch 'origin/dev' into web3authcoresdk
schmanu Oct 27, 2023
abdc544
[Seedless-Onboarding] Refactor context + provider into service class …
schmanu Oct 30, 2023
1049858
Merge remote-tracking branch 'origin/dev' into web3authcoresdk
schmanu Oct 30, 2023
351b360
fix: Catch errors during signing with social login (#2713)
usame-algan Oct 31, 2023
4d2a81a
[Seedless Onboarding] Only continue to safe creation if login succeed…
usame-algan Oct 31, 2023
95ba442
[Seedless Onboarding] Add alternative welcome page (#2704)
usame-algan Oct 31, 2023
0c47aee
chore: Revert permission changes
usame-algan Oct 31, 2023
915ef37
fix: disconnect previous wallet (#2712)
schmanu Oct 31, 2023
7093860
fix: ignore empty names in addressbook (#2709)
schmanu Oct 31, 2023
52366b3
feat: aggregate verifier config (#2724)
schmanu Nov 1, 2023
ec5b97c
Merge remote-tracking branch 'origin/dev' into web3authcoresdk
usame-algan Nov 1, 2023
f262276
[Seedless Onboarding] QA fixes (#2721)
usame-algan Nov 1, 2023
e681310
[Seedless-Onboarding] fix: login error handling (#2730)
schmanu Nov 2, 2023
78c60c2
feat: use mnemonic name for Social Safes (#2729)
schmanu Nov 2, 2023
842836f
Tests: Seedless cypress tests(normal flow) (#2726)
mike10ca Nov 2, 2023
c81b9fb
fix: Hide Security&Login from settings if not a social signer (#2734)
usame-algan Nov 2, 2023
53d95cd
refactor: environment config for social wallet (#2728)
schmanu Nov 3, 2023
13618c3
fix: Reload app when setting password (#2741)
usame-algan Nov 3, 2023
3d118f3
Fix: hide Social Login wallet button from onboard (#2740)
katspaugh Nov 3, 2023
f22a797
fix: Use github secrets for env
usame-algan Nov 3, 2023
146dc8e
Merge branch 'dev' into web3authcoresdk
katspaugh Nov 3, 2023
010faca
fix: Add social login option to onboard module (#2744)
usame-algan Nov 6, 2023
232674c
fix: Adjust connection center design (#2745)
usame-algan Nov 6, 2023
8e2d324
fix: merge serviceworkers for seedless onboarding (#2750)
schmanu Nov 7, 2023
ea3763b
fix: Add feature flag for social login (#2770)
usame-algan Nov 8, 2023
a299a33
chore: update mpc-core-kit (#2769)
schmanu Nov 8, 2023
4fbfa1b
fix: Add events for export pk (#2766)
usame-algan Nov 8, 2023
c3e0cb8
fix: Update welcome screen text (#2773)
usame-algan Nov 8, 2023
86800bd
fix: disable logs in prod (#2774)
schmanu Nov 8, 2023
7536b5a
chore: Bump version to v1.22.0
usame-algan Nov 8, 2023
5f8a7e8
Merge remote-tracking branch 'origin/dev' into web3authcoresdk
usame-algan Nov 8, 2023
f8aa390
Merge remote-tracking branch 'origin/dev' into web3authcoresdk
schmanu Nov 9, 2023
73c5c73
fix: link to welcome page in wc
schmanu Nov 9, 2023
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
7 changes: 6 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,9 @@ NEXT_PUBLIC_FIREBASE_OPTIONS_STAGING=
NEXT_PUBLIC_FIREBASE_VAPID_KEY_STAGING=

# Redefine
NEXT_PUBLIC_REDEFINE_API=
NEXT_PUBLIC_REDEFINE_API=

# Social Login
NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_STAGING=
NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_PRODUCTION=

2 changes: 2 additions & 0 deletions .github/workflows/build/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ runs:
NEXT_PUBLIC_SAFE_RELAY_SERVICE_URL_STAGING: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SAFE_GELATO_RELAY_SERVICE_URL_STAGING }}
NEXT_PUBLIC_IS_OFFICIAL_HOST: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_IS_OFFICIAL_HOST }}
NEXT_PUBLIC_REDEFINE_API: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_REDEFINE_API }}
NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_STAGING: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_STAGING }}
NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_PRODUCTION: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_SOCIAL_WALLET_OPTIONS_PRODUCTION }}
NEXT_PUBLIC_FIREBASE_OPTIONS_PRODUCTION: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_FIREBASE_OPTIONS_PRODUCTION }}
NEXT_PUBLIC_FIREBASE_OPTIONS_STAGING: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_FIREBASE_OPTIONS_STAGING }}
NEXT_PUBLIC_FIREBASE_VAPID_KEY_PRODUCTION: ${{ fromJSON(inputs.secrets).NEXT_PUBLIC_FIREBASE_VAPID_KEY_PRODUCTION }}
Expand Down
25 changes: 19 additions & 6 deletions cypress/e2e/pages/create_wallet.pages.js
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
import * as constants from '../../support/constants'

const welcomeLoginScreen = '[data-testid="welcome-login"]'
const expandMoreIcon = 'svg[data-testid="ExpandMoreIcon"]'
const nameInput = 'input[name="name"]'
const selectNetworkBtn = '[data-cy="create-safe-select-network"]'
const ownerInput = 'input[name^="owners"][name$="name"]'
const ownerAddress = 'input[name^="owners"][name$="address"]'
const thresholdInput = 'input[name="threshold"]'
export const removeOwnerBtn = 'button[aria-label="Remove owner"]'
const connectingContainer = 'div[class*="connecting-container"]'
const createNewSafeBtn = 'span[data-track="create-safe: Open stepper"]'
const createNewSafeBtn = 'span[data-track="create-safe: Continue to creation"]'
const connectWalletBtn = 'Connect wallet'

const changeNetworkWarningStr = 'Change your wallet network'
const safeAccountSetupStr = 'Safe Account setup'
const policy1_1 = '1/1 policy'
const policy1_2 = '1/1 policy'
export const walletName = 'test1-sepolia-safe'
export const defaltSepoliaPlaceholder = 'sepolia-safe'
export const defaltSepoliaPlaceholder = 'Sepolia Safe'

export function verifyPolicy1_1() {
cy.contains(policy1_1).should('exist')
cy.contains(policy1_2).should('exist')
// TOD: Need data-cy for containers
}

Expand Down Expand Up @@ -49,13 +52,23 @@ export function clickOnCreateNewSafeBtn() {
cy.get(createNewSafeBtn).click().wait(1000)
}

export function clickOnConnectWalletBtn() {
cy.get(welcomeLoginScreen).within(() => {
cy.get('button').contains(connectWalletBtn).should('be.visible').should('be.enabled').click().wait(1000)
})
}

export function typeWalletName(name) {
cy.get(nameInput).type(name).should('have.value', name)
}

export function clearWalletName() {
cy.get(nameInput).clear()
}

export function selectNetwork(network, regex = false) {
cy.wait(1000)
cy.get(selectNetworkBtn).should('be.visible').click()
cy.get(expandMoreIcon).eq(1).parents('div').eq(1).click()
cy.wait(1000)
cy.get('li').contains(network).click()
cy.get('body').click()
Expand Down Expand Up @@ -91,7 +104,7 @@ export function typeOwnerAddress(address, index, clearOnly = false) {
}

export function clickOnAddNewOwnerBtn() {
cy.contains('button', 'Add new owner').click()
cy.contains('button', 'Add new owner').click().wait(700)
}

export function addNewOwner(name, address, index) {
Expand Down
6 changes: 5 additions & 1 deletion cypress/e2e/pages/import_export.pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ export function clickOnImportBtn() {
}

export function clickOnImportBtnDataImportModal() {
cy.contains(dataImportModalStr).parent().contains('button', 'Import').click()
cy.contains('button', 'Import').click()
}

export function uploadFile(filePath) {
Expand All @@ -44,6 +44,10 @@ export function clickOnImportedSafe(safe) {
cy.contains(safe).click()
}

export function clickOnOpenSafeListSidebar() {
cy.contains('My Safe Accounts').click()
}

export function clickOnClosePushNotificationsBanner() {
cy.waitForSelector(() => {
return cy.get('h6').contains(enablePushNotificationsStr).siblings('.MuiButtonBase-root').click({ force: true })
Expand Down
4 changes: 2 additions & 2 deletions cypress/e2e/pages/load_safe.pages.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import * as constants from '../../support/constants'

const addExistingAccountBtnStr = 'Add existing Account'
const addExistingAccountBtnStr = 'Add existing one'
const contactStr = 'Name, address & network'
const invalidAddressFormatErrorMsg = 'Invalid address format'

Expand All @@ -16,7 +16,7 @@ const ownersConfirmationsStr = 'Owners and confirmations'
const transactionStr = 'Transactions'

export function openLoadSafeForm() {
cy.contains('button', addExistingAccountBtnStr).click()
cy.contains('a', addExistingAccountBtnStr).click()
cy.contains(contactStr)
}

Expand Down
7 changes: 4 additions & 3 deletions cypress/e2e/pages/owners.pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ const thresholdDropdown = 'div[aria-haspopup="listbox"]'
const thresholdOption = 'li[role="option"]'
const existingOwnerAddressInput = (index) => `input[name="owners.${index}.address"]`
const existingOwnerNameInput = (index) => `input[name="owners.${index}.name"]`
const singleOwnerNameInput = 'input[name="name"]'

const disconnectBtnStr = 'Disconnect'
const notConnectedStatus = 'Connect'
Expand Down Expand Up @@ -57,9 +58,9 @@ export function verifyExistingOwnerName(index, name) {
cy.get(existingOwnerNameInput(index)).should('have.value', name)
}

export function typeExistingOwnerName(index, name) {
cy.get(existingOwnerNameInput(index)).clear().type(name)
main.verifyInputValue(existingOwnerNameInput(index), name)
export function typeExistingOwnerName(name) {
cy.get(singleOwnerNameInput).clear().type(name)
main.verifyInputValue(singleOwnerNameInput, name)
}

export function verifyOwnerDeletionWindowDisplayed() {
Expand Down
42 changes: 28 additions & 14 deletions cypress/e2e/smoke/create_safe_simple.cy.js
Original file line number Diff line number Diff line change
@@ -1,29 +1,27 @@
import * as constants from '../../support/constants'
import * as main from '../../e2e/pages/main.page'
import * as createwallet from '../pages/create_wallet.pages'

import * as owner from '../pages/owners.pages'

describe('Safe creation tests', () => {
beforeEach(() => {
cy.visit(constants.createNewSafeSepoliaUrl)
cy.visit(constants.welcomeUrl + '?chain=sep')
cy.clearLocalStorage()
main.acceptCookies()
})

it('Verify a Wallet can be connected [C56101]', () => {
owner.waitForConnectionStatus()
cy.visit(constants.welcomeUrl)
createwallet.clickOnCreateNewSafeBtn()
owner.clickOnWalletExpandMoreIcon()
owner.clickOnDisconnectBtn()
createwallet.clickOnCreateNewSafeBtn()
owner.clickOnConnectBtn()
createwallet.clickOnConnectWalletBtn()
createwallet.connectWallet()
})

it('Verify Next button is disabled until switching to network is done [C56102]', () => {
owner.waitForConnectionStatus()
createwallet.selectNetwork(constants.networks.ethereum)
createwallet.clickOnCreateNewSafeBtn()
createwallet.checkNetworkChangeWarningMsg()
createwallet.verifyNextBtnIsDisabled()
createwallet.selectNetwork(constants.networks.sepolia)
Expand All @@ -32,43 +30,49 @@ describe('Safe creation tests', () => {

it('Verify that a new Wallet has default name related to the selected network [C56099]', () => {
owner.waitForConnectionStatus()
createwallet.clickOnCreateNewSafeBtn()
createwallet.verifyDefaultWalletName(createwallet.defaltSepoliaPlaceholder)
})

it('Verify error message is displayed if wallet name input exceeds 50 characters [C56098]', () => {
owner.waitForConnectionStatus()
createwallet.clickOnCreateNewSafeBtn()
createwallet.typeWalletName(main.generateRandomString(51))
owner.verifyErrorMsgInvalidAddress(constants.addressBookErrrMsg.exceedChars)
createwallet.clearWalletName()
})

it('Verify there is no error message is displayed if wallet name input contains less than 50 characters [C56100]', () => {
owner.waitForConnectionStatus()
createwallet.clickOnCreateNewSafeBtn()
createwallet.typeWalletName(main.generateRandomString(50))
owner.verifyValidWalletName(constants.addressBookErrrMsg.exceedChars)
})

it('Verify current connected account is shown as default owner [C56091]', () => {
owner.waitForConnectionStatus()
createwallet.clickOnCreateNewSafeBtn()
owner.clickOnNextBtn()
owner.verifyExistingOwnerAddress(0, constants.DEFAULT_OWNER_ADDRESS)
})

it('Verify error message is displayed if owner name input exceeds 50 characters [C56092]', () => {
owner.waitForConnectionStatus()
owner.clickOnNextBtn()
owner.typeExistingOwnerName(0, main.generateRandomString(51))
createwallet.clickOnCreateNewSafeBtn()
owner.typeExistingOwnerName(main.generateRandomString(51))
owner.verifyErrorMsgInvalidAddress(constants.addressBookErrrMsg.exceedChars)
})

it('Verify there is no error message is displayed if owner name input contains less than 50 characters [C56093]', () => {
owner.waitForConnectionStatus()
owner.clickOnNextBtn()
owner.typeExistingOwnerName(0, main.generateRandomString(50))
createwallet.clickOnCreateNewSafeBtn()
owner.typeExistingOwnerName(main.generateRandomString(50))
owner.verifyValidWalletName(constants.addressBookErrrMsg.exceedChars)
})

it('Verify Add and Remove Owner Row works as expected [C56094]', () => {
owner.waitForConnectionStatus()
createwallet.clickOnCreateNewSafeBtn()
owner.clickOnNextBtn()
createwallet.clickOnAddNewOwnerBtn()
owner.verifyNumberOfOwners(2)
Expand All @@ -82,26 +86,34 @@ describe('Safe creation tests', () => {

it('Verify Threshold Setup [C56096]', () => {
owner.waitForConnectionStatus()
createwallet.clickOnCreateNewSafeBtn()
owner.clickOnNextBtn()
createwallet.clickOnAddNewOwnerBtn()
owner.verifyNumberOfOwners(2)
createwallet.clickOnAddNewOwnerBtn()
owner.verifyNumberOfOwners(3)
owner.verifyThresholdLimit(1, 3)
createwallet.clickOnAddNewOwnerBtn()
owner.verifyNumberOfOwners(4)
owner.verifyThresholdLimit(1, 4)
createwallet.updateThreshold(3)
createwallet.removeOwner(1)
owner.verifyThresholdLimit(1, 3)
createwallet.removeOwner(1)
owner.verifyThresholdLimit(1, 2)
createwallet.updateThreshold(1)
})

it('Verify data persistence [C56103]', () => {
const ownerName = 'David'
owner.waitForConnectionStatus()
createwallet.typeWalletName(createwallet.walletName)
createwallet.clickOnCreateNewSafeBtn()
owner.clickOnNextBtn()
createwallet.clickOnAddNewOwnerBtn()
createwallet.typeOwnerName(ownerName, 1)
createwallet.typeOwnerAddress(constants.SEPOLIA_OWNER_2, 1)
owner.verifyThresholdLimit(1, 2)
owner.clickOnBackBtn()
createwallet.clearWalletName()
createwallet.typeWalletName(createwallet.walletName)
owner.clickOnNextBtn()
owner.clickOnNextBtn()
createwallet.verifySafeNameInSummaryStep(createwallet.walletName)
createwallet.verifyOwnerNameInSummaryStep(ownerName)
Expand All @@ -125,12 +137,14 @@ describe('Safe creation tests', () => {

it('Verify tip is displayed on right side for threshold 1/1 [C56097]', () => {
owner.waitForConnectionStatus()
createwallet.clickOnCreateNewSafeBtn()
owner.clickOnNextBtn()
createwallet.verifyPolicy1_1()
})

it('Verify address input validation rules [C56095]', () => {
owner.waitForConnectionStatus()
createwallet.clickOnCreateNewSafeBtn()
owner.clickOnNextBtn()
createwallet.clickOnAddNewOwnerBtn()
createwallet.typeOwnerAddress(main.generateRandomString(10), 1)
Expand Down
6 changes: 3 additions & 3 deletions cypress/e2e/smoke/import_export_data.cy.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@ import * as constants from '../../support/constants'
describe('Import Export Data tests', () => {
before(() => {
cy.clearLocalStorage()
cy.visit(constants.welcomeUrl)
cy.visit(constants.dataSettingsUrl)
main.acceptCookies()
file.verifyImportBtnIsVisible()
})

it('Verify Safe can be accessed after test file upload [C56111]', () => {
const filePath = '../fixtures/data_import.json'
const safe = constants.SEPOLIA_CSV_ENTRY.name

file.clickOnImportBtn()
file.uploadFile(filePath)
file.verifyImportModalData()
file.clickOnImportBtnDataImportModal()
cy.visit(constants.welcomeUrl)
file.clickOnOpenSafeListSidebar()
file.clickOnImportedSafe(safe)
file.clickOnClosePushNotificationsBanner()
})
Expand Down
1 change: 1 addition & 0 deletions cypress/support/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ export const requestPermissionsUrl = '/request-permissions'
export const getPermissionsUrl = '/get-permissions'
export const appSettingsUrl = '/settings/safe-apps'
export const setupUrl = '/settings/setup?safe='
export const dataSettingsUrl = '/settings/data'
export const invalidAppUrl = 'https://my-invalid-custom-app.com/manifest.json'
export const validAppUrlJson = 'https://my-valid-custom-app.com/manifest.json'
export const validAppUrl = 'https://my-valid-custom-app.com'
Expand Down
4 changes: 2 additions & 2 deletions jest.config.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ const createJestConfig = nextJest({
// Add any custom config to be passed to Jest
const customJestConfig = {
setupFilesAfterEnv: ['<rootDir>/jest.setup.js'],

moduleNameMapper: {
// Handle module aliases (this will be automatically configured for you soon)
'^@/(.*)$': '<rootDir>/src/$1',
'^.+\\.(svg)$': '<rootDir>/mocks/svg.js',
isows: '<rootDir>/node_modules/isows/_cjs/index.js',
},
transformIgnorePatterns: ['node_modules/(?!isows/)'],
testEnvironment: 'jest-environment-jsdom',
testEnvironmentOptions: { url: 'http://localhost/balances?safe=rin:0xb3b83bf204C458B461de9B0CD2739DB152b4fa5A' },
globals: {
Expand All @@ -25,5 +25,5 @@ const customJestConfig = {
// createJestConfig is exported this way to ensure that next/jest can load the Next.js config which is async
module.exports = async () => ({
...(await createJestConfig(customJestConfig)()),
transformIgnorePatterns: ['node_modules/(?!(uint8arrays|multiformats)/)'],
transformIgnorePatterns: ['node_modules/(?!(uint8arrays|multiformats|@web3-onboard/common)/)'],
})
2 changes: 1 addition & 1 deletion next.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ const nextConfig = {
dirs: ['src'],
},
experimental: {
optimizePackageImports: ['@mui/material', '@mui/icons-material', 'lodash', 'date-fns']
optimizePackageImports: ['@mui/material', '@mui/icons-material', 'lodash', 'date-fns'],
},
webpack(config) {
config.module.rules.push({
Expand Down
5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"homepage": "https://github.com/safe-global/safe-wallet-web",
"license": "GPL-3.0",
"type": "module",
"version": "1.21.0",
"version": "1.22.0",
"scripts": {
"dev": "next dev",
"start": "next dev",
Expand Down Expand Up @@ -56,6 +56,7 @@
"@safe-global/safe-react-components": "^2.0.6",
"@sentry/react": "^7.74.0",
"@sentry/tracing": "^7.74.0",
"@tkey-mpc/common-types": "^8.2.2",
"@truffle/hdwallet-provider": "^2.1.4",
"@walletconnect/utils": "^2.10.2",
"@walletconnect/web3wallet": "^1.9.2",
Expand All @@ -66,7 +67,9 @@
"@web3-onboard/ledger": "2.3.2",
"@web3-onboard/trezor": "^2.4.2",
"@web3-onboard/walletconnect": "^2.4.7",
"@web3auth/mpc-core-kit": "^1.1.3",
"blo": "^1.1.1",
"bn.js": "^5.2.1",
"classnames": "^2.3.1",
"date-fns": "^2.29.2",
"ethers": "5.7.2",
Expand Down
5 changes: 5 additions & 0 deletions public/images/common/bar-chart.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions public/images/common/check-filled.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions public/images/common/lock-small.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions public/images/common/lock-warning.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading