mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-23 08:43:50 +02:00
125 lines
2.9 KiB
JavaScript
125 lines
2.9 KiB
JavaScript
// requires binding of SharedVariable
|
|
|
|
function transformKey(key) {
|
|
return String(key).toLowerCase();
|
|
}
|
|
|
|
// function waitSynchronous(promise) {
|
|
// if (typeof promise !== 'object' || promise === null) {
|
|
// return promise;
|
|
// }
|
|
// console.log('waitSynchronous', promise);
|
|
// while (true) {
|
|
// var state = promise.getState();
|
|
// if (state === 'resolved') {
|
|
// return promise.get();
|
|
// }
|
|
// if (state === 'rejected') {
|
|
// return null;
|
|
// }
|
|
// }
|
|
// }
|
|
|
|
class SharedRepository {
|
|
remove(key) {
|
|
var _key = transformKey(key);
|
|
return SharedVariable.Remove(_key);
|
|
}
|
|
|
|
getString(key, defaultValue = null) {
|
|
var _key = transformKey(key);
|
|
// var get = SharedVariable.Get(_key);
|
|
// var value = waitSynchronous(get);
|
|
var value = SharedVariable.Get(_key);
|
|
if (value === null) {
|
|
return defaultValue;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
setString(key, value) {
|
|
var _key = transformKey(key);
|
|
var _value = String(value);
|
|
SharedVariable.Set(_key, _value);
|
|
}
|
|
|
|
getBool(key, defaultValue = null) {
|
|
var value = this.getString(key, null);
|
|
if (value === null) {
|
|
return defaultValue;
|
|
}
|
|
return value === 'true';
|
|
}
|
|
|
|
setBool(key, value) {
|
|
this.setString(key, value ? 'true' : 'false');
|
|
}
|
|
|
|
getInt(key, defaultValue = null) {
|
|
var value = this.getString(key, null);
|
|
if (value === null) {
|
|
return defaultValue;
|
|
}
|
|
value = parseInt(value, 10);
|
|
if (isNaN(value) === true) {
|
|
return defaultValue;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
setInt(key, value) {
|
|
this.setString(key, value);
|
|
}
|
|
|
|
getFloat(key, defaultValue = null) {
|
|
var value = this.getString(key, null);
|
|
if (value === null) {
|
|
return defaultValue;
|
|
}
|
|
value = parseFloat(value);
|
|
if (isNaN(value) === true) {
|
|
return defaultValue;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
setFloat(key, value) {
|
|
this.setString(key, value);
|
|
}
|
|
|
|
getObject(key, defaultValue = null) {
|
|
var value = this.getString(key, null);
|
|
if (value === null) {
|
|
return defaultValue;
|
|
}
|
|
try {
|
|
value = JSON.parse(value);
|
|
} catch (err) {}
|
|
if (value !== Object(value)) {
|
|
return defaultValue;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
setObject(key, value) {
|
|
this.setString(key, JSON.stringify(value));
|
|
}
|
|
|
|
getArray(key, defaultValue = null) {
|
|
var value = this.getObject(key, null);
|
|
if (Array.isArray(value) === false) {
|
|
return defaultValue;
|
|
}
|
|
return value;
|
|
}
|
|
|
|
setArray(key, value) {
|
|
this.setObject(key, value);
|
|
}
|
|
}
|
|
|
|
var self = new SharedRepository();
|
|
window.sharedRepository = self;
|
|
|
|
export {self as default, SharedRepository};
|