UNPKG

react-native-avo-inspector

Version:

[![npm version](https://badge.fury.io/js/react-native-avo-inspector.svg)](https://badge.fury.io/js/react-native-avo-inspector)

83 lines (82 loc) 3.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AvoStreamId = void 0; var AvoGuid_1 = require("./AvoGuid"); var AvoInspector_1 = require("./AvoInspector"); var AvoStreamId = /** @class */ (function () { function AvoStreamId() { } /** * Returns the persistent anonymous ID (Model A). * Generates a UUID once and persists it via AsyncStorage. * Never resets based on time. * Concurrent calls before cache is populated all return the same UUID. */ AvoStreamId.initialize = function () { // Return cached value immediately if available if (AvoStreamId._anonymousId !== null) { return Promise.resolve(AvoStreamId._anonymousId); } // Return the in-flight promise if initialization is already underway if (AvoStreamId._initializationPromise !== null) { return AvoStreamId._initializationPromise; } // Guard: if storage isn't initialized yet, fall back to a fresh GUID if (!AvoInspector_1.AvoInspector.avoStorage) { var fallbackId = AvoGuid_1.default.newGuid(); AvoStreamId._anonymousId = fallbackId; return Promise.resolve(fallbackId); } // Start initialization and cache the promise to handle concurrent calls var storagePromise = AvoInspector_1.AvoInspector.avoStorage.getItemAsync(AvoStreamId.cacheKey); var resolvedPromise = storagePromise && typeof storagePromise.then === "function" ? storagePromise : Promise.resolve(null); AvoStreamId._initializationPromise = resolvedPromise.then(function (maybeId) { if (maybeId !== null && maybeId !== undefined) { AvoStreamId._anonymousId = maybeId; } else { AvoStreamId._anonymousId = AvoGuid_1.default.newGuid(); AvoInspector_1.AvoInspector.avoStorage.setItem(AvoStreamId.cacheKey, AvoStreamId._anonymousId); } return AvoStreamId._anonymousId; }).catch(function (error) { // Reset so callers can retry on next call AvoStreamId._initializationPromise = null; // Fall back to a fresh GUID var fallbackId = AvoGuid_1.default.newGuid(); AvoStreamId._anonymousId = fallbackId; return fallbackId; }); return AvoStreamId._initializationPromise; }; /** * Sets a custom anonymous ID. Persists to storage. */ AvoStreamId.setAnonymousId = function (id) { AvoStreamId._anonymousId = id; AvoStreamId._initializationPromise = null; if (AvoInspector_1.AvoInspector.avoStorage) { AvoInspector_1.AvoInspector.avoStorage.setItem(AvoStreamId.cacheKey, id); } }; /** * Clears the cached anonymous ID. The next access will reload from storage. */ AvoStreamId.clearCache = function () { AvoStreamId._anonymousId = null; AvoStreamId._initializationPromise = null; }; Object.defineProperty(AvoStreamId, "cacheKey", { get: function () { return "AvoInspectorAnonymousId"; }, enumerable: false, configurable: true }); AvoStreamId._anonymousId = null; AvoStreamId._initializationPromise = null; return AvoStreamId; }()); exports.AvoStreamId = AvoStreamId;