From 5eea5526c40e9538208e1e243ae32952118aa028 Mon Sep 17 00:00:00 2001 From: Estebene Date: Sun, 9 May 2021 12:09:59 +1200 Subject: [PATCH] Added command line support --- functions/index.js | 140 ++++++++++++++++++------------------ src/js/commandline-lists.js | 36 ++++++++++ 2 files changed, 107 insertions(+), 69 deletions(-) diff --git a/functions/index.js b/functions/index.js index e589f774c..82bb3deae 100644 --- a/functions/index.js +++ b/functions/index.js @@ -1627,7 +1627,7 @@ function updateDiscordRole(discordId, wpm) { }); } -function isTagValid(name) { +function isTagPresetNameValid(name) { if (name === null || name === undefined || name === "") return false; if (name.length > 16) return false; return /^[0-9a-zA-Z_.-]+$/.test(name); @@ -1635,7 +1635,7 @@ function isTagValid(name) { exports.addTag = functions.https.onCall((request, response) => { try { - if (!isTagValid(request.name)) { + if (!isTagPresetNameValid(request.name)) { return { resultCode: -1 }; } else { return db @@ -1665,7 +1665,7 @@ exports.addTag = functions.https.onCall((request, response) => { exports.editTag = functions.https.onCall((request, response) => { try { - if (!isTagValid(request.name)) { + if (!isTagPresetNameValid(request.name)) { return { resultCode: -1 }; } else { return db @@ -1847,83 +1847,85 @@ exports.saveConfig = functions.https.onCall((request, response) => { exports.addPreset = functions.https.onCall(async (request, response) => { try { - if (request.uid === undefined || request.obj === undefined) { + if (!isTagPresetNameValid(request.name)) { + return { resultCode: -1 }; + } else if (request.uid === undefined || request.obj === undefined) { console.error(`error saving config for ${request.uid} - missing input`); return { resultCode: -1, message: "Missing input", }; - } - - let config = request.obj.config; - let errorMessage = ""; - let err = false; - Object.keys(config).forEach((key) => { - if (err) return; - if (!isConfigKeyValid(key)) { - err = true; - console.error(`${key} failed regex check`); - errorMessage = `${key} failed regex check`; - } - if (err) return; - if (key === "resultFilters") return; - if (key === "customBackground") return; - let val = config[key]; - if (Array.isArray(val)) { - val.forEach((valarr) => { - if (!isConfigKeyValid(valarr)) { - err = true; - console.error(`${key}: ${valarr} failed regex check`); - errorMessage = `${key}: ${valarr} failed regex check`; - } - }); - } else { - if (!isConfigKeyValid(val)) { + } else { + let config = request.obj.config; + let errorMessage = ""; + let err = false; + Object.keys(config).forEach((key) => { + if (err) return; + if (!isConfigKeyValid(key)) { err = true; - console.error(`${key}: ${val} failed regex check`); - errorMessage = `${key}: ${val} failed regex check`; + console.error(`${key} failed regex check`); + errorMessage = `${key} failed regex check`; } - } - }); - if (err) { - console.error( - `error adding preset for ${request.uid} - bad input - ${JSON.stringify( - request.obj - )}` - ); - return { - resultCode: -1, - message: "Bad input. " + errorMessage, - }; - } - - let presets = await db.collection(`users/${request.uid}/presets`).get(); - if (presets.docs.length >= 10) { - return { - resultCode: -2, - message: "Preset limit", - }; - } - - return db - .collection(`users/${request.uid}/presets`) - .add(request.obj) - .then((e) => { - return { - resultCode: 1, - message: "Saved", - id: e.id, - }; - }) - .catch((e) => { + if (err) return; + if (key === "resultFilters") return; + if (key === "customBackground") return; + let val = config[key]; + if (Array.isArray(val)) { + val.forEach((valarr) => { + if (!isConfigKeyValid(valarr)) { + err = true; + console.error(`${key}: ${valarr} failed regex check`); + errorMessage = `${key}: ${valarr} failed regex check`; + } + }); + } else { + if (!isConfigKeyValid(val)) { + err = true; + console.error(`${key}: ${val} failed regex check`); + errorMessage = `${key}: ${val} failed regex check`; + } + } + }); + if (err) { console.error( - `error adding preset to DB for ${request.uid} - ${e.message}` + `error adding preset for ${ + request.uid + } - bad input - ${JSON.stringify(request.obj)}` ); return { resultCode: -1, - message: e.message, + message: "Bad input. " + errorMessage, }; - }); + } + + let presets = await db.collection(`users/${request.uid}/presets`).get(); + if (presets.docs.length >= 10) { + return { + resultCode: -2, + message: "Preset limit", + }; + } + + return db + .collection(`users/${request.uid}/presets`) + .add(request.obj) + .then((e) => { + return { + resultCode: 1, + message: "Saved", + id: e.id, + }; + }) + .catch((e) => { + console.error( + `error adding preset to DB for ${request.uid} - ${e.message}` + ); + return { + resultCode: -1, + message: e.message, + }; + }); + } } catch (e) { console.error(`error adding preset for ${request.uid} - ${e}`); return { @@ -1935,7 +1937,7 @@ exports.addPreset = functions.https.onCall(async (request, response) => { exports.editPreset = functions.https.onCall((request, response) => { try { - if (!isTagValid(request.name)) { + if (!isTagPresetValid(request.name)) { return { resultCode: -1 }; } else { return db diff --git a/src/js/commandline-lists.js b/src/js/commandline-lists.js index f99bb5821..fafae8993 100644 --- a/src/js/commandline-lists.js +++ b/src/js/commandline-lists.js @@ -13,6 +13,7 @@ import * as TestUI from "./test-ui"; import * as TestLogic from "./test-logic"; import * as Funbox from "./funbox"; import * as TagController from "./tag-controller"; +import * as PresetController from "./preset-controller"; import * as Commandline from "./commandline"; import * as CustomText from "./custom-text"; @@ -241,6 +242,30 @@ export function updateTagCommands() { } } +let commandsPresets = { + title: "Apply preset...", + list: [], +}; + +export function updatePresetCommands() { + if (DB.getSnapshot().presets.length > 0) { + commandsPresets.list = []; + + DB.getSnapshot().presets.forEach((preset) => { + let dis = preset.name; + + commandsPresets.list.push({ + id: "applyPreset" + preset.id, + display: dis, + exec: () => { + PresetController.apply(preset.id); + TestUI.updateModesNotice(); + }, + }); + }); + } +} + let commandsRepeatQuotes = { title: "Change repeat quotes...", list: [ @@ -1313,6 +1338,17 @@ export let defaultCommands = { Commandline.show(); }, }, + { + visible: false, + id: "applyPreset", + display: "Apply preset...", + subgroup: true, + exec: () => { + updatePresetCommands(); + current.push(commandsPresets); + Commandline.show(); + }, + }, { id: "changeConfidenceMode", display: "Change confidence mode...",