Skip to content

feat(mobile): manager mode behind mobile_manager_mode flag - #14756

Merged
dylanjeffers merged 1 commit into
mainfrom
feat/mobile-manager-mode
Nov 7, 2026
Merged

dylanjeffers merged 1 commit into
mainfrom
feat/mobile-manager-mode

Conversation

@dylanjeffers

@dylanjeffers dylanjeffers commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Brings manager mode to mobile. Managers can switch into accounts they manage, and artists can invite and remove managers, without going to web.

Gated by the new mobile_manager_mode flag (default off in prod, on in dev). The flag only hides the entry points. Switching back and the manager-mode restrictions stay on regardless, so turning the flag off can't strand someone inside another account.

Changes

Switching

  • AppContext gets an optional reloadApp. Mobile passes RNRestart.Restart(), and useAccountSwitcher uses it instead of window.location.reload(). Web is unchanged.
  • Left nav: a switch button opens a new AccountSwitcher drawer listing your account plus the managed accounts you've approved.
  • On launch, if access to the managed account was revoked, the app switches back to the signed-in user (same check web does).

While managing an account

  • "Managed Account" strip in the left nav and an accent ring on the header avatar.
  • DM screens (ChatList, Chat, ChatUserList) render a "not available" screen with a "Switch to My Account" button. The Messages nav item, share-to-DM and the profile message button are hidden.
  • Blocked: premium purchase drawer (closes with a toast), buy/sell from the wallet, sending coins from a profile.
  • Account settings hides recovery email, email verification, identity verification, change email, change password and delete account. Settings hides Inbox Settings. Delete account is hidden because web doesn't expose it from settings, and a manager shouldn't delete the artist from a screen labeled as their own account.

Settings screens (ported from the web modals)

  • Accounts Managing You: list, invite, cancel invite, remove.
  • Find Account Manager: user search and confirm drawer.
  • Accounts You Manage: accept or decline invites, switch to the account, stop managing.
  • /settings/accounts-you-manage and /settings/managing-you open these screens when the flag is on. Otherwise the old "Available on web" drawer still shows. RequestManager and ApproveManagerRequest notifications open them too.

Testing

Tested on an iOS 26.5 simulator with a Release build and a swapped JS bundle:

  • New settings rows, both screens (empty states), user search, and the confirm drawer (Cancel only; confirmed via the API that no grant was created).
  • Deep link to Accounts You Manage.
  • With useIsManagedAccount temporarily forced true: the Managed Account strip, the avatar ring, the switcher drawer, and hidden Messages, Inbox Settings and account credential rows.

Fixed during testing: drawers rendered under the floating tab bar (now portaled to DrawerPortal), and the keyboard covered the confirm drawer.

Android (API 36 emulator, debug APK on this branch's JS):

  • Settings rows, Accounts Managing You, user search, and the confirm drawer (Cancel only; still no grant on the API).
  • With manager mode faked: the Managed Account strip, the switch button and the avatar ring. With the Messages link temporarily unhidden, the DM "not available" screen renders, and "Switch to My Account" restarts the JS and reloads the signed-in account with no errors. That exercises the RNRestart path.

Not tested:

  • A real switch into a managed account and acting as it. The test account has no grants.

Typecheck and lint pass for mobile and web. Common has one existing test-file error that's also on main.

🤖 Generated with Claude Code

Managers can switch into accounts they manage from the left nav, and
artists can invite and remove managers from Settings. Account switching
restarts the app through a new optional AppContext.reloadApp; web keeps
its page reload.

While managing an account the app shows a Managed Account strip and an
accented header avatar, and blocks DMs, purchases, buy/sell, sending
coins, and the email, password, verification and delete account rows.
The flag only gates the entry points, so switching back and the
restrictions keep working if it is turned off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@changeset-bot

changeset-bot Bot commented Nov 7, 2026

Copy link
Copy Markdown

⚠️ No Changeset found

Latest commit: a3676d2

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@dylanjeffers
dylanjeffers merged commit 67ae4e5 into main Nov 7, 2026
27 checks passed
@dylanjeffers
dylanjeffers deleted the feat/mobile-manager-mode branch November 7, 2026 23:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant