Found this while migrating an account with ~28k blobs. If you try to reload the migration page after the internet disconnects or the page reloads while blobs are being copied, you'll keep getting forced through OAuth consent for the old PDS, then landing on "Migrate blobs" forever. 🫠
handleOAuthCallback is capable of resuming the email/PLC/finalize steps, but for migrating it just calls setStep() and nothing actually restarts. On top of that, the local session never got saved before email-verify (and rotated tokens weren't saved during long copies), so there was nothing to resume with anyway.
- Resuming at
migratingnow picks the copy back up - Pulled the post-import steps into
finishMigrationso it works whether you just started the migration or you're restarting after a disconnect - Local session is saved at account creation, so re-auth after refresh should no longer be necessary
- No more dead ends. If there's nothing to resume with (import never finished, or state from an older build), you get "Start over" instead of a spinner. The offline flow had the same problem.
Tests cover the resume paths. I also ran it locally against a second PDS with ~300 blobs. I reloaded twice in the middle of the copy, it picked up both times and made it to email verification with everything copied. Same steps on main get stuck.