Skip to content

fix: deep link to world redirects to Genesis after account change#8848

Draft
Maurizio-dcl wants to merge 2 commits into
devfrom
fix/8802-deep-link-into-a-world-takes-to-genesis-city-instead
Draft

fix: deep link to world redirects to Genesis after account change#8848
Maurizio-dcl wants to merge 2 commits into
devfrom
fix/8802-deep-link-into-a-world-takes-to-genesis-city-instead

Conversation

@Maurizio-dcl
Copy link
Copy Markdown
Contributor

@Maurizio-dcl Maurizio-dcl commented May 21, 2026

Pull Request Description

Fix #8802

What does this PR change?

This PR moves the world access check from bootstrap to post-auth in the loading flow, this fixes a bug where changing accounts would lead to an inconsistent state regarding world permission since they were checked only against the initial identity.

Moved world access check from bootstrap to post-auth in the loading flow, so it runs against the identity the user actually picked (rather than the cached one).
Removed the now-dead IsUserAuthorisedToAccessWorldAsync from IRealmController.

Test Instructions

Prerequisites

  • Launch this PR's build with --realm=italy2026.dcl.eth --position 20,20 args.
  • Two accounts available: one with access to italy2026.dcl.eth, one without (can be tested with any world to which at least one of your accounts have access).

Test Steps

  1. Primary repro (cached account has NO access, switch to one that does):

    • Make sure the cached account does NOT have access to the target restricted world
    • Open the client via deep link to the restricted world
    • On the auth screen, click "Change Account" and log in with the account that DOES have access
    • Click "Enter Decentraland"
    • Expected: lands in the world (no Genesis fallback)
  2. Reverse case (cached account HAS access, switch to one that doesn't):

    • Cached account has access to the restricted world
    • Open the client via deep link to that world
    • On the auth screen, change to an account without access
    • Click "Enter Decentraland"
    • Expected: loading screen shows, then the user is sent to Genesis with a chat message "Could not enter '' due to world permissions. You were sent to Genesis Plaza."
  3. Direct entry regression:

    • Cached account has access → deep link to that world → enter without switching accounts
    • Expected: lands in the world at the deep-linked coordinates
  4. Public world:

    • Deep link to a public/unrestricted world → enter with any account
    • Expected: lands in the world
  5. Normal launch (no deep link):

    • Expected: goes to home/Genesis as usual

Quality Checklist

  • Changes have been tested locally
  • Documentation has been updated (if required)
  • Performance impact has been considered
  • For SDK features: Test scene is included

- Moved world access check from bootstrap to post-auth in the loading flow, so it runs against the identity the user actually picked (rather than
  the cached one). Remove the now-dead IsUserAuthorisedToAccessWorldAsync
  from IRealmController.
@Maurizio-dcl Maurizio-dcl self-assigned this May 21, 2026
@Maurizio-dcl Maurizio-dcl added the force-build Used to trigger a build on draft PR label May 21, 2026
@m3taphysics
Copy link
Copy Markdown
Collaborator

PR #8848, run #26229701217

Builds: Windows change, Windows baseline, macOS change, macOS baseline

Framework 13 i7

Metric Change Baseline Delta Improvement
Samples 2700 2700
CPU average 33.3 ms 33.3 ms 0.0 ms -0.0%
CPU 1% worst 33.6 ms 33.5 ms 0.1 ms -0.3%
CPU 0.1% worst 35.6 ms 34.5 ms 1.1 ms -3.3% 🔴
GPU average 7.9 ms 8.1 ms -0.1 ms 1.7%
GPU 1% worst 19.2 ms 19.6 ms -0.4 ms 2.1%
GPU 0.1% worst 25.2 ms 26.3 ms -1.0 ms 4.0% 🟢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

force-build Used to trigger a build on draft PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deep link into a world takes to Genesis City instead

2 participants