diff --git a/components/brave_wallet/ios/browser/wallet_page_handler_bridge.h b/components/brave_wallet/ios/browser/wallet_page_handler_bridge.h index a4256b234a9..9476608481d 100644 --- a/components/brave_wallet/ios/browser/wallet_page_handler_bridge.h +++ b/components/brave_wallet/ios/browser/wallet_page_handler_bridge.h @@ -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 diff --git a/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+TabManagerDelegate.swift b/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+TabManagerDelegate.swift index 25d82e2fc96..0d99f971b7e 100644 --- a/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+TabManagerDelegate.swift +++ b/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+TabManagerDelegate.swift @@ -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() }, diff --git a/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+Wallet.swift b/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+Wallet.swift index fa97acca812..7403b1ed256 100644 --- a/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+Wallet.swift +++ b/ios/brave-ios/Sources/Brave/Frontend/Browser/BrowserViewController/BVC+Wallet.swift @@ -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) } diff --git a/ios/brave-ios/Sources/BraveWallet/WebUI/WalletWebUIHelper.swift b/ios/brave-ios/Sources/BraveWallet/WebUI/WalletWebUIHelper.swift index 06e2c745fbc..51385f20ff9 100644 --- a/ios/brave-ios/Sources/BraveWallet/WebUI/WalletWebUIHelper.swift +++ b/ios/brave-ios/Sources/BraveWallet/WebUI/WalletWebUIHelper.swift @@ -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?() } diff --git a/ios/browser/ui/webui/brave_wallet/wallet_page_handler.mm b/ios/browser/ui/webui/brave_wallet/wallet_page_handler.mm index 0e3786fef41..e897332fcea 100644 --- a/ios/browser/ui/webui/brave_wallet/wallet_page_handler.mm +++ b/ios/browser/ui/webui/brave_wallet/wallet_page_handler.mm @@ -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 bridge = + brave_wallet::PageHandlerBridgeHolder::GetOrCreateForWebState(web_state_) + ->bridge(); + [bridge showApprovePanelUI]; } void WalletPageHandler::ShowWalletBackupUI() {