Skip to content

[Auth] Fix persistence issue when manually setting/using session storage #5239

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Aug 9, 2021

Conversation

sam-gc
Copy link
Contributor

@sam-gc sam-gc commented Aug 3, 2021

Fixes #5171

browserSession persistence is now added to the escalation path of getAuth() to match v8. We also now only "upgrade" the persistence if the persistence deems itself "upgradeable" (which only applies to indexedDB and localStorage)

@sam-gc sam-gc requested review from lisajian and yuchenshi August 3, 2021 20:37
@sam-gc sam-gc requested a review from avolkovi as a code owner August 3, 2021 20:37
@changeset-bot
Copy link

changeset-bot bot commented Aug 3, 2021

⚠️ No Changeset found

Latest commit: 1b7ca32

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

@github-actions
Copy link
Contributor

github-actions bot commented Aug 3, 2021

Changeset File Check ⚠️

  • Changeset formatting error in following file:
    Package "firebase-compat-typings-test" must depend on the current version of "firebase-exp": "9.0.0-beta.8" vs "file:../../packages-exp/firebase-exp"
    Package "firebase-compat-typings-test" must depend on the current version of "firebase-exp": "9.0.0-beta.8" vs "file:../../packages-exp/firebase-exp"
    Package "firebase-compat-typings-test" must depend on the current version of "firebase-exp": "9.0.0-beta.8" vs "file:../../packages-exp/firebase-exp"
    Some packages have been changed but no changesets were found. Run `changeset add` to resolve this error.
    If this change doesn't need a release, run `changeset add --empty`.
    

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Aug 3, 2021

Binary Size Report

Affected SDKs

No changes between base commit (c52eb48) and head commit (dec984e).

Test Logs

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Aug 3, 2021

Size Analysis Report

