academe-kit 0.8.6 → 0.8.7

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.
package/dist/index.esm.js CHANGED
@@ -6046,7 +6046,6 @@ const AcademeAuthProvider = ({ realm, hubUrl, children, clientId, keycloakUrl, a
6046
6046
  },
6047
6047
  automaticSilentRenew: true,
6048
6048
  };
6049
- console.log("oidc ->", oidcConfig);
6050
6049
  return (jsx(AuthProvider, { ...oidcConfig, children: jsx(SecurityProvider, { hubUrl: hubUrl, apiBaseUrl: apiBaseUrl, skipApiUserFetch: skipApiUserFetch, children: children }) }));
6051
6050
  };
6052
6051
  const SecurityContext = createContext({
@@ -6095,7 +6094,7 @@ const SecurityProvider = ({ apiBaseUrl = "https://stg-api.academe.com.br", skipA
6095
6094
  const isAuthenticated = auth.isAuthenticated || !!accessToken;
6096
6095
  const isLoading = auth.isLoading;
6097
6096
  const activeNavigator = auth.activeNavigator;
6098
- const userProfile = auth.user?.profile;
6097
+ auth.user?.profile;
6099
6098
  const currentTokenRef = useRef(undefined);
6100
6099
  // Efeito para sincronizar o token do auth com o state
6101
6100
  // e também verificar cookies periodicamente
@@ -6203,15 +6202,14 @@ const SecurityProvider = ({ apiBaseUrl = "https://stg-api.academe.com.br", skipA
6203
6202
  }
6204
6203
  }, [accessToken, isLoading, isAuthenticated]);
6205
6204
  const getKeycloakUser = useCallback(() => {
6206
- const profile = userProfile;
6207
6205
  return {
6208
- email: profile?.email || decodedAccessToken?.email || "",
6209
- name: profile?.given_name || decodedAccessToken?.given_name || "",
6210
- lastName: profile?.family_name || decodedAccessToken?.family_name || "",
6206
+ email: decodedAccessToken?.email || "",
6207
+ name: decodedAccessToken?.given_name || "",
6208
+ lastName: decodedAccessToken?.family_name || "",
6211
6209
  avatar_url: decodedAccessToken?.avatar_url,
6212
6210
  tm_token: decodedAccessToken?.tm_token,
6213
6211
  };
6214
- }, [userProfile, decodedAccessToken]);
6212
+ }, [decodedAccessToken]);
6215
6213
  const hasRealmRole = useCallback((role) => {
6216
6214
  return decodedAccessToken?.realm_access?.roles?.includes(role) ?? false;
6217
6215
  }, [decodedAccessToken]);
@@ -6227,51 +6225,50 @@ const SecurityProvider = ({ apiBaseUrl = "https://stg-api.academe.com.br", skipA
6227
6225
  return Object.values(decodedAccessToken.resource_access).some((resource) => resource.roles?.includes(role));
6228
6226
  }, [decodedAccessToken]);
6229
6227
  // --- 4. Fetch de Dados do Usuário (Backend) ---
6230
- useEffect(() => {
6231
- let isMounted = true;
6232
- const fetchUserData = async () => {
6233
- if (isAuthenticated) {
6234
- if (skipApiUserFetch) {
6235
- if (isMounted) {
6236
- const academeUser = {
6237
- keycloakUser: getKeycloakUser(),
6238
- };
6239
- setCurrentUser({ ...academeUser, id: userProfileSub || "" });
6240
- }
6241
- return;
6242
- }
6243
- try {
6244
- const response = await services.user.getMe();
6245
- if (isMounted && response?.data?.data) {
6246
- const academeUser = {
6247
- ...response.data.data,
6248
- keycloakUser: getKeycloakUser(),
6249
- };
6250
- setCurrentUser(academeUser);
6251
- }
6252
- }
6253
- catch (error) {
6254
- console.error("[SecurityProvider] Error fetching user data:", error);
6255
- }
6228
+ // Refs para controlar fetch sem depender de useEffect (componente pode desmontar antes dos efeitos executarem)
6229
+ const hasFetchedUserRef = useRef(false);
6230
+ const isFetchingUserRef = useRef(false);
6231
+ if (!isAuthenticated) {
6232
+ hasFetchedUserRef.current = false;
6233
+ }
6234
+ if (isAuthenticated &&
6235
+ !hasFetchedUserRef.current &&
6236
+ !isFetchingUserRef.current) {
6237
+ if (skipApiUserFetch) {
6238
+ if (decodedAccessToken) {
6239
+ hasFetchedUserRef.current = true;
6240
+ const academeUser = {
6241
+ keycloakUser: getKeycloakUser(),
6242
+ };
6243
+ setCurrentUser({ ...academeUser, id: userProfileSub || "" });
6256
6244
  }
6257
- else if (!isAuthenticated && !isLoading) {
6258
- if (isMounted) {
6259
- setCurrentUser(null);
6245
+ }
6246
+ else {
6247
+ hasFetchedUserRef.current = true;
6248
+ isFetchingUserRef.current = true;
6249
+ services.user
6250
+ .getMe()
6251
+ .then((response) => {
6252
+ if (response?.data?.data) {
6253
+ const academeUser = {
6254
+ ...response.data.data,
6255
+ keycloakUser: getKeycloakUser(),
6256
+ };
6257
+ setCurrentUser(academeUser);
6260
6258
  }
6261
- }
6262
- };
6263
- fetchUserData();
6264
- return () => {
6265
- isMounted = false;
6266
- };
6267
- }, [
6268
- isAuthenticated,
6269
- isLoading,
6270
- getKeycloakUser,
6271
- services,
6272
- skipApiUserFetch,
6273
- userProfileSub,
6274
- ]);
6259
+ })
6260
+ .catch((error) => {
6261
+ console.error("[SecurityProvider] Error fetching user data:", error);
6262
+ hasFetchedUserRef.current = false;
6263
+ })
6264
+ .finally(() => {
6265
+ isFetchingUserRef.current = false;
6266
+ });
6267
+ }
6268
+ }
6269
+ if (!isAuthenticated && !isLoading && currentUser !== null) {
6270
+ setCurrentUser(null);
6271
+ }
6275
6272
  const refreshUserData = useCallback(async () => {
6276
6273
  setIsRefreshing(true);
6277
6274
  if (isAuthenticated) {