diff --git a/html/src/repository/config.js b/html/src/repository/config.js
index 5cfb7240..308d6098 100644
--- a/html/src/repository/config.js
+++ b/html/src/repository/config.js
@@ -5,18 +5,22 @@ var dirtyKeySet = new Set();
class ConfigRepository extends SharedRepository {
async init() {
- try {
- await sqliteService.executeNonQuery('CREATE TABLE IF NOT EXISTS configs (`key` TEXT PRIMARY KEY, `value` TEXT)');
- await sqliteService.execute(
- (key, value) => sharedRepository.setString(key, value),
- 'SELECT `key`, `value` FROM configs'
- );
- } catch (err) {
- console.error(err);
- }
+ await sqliteService.executeNonQuery(
+ 'CREATE TABLE IF NOT EXISTS configs (`key` TEXT PRIMARY KEY, `value` TEXT)'
+ );
+ await sqliteService.execute(
+ (key, value) => sharedRepository.setString(key, value),
+ 'SELECT `key`, `value` FROM configs'
+ );
syncLoop();
}
+ remove(key) {
+ key = transformKey(key);
+ sharedRepository.remove(key);
+ dirtyKeySet.add(key);
+ }
+
getString(key, defaultValue = null) {
key = transformKey(key);
return sharedRepository.getString(key, defaultValue);
@@ -40,13 +44,23 @@ async function syncLoop() {
await sqliteService.executeNonQuery('BEGIN');
try {
for (var key of dirtyKeySet) {
- await sqliteService.executeNonQuery(
- 'INSERT OR REPLACE INTO configs (`key`, `value`) VALUES (@key, @value)',
- {
- '@key': key,
- '@value': sharedRepository.getString(key)
- }
- );
+ var value = sharedRepository.getString(key);
+ if (value === null) {
+ await sqliteService.executeNonQuery(
+ 'DELETE FROM configs WHERE `key` = @key',
+ {
+ '@key': key,
+ }
+ );
+ } else {
+ await sqliteService.executeNonQuery(
+ 'INSERT OR REPLACE INTO configs (`key`, `value`) VALUES (@key, @value)',
+ {
+ '@key': key,
+ '@value': value
+ }
+ );
+ }
}
dirtyKeySet.clear();
} finally {
diff --git a/html/src/repository/shared.js b/html/src/repository/shared.js
index be620486..a3dc0e6a 100644
--- a/html/src/repository/shared.js
+++ b/html/src/repository/shared.js
@@ -1,6 +1,10 @@
// requires binding of SharedVariable
class SharedRepository {
+ remove(key) {
+ key = transformKey(key);
+ return SharedVariable.Remove(key);
+ }
getString(key, defaultValue = null) {
key = transformKey(key);
var value = SharedVariable.Get(key);