@firecms/user_management 3.0.0-canary.37 → 3.0.0-canary.39

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.
@@ -1,18 +1,17 @@
1
- import React, { useCallback, useEffect, useRef } from "react";
1
+ import React, { useCallback, useEffect } from "react";
2
2
  import {
3
3
  addDoc,
4
4
  collection,
5
5
  deleteDoc,
6
6
  doc,
7
7
  DocumentSnapshot,
8
- Firestore,
9
8
  getFirestore,
10
9
  onSnapshot,
11
10
  setDoc
12
11
  } from "firebase/firestore";
13
12
  import { FirebaseApp } from "firebase/app";
14
13
  import { UserManagement } from "../types";
15
- import { Authenticator, PermissionsBuilder, Role, User } from "@firecms/core";
14
+ import { Authenticator, PermissionsBuilder, Role, User, useTraceUpdate } from "@firecms/core";
16
15
  import { resolveUserRolePermissions } from "../utils";
17
16
 
18
17
  type UserWithRoleIds = User & { roles: string[] };
@@ -73,8 +72,6 @@ export function useBuildFirestoreUserManagement({
73
72
  includeCollectionConfigPermissions
74
73
  }: UserManagementParams): UserManagement {
75
74
 
76
- const firestoreRef = useRef<Firestore>();
77
-
78
75
  const [rolesLoading, setRolesLoading] = React.useState<boolean>(true);
79
76
  const [usersLoading, setUsersLoading] = React.useState<boolean>(true);
80
77
  const [roles, setRoles] = React.useState<Role[]>([]);
@@ -90,11 +87,6 @@ export function useBuildFirestoreUserManagement({
90
87
 
91
88
  const loading = rolesLoading || usersLoading;
92
89
 
93
- useEffect(() => {
94
- if (!firebaseApp) return;
95
- firestoreRef.current = getFirestore(firebaseApp);
96
- }, [firebaseApp]);
97
-
98
90
  useEffect(() => {
99
91
  if (!firebaseApp || !rolesPath) return;
100
92
  const firestore = getFirestore(firebaseApp);
@@ -145,7 +137,8 @@ export function useBuildFirestoreUserManagement({
145
137
  }, [firebaseApp, usersPath]);
146
138
 
147
139
  const saveUser = useCallback(async (user: User): Promise<User> => {
148
- const firestore = firestoreRef.current;
140
+ if (!firebaseApp) throw Error("useFirestoreConfigurationPersistence Firebase not initialised");
141
+ const firestore = getFirestore(firebaseApp);
149
142
  if (!firestore || !usersPath) throw Error("useFirestoreConfigurationPersistence Firestore not initialised");
150
143
  console.debug("Persisting user", user);
151
144
  const roleIds = user.roles?.map(r => r.id);
@@ -165,7 +158,8 @@ export function useBuildFirestoreUserManagement({
165
158
  }, [usersPath]);
166
159
 
167
160
  const saveRole = useCallback((role: Role): Promise<void> => {
168
- const firestore = firestoreRef.current;
161
+ if (!firebaseApp) throw Error("useFirestoreConfigurationPersistence Firebase not initialised");
162
+ const firestore = getFirestore(firebaseApp);
169
163
  if (!firestore || !rolesPath) throw Error("useFirestoreConfigurationPersistence Firestore not initialised");
170
164
  console.debug("Persisting role", role);
171
165
  const {
@@ -177,7 +171,8 @@ export function useBuildFirestoreUserManagement({
177
171
  }, [rolesPath]);
178
172
 
179
173
  const deleteUser = useCallback(async (user: User): Promise<void> => {
180
- const firestore = firestoreRef.current;
174
+ if (!firebaseApp) throw Error("useFirestoreConfigurationPersistence Firebase not initialised");
175
+ const firestore = getFirestore(firebaseApp);
181
176
  if (!firestore || !usersPath) throw Error("useFirestoreConfigurationPersistence Firestore not initialised");
182
177
  console.debug("Deleting", user);
183
178
  const { uid } = user;
@@ -185,7 +180,8 @@ export function useBuildFirestoreUserManagement({
185
180
  }, [usersPath]);
186
181
 
187
182
  const deleteRole = useCallback((role: Role): Promise<void> => {
188
- const firestore = firestoreRef.current;
183
+ if (!firebaseApp) throw Error("useFirestoreConfigurationPersistence Firebase not initialised");
184
+ const firestore = getFirestore(firebaseApp);
189
185
  if (!firestore || !rolesPath) throw Error("useFirestoreConfigurationPersistence Firestore not initialised");
190
186
  console.debug("Deleting", role);
191
187
  const { id } = role;
@@ -230,7 +226,7 @@ export function useBuildFirestoreUserManagement({
230
226
  }
231
227
 
232
228
  throw Error("Could not find a user with the provided email");
233
- }, [loading, users])
229
+ }, [loading, userIds])
234
230
 
235
231
  return {
236
232
  loading,