Skip to content

Fix onboarding flow after deploying lockup contract #209

Draft
jcarnide wants to merge 2 commits intomainfrom
jcarnide/fix-onboarding-after-lockup-deployment
Draft

Fix onboarding flow after deploying lockup contract #209
jcarnide wants to merge 2 commits intomainfrom
jcarnide/fix-onboarding-after-lockup-deployment

Conversation

@jcarnide
Copy link
Contributor

@jcarnide jcarnide commented Nov 5, 2025

📝 Summary of Changes

  • Briefly describe what you changed and why.

📦 Type of Change

Select one:

  • chore (maintenance, formatting, etc.)
  • bug (fixes an issue)
  • feature (adds new functionality)

✅ Testing

  • Unit tests: describe which tests you added or updated
  • Manual QA: steps to reproduce and verify
    1. Expected result: …

📸 Screenshots (if applicable)

Before After
before after

const retryFromCurrentStep = useCallback(() => {
executeTransactions({
numTransactions: requiredTransactions.length,
startAt: transactionStep,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should start at index 0 since requiredTransactions will get updated automatically to reflect the correct set of remaining steps after the cache is busted

@github-actions
Copy link

github-actions bot commented Nov 5, 2025

📊 Test Coverage Report

Overall Coverage

Metric Coverage Threshold
Lines 7.89% 🔴
Functions 38.25% 🔴
Branches 55.74% 🔴
Statements 7.89% 🔴

📁 Detailed Coverage by File

File Lines Functions Branches Statements
cypress.config.ts 0% 100% 100% 0%
src/app/Web3Provider.tsx 0% 100% 100% 0%
src/app/error.tsx 0% 100% 100% 0%
src/app/api/images/og/delegate/route.tsx 0% 100% 100% 0%
src/app/api/images/og/delegates/route.tsx 0% 100% 100% 0%
src/app/api/images/og/generic/route.tsx 0% 100% 100% 0%
src/app/api/images/og/proposals/route.tsx 0% 100% 100% 0%
src/app/info/page.tsx 0% 100% 100% 0%
src/app/info/components/GovernorSettingsParams.tsx 0% 100% 100% 0%
src/app/info/components/InfoAbout.tsx 0% 100% 100% 0%
src/app/info/components/InfoFAQ.tsx 0% 100% 100% 0%
src/app/info/components/InfoHero.tsx 0% 100% 100% 0%
src/app/info/components/InfoRoadmap.tsx 0% 100% 100% 0%
src/app/info/components/InfoVideos.tsx 0% 100% 100% 0%
src/app/near/NearDebug.tsx 0% 100% 100% 0%
src/app/near/VeNearDebugCards.tsx 0% 100% 100% 0%
src/app/terms-of-service/page.tsx 0% 100% 100% 0%
src/components/Footer.tsx 0% 100% 100% 0%
src/components/InfoBanner.tsx 0% 100% 100% 0%
src/components/Analytics/MixpanelProvider.tsx 0% 100% 100% 0%
📋 Show 144 more files...
File Lines Functions Branches Statements
src/components/Assets/AnimatedStars.tsx 0% 100% 100% 0%
src/components/Assets/AssetsHome.tsx 0% 100% 100% 0%
src/components/Assets/AssetsLandingPage.tsx 0% 100% 100% 0%
src/components/Assets/DelegationSummaryCard.tsx 0% 100% 100% 0%
src/components/Assets/LockTokensCard.tsx 0% 100% 100% 0%
src/components/Assets/MobileAssetRow.tsx 0% 100% 100% 0%
src/components/Assets/StakeEncouragementBanner.tsx 0% 100% 100% 0%
src/components/Assets/StakingRewardsCard.tsx 0% 100% 100% 0%
src/components/DelegateStatement/CurrentDelegateStatement.tsx 0% 100% 100% 0%
src/components/DelegateStatement/DelegateStatementBoolSelector.tsx 0% 100% 100% 0%
src/components/DelegateStatement/DelegateStatementForm.tsx 0% 100% 100% 0%
src/components/DelegateStatement/NotificationSelector.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCard/DelegateActions.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCard/DelegateAddress.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCard/DelegateCardEditProfile.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCard/DelegateCardHeader.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCardList/DelegateCardList.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCardList/DelegateCardWrapper.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCardList/DelegateContent.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCardList/DelegateTable.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateCardList/DelegateTableRow.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateProfile/DelegateActions.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateProfile/DelegateProfileContent.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateStatement/DelegateStatementContainer.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateStatement/DelegateStatementWrapper.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateVotes/DelegateVotes.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateVotes/DelegateVotesDetailsContainer.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateVotes/VotesContainer.tsx 0% 100% 100% 0%
src/components/Delegates/DelegateVotes/VotesContainerWrapper.tsx 0% 100% 100% 0%
src/components/Delegates/DelegatesFilter/DelegatesSortFilter.tsx 0% 100% 100% 0%
src/components/Delegates/DelegatesSearch/DelegatesSearch.jsx 0% 100% 100% 0%
src/components/Delegates/DelegatesTabs/DelegatesTabs.tsx 0% 100% 100% 0%
src/components/Delegates/Delegations/DelegationFromRow.tsx 0% 100% 100% 0%
src/components/Delegates/Delegations/DelegationToRow.tsx 0% 100% 100% 0%
src/components/Delegates/Delegations/DelegationsContainer.tsx 0% 100% 100% 0%
src/components/Delegates/Delegations/DelegationsContainerWrapper.tsx 0% 100% 100% 0%
src/components/Dialogs/VoteDialog.tsx 0% 100% 100% 0%
src/components/Dialogs/VoteOptionsDialog.tsx 0% 100% 100% 0%
src/components/Dialogs/DialogProvider/DialogProvider.tsx 0% 100% 100% 0%
src/components/Dialogs/DialogProvider/dialogs.tsx 0% 100% 100% 0%
src/components/Dialogs/DialogProvider/types.ts 100% 100% 100% 100%
src/components/Dialogs/LockDialog/AssetSelector.tsx 0% 100% 100% 0%
src/components/Header/ConnectButton.tsx 0% 100% 100% 0%
src/components/Header/DesktopProfileDropDown.tsx 0% 100% 100% 0%
src/components/Header/Header.jsx 0% 100% 100% 0%
src/components/Header/LogoLink.jsx 0% 100% 100% 0%
src/components/Header/MobileConnectButton.tsx 0% 100% 100% 0%
src/components/Header/MobileProfileDropDown.tsx 0% 100% 100% 0%
src/components/Header/Navbar.jsx 0% 100% 100% 0%
src/components/Layout/PageContainer.tsx 0% 100% 100% 0%
src/components/Layout/Stack.tsx 0% 100% 100% 0%
src/components/Metrics/DAOMetricsHeader.jsx 0% 100% 100% 0%
src/components/Notifications/SubscribeDialog.tsx 0% 100% 100% 0%
src/components/Notifications/SubscribeDialogLauncher.tsx 0% 100% 100% 0%
src/components/Proposals/DraftProposal/DraftEditForm.tsx 0% 100% 100% 0%
src/components/Proposals/DraftProposal/DraftProposalPage.tsx 0% 100% 100% 0%
src/components/Proposals/Proposal/PendingProposal.tsx 0% 100% 100% 0%
src/components/Proposals/Proposal/ProposalHome.tsx 0% 100% 100% 0%
src/components/Proposals/Proposal/ProposalVoteFilter.tsx 0% 100% 100% 0%
src/components/Proposals/Proposal/ProposalVoteResult.tsx 0% 100% 100% 0%
src/components/Proposals/Proposal/ProposalVoteSummary.tsx 0% 100% 100% 0%
src/components/Proposals/Proposal/ProposalVotingActions.tsx 0% 100% 100% 0%
src/components/Proposals/ProposalPage/Charts/TimelineChart.tsx 0% 100% 100% 0%
src/components/Proposals/ProposalPage/ProposalChart/ProposalChart.tsx 0% 100% 100% 0%
src/components/Proposals/ProposalPage/TreeMapChart/TreeMapChart.tsx 0% 100% 100% 0%
src/components/Proposals/Proposals/DraftProposalsList.tsx 0% 100% 100% 0%
src/components/Proposals/Proposals/PendingProposals.tsx 0% 100% 100% 0%
src/components/Proposals/Proposals/ProposalModal.tsx 0% 100% 100% 0%
src/components/Proposals/Proposals/ProposalStatus.tsx 0% 100% 100% 0%
src/components/Proposals/Proposals/ProposalStatusText.tsx 0% 100% 100% 0%
src/components/Proposals/Proposals/ProposalTimeStatus.tsx 0% 100% 100% 0%
src/components/Proposals/Proposals/Proposals.tsx 0% 100% 100% 0%
src/components/common/FilterResetListbox.tsx 0% 100% 100% 0%
src/components/shared/CloseIcon.tsx 0% 100% 100% 0%
src/components/shared/CopyableHumanAddress.tsx 0% 100% 100% 0%
src/components/shared/InputBox.tsx 0% 100% 100% 0%
src/components/shared/NearAvatar.tsx 0% 100% 100% 0%
src/components/shared/Switch.tsx 0% 100% 100% 0%
src/components/shared/Form/TextInputWithTooltip.tsx 0% 100% 100% 0%
src/components/shared/Markdown/Markdown.tsx 0% 100% 100% 0%
src/components/shared/ProjectionSlider/ProjectionSlider.tsx 0% 100% 100% 0%
src/components/shared/ResourceNotFound/ResourceNotFound.tsx 0% 100% 100% 0%
src/components/ui/Drawer.tsx 0% 100% 100% 0%
src/components/ui/accordion.tsx 0% 100% 100% 0%
src/components/ui/checkbox.tsx 0% 100% 100% 0%
src/components/ui/dropdown-menu.tsx 0% 100% 100% 0%
src/components/ui/hover-card.tsx 0% 100% 100% 0%
src/components/ui/label.tsx 0% 100% 100% 0%
src/components/ui/popover.tsx 0% 100% 100% 0%
src/components/ui/select.tsx 0% 100% 100% 0%
src/components/ui/separator.tsx 0% 100% 100% 0%
src/components/ui/tabs.tsx 0% 100% 100% 0%
src/components/ui/tooltip-with-tap.tsx 0% 100% 100% 0%
src/components/ui/tooltip.tsx 0% 100% 100% 0%
src/contexts/NearContext.tsx 69.26% 20% 66.23% 69.26%
src/hooks/useAddSearchParam.ts 0% 100% 100% 0%
src/hooks/useBalance.ts 20% 0% 100% 20%
src/hooks/useCastVote.ts 100% 100% 100% 100%
src/hooks/useCreateProposal.ts 0% 100% 100% 0%
src/hooks/useDelegateAll.ts 100% 100% 100% 100%
src/hooks/useDelegates.ts 13.11% 0% 100% 13.11%
src/hooks/useDeleteSearchParam.ts 0% 100% 100% 0%
src/hooks/useDeployLockupAndLock.ts 100% 100% 80% 100%
src/hooks/useDraftProposals.ts 0% 100% 100% 0%
src/hooks/useFetchProof.ts 100% 100% 100% 100%
src/hooks/useFungibleTokens.ts 41.66% 0% 100% 41.66%
src/hooks/useLockNear.ts 100% 100% 100% 100%
src/hooks/useProposalVotingPower.ts 0% 100% 100% 0%
src/hooks/useReadHOSContract.ts 100% 100% 100% 100%
src/hooks/useRefreshStakingPoolBalance.ts 100% 100% 100% 100%
src/hooks/useRegisterLockup.ts 100% 100% 100% 100%
src/hooks/useSelectStakingPool.ts 100% 100% 100% 100%
src/hooks/useStakeNear.ts 100% 100% 100% 100%
src/hooks/useStakedBalance.ts 14.81% 0% 100% 14.81%
src/hooks/useUndelegate.ts 100% 100% 100% 100%
src/hooks/useUnlockNear.ts 100% 100% 100% 100%
src/hooks/useWriteHOSContract.ts 100% 100% 100% 100%
src/icons/HamburgerIcon.tsx 0% 100% 100% 0%
src/lib/constants.ts 99.07% 100% 0% 99.07%
src/lib/contractConstants.ts 45.65% 100% 14.28% 45.65%
src/lib/sanitizationUtils.ts 0% 100% 100% 0%
src/lib/utils.ts 13.69% 3.33% 100% 13.69%
src/lib/analytics/index.ts 55.17% 80% 50% 55.17%
src/lib/analytics/mixpanel.ts 40.27% 40% 40% 40.27%
src/lib/api/constants.ts 75.86% 100% 16.66% 75.86%
src/lib/api/fungibleTokens.ts 6.66% 0% 100% 6.66%
src/lib/api/delegates/requests.ts 11.84% 0% 100% 11.84%
src/lib/api/delegates/types.ts 0% 100% 100% 0%
src/lib/api/near/types.ts 100% 100% 100% 100%
src/lib/api/nonce/requests.ts 33.33% 0% 100% 33.33%
src/lib/api/nonce/types.ts 100% 100% 100% 100%
src/lib/api/proposal/types.ts 0% 100% 100% 0%
src/lib/api/transactions/types.ts 100% 100% 100% 100%
src/lib/contracts/config/methods/lockup.ts 0% 100% 100% 0%
src/lib/contracts/config/methods/venear.ts 0% 100% 100% 0%
src/lib/contracts/config/methods/voting.ts 0% 100% 100% 0%
src/lib/contracts/types/common.ts 100% 100% 100% 100%
src/lib/contracts/types/lockup.ts 100% 100% 100% 100%
src/lib/contracts/types/venear.ts 100% 100% 100% 100%
src/lib/contracts/types/voting.ts 0% 100% 100% 0%
src/lib/tenant/tenant.ts 63.82% 50% 100% 63.82%
src/lib/tenant/tenantUI.ts 62.72% 18.75% 80% 62.72%
src/lib/tenant/configs/ui/near.ts 100% 100% 100% 100%
src/styles/fonts.ts 0% 100% 100% 0%

Coverage Thresholds:

  • 🟢 Good: ≥80%
  • 🟡 Moderate: 60-79%
  • 🔴 Needs Improvement: <60%

This report was generated by the Test Coverage workflow.

queryKey: [
READ_NEAR_CONTRACT_QK,
CONTRACTS.VENEAR_CONTRACT_ID,
"get_account_info",
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Busting this cache means the assets page will immediately update without needing the user to refresh the page themselves.

This solves the UX issue where the user:

  1. Initiates onboarding and submits the txn to deploy their lockup
  2. Experiences an error during the lock txn (e.g. popup blocked) or abandons the flow
  3. Does not refresh the page
  4. Attempts to lock & stake again

Historically this would cause us to take the user through the full onboarding flow again assuming they don't have a lockup deployed, resulting in an error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant