react-native-avo-inspector
Version:
[](https://badge.fury.io/js/react-native-avo-inspector)
83 lines (82 loc) • 3.41 kB
JavaScript
;
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;