varminer-app-header 2.2.5 → 2.2.6
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.esm.js +7 -37
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +7 -37
- package/dist/index.js.map +1 -1
- package/dist/utils/localStorage.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -399,7 +399,7 @@ const getProfilePictureUrl = (baseUrl = "http://objectstore.impact0mics.local:90
|
|
|
399
399
|
const userId = allData.decodedToken?.user_id ?? allData.auth?.user_id ?? getStoredUserDetails()?.userId ?? null;
|
|
400
400
|
if (userId == null)
|
|
401
401
|
return null;
|
|
402
|
-
return `${baseUrl.replace(/\/$/, "")}/v1/objectStore/profilePicture/path
|
|
402
|
+
return `${baseUrl.replace(/\/$/, "")}/v1/objectStore/profilePicture/path/4590`;
|
|
403
403
|
}
|
|
404
404
|
catch (err) {
|
|
405
405
|
console.error("Error getting profile picture URL:", err);
|
|
@@ -472,37 +472,30 @@ function parseNestedValue(val) {
|
|
|
472
472
|
return parsePersistValue(val);
|
|
473
473
|
return val;
|
|
474
474
|
}
|
|
475
|
-
const AUTH_DEBUG = true; // set to false to disable access-token debug logs
|
|
476
475
|
/**
|
|
477
476
|
* Extract access token from persist:userdb shape: authDetails (string) → parse → auth.accessToken.
|
|
478
477
|
* Structure: { authDetails: "{\"auth\":{\"accessToken\":\"...\"}}", profileInformation: "...", _persist: "..." }
|
|
479
478
|
*/
|
|
480
479
|
function getTokenFromUserDbPersist(parsed) {
|
|
481
|
-
console.log("[header-auth] getTokenFromUserDbPersist: parsed keys", Object.keys(parsed));
|
|
482
480
|
const authDetails = parsed.authDetails;
|
|
483
481
|
const inner = parseNestedValue(authDetails);
|
|
484
482
|
const obj = typeof inner === "object" && inner !== null ? inner : null;
|
|
485
|
-
console.log("[header-auth] getTokenFromUserDbPersist: inner type", typeof inner, "obj keys", obj ? Object.keys(obj) : null);
|
|
486
483
|
if (!obj)
|
|
487
484
|
return undefined;
|
|
488
485
|
const auth = obj.auth;
|
|
489
486
|
const authObj = typeof auth === "object" && auth !== null ? auth : null;
|
|
490
|
-
console.log("[header-auth] getTokenFromUserDbPersist: authObj keys", authObj ? Object.keys(authObj) : null);
|
|
491
487
|
if (!authObj)
|
|
492
488
|
return undefined;
|
|
493
489
|
const token = authObj.accessToken ??
|
|
494
490
|
authObj.access_token ??
|
|
495
491
|
authObj.token;
|
|
496
|
-
|
|
497
|
-
console.log("[header-auth] getTokenFromUserDbPersist: token found", !!ok, "length", typeof token === "string" ? token.length : 0);
|
|
498
|
-
return ok ? token : undefined;
|
|
492
|
+
return typeof token === "string" && looksLikeToken(token) ? token : undefined;
|
|
499
493
|
}
|
|
500
494
|
/**
|
|
501
495
|
* Get access token from all known storage keys (header, IAM, userdb, and plain keys).
|
|
502
496
|
* persist:userdb shape: authDetails (stringified) contains auth.accessToken.
|
|
503
497
|
*/
|
|
504
498
|
function getAccessTokenForRequest() {
|
|
505
|
-
console.log("[header-auth] getAccessTokenForRequest: start");
|
|
506
499
|
const keysToTry = [
|
|
507
500
|
PERSIST_HEADER_KEY,
|
|
508
501
|
"persist:linn-i-am",
|
|
@@ -513,7 +506,6 @@ function getAccessTokenForRequest() {
|
|
|
513
506
|
];
|
|
514
507
|
for (const key of keysToTry) {
|
|
515
508
|
const raw = localStorage.getItem(key);
|
|
516
|
-
console.log("[header-auth] getAccessTokenForRequest: key", key, "raw present", !!raw, "raw length", raw?.length ?? 0);
|
|
517
509
|
if (!raw)
|
|
518
510
|
continue;
|
|
519
511
|
const parsed = key.startsWith("persist:") ? parsePersistValue(raw) : (() => { try {
|
|
@@ -523,59 +515,39 @@ function getAccessTokenForRequest() {
|
|
|
523
515
|
return raw;
|
|
524
516
|
} })();
|
|
525
517
|
const token = findTokenInObject(parsed);
|
|
526
|
-
if (token)
|
|
527
|
-
console.log("[header-auth] getAccessTokenForRequest: token from findTokenInObject(parsed), key", key);
|
|
518
|
+
if (token)
|
|
528
519
|
return token;
|
|
529
|
-
}
|
|
530
520
|
if (key.startsWith("persist:")) {
|
|
531
521
|
const outer = typeof parsed === "object" && parsed !== null ? parsed : null;
|
|
532
522
|
if (outer) {
|
|
533
523
|
if (key === "persist:userdb") {
|
|
534
524
|
const fromUserDb = getTokenFromUserDbPersist(outer);
|
|
535
|
-
if (fromUserDb)
|
|
536
|
-
console.log("[header-auth] getAccessTokenForRequest: token from getTokenFromUserDbPersist");
|
|
525
|
+
if (fromUserDb)
|
|
537
526
|
return fromUserDb;
|
|
538
|
-
}
|
|
539
527
|
}
|
|
540
528
|
for (const k of Object.keys(outer)) {
|
|
541
529
|
const inner = parseNestedValue(outer[k]);
|
|
542
530
|
const t = findTokenInObject(inner);
|
|
543
|
-
if (t)
|
|
544
|
-
console.log("[header-auth] getAccessTokenForRequest: token from inner key", k);
|
|
531
|
+
if (t)
|
|
545
532
|
return t;
|
|
546
|
-
}
|
|
547
533
|
}
|
|
548
534
|
}
|
|
549
535
|
}
|
|
550
536
|
}
|
|
551
|
-
|
|
552
|
-
const fallback = getAccessTokenFromAuth(allData.auth);
|
|
553
|
-
console.log("[header-auth] getAccessTokenForRequest: fallback getAllDataFromStorage().auth, token present", !!fallback);
|
|
554
|
-
return fallback;
|
|
537
|
+
return getAccessTokenFromAuth(getAllDataFromStorage().auth);
|
|
555
538
|
}
|
|
556
539
|
const fetchProfilePictureAsBlobUrl = async (baseUrl = "http://objectstore.impact0mics.local:9012", accessTokenOverride) => {
|
|
557
540
|
try {
|
|
558
|
-
if (AUTH_DEBUG)
|
|
559
|
-
console.log("[header-auth] fetchProfilePictureAsBlobUrl: start, accessTokenOverride present", typeof accessTokenOverride === "string" && accessTokenOverride.length > 0);
|
|
560
541
|
const profilePictureUrl = getProfilePictureUrl(baseUrl);
|
|
561
|
-
if (!profilePictureUrl)
|
|
562
|
-
if (AUTH_DEBUG)
|
|
563
|
-
console.log("[header-auth] fetchProfilePictureAsBlobUrl: no profilePictureUrl, abort");
|
|
542
|
+
if (!profilePictureUrl)
|
|
564
543
|
return null;
|
|
565
|
-
}
|
|
566
|
-
if (AUTH_DEBUG)
|
|
567
|
-
console.log("[header-auth] fetchProfilePictureAsBlobUrl: profilePictureUrl", profilePictureUrl);
|
|
568
544
|
const accessToken = (typeof accessTokenOverride === "string" && accessTokenOverride.length > 0
|
|
569
545
|
? accessTokenOverride
|
|
570
546
|
: null) ?? getAccessTokenForRequest();
|
|
571
|
-
if (AUTH_DEBUG)
|
|
572
|
-
console.log("[header-auth] fetchProfilePictureAsBlobUrl: accessToken present", !!accessToken, "length", accessToken?.length ?? 0);
|
|
573
547
|
const headers = {};
|
|
574
548
|
if (accessToken) {
|
|
575
549
|
headers["Authorization"] = `Bearer ${accessToken}`;
|
|
576
550
|
}
|
|
577
|
-
if (AUTH_DEBUG)
|
|
578
|
-
console.log("[header-auth] fetchProfilePictureAsBlobUrl: request headers", { ...headers, Authorization: headers["Authorization"] ? "Bearer ***" : "(none)" });
|
|
579
551
|
const response = await fetch(profilePictureUrl, { method: "GET", headers });
|
|
580
552
|
if (!response.ok) {
|
|
581
553
|
console.warn(`Failed to fetch profile picture: ${response.status} ${response.statusText}`);
|
|
@@ -830,9 +802,7 @@ const AppHeader = ({ language: languageProp, accessToken: accessTokenProp }) =>
|
|
|
830
802
|
// Fetch profile picture from API when component mounts or user data changes
|
|
831
803
|
React.useEffect(() => {
|
|
832
804
|
const fetchProfilePicture = async () => {
|
|
833
|
-
console.log("[header-auth] AppHeader: profile picture effect, accessTokenProp present", !!accessTokenProp);
|
|
834
805
|
const token = accessTokenProp ?? getAccessTokenForRequest();
|
|
835
|
-
console.log("[header-auth] AppHeader: token for request present", !!token, "from prop", !!accessTokenProp);
|
|
836
806
|
const blobUrl = await fetchProfilePictureAsBlobUrl(undefined, token ?? undefined);
|
|
837
807
|
if (blobUrl) {
|
|
838
808
|
// Clean up previous blob URL if it exists
|