diff --git a/html/src/app.js b/html/src/app.js index 97c1a78f..0bb5d737 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -11,8 +11,8 @@ import { DataTables } from 'vue-data-tables'; // eslint-disable-next-line no-unused-vars import ToggleSwitch from 'vuejs-toggle-switch'; import VSwatches from 'vue-swatches'; -Vue.component('v-swatches', VSwatches) -import "../node_modules/vue-swatches/dist/vue-swatches.css" +Vue.component('v-swatches', VSwatches); +import '../node_modules/vue-swatches/dist/vue-swatches.css'; import ElementUI from 'element-ui'; import locale from 'element-ui/lib/locale/lang/en'; @@ -4710,7 +4710,7 @@ speechSynthesis.getVoices(); $app.methods.updateGameLog = async function () { var currentUserDisplayName = API.currentUser.displayName; - for (var gameLog of await gameLogService.poll(API.currentUser.username)) { + for (var gameLog of await gameLogService.poll()) { var tableData = null; switch (gameLog.type) { diff --git a/html/src/repository/config.js b/html/src/repository/config.js index 64d684da..923e01df 100644 --- a/html/src/repository/config.js +++ b/html/src/repository/config.js @@ -3,6 +3,45 @@ import sharedRepository, { SharedRepository } from './shared.js'; var dirtyKeySet = new Set(); +function transformKey(key) { + return `config:${String(key).toLowerCase()}`; +} + +async function syncLoop() { + if (dirtyKeySet.size > 0) { + try { + await sqliteService.executeNonQuery('BEGIN'); + try { + for (var key of dirtyKeySet) { + 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 { + await sqliteService.executeNonQuery('COMMIT'); + } + } catch (err) { + console.error(err); + } + } + setTimeout(syncLoop, 100); +} + class ConfigRepository extends SharedRepository { async init() { await sqliteService.executeNonQuery( @@ -34,45 +73,6 @@ class ConfigRepository extends SharedRepository { } } -function transformKey(key) { - return `config:${String(key).toLowerCase()}`; -} - -async function syncLoop() { - if (dirtyKeySet.size > 0) { - try { - await sqliteService.executeNonQuery('BEGIN'); - try { - for (var key of dirtyKeySet) { - 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 { - await sqliteService.executeNonQuery('COMMIT'); - } - } catch (err) { - console.error(err); - } - } - setTimeout(syncLoop, 100); -} - var self = new ConfigRepository(); window.configRepository = self; diff --git a/html/src/repository/shared.js b/html/src/repository/shared.js index 0b51fd89..8b2837ef 100644 --- a/html/src/repository/shared.js +++ b/html/src/repository/shared.js @@ -1,5 +1,9 @@ // requires binding of SharedVariable +function transformKey(key) { + return String(key).toLowerCase(); +} + class SharedRepository { remove(key) { key = transformKey(key); @@ -95,10 +99,6 @@ class SharedRepository { setArray(key, value) { this.setObject(key, value); } -}; - -function transformKey(key) { - return String(key).toLowerCase(); } var self = new SharedRepository(); diff --git a/html/src/service/gamelog.js b/html/src/service/gamelog.js index 64b6f024..d52c6945 100644 --- a/html/src/service/gamelog.js +++ b/html/src/service/gamelog.js @@ -1,46 +1,7 @@ // requires binding of LogWatcher -var contextMap = new Map(); // - -class GameLogService { - async poll(loginUser) { - var rawGameLogs = await LogWatcher.Get(); - var gameLogs = []; - var now = Date.now(); - - for (var [fileName, dt, type, ...args] of rawGameLogs) { - var context = contextMap.get(fileName); - if (context === undefined) { - context = { - updatedAt: null, - - // location - location: null, - }; - contextMap.set(fileName, context); - } - - var gameLog = parseRawGameLog(dt, type, args); - - switch (gameLog.type) { - case 'location': - context.location = gameLog.location; - break; - } - - context.updatedAt = now; - - gameLogs.push(gameLog); - } - - return gameLogs; - } - - async reset() { - await LogWatcher.Reset(); - contextMap.clear(); - } -} +// +var contextMap = new Map(); function parseRawGameLog(dt, type, args) { var gameLog = { @@ -68,11 +29,57 @@ function parseRawGameLog(dt, type, args) { case 'notification': gameLog.json = args[0]; break; + + default: + break; } return gameLog; } +class GameLogService { + async poll() { + var rawGameLogs = await LogWatcher.Get(); + var gameLogs = []; + var now = Date.now(); + + for (var [fileName, dt, type, ...args] of rawGameLogs) { + var context = contextMap.get(fileName); + if (typeof context === 'undefined') { + context = { + updatedAt: null, + + // location + location: null + }; + contextMap.set(fileName, context); + } + + var gameLog = parseRawGameLog(dt, type, args); + + switch (gameLog.type) { + case 'location': + context.location = gameLog.location; + break; + + default: + break; + } + + context.updatedAt = now; + + gameLogs.push(gameLog); + } + + return gameLogs; + } + + async reset() { + await LogWatcher.Reset(); + contextMap.clear(); + } +} + var self = new GameLogService(); window.gameLogService = self;