mirror of
https://github.com/monkeytypegame/monkeytype.git
synced 2025-11-09 21:51:29 +08:00
Added command line support
This commit is contained in:
parent
a3c74b53b8
commit
5eea5526c4
2 changed files with 107 additions and 69 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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...",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue