varminer-app-header 2.6.3 → 2.6.4

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.d.ts CHANGED
@@ -98,7 +98,8 @@ interface HeaderAuthState {
98
98
  */
99
99
  declare function setHeaderAuth(auth: HeaderAuthState | null): void;
100
100
  /**
101
- * User display data: from IAM only (linn-i-am-userDetails). No dependency on persist:userdb.
101
+ * User display data: prefers linn-i-am-userDetails (IAM), falls back to
102
+ * persist:userdb → profileInformation.userDetails, then authDetails.auth.user.
102
103
  */
103
104
  declare const getUserDataFromStorage: () => {
104
105
  name: string;
package/dist/index.esm.js CHANGED
@@ -108,21 +108,79 @@ function setHeaderAuth(auth) {
108
108
  }
109
109
  }
110
110
  /**
111
- * User display data: from IAM only (linn-i-am-userDetails). No dependency on persist:userdb.
111
+ * User display data: prefers linn-i-am-userDetails (IAM), falls back to
112
+ * persist:userdb → profileInformation.userDetails, then authDetails.auth.user.
112
113
  */
113
114
  const getUserDataFromStorage = () => {
115
+ // Primary source: IAM app sets this after OTP verification
114
116
  const iamUser = getStoredUserDetails();
115
- if (!iamUser)
116
- return null;
117
- const name = [iamUser.firstName, iamUser.lastName].filter(Boolean).join(" ").trim();
118
- const role = iamUser.roles?.length ? iamUser.roles[0] : iamUser.workInfo?.jobTitle ?? "";
119
- return {
120
- name: name || "",
121
- email: iamUser.email || "",
122
- role: role || "",
123
- avatar: undefined,
124
- initials: name ? name.split(/\s+/).map((s) => s[0]).join("").slice(0, 2).toUpperCase() : undefined,
125
- };
117
+ if (iamUser) {
118
+ const name = [iamUser.firstName, iamUser.lastName].filter(Boolean).join(" ").trim();
119
+ const role = iamUser.roles?.length ? iamUser.roles[0] : iamUser.workInfo?.jobTitle ?? "";
120
+ return {
121
+ name: name || "",
122
+ email: iamUser.email || "",
123
+ role: role || "",
124
+ avatar: undefined,
125
+ initials: name ? name.split(/\s+/).map((s) => s[0]).join("").slice(0, 2).toUpperCase() : undefined,
126
+ };
127
+ }
128
+ // Fallback: read from persist:userdb which is written by the IAM/login app
129
+ try {
130
+ const raw = localStorage.getItem("persist:userdb");
131
+ if (!raw)
132
+ return null;
133
+ const outer = JSON.parse(raw);
134
+ const parseNested = (v) => {
135
+ if (typeof v === "string") {
136
+ try {
137
+ return JSON.parse(v);
138
+ }
139
+ catch {
140
+ return v;
141
+ }
142
+ }
143
+ return v;
144
+ };
145
+ // profileInformation.userDetails has firstName, lastName, email, roles[]
146
+ const profileInfo = parseNested(outer.profileInformation);
147
+ const userDetails = profileInfo?.userDetails;
148
+ if (userDetails && (userDetails.firstName || userDetails.lastName || userDetails.email)) {
149
+ const first = userDetails.firstName || "";
150
+ const last = userDetails.lastName || "";
151
+ const name = [first, last].filter(Boolean).join(" ").trim();
152
+ const roles = userDetails.roles;
153
+ const role = roles?.length ? roles[0] : userDetails.jobTitle ?? "";
154
+ return {
155
+ name,
156
+ email: userDetails.email || "",
157
+ role: role || "",
158
+ avatar: undefined,
159
+ initials: name ? name.split(/\s+/).map((s) => s[0]).join("").slice(0, 2).toUpperCase() : undefined,
160
+ };
161
+ }
162
+ // authDetails.auth.user has firstname/lastname (lowercase n) + activeRole
163
+ const authDetailsRaw = parseNested(outer.authDetails);
164
+ const auth = authDetailsRaw?.auth;
165
+ const userObj = auth?.user;
166
+ if (auth && (userObj?.firstname || userObj?.lastname)) {
167
+ const first = userObj?.firstname || "";
168
+ const last = userObj?.lastname || "";
169
+ const name = [first, last].filter(Boolean).join(" ").trim();
170
+ const role = auth.activeRole || "";
171
+ return {
172
+ name,
173
+ email: "",
174
+ role,
175
+ avatar: undefined,
176
+ initials: name ? name.split(/\s+/).map((s) => s[0]).join("").slice(0, 2).toUpperCase() : undefined,
177
+ };
178
+ }
179
+ }
180
+ catch {
181
+ // ignore parse errors
182
+ }
183
+ return null;
126
184
  };
127
185
  const getNotificationCountFromStorage = () => {
128
186
  const userDbString = localStorage.getItem("persist:userdb");