Skip to content

Explore dapps#3174

Merged
feruzm merged 3 commits intodevelopmentfrom
explore
Apr 19, 2026
Merged

Explore dapps#3174
feruzm merged 3 commits intodevelopmentfrom
explore

Conversation

@feruzm
Copy link
Copy Markdown
Member

@feruzm feruzm commented Apr 19, 2026

Summary by CodeRabbit

  • New Features
    • Added "Explore" menu item to access the dApp browser
    • Built a multi-tab dApp browser with URL/search bar, navigation controls, progress indicator, and error recovery
    • Integrated Hive Keychain messaging for in-page signing and responses
    • Added a transaction confirmation sheet for approving operations (votes, transfers, token actions)
    • Included a dApp discovery home interface

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 19, 2026

Warning

Rate limit exceeded

@feruzm has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 29 minutes and 46 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 29 minutes and 46 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0508f569-f96e-4d6d-a0b5-a19dba0f3dcf

📥 Commits

Reviewing files that changed from the base of the PR and between 480ba1f and d4783c7.

📒 Files selected for processing (4)
  • src/screens/dappBrowser/components/keychainConfirmSheet.tsx
  • src/screens/dappBrowser/hooks/useKeychainMessageHandler.ts
  • src/screens/dappBrowser/screen/dappBrowser.tsx
  • src/screens/dappBrowser/utils/domainBlacklist.ts
📝 Walkthrough

Walkthrough

Adds a DappBrowser screen with multi-tab WebView browsing and an injected Hive Keychain bridge, plus types, a confirmation ActionSheet, message handling hook to translate requests to SDK operations and broadcast transactions, route/menu/localization integration, and related styles and exports.

Changes

Cohort / File(s) Summary
Localization & Menu
src/config/locales/en-US.json, src/constants/sideMenuItems.ts
Added side_menu.explore translation and an EXPLORE_MENU_ITEM routed to the new DappBrowser; inserted into both auth and no-auth menus.
Routing & Exports
src/constants/routeNames.ts, src/navigation/stackNavigator.tsx, src/screens/index.ts, src/screens/dappBrowser/index.ts
Added ROUTES.SCREENS.DAPP_BROWSER, registered the DappBrowser screen in MainStack, and re-exported the screen from screens modules.
ActionSheet Types & Registration
src/navigation/sheets.tsx
Added SheetNames.KEYCHAIN_CONFIRM, registered KeychainConfirmSheet, and augmented react-native-actions-sheet Sheets typing for the keyed payload/return type.
DappBrowser UI & Styles
src/screens/dappBrowser/screen/dappBrowser.tsx, src/screens/dappBrowser/screen/dappBrowserStyles.ts
New DappBrowser screen with multi-tab management, URL/search handling, progress, WebView error UI, and home dApp grid; added corresponding EStyleSheet styles.
WebView Keychain Bridge
src/screens/dappBrowser/bridges/hiveKeychainBridge.ts
Added HIVE_KEYCHAIN_BRIDGE_JS string: injected runtime script implementing window.hive_keychain/window.hive, request dispatch, and native message posting/response dispatching.
Keychain Types & Helpers
src/screens/dappBrowser/bridges/bridgeTypes.ts
New types/interfaces for Keychain request/response, authority levels, operation-label mappings, and getRequiredAuthority utility.
Confirmation Sheet Component
src/screens/dappBrowser/components/keychainConfirmSheet.tsx
New ActionSheet component KeychainConfirmSheet rendering operation-specific details and returning approval boolean.
Message Handling Hook
src/screens/dappBrowser/hooks/useKeychainMessageHandler.ts
New useKeychainMessageHandler hook parsing WebView Keychain requests, building SDK operations, showing confirmation sheet, and broadcasting via SDK; sends structured responses back to WebView.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant dApp as WebView<br/>(dApp)
    participant Bridge as Keychain<br/>Bridge
    participant Native as Native<br/>Layer
    participant Handler as Keychain<br/>MessageHandler
    participant Sheet as Confirmation<br/>Sheet
    participant SDK as Ecency<br/>SDK

    User->>dApp: call window.hive_keychain.request(...)
    dApp->>Bridge: dispatchCustomEvent(request{name,request_id,data})
    Bridge->>Native: postMessage(JSON.stringify(request))
    Native->>Handler: handleMessage(WebViewMessageEvent)
    Handler->>Handler: parse & validate request
    Handler->>Sheet: SheetManager.show(KEYCHAIN_CONFIRM, payload)
    Sheet->>User: show operation details
    User->>Sheet: approve/reject
    Sheet-->>Handler: return approval result
    alt approved
        Handler->>SDK: broadcast operations (active/posting)
        SDK-->>Handler: result
        Handler->>Native: postMessage(response{request_id,result,success})
    else rejected or error
        Handler->>Native: postMessage(error{request_id,success:false})
    end
    Native->>Bridge: onAnswerReceived(response)
    Bridge->>dApp: invoke stored callback with response
    dApp->>User: deliver result
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

deploy-pr-build

Poem

🐇 A rabbit hops through webs and tabs so bright,

I stitch a Keychain bridge to sign by light,
Confirm, then broadcast with a twitch of paw,
New dApps to explore—adventures I saw.
Hooray for tabs and nets and keys tonight!

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Explore dapps' accurately summarizes the primary feature added: a new DApp browser with an Explore menu item for browsing decentralized applications.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch explore

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

coderabbitai[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

@feruzm feruzm merged commit eeb2c9a into development Apr 19, 2026
4 of 6 checks passed
@feruzm feruzm deleted the explore branch April 19, 2026 16:13
@coderabbitai coderabbitai Bot mentioned this pull request Apr 20, 2026
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