svelte-firekit 0.0.9 → 0.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -46,7 +46,8 @@ export class FirekitAuthGuard {
46
46
  try {
47
47
  this._loading = true;
48
48
  this._error = null;
49
- const isAuthenticated = $derived(firekitUser.isLoggedIn);
49
+ await firekitUser.waitForInit();
50
+ const isAuthenticated = firekitUser.isLoggedIn;
50
51
  if (authRequired && !isAuthenticated) {
51
52
  await this.handleRedirect(redirectTo, {
52
53
  ...redirectParams,
@@ -21,6 +21,7 @@ export declare class FirekitUser {
21
21
  private _user;
22
22
  private _userData;
23
23
  private _claims;
24
+ private _initialized;
24
25
  readonly isLoggedIn: boolean;
25
26
  readonly uid: string | undefined;
26
27
  readonly email: string | null | undefined;
@@ -29,7 +30,10 @@ export declare class FirekitUser {
29
30
  readonly emailVerified: boolean | undefined;
30
31
  readonly claims: UserClaims;
31
32
  readonly data: UserData | null;
33
+ private _initPromise;
32
34
  constructor();
35
+ private initialize;
36
+ waitForInit(): Promise<void>;
33
37
  static getInstance(): FirekitUser;
34
38
  private loadUserData;
35
39
  private loadUserClaims;
@@ -1,3 +1,4 @@
1
+ import { browser } from '$app/environment';
1
2
  import { firebaseService } from '../firebase.js';
2
3
  import { onAuthStateChanged, updateCurrentUser, updateEmail, updatePassword } from "firebase/auth";
3
4
  import { doc, getDoc, setDoc, updateDoc } from 'firebase/firestore';
@@ -6,6 +7,7 @@ export class FirekitUser {
6
7
  _user = $state();
7
8
  _userData = $state(null);
8
9
  _claims = $state({});
10
+ _initialized = $state(false);
9
11
  isLoggedIn = $derived(Boolean(this._user));
10
12
  uid = $derived(this._user?.uid);
11
13
  email = $derived(this._user?.email);
@@ -14,21 +16,38 @@ export class FirekitUser {
14
16
  emailVerified = $derived(this._user?.emailVerified);
15
17
  claims = $derived(this._claims);
16
18
  data = $derived(this._userData);
19
+ _initPromise = null;
17
20
  constructor() {
18
- onAuthStateChanged(firebaseService.getAuthInstance(), async (user) => {
19
- this._user = user;
20
- if (user) {
21
- await Promise.all([
22
- this.loadUserData(),
23
- this.loadUserClaims()
24
- ]);
25
- }
26
- else {
27
- this._userData = null;
28
- this._claims = {};
29
- }
21
+ if (browser) { // Add this check
22
+ this.initialize();
23
+ }
24
+ }
25
+ async initialize() {
26
+ if (this._initialized)
27
+ return;
28
+ return new Promise((resolve) => {
29
+ onAuthStateChanged(firebaseService.getAuthInstance(), async (user) => {
30
+ this._user = user;
31
+ if (user) {
32
+ await Promise.all([
33
+ this.loadUserData(),
34
+ this.loadUserClaims()
35
+ ]);
36
+ }
37
+ else {
38
+ this._userData = null;
39
+ this._claims = {};
40
+ }
41
+ this._initialized = true;
42
+ resolve();
43
+ });
30
44
  });
31
45
  }
46
+ async waitForInit() {
47
+ if (this._initialized)
48
+ return;
49
+ return this._initPromise || Promise.resolve();
50
+ }
32
51
  static getInstance() {
33
52
  if (!FirekitUser.instance) {
34
53
  FirekitUser.instance = new FirekitUser();
@@ -112,4 +131,4 @@ export class FirekitUser {
112
131
  return Boolean(this._claims.premium);
113
132
  }
114
133
  }
115
- export const firekitUser = new FirekitUser();
134
+ export const firekitUser = FirekitUser.getInstance();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte-firekit",
3
- "version": "0.0.9",
3
+ "version": "0.0.10",
4
4
  "license": "MIT",
5
5
  "scripts": {
6
6
  "dev": "vite dev",