mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 16:14:40 +00:00
A Buzz workspace invite (`https://<host>/invite/<token>`) is redeemed over HTTP, and the Buzz web app already drives that flow (policy consent + NIP-98 claim) through `window.nostr`. Amethyst's existing in-app browser (NappletBrowserActivity via FavoriteAppLauncher.launchUrl) injects an origin-scoped window.nostr backed by the user's signer into any https origin — so routing Buzz invites there lets the SPA claim membership as the user's key, with no native re-implementation of the consent UI. Mirrors the Concord invite intercept, at all three entry points, keeping every other link external by default: - Deep link: AndroidManifest intent-filter for *.communities.buzz.xyz/invite/ + a `buzzInviteRoute()` branch in MainActivity.uriToRoute. - Tapped in-content link: a BuzzInviteLinkSegment classified in RichTextParser (commons) + a ClickableBuzzInviteLink that routes to Route.BuzzInvite. - Search bar: a branch in SearchBarViewModel.directRouteResolver. Route.BuzzInvite → BuzzInviteScreen confirms the workspace (host + role parsed by the quartz BuzzInviteLink), marks its relay as a Buzz dialect, and opens the in-app browser at the invite URL to finish joining. The matcher is host-agnostic (BuzzInviteLink.parse), so self-hosted Buzz invites intercept via tap/search even without a manifest filter. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J8KBSw6smQRyXLiWHeDsZ8