feat: Safe wallet transaction module for Solidarity Fund (#279)#421
Open
diterra-code wants to merge 1 commit into
Open
feat: Safe wallet transaction module for Solidarity Fund (#279)#421diterra-code wants to merge 1 commit into
diterra-code wants to merge 1 commit into
Conversation
✅ Deploy Preview for dapper-sundae-ae0873 ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Olaleye-Blessing
force-pushed
the
development
branch
2 times, most recently
from
June 9, 2026 17:00
a5aecfe to
55056d4
Compare
Olaleye-Blessing
force-pushed
the
feat/safe-tx-module-279
branch
from
June 9, 2026 18:26
1298a05 to
edc86db
Compare
Olaleye-Blessing
force-pushed
the
development
branch
from
June 10, 2026 03:47
170c907 to
2c91bff
Compare
When a Gnosis Safe wallet connects to the Solidarity Fund and initiates a transaction (bake, burn, governance vote), the standard wallet confirmation popup does nothing visible — Safe requires multi-sig approval inside the Safe app. This left users confused with no feedback. This adds a dedicated, Safe-aware modal that guides the user through the confirmation flow with bread-branded UI matching the approved Figma designs. Changes: - SafeTransactionModal: new modal with pending, waiting-for-signers (with signer progress bar), confirmed, rejected and expired states, plus a direct "Open Safe App" deep link to the connected Safe's tx queue. - SafeIndicatorBadge: persistent nav indicator shown while a Safe is connected. - SafeTransactionWatcher: now surfaces signer progress (X of Y confirmations) and marks transactions expired after a timeout, in addition to success/revert. - TransactionsReducer: SAFE_EXPIRED status + signer-progress fields and the SET_SAFE_PROGRESS / SET_SAFE_EXPIRED actions. - Route Safe submissions from Bake, Burn (ConfirmBurnModal) and Vote (CastVote) to the new SAFE_TRANSACTION modal. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Olaleye-Blessing
force-pushed
the
feat/safe-tx-module-279
branch
from
June 29, 2026 17:40
edc86db to
eee73ec
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #279
Problem
When a Gnosis Safe wallet connects to the Solidarity Fund and initiates a transaction (bake, burn, governance vote), the standard wallet confirmation popup does nothing visible — Safe transactions require multi-sig approval inside the Safe app and return a
safeTxHashinstead of executing synchronously. The current UI gave no feedback, leaving users confused about why nothing happened after clicking confirm.What this PR does
Adds a dedicated, Safe-aware modal that detects the Safe wallet flow and guides the user through confirmation with bread-branded UI matching the approved Figma designs (
Solidarity Fund / Safe Modulepage).New components
SafeTransactionModal— single modal that renders all states:Open Safe Appdeep link to the connected Safe's transaction queue (app.safe.global/transactions/queue?safe=gno:<address>)X of Y confirmations received) with a progress barSafeIndicatorBadge— persistent nav indicator (ShieldCheck + "Safe", jade) shown whenever a Safe wallet is connected.Wiring
SafeTransactionWatchernow also surfaces signer progress (fromdetailedExecutionInfo) and marks a tx expired after 30 min, alongside the existing success/revert polling.TransactionsReducer— addsSAFE_EXPIREDstatus, signer-progress fields, andSET_SAFE_PROGRESS/SET_SAFE_EXPIREDactions.ConfirmBurnModal) and Vote (CastVote) now route to the newSAFE_TRANSACTIONmodal instead of the generic transaction modal.Design reference
Implements the states designed in #279 (desktop + mobile): Safe-detected nav indicator, Pending, Waiting for signers, Confirmed, Rejected, Expired.
Testing
tsc --noEmit— passes (0 errors)next lint— cleanuseConnectedUser().isSafe), wallet kit (wagmi + RainbowKit), and@safe-global/safe-apps-sdkalready in the repo.🤖 Generated with Claude Code