visitory
Version:
Visitory Session Tracking SDK
63 lines (62 loc) • 2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.initParameterStore = initParameterStore;
let parameterStore = null;
function initParameterStore(apiKey) {
if (parameterStore) {
return parameterStore;
}
const values = {};
let subscribers = [];
let isLoaded = false;
// Function to notify all subscribers of changes
const notifySubscribers = () => {
subscribers.forEach((callback) => callback(values));
};
// Function to fetch all parameters
const fetchParameters = async () => {
try {
const response = await fetch('https://qualified-hound-398.convex.site/getParameters', {
headers: {
Authorization: `Bearer ${apiKey}`,
},
});
if (!response.ok) {
throw new Error('Failed to fetch parameters');
}
const parameters = await response.json();
parameters.forEach((param) => {
values[param.key] = param.value;
});
isLoaded = true;
notifySubscribers();
}
catch (error) {
console.error('Failed to fetch parameters:', error);
}
};
// Start fetching immediately
fetchParameters();
parameterStore = {
getValue: (key) => {
var _a;
if (!isLoaded) {
return null;
}
return (_a = values[key]) !== null && _a !== void 0 ? _a : null;
},
subscribe: (callback) => {
subscribers.push(callback);
// Only call callback with current values if we're loaded
if (isLoaded) {
callback(values);
}
// Return unsubscribe function
return () => {
subscribers = subscribers.filter((cb) => cb !== callback);
};
},
isLoaded: () => isLoaded,
};
return parameterStore;
}