Affected Products

  • @firebase/auth-exp

    • ActionCodeURL

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.5 kB
      30.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.6 kB
      42.8 kB
      +186 B (+0.4%)
    • AuthCredential

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.7 kB
      29.9 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.6 kB
      41.8 kB
      +186 B (+0.4%)
    • EmailAuthCredential

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      31.6 kB
      31.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      43.5 kB
      43.7 kB
      +186 B (+0.4%)
    • EmailAuthProvider

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      33.0 kB
      33.2 kB
      +186 B (+0.6%)
      size-with-ext-deps
      45.1 kB
      45.3 kB
      +186 B (+0.4%)
    • FacebookAuthProvider

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.5 kB
      34.7 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.4 kB
      46.6 kB
      +186 B (+0.4%)
    • GithubAuthProvider

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.5 kB
      34.7 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.4 kB
      46.6 kB
      +186 B (+0.4%)
    • GoogleAuthProvider

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.5 kB
      34.7 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.4 kB
      46.6 kB
      +186 B (+0.4%)
    • OAuthCredential

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      31.6 kB
      31.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      43.5 kB
      43.6 kB
      +186 B (+0.4%)
    • OAuthProvider

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      35.4 kB
      35.5 kB
      +186 B (+0.5%)
      size-with-ext-deps
      47.3 kB
      47.4 kB
      +186 B (+0.4%)
    • PhoneAuthCredential

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      31.7 kB
      31.9 kB
      +186 B (+0.6%)
      size-with-ext-deps
      43.6 kB
      43.8 kB
      +186 B (+0.4%)
    • PhoneAuthProvider

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      33.4 kB
      33.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      45.3 kB
      45.5 kB
      +186 B (+0.4%)
    • PhoneMultiFactorGenerator

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.3 kB
      30.5 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.2 kB
      42.4 kB
      +186 B (+0.4%)
    • RecaptchaVerifier

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      35.8 kB
      36.0 kB
      +186 B (+0.5%)
      size-with-ext-deps
      47.7 kB
      47.9 kB
      +186 B (+0.4%)
    • SAMLAuthProvider

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      35.7 kB
      35.9 kB
      +186 B (+0.5%)
      size-with-ext-deps
      47.6 kB
      47.8 kB
      +186 B (+0.4%)
    • TwitterAuthProvider

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.5 kB
      34.7 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.4 kB
      46.6 kB
      +186 B (+0.4%)
    • applyActionCode

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.6 kB
      29.8 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.5 kB
      41.7 kB
      +186 B (+0.4%)
    • checkActionCode

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.6 kB
      30.8 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.5 kB
      42.7 kB
      +186 B (+0.4%)
    • confirmPasswordReset

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.7 kB
      29.9 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.6 kB
      41.8 kB
      +186 B (+0.4%)
    • connectAuthEmulator

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      31.2 kB
      31.3 kB
      +186 B (+0.6%)
      size-with-ext-deps
      43.0 kB
      43.2 kB
      +186 B (+0.4%)
    • createUserWithEmailAndPassword

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.6 kB
      30.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.4 kB
      42.6 kB
      +186 B (+0.4%)
    • deleteUser

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.4 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.4%)
    • fetchSignInMethodsForEmail

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.9 kB
      30.1 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.8 kB
      42.0 kB
      +186 B (+0.4%)
    • getAdditionalUserInfo

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.7 kB
      30.9 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.6 kB
      42.8 kB
      +186 B (+0.4%)
    • getAuth

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      60.9 kB
      61.1 kB
      +253 B (+0.4%)
      size-with-ext-deps
      73.1 kB
      73.4 kB
      +253 B (+0.3%)
    • getIdToken

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.5 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.4%)
    • getIdTokenResult

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.4 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.5%)
    • getMultiFactorResolver

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      32.2 kB
      32.4 kB
      +186 B (+0.6%)
      size-with-ext-deps
      44.1 kB
      44.3 kB
      +186 B (+0.4%)
    • getRedirectResult

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      37.0 kB
      37.1 kB
      +186 B (+0.5%)
      size-with-ext-deps
      48.9 kB
      49.1 kB
      +186 B (+0.4%)
    • initializeAuth

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.6 kB
      29.8 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.5 kB
      41.7 kB
      +186 B (+0.4%)
    • isSignInWithEmailLink

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.6 kB
      30.8 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.7 kB
      42.9 kB
      +186 B (+0.4%)
    • linkWithCredential

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.4 kB
      30.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.3 kB
      42.5 kB
      +186 B (+0.4%)
    • linkWithPhoneNumber

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.2 kB
      34.4 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.1 kB
      46.3 kB
      +186 B (+0.4%)
    • linkWithPopup

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      40.3 kB
      40.5 kB
      +186 B (+0.5%)
      size-with-ext-deps
      52.2 kB
      52.4 kB
      +186 B (+0.4%)
    • linkWithRedirect

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      35.5 kB
      35.7 kB
      +186 B (+0.5%)
      size-with-ext-deps
      47.4 kB
      47.6 kB
      +186 B (+0.4%)
    • multiFactor

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      31.5 kB
      31.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      43.4 kB
      43.6 kB
      +186 B (+0.4%)
    • onAuthStateChanged

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.5 kB
      29.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.4 kB
      41.5 kB
      +186 B (+0.4%)
    • onIdTokenChanged

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.5 kB
      29.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.4 kB
      41.5 kB
      +186 B (+0.4%)
    • parseActionCodeURL

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.5 kB
      30.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.7 kB
      42.9 kB
      +186 B (+0.4%)
    • reauthenticateWithCredential

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      31.0 kB
      31.2 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.9 kB
      43.1 kB
      +186 B (+0.4%)
    • reauthenticateWithPhoneNumber

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.7 kB
      34.9 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.7 kB
      46.8 kB
      +186 B (+0.4%)
    • reauthenticateWithPopup

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      40.3 kB
      40.5 kB
      +186 B (+0.5%)
      size-with-ext-deps
      52.2 kB
      52.4 kB
      +186 B (+0.4%)
    • reauthenticateWithRedirect

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      35.2 kB
      35.4 kB
      +186 B (+0.5%)
      size-with-ext-deps
      47.2 kB
      47.3 kB
      +186 B (+0.4%)
    • reload

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.4 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.5%)
    • sendEmailVerification

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.5 kB
      30.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.4 kB
      42.5 kB
      +186 B (+0.4%)
    • sendPasswordResetEmail

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.4 kB
      30.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.3 kB
      42.5 kB
      +186 B (+0.4%)
    • sendSignInLinkToEmail

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.4 kB
      30.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.3 kB
      42.5 kB
      +186 B (+0.4%)
    • setPersistence

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.5 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.4%)
    • signInAnonymously

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.7 kB
      30.9 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.6 kB
      42.8 kB
      +186 B (+0.4%)
    • signInWithCredential

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.8 kB
      31.0 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.7 kB
      42.9 kB
      +186 B (+0.4%)
    • signInWithCustomToken

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.5 kB
      30.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.4 kB
      42.6 kB
      +186 B (+0.4%)
    • signInWithEmailAndPassword

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.5 kB
      34.7 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.6 kB
      46.8 kB
      +186 B (+0.4%)
    • signInWithEmailLink

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.7 kB
      34.9 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.8 kB
      47.0 kB
      +186 B (+0.4%)
    • signInWithPhoneNumber

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.5 kB
      34.7 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.4 kB
      46.6 kB
      +186 B (+0.4%)
    • signInWithPopup

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      40.3 kB
      40.5 kB
      +186 B (+0.5%)
      size-with-ext-deps
      52.2 kB
      52.4 kB
      +186 B (+0.4%)
    • signInWithRedirect

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      35.0 kB
      35.1 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.9 kB
      47.0 kB
      +186 B (+0.4%)
    • signOut

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.4 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.5%)
    • unlink

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.0 kB
      30.2 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.9 kB
      42.1 kB
      +186 B (+0.4%)
    • updateCurrentUser

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.5 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.4 kB
      41.5 kB
      +186 B (+0.4%)
    • updateEmail

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.7 kB
      29.9 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.6 kB
      41.8 kB
      +186 B (+0.4%)
    • updatePassword

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.7 kB
      29.9 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.6 kB
      41.8 kB
      +186 B (+0.4%)
    • updatePhoneNumber

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.2 kB
      30.4 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.1 kB
      42.3 kB
      +186 B (+0.4%)
    • updateProfile

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.9 kB
      30.1 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.8 kB
      42.0 kB
      +186 B (+0.4%)
    • useDeviceLanguage

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.5 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.4%)
    • verifyBeforeUpdateEmail

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.5 kB
      30.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.4 kB
      42.6 kB
      +186 B (+0.4%)
    • verifyPasswordResetCode

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      30.7 kB
      30.9 kB
      +186 B (+0.6%)
      size-with-ext-deps
      42.6 kB
      42.8 kB
      +186 B (+0.4%)
    • ActionCodeOperation

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.7 kB
      29.8 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.5 kB
      41.7 kB
      +186 B (+0.4%)
    • AuthErrorCodes

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      34.1 kB
      34.3 kB
      +186 B (+0.5%)
      size-with-ext-deps
      46.0 kB
      46.1 kB
      +186 B (+0.4%)
    • FactorId

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.4 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.5%)
    • OperationType

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.5 kB
      29.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.4 kB
      41.6 kB
      +186 B (+0.4%)
    • ProviderId

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.5 kB
      29.7 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.4 kB
      41.6 kB
      +186 B (+0.4%)
    • SignInMethod

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.6 kB
      29.8 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.5 kB
      41.6 kB
      +186 B (+0.4%)
    • browserLocalPersistence

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      32.7 kB
      32.9 kB
      +218 B (+0.7%)
      size-with-ext-deps
      44.7 kB
      44.9 kB
      +218 B (+0.5%)
    • browserPopupRedirectResolver

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      53.3 kB
      53.5 kB
      +218 B (+0.4%)
      size-with-ext-deps
      65.4 kB
      65.6 kB
      +218 B (+0.3%)
    • browserSessionPersistence

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      32.7 kB
      32.9 kB
      +218 B (+0.7%)
      size-with-ext-deps
      44.7 kB
      44.9 kB
      +218 B (+0.5%)
    • debugErrorMap

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      40.3 kB
      40.5 kB
      +186 B (+0.5%)
      size-with-ext-deps
      52.2 kB
      52.4 kB
      +186 B (+0.4%)
    • inMemoryPersistence

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.4 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.5%)
    • indexedDBLocalPersistence

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      36.8 kB
      37.0 kB
      +218 B (+0.6%)
      size-with-ext-deps
      48.7 kB
      48.9 kB
      +218 B (+0.4%)
    • prodErrorMap

      Size Table

      TypeBase (c52eb48)Head (dec984e)Diff
      size
      29.4 kB
      29.6 kB
      +186 B (+0.6%)
      size-with-ext-deps
      41.3 kB
      41.5 kB
      +186 B (+0.5%)

