varminer-app-header 2.1.8 → 2.2.0
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/AppHeader.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.esm.js +96 -80
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +96 -80
- package/dist/index.js.map +1 -1
- package/dist/utils/localStorage.d.ts +2 -2
- package/dist/utils/localStorage.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -376,32 +376,17 @@ const getAllDataFromStorage = () => {
|
|
|
376
376
|
}
|
|
377
377
|
};
|
|
378
378
|
/**
|
|
379
|
-
* Get profile picture URL from object store API using
|
|
379
|
+
* Get profile picture URL from object store API using user_id.
|
|
380
380
|
* @param baseUrl - Base URL for the object store API (default: http://objectstore.impact0mics.local:9012)
|
|
381
|
-
* @returns Profile picture URL or null if
|
|
381
|
+
* @returns Profile picture URL or null if user_id is not available
|
|
382
382
|
*/
|
|
383
383
|
const getProfilePictureUrl = (baseUrl = "http://objectstore.impact0mics.local:9012") => {
|
|
384
384
|
try {
|
|
385
385
|
const allData = getAllDataFromStorage();
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
tenantId = allData.decodedToken.tenant_id || allData.decodedToken.tenant || null;
|
|
391
|
-
userId = allData.decodedToken.user_id || null;
|
|
392
|
-
}
|
|
393
|
-
// If not found in decoded token, try auth data
|
|
394
|
-
if ((!tenantId || !userId) && allData.auth) {
|
|
395
|
-
tenantId = tenantId || allData.auth.tenant_id || allData.auth.tenant || null;
|
|
396
|
-
userId = userId || allData.auth.user_id || null;
|
|
397
|
-
}
|
|
398
|
-
// Construct URL if we have both tenant_id and user_id
|
|
399
|
-
if (tenantId && userId) {
|
|
400
|
-
// Remove trailing slash from baseUrl if present
|
|
401
|
-
const cleanBaseUrl = baseUrl.replace(/\/$/, '');
|
|
402
|
-
return `${cleanBaseUrl}/v1/objectStore/profilePicture/path/${tenantId}/${userId}`;
|
|
403
|
-
}
|
|
404
|
-
return null;
|
|
386
|
+
const userId = allData.decodedToken?.user_id ?? allData.auth?.user_id ?? getStoredUserDetails()?.userId ?? null;
|
|
387
|
+
if (userId == null)
|
|
388
|
+
return null;
|
|
389
|
+
return `${baseUrl.replace(/\/$/, "")}/v1/objectStore/profilePicture/path/${userId}`;
|
|
405
390
|
}
|
|
406
391
|
catch (err) {
|
|
407
392
|
console.error("Error getting profile picture URL:", err);
|
|
@@ -723,51 +708,68 @@ const AppHeader = ({ language: languageProp }) => {
|
|
|
723
708
|
const [mobileMoreAnchorEl, setMobileMoreAnchorEl] = React.useState(null);
|
|
724
709
|
const [user, setUser] = React.useState(() => {
|
|
725
710
|
const allData = getAllDataFromStorage();
|
|
726
|
-
// Try to get user data from various sources
|
|
727
711
|
let userName = "";
|
|
728
712
|
let userEmail = "";
|
|
729
713
|
let userRole = "";
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
userName = userName || allData.auth.name || allData.auth.email || "";
|
|
739
|
-
userEmail = userEmail || allData.auth.email || allData.auth.sub || "";
|
|
740
|
-
userRole = userRole || allData.auth.role || allData.auth.activeRole || "";
|
|
741
|
-
}
|
|
742
|
-
// Priority 3: From userDetails/user/profile
|
|
714
|
+
const buildNameFromFirstLast = (obj) => {
|
|
715
|
+
if (!obj || typeof obj !== "object")
|
|
716
|
+
return "";
|
|
717
|
+
const first = (obj.firstName ?? obj.given_name ?? obj.first_name);
|
|
718
|
+
const last = (obj.lastName ?? obj.family_name ?? obj.last_name);
|
|
719
|
+
return [first, last].filter(Boolean).join(" ").trim();
|
|
720
|
+
};
|
|
721
|
+
// Prefer getUserDataFromStorage first (IAM firstName+lastName or persist:userdb name)
|
|
743
722
|
const storedUser = getUserDataFromStorage();
|
|
744
723
|
if (storedUser) {
|
|
745
|
-
userName =
|
|
724
|
+
userName = storedUser.name || "";
|
|
746
725
|
userEmail = userEmail || storedUser.email || "";
|
|
747
726
|
userRole = userRole || storedUser.role || "";
|
|
748
727
|
}
|
|
749
|
-
//
|
|
728
|
+
// Then enrich from decoded token (email from sub; name only if token has name/given_name/family_name, never use sub as name)
|
|
729
|
+
if (allData.decodedToken) {
|
|
730
|
+
const token = allData.decodedToken;
|
|
731
|
+
userEmail = userEmail || token.sub || token.email || "";
|
|
732
|
+
const tokenName = token.name || buildNameFromFirstLast(token);
|
|
733
|
+
userName = userName || (tokenName || "");
|
|
734
|
+
userRole = userRole || token.role || "";
|
|
735
|
+
}
|
|
736
|
+
if (allData.auth) {
|
|
737
|
+
const auth = allData.auth;
|
|
738
|
+
userEmail = userEmail || auth.email || auth.sub || "";
|
|
739
|
+
userName = userName || auth.name || buildNameFromFirstLast(auth) || "";
|
|
740
|
+
userRole = userRole || auth.role || auth.activeRole || "";
|
|
741
|
+
}
|
|
750
742
|
if (allData.userDetails) {
|
|
751
|
-
const userDetails = allData.userDetails.user
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
743
|
+
const userDetails = allData.userDetails.user
|
|
744
|
+
|| allData.userDetails.data
|
|
745
|
+
|| allData.userDetails;
|
|
746
|
+
const details = userDetails;
|
|
747
|
+
if (details) {
|
|
748
|
+
userEmail = userEmail || details.email || details.emailAddress || "";
|
|
749
|
+
userName = userName || details.name || details.fullName || buildNameFromFirstLast(details) || "";
|
|
750
|
+
userRole = userRole || details.role || details.userRole || "";
|
|
756
751
|
}
|
|
757
752
|
}
|
|
758
753
|
if (allData.user) {
|
|
759
|
-
const
|
|
754
|
+
const u = allData.user.user
|
|
755
|
+
|| allData.user.data
|
|
756
|
+
|| allData.user.currentUser
|
|
757
|
+
|| allData.user;
|
|
758
|
+
const userData = u;
|
|
760
759
|
if (userData) {
|
|
761
|
-
userName = userName || userData.name || userData.fullName || "";
|
|
762
760
|
userEmail = userEmail || userData.email || userData.emailAddress || "";
|
|
761
|
+
userName = userName || userData.name || userData.fullName || buildNameFromFirstLast(userData) || "";
|
|
763
762
|
userRole = userRole || userData.role || userData.userRole || "";
|
|
764
763
|
}
|
|
765
764
|
}
|
|
766
765
|
if (allData.profile) {
|
|
767
|
-
const
|
|
766
|
+
const p = allData.profile.user
|
|
767
|
+
|| allData.profile.data
|
|
768
|
+
|| allData.profile;
|
|
769
|
+
const profileData = p;
|
|
768
770
|
if (profileData) {
|
|
769
|
-
userName = userName || profileData.name || profileData.fullName || "";
|
|
770
771
|
userEmail = userEmail || profileData.email || profileData.emailAddress || "";
|
|
772
|
+
userName = userName || profileData.name || profileData.fullName || buildNameFromFirstLast(profileData) || "";
|
|
771
773
|
userRole = userRole || profileData.role || profileData.userRole || "";
|
|
772
774
|
}
|
|
773
775
|
}
|
|
@@ -816,67 +818,81 @@ const AppHeader = ({ language: languageProp }) => {
|
|
|
816
818
|
}, []); // Only run once on mount - fetch when component loads
|
|
817
819
|
React.useEffect(() => {
|
|
818
820
|
const allData = getAllDataFromStorage();
|
|
819
|
-
// Try to get user data from various sources
|
|
820
821
|
let userName = "";
|
|
821
822
|
let userEmail = "";
|
|
822
823
|
let userRole = "";
|
|
823
|
-
let userAvatar
|
|
824
|
-
let userInitials
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
if (allData.auth) {
|
|
833
|
-
userName = userName || allData.auth.name || allData.auth.email || "";
|
|
834
|
-
userEmail = userEmail || allData.auth.email || allData.auth.sub || "";
|
|
835
|
-
userRole = userRole || allData.auth.role || allData.auth.activeRole || "";
|
|
836
|
-
userAvatar = userAvatar || allData.auth.avatar || undefined;
|
|
837
|
-
userInitials = userInitials || allData.auth.initials || undefined;
|
|
838
|
-
}
|
|
839
|
-
// Priority 3: From userDetails/user/profile
|
|
824
|
+
let userAvatar;
|
|
825
|
+
let userInitials;
|
|
826
|
+
const buildNameFromFirstLast = (obj) => {
|
|
827
|
+
if (!obj || typeof obj !== "object")
|
|
828
|
+
return "";
|
|
829
|
+
const first = (obj.firstName ?? obj.given_name ?? obj.first_name);
|
|
830
|
+
const last = (obj.lastName ?? obj.family_name ?? obj.last_name);
|
|
831
|
+
return [first, last].filter(Boolean).join(" ").trim();
|
|
832
|
+
};
|
|
840
833
|
const storedUser = getUserDataFromStorage();
|
|
841
834
|
if (storedUser) {
|
|
842
|
-
userName =
|
|
835
|
+
userName = storedUser.name || "";
|
|
843
836
|
userEmail = userEmail || storedUser.email || "";
|
|
844
837
|
userRole = userRole || storedUser.role || "";
|
|
845
|
-
userAvatar =
|
|
846
|
-
userInitials =
|
|
838
|
+
userAvatar = storedUser.avatar;
|
|
839
|
+
userInitials = storedUser.initials;
|
|
840
|
+
}
|
|
841
|
+
if (allData.decodedToken) {
|
|
842
|
+
const token = allData.decodedToken;
|
|
843
|
+
userEmail = userEmail || token.sub || token.email || "";
|
|
844
|
+
const tokenName = token.name || buildNameFromFirstLast(token);
|
|
845
|
+
userName = userName || (tokenName || "");
|
|
846
|
+
userRole = userRole || token.role || "";
|
|
847
|
+
}
|
|
848
|
+
if (allData.auth) {
|
|
849
|
+
const auth = allData.auth;
|
|
850
|
+
userEmail = userEmail || auth.email || auth.sub || "";
|
|
851
|
+
userName = userName || auth.name || buildNameFromFirstLast(auth) || "";
|
|
852
|
+
userRole = userRole || auth.role || auth.activeRole || "";
|
|
853
|
+
userAvatar = userAvatar || auth.avatar || undefined;
|
|
854
|
+
userInitials = userInitials || auth.initials || undefined;
|
|
847
855
|
}
|
|
848
|
-
// Priority 4: From other parsed data
|
|
849
856
|
if (allData.userDetails) {
|
|
850
|
-
const userDetails = allData.userDetails.user
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
+
const userDetails = allData.userDetails.user
|
|
858
|
+
|| allData.userDetails.data
|
|
859
|
+
|| allData.userDetails;
|
|
860
|
+
const details = userDetails;
|
|
861
|
+
if (details) {
|
|
862
|
+
userEmail = userEmail || details.email || details.emailAddress || "";
|
|
863
|
+
userName = userName || details.name || details.fullName || buildNameFromFirstLast(details) || "";
|
|
864
|
+
userRole = userRole || details.role || details.userRole || "";
|
|
865
|
+
userAvatar = userAvatar || details.avatar || details.profilePicture || undefined;
|
|
866
|
+
userInitials = userInitials || details.initials || undefined;
|
|
857
867
|
}
|
|
858
868
|
}
|
|
859
869
|
if (allData.user) {
|
|
860
|
-
const
|
|
870
|
+
const u = allData.user.user
|
|
871
|
+
|| allData.user.data
|
|
872
|
+
|| allData.user.currentUser
|
|
873
|
+
|| allData.user;
|
|
874
|
+
const userData = u;
|
|
861
875
|
if (userData) {
|
|
862
|
-
userName = userName || userData.name || userData.fullName || "";
|
|
863
876
|
userEmail = userEmail || userData.email || userData.emailAddress || "";
|
|
877
|
+
userName = userName || userData.name || userData.fullName || buildNameFromFirstLast(userData) || "";
|
|
864
878
|
userRole = userRole || userData.role || userData.userRole || "";
|
|
865
879
|
userAvatar = userAvatar || userData.avatar || userData.profilePicture || undefined;
|
|
866
880
|
userInitials = userInitials || userData.initials || undefined;
|
|
867
881
|
}
|
|
868
882
|
}
|
|
869
883
|
if (allData.profile) {
|
|
870
|
-
const
|
|
884
|
+
const p = allData.profile.user
|
|
885
|
+
|| allData.profile.data
|
|
886
|
+
|| allData.profile;
|
|
887
|
+
const profileData = p;
|
|
871
888
|
if (profileData) {
|
|
872
|
-
userName = userName || profileData.name || profileData.fullName || "";
|
|
873
889
|
userEmail = userEmail || profileData.email || profileData.emailAddress || "";
|
|
890
|
+
userName = userName || profileData.name || profileData.fullName || buildNameFromFirstLast(profileData) || "";
|
|
874
891
|
userRole = userRole || profileData.role || profileData.userRole || "";
|
|
875
892
|
userAvatar = userAvatar || profileData.avatar || profileData.profilePicture || undefined;
|
|
876
893
|
userInitials = userInitials || profileData.initials || undefined;
|
|
877
894
|
}
|
|
878
895
|
}
|
|
879
|
-
// Use fetched blob URL if available, otherwise fall back to other sources
|
|
880
896
|
setUser({
|
|
881
897
|
name: userName || "",
|
|
882
898
|
email: userEmail || "",
|