@embrace-io/web-sdk
Version:
54 lines (53 loc) • 1.82 kB
JavaScript
import { generateUUID } from "../../utils/generateUUID.js";
import { EMBRACE_EXTERNAL_USER_ID_KEY, EMBRACE_USER_ID_STORAGE_KEY } from "./constants.js";
import { isUserId } from "./types.js";
import { diag } from "@opentelemetry/api";
//#region src/managers/EmbraceUserManager/EmbraceUserManager.ts
var EmbraceUserManager = class {
_diag;
_storage;
_embraceUserId = null;
constructor({ diag: diagParam, storage }) {
this._diag = diagParam ?? diag.createComponentLogger({ namespace: "EmbraceUserManager" });
this._storage = storage;
this._initialSetup();
}
getEmbraceUserId() {
return this._embraceUserId || this._generateNewEmbraceUserId();
}
setEmbraceUserId(userId) {
this._embraceUserId = userId;
this._storage.setItem(EMBRACE_USER_ID_STORAGE_KEY, userId);
}
clearEmbraceUserId() {
this._embraceUserId = null;
this._storage.removeItem(EMBRACE_USER_ID_STORAGE_KEY);
}
_initialSetup() {
const embraceUserId = this._storage.getItem(EMBRACE_USER_ID_STORAGE_KEY);
if (!embraceUserId) this._diag.debug("No existing user found in storage, creating a new one");
else if (isUserId(embraceUserId)) this._embraceUserId = embraceUserId;
else {
this._diag.warn("Invalid embrace user id, generating a new one");
this.clearEmbraceUserId();
}
if (!this._embraceUserId) this._embraceUserId = this._generateNewEmbraceUserId();
}
_generateNewEmbraceUserId() {
const newUserId = generateUUID();
this.setEmbraceUserId(newUserId);
return newUserId;
}
getUserId() {
return this._storage.getItem(EMBRACE_EXTERNAL_USER_ID_KEY);
}
setUserId(userId) {
this._storage.setItem(EMBRACE_EXTERNAL_USER_ID_KEY, userId);
}
clearUserId() {
this._storage.removeItem(EMBRACE_EXTERNAL_USER_ID_KEY);
}
};
//#endregion
export { EmbraceUserManager };
//# sourceMappingURL=EmbraceUserManager.js.map