@vylth/nexus-react 1.0.1 → 1.0.2
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.js +18 -3
- package/dist/index.mjs +18 -3
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -42,6 +42,7 @@ var import_react = require("react");
|
|
|
42
42
|
var TOKEN_KEY = "nexus_access_token";
|
|
43
43
|
var REFRESH_KEY = "nexus_refresh_token";
|
|
44
44
|
var STATE_KEY = "nexus_oauth_state";
|
|
45
|
+
var PROFILE_KEY = "nexus_user_profile";
|
|
45
46
|
var memoryAccessToken = null;
|
|
46
47
|
var memoryRefreshToken = null;
|
|
47
48
|
var refreshPromise = null;
|
|
@@ -68,6 +69,18 @@ function clearTokens() {
|
|
|
68
69
|
memoryRefreshToken = null;
|
|
69
70
|
localStorage.removeItem(TOKEN_KEY);
|
|
70
71
|
localStorage.removeItem(REFRESH_KEY);
|
|
72
|
+
localStorage.removeItem(PROFILE_KEY);
|
|
73
|
+
}
|
|
74
|
+
function saveUserProfile(firstName, lastName, avatar) {
|
|
75
|
+
localStorage.setItem(PROFILE_KEY, JSON.stringify({ firstName, lastName, avatar }));
|
|
76
|
+
}
|
|
77
|
+
function loadUserProfile() {
|
|
78
|
+
try {
|
|
79
|
+
const raw = localStorage.getItem(PROFILE_KEY);
|
|
80
|
+
return raw ? JSON.parse(raw) : null;
|
|
81
|
+
} catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
71
84
|
}
|
|
72
85
|
function isTokenValid() {
|
|
73
86
|
const token = getAccessToken();
|
|
@@ -82,13 +95,14 @@ function isTokenValid() {
|
|
|
82
95
|
function decodeUser(token) {
|
|
83
96
|
try {
|
|
84
97
|
const payload = JSON.parse(atob(token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/")));
|
|
98
|
+
const profile = loadUserProfile();
|
|
85
99
|
return {
|
|
86
100
|
id: payload.sub,
|
|
87
101
|
email: payload.email,
|
|
88
102
|
username: payload.username || "",
|
|
89
|
-
firstName: "",
|
|
90
|
-
lastName: "",
|
|
91
|
-
avatar: payload.avatar || "",
|
|
103
|
+
firstName: profile?.firstName || "",
|
|
104
|
+
lastName: profile?.lastName || "",
|
|
105
|
+
avatar: profile?.avatar || payload.avatar || "",
|
|
92
106
|
globalRole: payload.global_role || "citizen",
|
|
93
107
|
emailVerified: payload.email_verified || false,
|
|
94
108
|
affiliateCode: payload.affiliate_code || "",
|
|
@@ -319,6 +333,7 @@ function NexusCallback({ onSuccess, onError }) {
|
|
|
319
333
|
user.lastName = result.investor.last_name;
|
|
320
334
|
user.avatar = result.investor.avatar_url || user.avatar;
|
|
321
335
|
user.emailVerified = result.investor.email_verified;
|
|
336
|
+
saveUserProfile(user.firstName, user.lastName, user.avatar);
|
|
322
337
|
config.setUser(user);
|
|
323
338
|
}
|
|
324
339
|
onSuccess?.();
|
package/dist/index.mjs
CHANGED
|
@@ -5,6 +5,7 @@ import { createContext, useCallback, useEffect, useState } from "react";
|
|
|
5
5
|
var TOKEN_KEY = "nexus_access_token";
|
|
6
6
|
var REFRESH_KEY = "nexus_refresh_token";
|
|
7
7
|
var STATE_KEY = "nexus_oauth_state";
|
|
8
|
+
var PROFILE_KEY = "nexus_user_profile";
|
|
8
9
|
var memoryAccessToken = null;
|
|
9
10
|
var memoryRefreshToken = null;
|
|
10
11
|
var refreshPromise = null;
|
|
@@ -31,6 +32,18 @@ function clearTokens() {
|
|
|
31
32
|
memoryRefreshToken = null;
|
|
32
33
|
localStorage.removeItem(TOKEN_KEY);
|
|
33
34
|
localStorage.removeItem(REFRESH_KEY);
|
|
35
|
+
localStorage.removeItem(PROFILE_KEY);
|
|
36
|
+
}
|
|
37
|
+
function saveUserProfile(firstName, lastName, avatar) {
|
|
38
|
+
localStorage.setItem(PROFILE_KEY, JSON.stringify({ firstName, lastName, avatar }));
|
|
39
|
+
}
|
|
40
|
+
function loadUserProfile() {
|
|
41
|
+
try {
|
|
42
|
+
const raw = localStorage.getItem(PROFILE_KEY);
|
|
43
|
+
return raw ? JSON.parse(raw) : null;
|
|
44
|
+
} catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
34
47
|
}
|
|
35
48
|
function isTokenValid() {
|
|
36
49
|
const token = getAccessToken();
|
|
@@ -45,13 +58,14 @@ function isTokenValid() {
|
|
|
45
58
|
function decodeUser(token) {
|
|
46
59
|
try {
|
|
47
60
|
const payload = JSON.parse(atob(token.split(".")[1].replace(/-/g, "+").replace(/_/g, "/")));
|
|
61
|
+
const profile = loadUserProfile();
|
|
48
62
|
return {
|
|
49
63
|
id: payload.sub,
|
|
50
64
|
email: payload.email,
|
|
51
65
|
username: payload.username || "",
|
|
52
|
-
firstName: "",
|
|
53
|
-
lastName: "",
|
|
54
|
-
avatar: payload.avatar || "",
|
|
66
|
+
firstName: profile?.firstName || "",
|
|
67
|
+
lastName: profile?.lastName || "",
|
|
68
|
+
avatar: profile?.avatar || payload.avatar || "",
|
|
55
69
|
globalRole: payload.global_role || "citizen",
|
|
56
70
|
emailVerified: payload.email_verified || false,
|
|
57
71
|
affiliateCode: payload.affiliate_code || "",
|
|
@@ -282,6 +296,7 @@ function NexusCallback({ onSuccess, onError }) {
|
|
|
282
296
|
user.lastName = result.investor.last_name;
|
|
283
297
|
user.avatar = result.investor.avatar_url || user.avatar;
|
|
284
298
|
user.emailVerified = result.investor.email_verified;
|
|
299
|
+
saveUserProfile(user.firstName, user.lastName, user.avatar);
|
|
285
300
|
config.setUser(user);
|
|
286
301
|
}
|
|
287
302
|
onSuccess?.();
|