angular / angularfire

Angular + Firebase = ❤️
https://firebaseopensource.com/projects/angular/angularfire2
MIT License
7.69k stars 2.19k forks source link

Setting Persistence Doesn't Work #3131

Open flauc opened 2 years ago

flauc commented 2 years ago

Currently running setPersistence with any Persistence breaks. I was able to work around this by just importing setPersistence from @firebase/auth instead of @angular/fire/auth.

Version info

Angular: 13.1.3

Firebase: 9.6.4

AngularFire: 7.2.0

Other (e.g. Ionic/Cordova, Node, browser, operating system): Node 17.x; OS Windows 11; Browser Chrome;

How to reproduce these conditions

Try setting persistance:

setPersistence(this.auth, browserSessionPersistence).catch(console.error);

Debug output

TypeError: Class constructor BrowserSessionPersistence cannot be invoked without 'new'
    at angular-fire.js:206:29
    at angular-fire.js:163:45
    at ZoneDelegate.invoke (zone.js:372:1)
    at Object.onInvoke (core.mjs:25457:1)
    at ZoneDelegate.invoke (zone.js:371:1)
    at Zone.run (zone.js:134:1)
    at NgZone.run (core.mjs:25311:1)
    at run (angular-fire.js:163:35)
    at new <anonymous> (angular-fire.js:206:16)
    at _getInstance (index-bc414788.js:535:16)

Expected behavior

Setting persistence works.

Actual behavior

Setting persistence doesn't work.

vandres commented 2 years ago

This is related with issue #3038

Idomo commented 2 years ago

I was able to workaround this with import { setPersistence } from '@firebase/auth' only, browserSessionPersistence can be imported from @angular/fire/auth.

Sapython commented 2 years ago

Check this pull request it has new docs in that I have added how to use persistence correctly #3174

romanhuba commented 2 years ago

Settings persistence in this way is correct, the issue is that it does not work if the function is imported from @angular/fire/auth.

@jamesdaniels any ideas?

IvanColucciSW commented 1 year ago

Anyone has managed to solve this issue? I'm facing it right now and it's so annoying

TechieWithBeard commented 8 months ago

this is the correct format this.auth.setPersistence(browserLocalPersistence).then(e=>{ ...... .... })

mcdalir commented 5 months ago

this is the correct format this.auth.setPersistence(browserLocalPersistence).then(e=>{ ...... .... })

It worked for me, thanks