diff --git a/.github/workflows/build_and_test.yml b/.github/workflows/build_and_test.yml index 2f1e656..01517f7 100644 --- a/.github/workflows/build_and_test.yml +++ b/.github/workflows/build_and_test.yml @@ -22,7 +22,7 @@ jobs: node-version-file: '.nvmrc' cache: 'yarn' - - run: yarn install --frozen-lockfile + - run: yarn install --frozen-lockfile --ignore-engines - run: yarn ${{ matrix.step }} deploy-to-github: @@ -40,7 +40,7 @@ jobs: - name: Install and Build 🔧 run: | - yarn install --frozen-lockfile + yarn install --frozen-lockfile --ignore-engines yarn build env: # FOR BUILD diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml index ff21076..ee87271 100644 --- a/.github/workflows/pr.yml +++ b/.github/workflows/pr.yml @@ -13,7 +13,7 @@ jobs: ] steps: - uses: actions/checkout@v3 - - run: yarn install --frozen-lockfile + - run: yarn install --frozen-lockfile --ignore-engines - run: yarn ${{ matrix.step }} deploy-to-firebase: @@ -29,7 +29,7 @@ jobs: cache: 'yarn' - name: Install and Build 🔧 run: | - yarn install --frozen-lockfile + yarn install --frozen-lockfile --ignore-engines yarn build env: # FOR BUILD diff --git a/.github/workflows/production.yml b/.github/workflows/production.yml index aa86abc..2211d23 100644 --- a/.github/workflows/production.yml +++ b/.github/workflows/production.yml @@ -20,7 +20,7 @@ jobs: with: node-version-file: '.nvmrc' cache: 'yarn' - - run: yarn install --frozen-lockfile + - run: yarn install --frozen-lockfile --ignore-engines - run: yarn ${{ matrix.step }} deploy-to-firebase: @@ -37,7 +37,7 @@ jobs: - name: Install and Build 🔧 run: | - yarn install --frozen-lockfile + yarn install --frozen-lockfile --ignore-engines yarn build env: # FOR BUILD @@ -74,7 +74,7 @@ jobs: - name: Install, Build, and Deploy 🔧 run: | - yarn install --frozen-lockfile + yarn install --frozen-lockfile --ignore-engines yarn deploy env: # FOR BUILD diff --git a/package.json b/package.json index 1296655..ddf83d1 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "deploy": "yarn build && permaweb-deploy --ant-process ${DEPLOY_ANT_PROCESS_ID}" }, "dependencies": { - "@ar.io/sdk": "2.0.2", + "@ar.io/sdk": "2.1.0-alpha.6", "@fontsource/rubik": "^5.0.19", "@headlessui/react": "^1.7.19", "@radix-ui/react-tooltip": "^1.0.7", diff --git a/src/components/Tooltip.tsx b/src/components/Tooltip.tsx index 319bdfc..c8cc0d2 100644 --- a/src/components/Tooltip.tsx +++ b/src/components/Tooltip.tsx @@ -23,7 +23,7 @@ const Tooltip = ({ {/* */}
{message}
diff --git a/src/components/modals/StakingModal.tsx b/src/components/modals/StakingModal.tsx index 9fc789a..7cc9f43 100644 --- a/src/components/modals/StakingModal.tsx +++ b/src/components/modals/StakingModal.tsx @@ -54,7 +54,7 @@ const DisplayRow = ({ {value} ) : ( -
+
{value} {rightIcon}
diff --git a/src/pages/Gateway/index.tsx b/src/pages/Gateway/index.tsx index cceec3b..9ac5ef1 100644 --- a/src/pages/Gateway/index.tsx +++ b/src/pages/Gateway/index.tsx @@ -104,6 +104,15 @@ const Gateway = () => { ? new mIOToken(gateway.operatorStake).toIO().valueOf() + (balances?.io || 0) : undefined; + const weightFields: Array<[string, number | undefined]> = [ + ['Stake', gateway?.weights?.stakeWeight], + ['Tenure', gateway?.weights?.tenureWeight], + ['Gateway Reward Ratio', gateway?.weights?.gatewayRewardRatioWeight], + ['Observer Reward Ratio', gateway?.weights?.observerRewardRatioWeight], + ['Composite', gateway?.weights?.compositeWeight], + ['Normalized', gateway?.weights?.normalizedCompositeWeight], + ]; + useEffect(() => { setInitialState((currentState) => { return { @@ -381,39 +390,61 @@ const Gateway = () => {
-
-
-
Stats
+
+
+
+
Stats
+
+ + + + {/* */}
- - - - {/* */} + + {gateway?.weights && ( +
+
+
Weights
+
+ + {weightFields.map(([title, value], index) => ( +
+
{title}:
+
+ {value ? value.toFixed(3) : } +
+
+ ))} +
+ )}
-
+
General Information
diff --git a/src/pages/Observers/ObserversTable.tsx b/src/pages/Observers/ObserversTable.tsx index 0b34460..f991308 100644 --- a/src/pages/Observers/ObserversTable.tsx +++ b/src/pages/Observers/ObserversTable.tsx @@ -22,7 +22,6 @@ interface TableData { const columnHelper = createColumnHelper(); const ObserversTable = () => { - const navigate = useNavigate(); const { isLoading, data: observers } = useObservers(); @@ -92,6 +91,7 @@ const ObserversTable = () => { href={`https://${row.getValue('domain')}`} target="_blank" rel="noreferrer" + onClick={(e) => e.stopPropagation()} > {row.getValue('domain')} {' '} @@ -137,7 +137,7 @@ const ObserversTable = () => { id: 'failedGateways', header: 'Failed Gateways', sortDescFirst: true, - cell: ({ row }) => row.original.failedGateways || "Pending", + cell: ({ row }) => row.original.failedGateways || 'Pending', }), ]; diff --git a/src/pages/Staking/ActiveStakes.tsx b/src/pages/Staking/ActiveStakes.tsx index b5a7fbf..c2e0b8a 100644 --- a/src/pages/Staking/ActiveStakes.tsx +++ b/src/pages/Staking/ActiveStakes.tsx @@ -9,6 +9,7 @@ import useGateways from '@src/hooks/useGateways'; import { useGlobalState } from '@src/store'; import { ColumnDef, createColumnHelper } from '@tanstack/react-table'; import { useEffect, useState } from 'react'; +import { useNavigate } from 'react-router-dom'; interface TableData { owner: string; @@ -30,6 +31,8 @@ const ActiveStakes = () => { const [stakingModalWalletAddress, setStakingModalWalletAddress] = useState(); + const navigate = useNavigate(); + useEffect(() => { const activeStakes: Array = !walletAddress || !gateways @@ -71,6 +74,7 @@ const ActiveStakes = () => { href={`https://${row.getValue('domain')}`} target="_blank" rel="noreferrer" + onClick={(e) => e.stopPropagation()} > {row.getValue('domain')} {' '} @@ -116,7 +120,8 @@ const ActiveStakes = () => { title="Manage Stake" text=" " rightIcon={} - onClick={() => { + onClick={(e) => { + e.stopPropagation(); setStakingModalWalletAddress(row.original.owner); }} /> @@ -152,6 +157,9 @@ const ActiveStakes = () => { id: 'delegatedStake', desc: true, }} + onRowClick={(row) => { + navigate(`/gateways/${row.owner}`); + }} /> {showUnstakeAllModal && ( { const { data: protocolBalance } = useProtocolBalance(); + const navigate = useNavigate(); + useEffect(() => { const stakeableGateways: Array = !gateways || !protocolBalance @@ -118,6 +121,7 @@ const DelegateStake = () => { href={`https://${row.getValue('domain')}`} target="_blank" rel="noreferrer" + onClick={(e) => e.stopPropagation()} > {row.getValue('domain')} {' '} @@ -227,7 +231,8 @@ const DelegateStake = () => { active={true} title="Manage Stake" text="Stake" - onClick={() => { + onClick={(e) => { + e.stopPropagation(); if (walletAddress) { setStakingModalWalletAddress(row.getValue('owner') as string); } else { @@ -252,6 +257,9 @@ const DelegateStake = () => { isLoading={isLoading} noDataFoundText="No stakeable gateways found." defaultSortingState={{ id: 'totalStake', desc: true }} + onRowClick={(row) => { + navigate(`/gateways/${row.owner}`); + }} /> {stakingModalWalletAddress && ( { @@ -10,7 +9,7 @@ export interface ArweaveWalletConnector { disconnect(): Promise; getWalletAddress(): Promise; // getGatewayConfig(): Promise; - signer?: ArconnectSigner; + signer?: Window['arweaveWallet']; } export enum WALLET_TYPES { @@ -45,7 +44,8 @@ export interface OwnershipAssessment { pass: boolean; } -export interface ArNSAssessmentTimings extends Record { +export interface ArNSAssessmentTimings + extends Record { dns: number | undefined; download: number | undefined; firstByte: number | undefined; diff --git a/yarn.lock b/yarn.lock index ffeb766..405adb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -35,12 +35,12 @@ plimit-lit "^3.0.1" warp-contracts "1.4.45" -"@ar.io/sdk@2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@ar.io/sdk/-/sdk-2.0.2.tgz#64aa7c4e6b30bbe36d7cc7d450f32d100ee731b3" - integrity sha512-DGSHo9Bf90Pe2m4lBEJPFuUageAaoO+nA42nhGJ2vCn6dKVM/y3aSqCJ+H5enHjidx0H1MmsgysiBQGEBElMHg== +"@ar.io/sdk@2.1.0-alpha.6": + version "2.1.0-alpha.6" + resolved "https://registry.yarnpkg.com/@ar.io/sdk/-/sdk-2.1.0-alpha.6.tgz#e831d2153200c7503aaf72b294a5aebf6b0a3bcd" + integrity sha512-5Cso0T8ucIbw69zm0CNV9UDep0Q2rxPqjbTao0yi0XuAiTLD3M7J9u8+0O5Vf9n7ASjBeC6qTTm1LvQUIGQ0sA== dependencies: - "@permaweb/aoconnect" "^0.0.55" + "@permaweb/aoconnect" "^0.0.57" arbundles "0.11.0" arweave "1.14.4" axios "1.7.2" @@ -2325,6 +2325,15 @@ ramda "^0.30.0" zod "^3.23.5" +"@permaweb/ao-scheduler-utils@~0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@permaweb/ao-scheduler-utils/-/ao-scheduler-utils-0.0.20.tgz#5cee9650ef9234a01ecf3a57e8e0870f1f431076" + integrity sha512-bJkcmnQm/rCGqklJt46q5TnHfWkFzSBcSf9Z3uy8ylHRAheS9NyR1BJMAj3EXDjHCpg7JfnLRo6Uc3Xdw1lmOA== + dependencies: + lru-cache "^10.2.2" + ramda "^0.30.0" + zod "^3.23.5" + "@permaweb/aoconnect@^0.0.55": version "0.0.55" resolved "https://registry.yarnpkg.com/@permaweb/aoconnect/-/aoconnect-0.0.55.tgz#d856a078d3702154ac58541d09478d25ed3acf2c" @@ -2339,6 +2348,20 @@ warp-arbundles "^1.0.4" zod "^3.22.4" +"@permaweb/aoconnect@^0.0.57": + version "0.0.57" + resolved "https://registry.yarnpkg.com/@permaweb/aoconnect/-/aoconnect-0.0.57.tgz#dd779563e1b994e78509251b74df64dc89ea62ea" + integrity sha512-l1+47cZuQ8pOIMOdRXymcegCmefXjqR8Bc2MY6jIzWv9old/tG6mfCue2W1QviGyhjP3zEVQgr7YofkY2lq35Q== + dependencies: + "@permaweb/ao-scheduler-utils" "~0.0.20" + buffer "^6.0.3" + debug "^4.3.5" + hyper-async "^1.1.2" + mnemonist "^0.39.8" + ramda "^0.30.1" + warp-arbundles "^1.0.4" + zod "^3.23.8" + "@pkgjs/parseargs@^0.11.0": version "0.11.0" resolved "https://registry.yarnpkg.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33" @@ -5184,6 +5207,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.3.5: + version "4.3.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" + integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== + dependencies: + ms "2.1.2" + decamelize-keys@^1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.1.tgz#04a2d523b2f18d80d0158a43b895d56dff8d19d8" @@ -9201,7 +9231,7 @@ ramda@^0.29.1: resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.29.1.tgz#408a6165b9555b7ba2fc62555804b6c5a2eca196" integrity sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA== -ramda@^0.30.0: +ramda@^0.30.0, ramda@^0.30.1: version "0.30.1" resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.30.1.tgz#7108ac95673062b060025052cd5143ae8fc605bf" integrity sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw== @@ -11160,7 +11190,7 @@ zip-stream@^4.1.0: compress-commons "^4.1.2" readable-stream "^3.6.0" -zod@^3.22.4, zod@^3.23.5: +zod@^3.22.4, zod@^3.23.5, zod@^3.23.8: version "3.23.8" resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==