diff --git a/html/src/app.js b/html/src/app.js index e79186f7..9fc4a36b 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -1084,7 +1084,7 @@ window.configRepository = configRepository; ref }); } - sharedRepository.set('current_user_status', ref.status); + sharedRepository.setString('current_user_status', ref.status); return ref; }; diff --git a/html/src/repository/config.js b/html/src/repository/config.js index 5c5b87ef..4ad7e7c9 100644 --- a/html/src/repository/config.js +++ b/html/src/repository/config.js @@ -1,19 +1,37 @@ import sqlite from '../sqlite.js'; -import sharedRepository from './shared.js'; +import sharedRepository, { SharedRepository } from './shared.js'; var dirtyKeySet = new Set(); -async function init() { - try { - await sqlite.executeNonQuery('CREATE TABLE IF NOT EXISTS configs (`key` TEXT PRIMARY KEY, `value` TEXT)'); - await sqlite.execute( - (key, value) => sharedRepository.set(key, value), - 'SELECT `key`, `value` FROM configs' - ); - } catch (err) { - console.error(err); +class ConfigRepository extends SharedRepository { + async init() { + try { + await sqlite.executeNonQuery('CREATE TABLE IF NOT EXISTS configs (`key` TEXT PRIMARY KEY, `value` TEXT)'); + await sqlite.execute( + (key, value) => sharedRepository.setString(key, value), + 'SELECT `key`, `value` FROM configs' + ); + } catch (err) { + console.error(err); + } + syncLoop(); } - syncLoop(); + + getString(key, defaultValue = null) { + key = transformKey(key); + return sharedRepository.getString(key, defaultValue); + } + + setString(key, value) { + key = transformKey(key); + value = String(value); + sharedRepository.setString(key, value); + dirtyKeySet.add(key); + } +} + +function transformKey(key) { + return `config:${String(key).toLowerCase()}`; } async function syncLoop() { @@ -41,109 +59,9 @@ async function syncLoop() { setTimeout(syncLoop, 100); } -function transformKey(key) { - return `config:${String(key).toLowerCase()}`; -} +var self = new ConfigRepository(); -function get(key, defaultValue = null) { - key = transformKey(key); - return sharedRepository.get(key, defaultValue); -} - -function set(key, value) { - key = transformKey(key); - value = String(value); - sharedRepository.set(key, value); - dirtyKeySet.add(key); -} - -function getBool(key, defaultValue = null) { - var value = get(key, null); - if (value === null) { - return defaultValue; - } - return value === 'true'; -} - -function setBool(key, value) { - set(key, value ? 'true' : 'false'); -} - -function getInt(key, defaultValue = null) { - var value = get(key, null); - if (value === null) { - return defaultValue; - } - value = parseInt(value, 10); - if (isNaN(value) === true) { - return defaultValue; - } - return value; -} - -function setInt(key, value) { - set(key, value); -} - -function getFloat(key, defaultValue = null) { - var value = get(key, null); - if (value === null) { - return defaultValue; - } - value = parseFloat(value); - if (isNaN(value) === true) { - return defaultValue; - } - return value; -} - -function setFloat(key, value) { - set(key, value); -} - -function getObject(key, defaultValue = null) { - var value = get(key, null); - if (value === null) { - return defaultValue; - } - try { - value = JSON.parse(value); - } catch (err) { - } - if (value !== Object(value)) { - return defaultValue; - } - return value; -} - -function setObject(key, value) { - set(key, JSON.stringify(value)); -} - -function getArray(key, defaultValue = null) { - var value = getObject(key, null); - if (Array.isArray(value) === false) { - return defaultValue; - } - return value; -} - -function setArray(key, value) { - setObject(key, value); -} - -export default { - init, - get, - set, - getBool, - setBool, - getInt, - setInt, - getFloat, - setFloat, - getObject, - setObject, - getArray, - setArray +export { + self as default, + ConfigRepository }; diff --git a/html/src/repository/shared.js b/html/src/repository/shared.js index 4d5f78fb..caa931f1 100644 --- a/html/src/repository/shared.js +++ b/html/src/repository/shared.js @@ -1,110 +1,104 @@ // requires binding of SharedVariable +class SharedRepository { + getString(key, defaultValue = null) { + key = transformKey(key); + var value = SharedVariable.Get(key); + if (value === undefined) { + return defaultValue; + } + return value; + } + + setString(key, value) { + key = transformKey(key); + 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); + } +}; + function transformKey(key) { return String(key).toLowerCase(); } -function get(key, defaultValue = null) { - key = transformKey(key); - var value = SharedVariable.Get(key); - if (value === undefined) { - return defaultValue; - } - return value; -} +var self = new SharedRepository(); -function set(key, value) { - key = transformKey(key); - value = String(value); - SharedVariable.Set(key, value); -} - -function getBool(key, defaultValue = null) { - var value = get(key, null); - if (value === null) { - return defaultValue; - } - return value === 'true'; -} - -function setBool(key, value) { - set(key, value ? 'true' : 'false'); -} - -function getInt(key, defaultValue = null) { - var value = get(key, null); - if (value === null) { - return defaultValue; - } - value = parseInt(value, 10); - if (isNaN(value) === true) { - return defaultValue; - } - return value; -} - -function setInt(key, value) { - set(key, value); -} - -function getFloat(key, defaultValue = null) { - var value = get(key, null); - if (value === null) { - return defaultValue; - } - value = parseFloat(value); - if (isNaN(value) === true) { - return defaultValue; - } - return value; -} - -function setFloat(key, value) { - set(key, value); -} - -function getObject(key, defaultValue = null) { - var value = get(key, null); - if (value === null) { - return defaultValue; - } - try { - value = JSON.parse(value); - } catch (err) { - } - if (value !== Object(value)) { - return defaultValue; - } - return value; -} - -function setObject(key, value) { - set(key, JSON.stringify(value)); -} - -function getArray(key, defaultValue = null) { - var value = getObject(key, null); - if (Array.isArray(value) === false) { - return defaultValue; - } - return value; -} - -function setArray(key, value) { - setObject(key, value); -} - -export default { - get, - set, - getBool, - setBool, - getInt, - setInt, - getFloat, - setFloat, - getObject, - setObject, - getArray, - setArray +export { + self as default, + SharedRepository }; diff --git a/html/src/vr.js b/html/src/vr.js index 40daad57..cbe16a1e 100644 --- a/html/src/vr.js +++ b/html/src/vr.js @@ -615,7 +615,7 @@ window.configRepository = configRepository; $app.methods.updateLoop = async function () { try { this.currentTime = new Date().toJSON(); - this.currentUserStatus = sharedRepository.get('current_user_status'); + this.currentUserStatus = sharedRepository.getString('current_user_status'); if (configRepository.getBool('VRCX_hideDevicesFromFeed') === false) { VRCX.GetVRDevices().then((devices) => { devices.forEach((device) => {