@theoplayer/react-native-engage
Version:
Engage connector for @theoplayer/react-native
54 lines (53 loc) • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.readCluster = readCluster;
exports.removeCluster = removeCluster;
exports.storeCluster = storeCluster;
var _reactNativeMmkv = require("react-native-mmkv");
var _DefaultCluster = require("../cluster/DefaultCluster");
const TAG = 'EngageStorage';
const storage = new _reactNativeMmkv.MMKV({
id: 'engage-storage'
});
async function readCluster(client, clusterType) {
try {
return createCluster(client, clusterType, storage.getString(storageKeyForCluster(clusterType)));
} catch (e) {
console.warn(TAG, `Failed to retrieve cluster data from storage: ${e}`);
}
return createCluster(client, clusterType);
}
function createCluster(client, clusterType, json) {
if (json) {
try {
const cluster = JSON.parse(json);
return new _DefaultCluster.DefaultCluster(client, clusterType, cluster.entities);
} catch (e) {
console.warn(TAG, `Failed to retrieve cluster data from storage: ${e}`);
}
}
return new _DefaultCluster.DefaultCluster(client, clusterType);
}
async function storeCluster(cluster) {
const key = storageKeyForCluster(cluster.type);
try {
const json = JSON.stringify({
...cluster,
engageClient: undefined
});
storage.set(key, json);
return true;
} catch (e) {
console.warn(TAG, `Failed to store cluster data ${key}: ${e}`);
return false;
}
}
async function removeCluster(type) {
storage.delete(storageKeyForCluster(type));
}
function storageKeyForCluster(type) {
return `engage/cluster/${type}`;
}
//# sourceMappingURL=Storage.js.map