@sam-gc sam-gc force-pushed the sam-gc/persistence-manager-fix branch from f52b079 to ee1420a Compare August 4, 2021 21:17
Copy link
Contributor

@lisajian lisajian left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - will defer to @yuchenshi / @avolkovi who have more context on the change! Thanks for the fix!

@lisajian lisajian assigned sam-gc and unassigned lisajian Aug 4, 2021
Copy link
Member

@yuchenshi yuchenshi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments inline. I totally understand you're trying to improve the readability here -- and in that spirit I think we should split it into different helper functions.

Step 1: Choosing the preferred persistence (the first one that is available)
Step 2: Attempting to locate the user from all persistences (return user and source persistence)
Step 3 (can stay in this function): Migration logic (a. if user is in a persistence that doesn't support migration, use that instead and skip migration, or b. migrate if different)

With that being said, I don't feel like I have the authority for TypeScript readability to block this PR any longer. Approved with comments inline -- feel free to file a bug for later cleanup.

const migrationHierarchy = persistences.filter(
p => p._shouldAllowMigration
);
chosenPersistence = migrationHierarchy[0];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if this is undefined?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed by just returning the manager if it is

if (persistence !== chosenPersistence) {
userToMigrate = user;
}
chosenPersistence = persistence;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest not assigning to chosenPersistence here since it is not the chosen persistence (but rather the persistence to migrate from). It is very confusing that chosenPersistence is then overwritten in L162 below. I'd suggest inlining _shouldAllowMigration check from below. Or just use a different variable name if you must.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renamed to "selectedPersistence" as that accurately reflects what this code is doing

@yuchenshi yuchenshi removed their assignment Aug 6, 2021
@sam-gc
Copy link
Contributor Author

sam-gc commented Aug 9, 2021

After some tinkering I think refactoring into helper functions would make this code even more complex.

@sam-gc sam-gc merged commit 8893c82 into master Aug 9, 2021
@sam-gc sam-gc deleted the sam-gc/persistence-manager-fix branch August 9, 2021 20:54
@firebase firebase locked and limited conversation to collaborators Sep 9, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

V9 Modular Authentication - browserSessionPersistence log out when refresh
4 participants