@cupcodev/ui 1.2.51 → 1.2.53

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.cjs CHANGED
@@ -22563,8 +22563,22 @@ var buildHandle2 = (value, email, fallbackId) => {
22563
22563
  var resolveCurrentUserId = (user) => {
22564
22564
  const sub = toStringOrUndefined(user == null ? void 0 : user.sub);
22565
22565
  if (sub) return sub;
22566
+ const id = toStringOrUndefined(user == null ? void 0 : user.id);
22567
+ if (id) return id;
22568
+ const userId = toStringOrUndefined(user == null ? void 0 : user.userId);
22569
+ if (userId) return userId;
22566
22570
  return null;
22567
22571
  };
22572
+ var resolveUserIdFromClaims = (claims) => {
22573
+ var _a65, _b5, _c, _d, _e;
22574
+ return (_e = (_d = (_c = (_b5 = (_a65 = toStringOrUndefined(claims.sub)) != null ? _a65 : toStringOrUndefined(claims.user_id)) != null ? _b5 : toStringOrUndefined(claims.userId)) != null ? _c : toStringOrUndefined(claims.uid)) != null ? _d : toStringOrUndefined(claims.id)) != null ? _e : toStringOrUndefined(claims["https://cupcode.com/user_id"]);
22575
+ };
22576
+ var resolveEmailFromClaims = (claims) => {
22577
+ var _a65, _b5;
22578
+ const candidate = (_b5 = (_a65 = toStringOrUndefined(claims.email)) != null ? _a65 : toStringOrUndefined(claims["https://cupcode.com/email"])) != null ? _b5 : toStringOrUndefined(claims.preferred_username);
22579
+ if (!candidate || !candidate.includes("@")) return void 0;
22580
+ return candidate.toLowerCase();
22581
+ };
22568
22582
  var formatMessageTime = (rawTimestamp) => {
22569
22583
  if (!rawTimestamp) return "";
22570
22584
  const parsed = new Date(rawTimestamp);
@@ -22846,6 +22860,8 @@ var MainNavbar = ({
22846
22860
  const [isChatSending, setIsChatSending] = (0, import_react19.useState)(false);
22847
22861
  const [chatError, setChatError] = (0, import_react19.useState)(null);
22848
22862
  const [resolvedSenderId, setResolvedSenderId] = (0, import_react19.useState)(null);
22863
+ const [tokenDerivedUserId, setTokenDerivedUserId] = (0, import_react19.useState)(null);
22864
+ const [tokenDerivedEmail, setTokenDerivedEmail] = (0, import_react19.useState)(void 0);
22849
22865
  const [persistedProfileAvatarValue, setPersistedProfileAvatarValue] = (0, import_react19.useState)(void 0);
22850
22866
  const [accountsLanguage, setAccountsLanguage] = (0, import_react19.useState)("pt-BR");
22851
22867
  const [accountsRecentActivity, setAccountsRecentActivity] = (0, import_react19.useState)([]);
@@ -22865,8 +22881,17 @@ var MainNavbar = ({
22865
22881
  if (typeof window !== "undefined") return window.location.pathname || "/";
22866
22882
  return "/";
22867
22883
  }, [pathname]);
22868
- const currentUserId = (0, import_react19.useMemo)(() => resolveCurrentUserId(authUser), [authUser]);
22869
- const authEmail = (0, import_react19.useMemo)(() => toStringOrUndefined(authUser == null ? void 0 : authUser.email), [authUser == null ? void 0 : authUser.email]);
22884
+ const currentUserId = (0, import_react19.useMemo)(() => {
22885
+ var _a66;
22886
+ return (_a66 = resolveCurrentUserId(authUser)) != null ? _a66 : tokenDerivedUserId;
22887
+ }, [authUser, tokenDerivedUserId]);
22888
+ const authEmail = (0, import_react19.useMemo)(
22889
+ () => {
22890
+ var _a66, _b6;
22891
+ return (_b6 = (_a66 = toStringOrUndefined(authUser == null ? void 0 : authUser.email)) == null ? void 0 : _a66.toLowerCase()) != null ? _b6 : tokenDerivedEmail;
22892
+ },
22893
+ [authUser == null ? void 0 : authUser.email, tokenDerivedEmail]
22894
+ );
22870
22895
  const isChatSuperAdmin = (0, import_react19.useMemo)(() => {
22871
22896
  var _a66, _b6;
22872
22897
  const roleTokens = `${(_a66 = authUser == null ? void 0 : authUser.role) != null ? _a66 : ""} ${(_b6 = authUser == null ? void 0 : authUser.jobTitle) != null ? _b6 : ""}`.toLowerCase();
@@ -22880,14 +22905,77 @@ var MainNavbar = ({
22880
22905
  }, []);
22881
22906
  const resolvedProfileAvatarUrl = (_b5 = (_a65 = resolveChatAvatarUrl(persistedProfileAvatarValue)) != null ? _a65 : authUser == null ? void 0 : authUser.picture) != null ? _b5 : void 0;
22882
22907
  const effectiveCurrentUserId = resolvedSenderId != null ? resolvedSenderId : currentUserId;
22908
+ const hasStoredAccessToken = (() => {
22909
+ if (typeof window === "undefined") return false;
22910
+ try {
22911
+ return Boolean(sessionStorage.getItem(ACCESS_TOKEN_STORAGE_KEY));
22912
+ } catch (e) {
22913
+ return false;
22914
+ }
22915
+ })();
22883
22916
  const resolvedAuthStatus = (0, import_react19.useMemo)(() => {
22884
22917
  if (authStatus) return authStatus;
22885
- if ((authUser == null ? void 0 : authUser.sub) || (authUser == null ? void 0 : authUser.email)) {
22918
+ if ((authUser == null ? void 0 : authUser.sub) || (authUser == null ? void 0 : authUser.id) || (authUser == null ? void 0 : authUser.userId) || (authUser == null ? void 0 : authUser.email)) {
22919
+ return "authenticated";
22920
+ }
22921
+ if (tokenDerivedUserId || tokenDerivedEmail || hasStoredAccessToken) {
22886
22922
  return "authenticated";
22887
22923
  }
22888
22924
  return "unauthenticated";
22889
- }, [authStatus, authUser == null ? void 0 : authUser.email, authUser == null ? void 0 : authUser.sub]);
22925
+ }, [
22926
+ authStatus,
22927
+ authUser == null ? void 0 : authUser.email,
22928
+ authUser == null ? void 0 : authUser.id,
22929
+ authUser == null ? void 0 : authUser.sub,
22930
+ authUser == null ? void 0 : authUser.userId,
22931
+ hasStoredAccessToken,
22932
+ tokenDerivedEmail,
22933
+ tokenDerivedUserId
22934
+ ]);
22890
22935
  const isAuthenticated = resolvedAuthStatus === "authenticated";
22936
+ (0, import_react19.useEffect)(() => {
22937
+ if (authStatus === "unauthenticated") {
22938
+ setTokenDerivedUserId(null);
22939
+ setTokenDerivedEmail(void 0);
22940
+ return;
22941
+ }
22942
+ let canceled = false;
22943
+ const resolveIdentityFromToken = async () => {
22944
+ var _a66, _b6;
22945
+ try {
22946
+ let token = null;
22947
+ if (typeof window !== "undefined") {
22948
+ try {
22949
+ token = sessionStorage.getItem(ACCESS_TOKEN_STORAGE_KEY);
22950
+ } catch (e) {
22951
+ token = null;
22952
+ }
22953
+ }
22954
+ if (!token && getAccessToken) {
22955
+ token = await getAccessToken();
22956
+ }
22957
+ if (!token) {
22958
+ if (!canceled) {
22959
+ setTokenDerivedUserId(null);
22960
+ setTokenDerivedEmail(void 0);
22961
+ }
22962
+ return;
22963
+ }
22964
+ const claims = (_a66 = decodeJwt(token)) != null ? _a66 : {};
22965
+ if (canceled) return;
22966
+ setTokenDerivedUserId((_b6 = resolveUserIdFromClaims(claims)) != null ? _b6 : null);
22967
+ setTokenDerivedEmail(resolveEmailFromClaims(claims));
22968
+ } catch (error) {
22969
+ if (isRuntimeDev()) {
22970
+ console.warn("[chat] Falha ao resolver identidade via access token:", error.message);
22971
+ }
22972
+ }
22973
+ };
22974
+ void resolveIdentityFromToken();
22975
+ return () => {
22976
+ canceled = true;
22977
+ };
22978
+ }, [authStatus, getAccessToken]);
22891
22979
  (0, import_react19.useEffect)(() => {
22892
22980
  if (!isAuthenticated) {
22893
22981
  setResolvedSenderId(null);
package/dist/index.d.cts CHANGED
@@ -442,6 +442,8 @@ declare const UserMenuCupcode: React.FC<UserMenuCupcodeProps>;
442
442
  type MainNavbarAuthStatus = "loading" | "authenticated" | "unauthenticated";
443
443
  type MainNavbarAuthUser = {
444
444
  sub?: string;
445
+ id?: string;
446
+ userId?: string;
445
447
  name?: string;
446
448
  email?: string;
447
449
  picture?: string;
package/dist/index.d.ts CHANGED
@@ -442,6 +442,8 @@ declare const UserMenuCupcode: React.FC<UserMenuCupcodeProps>;
442
442
  type MainNavbarAuthStatus = "loading" | "authenticated" | "unauthenticated";
443
443
  type MainNavbarAuthUser = {
444
444
  sub?: string;
445
+ id?: string;
446
+ userId?: string;
445
447
  name?: string;
446
448
  email?: string;
447
449
  picture?: string;
package/dist/index.js CHANGED
@@ -22222,8 +22222,22 @@ var buildHandle2 = (value, email, fallbackId) => {
22222
22222
  var resolveCurrentUserId = (user) => {
22223
22223
  const sub = toStringOrUndefined(user == null ? void 0 : user.sub);
22224
22224
  if (sub) return sub;
22225
+ const id = toStringOrUndefined(user == null ? void 0 : user.id);
22226
+ if (id) return id;
22227
+ const userId = toStringOrUndefined(user == null ? void 0 : user.userId);
22228
+ if (userId) return userId;
22225
22229
  return null;
22226
22230
  };
22231
+ var resolveUserIdFromClaims = (claims) => {
22232
+ var _a65, _b5, _c, _d, _e;
22233
+ return (_e = (_d = (_c = (_b5 = (_a65 = toStringOrUndefined(claims.sub)) != null ? _a65 : toStringOrUndefined(claims.user_id)) != null ? _b5 : toStringOrUndefined(claims.userId)) != null ? _c : toStringOrUndefined(claims.uid)) != null ? _d : toStringOrUndefined(claims.id)) != null ? _e : toStringOrUndefined(claims["https://cupcode.com/user_id"]);
22234
+ };
22235
+ var resolveEmailFromClaims = (claims) => {
22236
+ var _a65, _b5;
22237
+ const candidate = (_b5 = (_a65 = toStringOrUndefined(claims.email)) != null ? _a65 : toStringOrUndefined(claims["https://cupcode.com/email"])) != null ? _b5 : toStringOrUndefined(claims.preferred_username);
22238
+ if (!candidate || !candidate.includes("@")) return void 0;
22239
+ return candidate.toLowerCase();
22240
+ };
22227
22241
  var formatMessageTime = (rawTimestamp) => {
22228
22242
  if (!rawTimestamp) return "";
22229
22243
  const parsed = new Date(rawTimestamp);
@@ -22505,6 +22519,8 @@ var MainNavbar = ({
22505
22519
  const [isChatSending, setIsChatSending] = useState13(false);
22506
22520
  const [chatError, setChatError] = useState13(null);
22507
22521
  const [resolvedSenderId, setResolvedSenderId] = useState13(null);
22522
+ const [tokenDerivedUserId, setTokenDerivedUserId] = useState13(null);
22523
+ const [tokenDerivedEmail, setTokenDerivedEmail] = useState13(void 0);
22508
22524
  const [persistedProfileAvatarValue, setPersistedProfileAvatarValue] = useState13(void 0);
22509
22525
  const [accountsLanguage, setAccountsLanguage] = useState13("pt-BR");
22510
22526
  const [accountsRecentActivity, setAccountsRecentActivity] = useState13([]);
@@ -22524,8 +22540,17 @@ var MainNavbar = ({
22524
22540
  if (typeof window !== "undefined") return window.location.pathname || "/";
22525
22541
  return "/";
22526
22542
  }, [pathname]);
22527
- const currentUserId = useMemo8(() => resolveCurrentUserId(authUser), [authUser]);
22528
- const authEmail = useMemo8(() => toStringOrUndefined(authUser == null ? void 0 : authUser.email), [authUser == null ? void 0 : authUser.email]);
22543
+ const currentUserId = useMemo8(() => {
22544
+ var _a66;
22545
+ return (_a66 = resolveCurrentUserId(authUser)) != null ? _a66 : tokenDerivedUserId;
22546
+ }, [authUser, tokenDerivedUserId]);
22547
+ const authEmail = useMemo8(
22548
+ () => {
22549
+ var _a66, _b6;
22550
+ return (_b6 = (_a66 = toStringOrUndefined(authUser == null ? void 0 : authUser.email)) == null ? void 0 : _a66.toLowerCase()) != null ? _b6 : tokenDerivedEmail;
22551
+ },
22552
+ [authUser == null ? void 0 : authUser.email, tokenDerivedEmail]
22553
+ );
22529
22554
  const isChatSuperAdmin = useMemo8(() => {
22530
22555
  var _a66, _b6;
22531
22556
  const roleTokens = `${(_a66 = authUser == null ? void 0 : authUser.role) != null ? _a66 : ""} ${(_b6 = authUser == null ? void 0 : authUser.jobTitle) != null ? _b6 : ""}`.toLowerCase();
@@ -22539,14 +22564,77 @@ var MainNavbar = ({
22539
22564
  }, []);
22540
22565
  const resolvedProfileAvatarUrl = (_b5 = (_a65 = resolveChatAvatarUrl(persistedProfileAvatarValue)) != null ? _a65 : authUser == null ? void 0 : authUser.picture) != null ? _b5 : void 0;
22541
22566
  const effectiveCurrentUserId = resolvedSenderId != null ? resolvedSenderId : currentUserId;
22567
+ const hasStoredAccessToken = (() => {
22568
+ if (typeof window === "undefined") return false;
22569
+ try {
22570
+ return Boolean(sessionStorage.getItem(ACCESS_TOKEN_STORAGE_KEY));
22571
+ } catch (e) {
22572
+ return false;
22573
+ }
22574
+ })();
22542
22575
  const resolvedAuthStatus = useMemo8(() => {
22543
22576
  if (authStatus) return authStatus;
22544
- if ((authUser == null ? void 0 : authUser.sub) || (authUser == null ? void 0 : authUser.email)) {
22577
+ if ((authUser == null ? void 0 : authUser.sub) || (authUser == null ? void 0 : authUser.id) || (authUser == null ? void 0 : authUser.userId) || (authUser == null ? void 0 : authUser.email)) {
22578
+ return "authenticated";
22579
+ }
22580
+ if (tokenDerivedUserId || tokenDerivedEmail || hasStoredAccessToken) {
22545
22581
  return "authenticated";
22546
22582
  }
22547
22583
  return "unauthenticated";
22548
- }, [authStatus, authUser == null ? void 0 : authUser.email, authUser == null ? void 0 : authUser.sub]);
22584
+ }, [
22585
+ authStatus,
22586
+ authUser == null ? void 0 : authUser.email,
22587
+ authUser == null ? void 0 : authUser.id,
22588
+ authUser == null ? void 0 : authUser.sub,
22589
+ authUser == null ? void 0 : authUser.userId,
22590
+ hasStoredAccessToken,
22591
+ tokenDerivedEmail,
22592
+ tokenDerivedUserId
22593
+ ]);
22549
22594
  const isAuthenticated = resolvedAuthStatus === "authenticated";
22595
+ useEffect16(() => {
22596
+ if (authStatus === "unauthenticated") {
22597
+ setTokenDerivedUserId(null);
22598
+ setTokenDerivedEmail(void 0);
22599
+ return;
22600
+ }
22601
+ let canceled = false;
22602
+ const resolveIdentityFromToken = async () => {
22603
+ var _a66, _b6;
22604
+ try {
22605
+ let token = null;
22606
+ if (typeof window !== "undefined") {
22607
+ try {
22608
+ token = sessionStorage.getItem(ACCESS_TOKEN_STORAGE_KEY);
22609
+ } catch (e) {
22610
+ token = null;
22611
+ }
22612
+ }
22613
+ if (!token && getAccessToken) {
22614
+ token = await getAccessToken();
22615
+ }
22616
+ if (!token) {
22617
+ if (!canceled) {
22618
+ setTokenDerivedUserId(null);
22619
+ setTokenDerivedEmail(void 0);
22620
+ }
22621
+ return;
22622
+ }
22623
+ const claims = (_a66 = decodeJwt(token)) != null ? _a66 : {};
22624
+ if (canceled) return;
22625
+ setTokenDerivedUserId((_b6 = resolveUserIdFromClaims(claims)) != null ? _b6 : null);
22626
+ setTokenDerivedEmail(resolveEmailFromClaims(claims));
22627
+ } catch (error) {
22628
+ if (isRuntimeDev()) {
22629
+ console.warn("[chat] Falha ao resolver identidade via access token:", error.message);
22630
+ }
22631
+ }
22632
+ };
22633
+ void resolveIdentityFromToken();
22634
+ return () => {
22635
+ canceled = true;
22636
+ };
22637
+ }, [authStatus, getAccessToken]);
22550
22638
  useEffect16(() => {
22551
22639
  if (!isAuthenticated) {
22552
22640
  setResolvedSenderId(null);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cupcodev/ui",
3
3
  "private": false,
4
- "version": "1.2.51",
4
+ "version": "1.2.53",
5
5
  "packageManager": "pnpm@10.28.2+sha512.41872f037ad22f7348e3b1debbaf7e867cfd448f2726d9cf74c08f19507c31d2c8e7a11525b983febc2df640b5438dee6023ebb1f84ed43cc2d654d2bc326264",
6
6
  "type": "module",
7
7
  "main": "./dist/index.cjs",