[iOS][Wallet] Showing tx confirmation panel after users create tx from wallet webui (#33390)

showing tx confirmation panel after users create tx from wallet webui
This commit is contained in:
Nuo Xu
2026-01-27 10:12:04 -05:00
committed by GitHub
parent d7c276d077
commit 3fef8bcc1a
5 changed files with 26 additions and 1 deletions
@@ -19,6 +19,8 @@ NS_SWIFT_NAME(WalletPageHandler)
@protocol WalletPageHandlerBridge
@required
/// Handle when the user creates a new unapproved tx
- (void)showApprovePanelUI;
/// Handle when the user taps "Back up now" to back up wallet
- (void)showWalletBackupUI;
/// Handle when the user double taps the lock screen to unlock wallet
@@ -56,6 +56,9 @@ extension BrowserViewController: TabManagerDelegate {
}
tab.walletWebUIHelper = .init(
tab: tab,
showApprovePanelUIHandler: { [weak self] tab in
self?.showApprovePanelUI(tab: tab)
},
showWalletBackUpHandler: { [weak self] in
self?.showWalletBackupUI()
},
@@ -734,6 +734,16 @@ extension TabBrowserData: BraveWalletKeyringServiceObserver {
// MARK: Wallet WebUI action handlers
extension BrowserViewController {
func showApprovePanelUI(tab: (any TabState)?) {
guard let tab,
let origin = tab.browserData?.getOrigin(),
let tabDappStore = tab.tabDappStore
else {
return
}
presentWalletPanel(from: origin, with: tabDappStore)
}
func showWalletBackupUI() {
presentNativeWallet(webUIAction: .backup)
}
@@ -8,12 +8,14 @@ import BraveCore
public class WalletWebUIHelper: NSObject, TabObserver, WalletPageHandler {
private(set) weak var tab: (any TabState)?
private var showApprovePanelUIHandler: (((_ tab: (any TabState)?) -> Void))?
private var showWalletBackUpHandler: (() -> Void)?
private var unlockWalletHandler: (() -> Void)?
private var showOnboardingHandler: ((Bool) -> Void)?
public init?(
tab: some TabState,
showApprovePanelUIHandler: ((_ tab: (any TabState)?) -> Void)?,
showWalletBackUpHandler: (() -> Void)?,
unlockWalletHandler: (() -> Void)?,
showOnboardingHandler: ((Bool) -> Void)?
@@ -22,6 +24,7 @@ public class WalletWebUIHelper: NSObject, TabObserver, WalletPageHandler {
return nil
}
self.tab = tab
self.showApprovePanelUIHandler = showApprovePanelUIHandler
self.showWalletBackUpHandler = showWalletBackUpHandler
self.unlockWalletHandler = unlockWalletHandler
self.showOnboardingHandler = showOnboardingHandler
@@ -44,6 +47,10 @@ public class WalletWebUIHelper: NSObject, TabObserver, WalletPageHandler {
}
// MARK: - WalletPageHandler
public func showApprovePanelUI() {
showApprovePanelUIHandler?(tab)
}
public func showWalletBackupUI() {
showWalletBackUpHandler?()
}
@@ -18,7 +18,10 @@ WalletPageHandler::WalletPageHandler(
WalletPageHandler::~WalletPageHandler() = default;
void WalletPageHandler::ShowApprovePanelUI() {
// No need for iOS since it's handled on the Swift side.
id<WalletPageHandlerBridge> bridge =
brave_wallet::PageHandlerBridgeHolder::GetOrCreateForWebState(web_state_)
->bridge();
[bridge showApprovePanelUI];
}
void WalletPageHandler::ShowWalletBackupUI() {