@embrace-io/web-sdk
Version:
3 lines (2 loc) • 2.17 kB
JavaScript
import{diag as e}from"@opentelemetry/api";import"../../api-users/userAPI.js";import{KEY_ENDUSER_PSEUDO_ID as t}from"../../api-users/manager/constants/index.js";import{generateUUID as r}from"../../utils/generateUUID.js";import"@opentelemetry/core";import{EMBRACE_USER_ID_STORAGE_KEY as s,EMBRACE_USER_STORAGE_KEY_DEPRECATED as a,EMBRACE_EXTERNAL_USER_ID_KEY as i}from"./constants.js";import{isUser as o,isUserId as g}from"./types.js";class m{constructor({diag:t,storage:r=localStorage}={}){this._embraceUserId=null,this._diag=null!=t?t:e.createComponentLogger({namespace:"EmbraceUserManager"}),this._storage=r,this._migrateOldLocalStorageKey(),this._initialSetup()}getEmbraceUserId(){return this._embraceUserId||this._generateNewEmbraceUserId()}setEmbraceUserId(e){this._embraceUserId=e;try{this._storage.setItem(s,e)}catch(e){this._diag.warn("Failed to persist user object for storage, keeping it in-memory only",e)}}clearEmbraceUserId(){this._embraceUserId=null;try{this._storage.removeItem(s)}catch(e){this._diag.warn("Failed to remove embrace user in storage",e)}}_migrateOldLocalStorageKey(){try{const e=this._storage.getItem(a);if(e){const r=JSON.parse(e);o(r)?(this._diag.debug("Migrating old user data from storage"),this._storage.setItem(s,r[t]),this._storage.removeItem(a)):(this._diag.warn("Invalid user data found in storage, clearing old user data"),this._storage.removeItem(a))}}catch(e){this._diag.warn("Failed to get old user data from storage",e)}}_initialSetup(){try{const e=this._storage.getItem(s);e?g(e)?this._embraceUserId=e:(this._diag.warn("Invalid embrace user id, generating a new one"),this.clearEmbraceUserId()):this._diag.debug("No existing user found in storage, creating a new one")}catch(e){this._diag.warn("Failed to get embrace user id from storage, defaulting to a new one",e)}this._embraceUserId||(this._embraceUserId=this._generateNewEmbraceUserId())}_generateNewEmbraceUserId(){const e=r();return this.setEmbraceUserId(e),e}getUserId(){return this._storage.getItem(i)}setUserId(e){this._storage.setItem(i,e)}clearUserId(){this._storage.removeItem(i)}}export{m as EmbraceUserManager};
//# sourceMappingURL=EmbraceUserManager.js.map