From 37e0d9d7b7c1d810d9f78673df43ef6ed7d63bf2 Mon Sep 17 00:00:00 2001 From: Anastasios Date: Fri, 30 Jun 2023 22:23:24 +0400 Subject: [PATCH] feat: sync related ui alerts on pool page (#3542) * feat: add gauge balancer helper contract * feat: add alerts in staking card * wip * feat: add check balances * feat: add alerts on pool page * wip * feat: add user checkpoint actions * remove logs * feat: add networks tooltips * feat: change sync process warning * feat: change unstake btn style * UI updates * feat: change unsynced arr * fix: unstake btn style * feat: fix trigger update fn * feat: open staking incentives card by default * feat: add sync tips * feat: opening staking incentives card * feat: change texts * feat: add info message * fixes after review --------- Co-authored-by: pkattera --- src/assets/data/contracts/arbitrum.json | 1 + src/assets/data/contracts/gnosis.json | 1 + src/assets/data/contracts/optimism.json | 1 + src/assets/data/contracts/polygon.json | 1 + .../_global/BalAccordion/BalAccordion.vue | 6 +- src/components/_global/BalAlert/BalAlert.vue | 8 +- .../pool/staking/StakingIncentivesCard.vue | 15 +- .../CheckpointGaugeModal.vue | 87 ++++++++++++ .../CrossChainBoostCards.vue | 125 ++++++++++++----- .../cross-chain-boost/CrossChainSyncModal.vue | 1 + .../cross-chain-boost/IconLoaderWrapper.vue | 2 +- .../cross-chain-boost/PortfolioSyncTip.vue | 47 ++++--- .../StakingCardSyncAlert.vue | 129 ++++++++++++++++++ .../cross-chain-boost/SyncFinalState.vue | 8 +- .../cross-chain-boost/SyncNetworkAction.vue | 19 ++- .../PoolsTable/PoolsTableActionsCell.vue | 3 +- src/composables/useTransactions.ts | 3 +- src/lib/abi/GaugeWorkingBalanceHelper.json | 73 ++++++++++ src/lib/config/arbitrum/contracts.ts | 1 + src/lib/config/gnosis-chain/contracts.ts | 1 + src/lib/config/optimism/contracts.ts | 1 + src/lib/config/polygon/contracts.ts | 1 + src/lib/config/types.ts | 1 + src/locales/default.json | 19 +-- src/pages/vebal.vue | 2 +- src/providers/cross-chain-sync.provider.ts | 73 ++++++++-- src/providers/local/pool-staking.provider.ts | 1 + .../contracts/gauge-working-balance-helper.ts | 37 +++++ .../contracts/contracts/liquidity-gauge.ts | 22 ++- 29 files changed, 598 insertions(+), 91 deletions(-) create mode 100644 src/components/contextual/pages/vebal/cross-chain-boost/CheckpointGaugeModal.vue create mode 100644 src/components/contextual/pages/vebal/cross-chain-boost/StakingCardSyncAlert.vue create mode 100644 src/lib/abi/GaugeWorkingBalanceHelper.json create mode 100644 src/services/balancer/contracts/contracts/gauge-working-balance-helper.ts diff --git a/src/assets/data/contracts/arbitrum.json b/src/assets/data/contracts/arbitrum.json index 8223eb0de2..46f32e263e 100644 --- a/src/assets/data/contracts/arbitrum.json +++ b/src/assets/data/contracts/arbitrum.json @@ -11,6 +11,7 @@ "ChildChainGauge": "0xa523f47A933D5020b23629dDf689695AA94612Dc", "ChildChainGaugeFactory": "0x6817149cb753BF529565B4D023d7507eD2ff4Bc0", "ChildChainGaugeRewardHelper": "0xA0DAbEBAAd1b243BBb243f933013d560819eB66f", + "ChildChainGaugeWorkingBalanceHelper": "0xEa924b45a3fcDAAdf4E5cFB1665823B8F8F2039B", "ChildChainGaugeTokenAdder": "0xbfD9769b061E57e478690299011A028194D66e3C", "ChildChainLiquidityGaugeFactory": "0xb08E16cFc07C684dAA2f93C70323BAdb2A6CBFd2", "ChildChainStreamer": "0xD7FAD3bd59D6477cbe1BE7f646F7f1BA25b230f8", diff --git a/src/assets/data/contracts/gnosis.json b/src/assets/data/contracts/gnosis.json index 2be087df51..5f3b716e0f 100644 --- a/src/assets/data/contracts/gnosis.json +++ b/src/assets/data/contracts/gnosis.json @@ -11,6 +11,7 @@ "ChildChainGauge": "0x96484f2aBF5e58b15176dbF1A799627B53F13B6d", "ChildChainGaugeFactory": "0x83E443EF4f9963C77bd860f94500075556668cb8", "ChildChainGaugeRewardHelper": "0xf7D5DcE55E6D47852F054697BAB6A1B48A00ddbd", + "ChildChainGaugeWorkingBalanceHelper": "0x682f0dDBFd41D1272982f64a499Fb62d80e27589", "ChildChainGaugeTokenAdder": "0x1802953277FD955f9a254B80Aa0582f193cF1d77", "ChildChainLiquidityGaugeFactory": "0x809B79b53F18E9bc08A961ED4678B901aC93213a", "ChildChainStreamer": "0x230a59F4d9ADc147480f03B0D3fFfeCd56c3289a", diff --git a/src/assets/data/contracts/optimism.json b/src/assets/data/contracts/optimism.json index 42e9646a6e..c02802f211 100644 --- a/src/assets/data/contracts/optimism.json +++ b/src/assets/data/contracts/optimism.json @@ -11,6 +11,7 @@ "ChildChainGauge": "0x81cFAE226343B24BA12EC6521Db2C79E7aeeb310", "ChildChainGaugeFactory": "0xa523f47A933D5020b23629dDf689695AA94612Dc", "ChildChainGaugeRewardHelper": "0x8aB784368A1883DA90D8513b48801e2Db1cb2D5D", + "ChildChainGaugeWorkingBalanceHelper": "0x9129E834e15eA19b6069e8f08a8EcFc13686B8dC", "ChildChainGaugeTokenAdder": "0x6f5a2eE11E7a772AeB5114A20d0D7c0ff61EB8A0", "ChildChainLiquidityGaugeFactory": "0x2E96068b3D5B5BAE3D7515da4A1D2E52d08A2647", "ChildChainStreamer": "0x239e55F427D44C3cc793f49bFB507ebe76638a2b", diff --git a/src/assets/data/contracts/polygon.json b/src/assets/data/contracts/polygon.json index a7d540eaed..ca6c8199d1 100644 --- a/src/assets/data/contracts/polygon.json +++ b/src/assets/data/contracts/polygon.json @@ -11,6 +11,7 @@ "ChildChainGauge": "0xc9b36096f5201ea332Db35d6D195774ea0D5988f", "ChildChainGaugeFactory": "0x22625eEDd92c81a219A83e1dc48f88d54786B017", "ChildChainGaugeRewardHelper": "0xaEb406b0E430BF5Ea2Dc0B9Fe62E4E53f74B3a33", + "ChildChainGaugeWorkingBalanceHelper": "0x08fd003D8F1892D4EC684E6C3EE0128081be461b", "ChildChainGaugeTokenAdder": "0x1554ee754707D5C93b7934AF404747Aba521Aaf2", "ChildChainLiquidityGaugeFactory": "0x3b8cA519122CdD8efb272b0D3085453404B25bD0", "ChildChainStreamer": "0x6f5a2eE11E7a772AeB5114A20d0D7c0ff61EB8A0", diff --git a/src/components/_global/BalAccordion/BalAccordion.vue b/src/components/_global/BalAccordion/BalAccordion.vue index 08ccc959c1..c1185796c6 100644 --- a/src/components/_global/BalAccordion/BalAccordion.vue +++ b/src/components/_global/BalAccordion/BalAccordion.vue @@ -17,10 +17,12 @@ type Props = { dependencies?: unknown; showSectionBorder?: boolean; reCalcKey?: number; + isOpenedByDefault?: boolean; }; const props = withDefaults(defineProps(), { showSectionBorder: true, + isOpenedByDefault: false, reCalcKey: 0, }); @@ -154,13 +156,13 @@ watch( />
-
+
{{ title }}

{{ description }} diff --git a/src/components/contextual/pages/pool/staking/StakingIncentivesCard.vue b/src/components/contextual/pages/pool/staking/StakingIncentivesCard.vue index 64ce2ed1e9..a1945d397c 100644 --- a/src/components/contextual/pages/pool/staking/StakingIncentivesCard.vue +++ b/src/components/contextual/pages/pool/staking/StakingIncentivesCard.vue @@ -14,6 +14,9 @@ import { usePoolStaking } from '@/providers/local/pool-staking.provider'; import { deprecatedDetails } from '@/composables/usePoolHelpers'; import { usePoolWarning } from '@/composables/usePoolWarning'; import { StakeAction } from './composables/useStakePreview'; +import StakingCardSyncAlert from '../../vebal/cross-chain-boost/StakingCardSyncAlert.vue'; +import useNetwork from '@/composables/useNetwork'; +import { Network } from '@/lib/config'; type Props = { pool: Pool; @@ -30,7 +33,7 @@ const emit = defineEmits<{ const isStakePreviewVisible = ref(false); const stakeAction = ref('stake'); const poolId = computed(() => props.pool.id); - +const isOpenedByDefault = ref(false); /** * COMPOSABLES */ @@ -44,6 +47,7 @@ const { hasNonPrefGaugeBalance, } = usePoolStaking(); const { isAffected } = usePoolWarning(poolId); +const { networkId } = useNetwork(); /** * COMPUTED @@ -105,6 +109,7 @@ function handlePreviewClose() { }, ]" :reCalcKey="hasNonPrefGaugeBalance ? 0 : 1" + :isOpenedByDefault="isOpenedByDefault" >