@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 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?.();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vylth/nexus-react",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "Nexus SSO SDK for React — Sign in with Nexus",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",