Convert some util* functions into api* functions
This commit is contained in:
parent
3c48290cd8
commit
51e17b35e3
@ -102,7 +102,13 @@ class Backend {
|
||||
['getQueryParserTemplatesHtml', {handler: this._onApiGetQueryParserTemplatesHtml.bind(this), async: true}],
|
||||
['getZoom', {handler: this._onApiGetZoom.bind(this), async: true}],
|
||||
['getMessageToken', {handler: this._onApiGetMessageToken.bind(this), async: false}],
|
||||
['getDefaultAnkiFieldTemplates', {handler: this._onApiGetDefaultAnkiFieldTemplates.bind(this), async: false}]
|
||||
['getDefaultAnkiFieldTemplates', {handler: this._onApiGetDefaultAnkiFieldTemplates.bind(this), async: false}],
|
||||
['getAnkiDeckNames', {handler: this._onApiGetAnkiDeckNames.bind(this), async: true}],
|
||||
['getAnkiModelNames', {handler: this._onApiGetAnkiModelNames.bind(this), async: true}],
|
||||
['getAnkiModelFieldNames', {handler: this._onApiGetAnkiModelFieldNames.bind(this), async: true}],
|
||||
['getDictionaryInfo', {handler: this._onApiGetDictionaryInfo.bind(this), async: true}],
|
||||
['getDictionaryCounts', {handler: this._onApiGetDictionaryCounts.bind(this), async: true}],
|
||||
['purgeDatabase', {handler: this._onApiPurgeDatabase.bind(this), async: true}]
|
||||
]);
|
||||
|
||||
this._commandHandlers = new Map([
|
||||
@ -704,6 +710,36 @@ class Backend {
|
||||
return this.defaultAnkiFieldTemplates;
|
||||
}
|
||||
|
||||
async _onApiGetAnkiDeckNames(params, sender) {
|
||||
this._validatePrivilegedMessageSender(sender);
|
||||
return await this.anki.getDeckNames();
|
||||
}
|
||||
|
||||
async _onApiGetAnkiModelNames(params, sender) {
|
||||
this._validatePrivilegedMessageSender(sender);
|
||||
return await this.anki.getModelNames();
|
||||
}
|
||||
|
||||
async _onApiGetAnkiModelFieldNames({modelName}, sender) {
|
||||
this._validatePrivilegedMessageSender(sender);
|
||||
return await this.anki.getModelFieldNames(modelName);
|
||||
}
|
||||
|
||||
async _onApiGetDictionaryInfo(params, sender) {
|
||||
this._validatePrivilegedMessageSender(sender);
|
||||
return await this.translator.database.getDictionaryInfo();
|
||||
}
|
||||
|
||||
async _onApiGetDictionaryCounts({dictionaryNames, getTotal}, sender) {
|
||||
this._validatePrivilegedMessageSender(sender);
|
||||
return await this.translator.database.getDictionaryCounts(dictionaryNames, getTotal);
|
||||
}
|
||||
|
||||
async _onApiPurgeDatabase(params, sender) {
|
||||
this._validatePrivilegedMessageSender(sender);
|
||||
return await this.translator.purgeDatabase();
|
||||
}
|
||||
|
||||
// Command handlers
|
||||
|
||||
async _onCommandSearch(params) {
|
||||
@ -800,6 +836,13 @@ class Backend {
|
||||
|
||||
// Utilities
|
||||
|
||||
_validatePrivilegedMessageSender(sender) {
|
||||
const url = sender.url;
|
||||
if (!(typeof url === 'string' && yomichan.isExtensionUrl(url))) {
|
||||
throw new Error('Invalid message sender');
|
||||
}
|
||||
}
|
||||
|
||||
async _getAudioUri(definition, source, details) {
|
||||
let optionsContext = (typeof details === 'object' && details !== null ? details.optionsContext : null);
|
||||
if (!(typeof optionsContext === 'object' && optionsContext !== null)) {
|
||||
|
@ -16,13 +16,13 @@
|
||||
*/
|
||||
|
||||
/* global
|
||||
* apiGetAnkiDeckNames
|
||||
* apiGetAnkiModelFieldNames
|
||||
* apiGetAnkiModelNames
|
||||
* getOptionsContext
|
||||
* getOptionsMutable
|
||||
* onFormOptionsChanged
|
||||
* settingsSaveOptions
|
||||
* utilAnkiGetDeckNames
|
||||
* utilAnkiGetModelFieldNames
|
||||
* utilAnkiGetModelNames
|
||||
* utilBackgroundIsolate
|
||||
*/
|
||||
|
||||
@ -107,7 +107,7 @@ async function _ankiDeckAndModelPopulate(options) {
|
||||
const kanjiModel = {value: options.anki.kanji.model, selector: '#anki-kanji-model'};
|
||||
try {
|
||||
_ankiSpinnerShow(true);
|
||||
const [deckNames, modelNames] = await Promise.all([utilAnkiGetDeckNames(), utilAnkiGetModelNames()]);
|
||||
const [deckNames, modelNames] = await Promise.all([apiGetAnkiDeckNames(), apiGetAnkiModelNames()]);
|
||||
deckNames.sort();
|
||||
modelNames.sort();
|
||||
termsDeck.values = deckNames;
|
||||
@ -180,7 +180,7 @@ async function _onAnkiModelChanged(e) {
|
||||
let fieldNames;
|
||||
try {
|
||||
const modelName = node.value;
|
||||
fieldNames = await utilAnkiGetModelFieldNames(modelName);
|
||||
fieldNames = await apiGetAnkiModelFieldNames(modelName);
|
||||
_ankiSetError(null);
|
||||
} catch (error) {
|
||||
_ankiSetError(error);
|
||||
|
@ -17,8 +17,11 @@
|
||||
|
||||
/* global
|
||||
* PageExitPrevention
|
||||
* apiGetDictionaryCounts
|
||||
* apiGetDictionaryInfo
|
||||
* apiOptionsGet
|
||||
* apiOptionsGetFull
|
||||
* apiPurgeDatabase
|
||||
* getOptionsContext
|
||||
* getOptionsFullMutable
|
||||
* getOptionsMutable
|
||||
@ -27,10 +30,7 @@
|
||||
* storageUpdateStats
|
||||
* utilBackgroundIsolate
|
||||
* utilDatabaseDeleteDictionary
|
||||
* utilDatabaseGetDictionaryCounts
|
||||
* utilDatabaseGetDictionaryInfo
|
||||
* utilDatabaseImport
|
||||
* utilDatabasePurge
|
||||
*/
|
||||
|
||||
let dictionaryUI = null;
|
||||
@ -431,7 +431,7 @@ async function onDictionaryOptionsChanged() {
|
||||
|
||||
async function onDatabaseUpdated() {
|
||||
try {
|
||||
const dictionaries = await utilDatabaseGetDictionaryInfo();
|
||||
const dictionaries = await apiGetDictionaryInfo();
|
||||
dictionaryUI.setDictionaries(dictionaries);
|
||||
|
||||
document.querySelector('#dict-warning').hidden = (dictionaries.length > 0);
|
||||
@ -439,7 +439,7 @@ async function onDatabaseUpdated() {
|
||||
updateMainDictionarySelectOptions(dictionaries);
|
||||
await updateMainDictionarySelectValue();
|
||||
|
||||
const {counts, total} = await utilDatabaseGetDictionaryCounts(dictionaries.map((v) => v.title), true);
|
||||
const {counts, total} = await apiGetDictionaryCounts(dictionaries.map((v) => v.title), true);
|
||||
dictionaryUI.setCounts(counts, total);
|
||||
} catch (e) {
|
||||
dictionaryErrorsShow([e]);
|
||||
@ -618,7 +618,7 @@ async function onDictionaryPurge(e) {
|
||||
dictionaryErrorsShow(null);
|
||||
dictionarySpinnerShow(true);
|
||||
|
||||
await utilDatabasePurge();
|
||||
await apiPurgeDatabase();
|
||||
for (const {options} of toIterable((await getOptionsFullMutable()).profiles)) {
|
||||
options.dictionaries = utilBackgroundIsolate({});
|
||||
options.general.mainDictionary = '';
|
||||
|
@ -79,35 +79,6 @@ function utilBackend() {
|
||||
return backend;
|
||||
}
|
||||
|
||||
async function utilAnkiGetModelNames() {
|
||||
return utilIsolate(await utilBackend().anki.getModelNames());
|
||||
}
|
||||
|
||||
async function utilAnkiGetDeckNames() {
|
||||
return utilIsolate(await utilBackend().anki.getDeckNames());
|
||||
}
|
||||
|
||||
async function utilDatabaseGetDictionaryInfo() {
|
||||
return utilIsolate(await utilBackend().translator.database.getDictionaryInfo());
|
||||
}
|
||||
|
||||
async function utilDatabaseGetDictionaryCounts(dictionaryNames, getTotal) {
|
||||
return utilIsolate(await utilBackend().translator.database.getDictionaryCounts(
|
||||
utilBackgroundIsolate(dictionaryNames),
|
||||
utilBackgroundIsolate(getTotal)
|
||||
));
|
||||
}
|
||||
|
||||
async function utilAnkiGetModelFieldNames(modelName) {
|
||||
return utilIsolate(await utilBackend().anki.getModelFieldNames(
|
||||
utilBackgroundIsolate(modelName)
|
||||
));
|
||||
}
|
||||
|
||||
async function utilDatabasePurge() {
|
||||
return utilIsolate(await utilBackend().translator.purgeDatabase());
|
||||
}
|
||||
|
||||
async function utilDatabaseDeleteDictionary(dictionaryName, onProgress) {
|
||||
return utilIsolate(await utilBackend().translator.database.deleteDictionary(
|
||||
utilBackgroundIsolate(dictionaryName),
|
||||
|
@ -120,6 +120,30 @@ function apiGetDefaultAnkiFieldTemplates() {
|
||||
return _apiInvoke('getDefaultAnkiFieldTemplates');
|
||||
}
|
||||
|
||||
function apiGetAnkiDeckNames() {
|
||||
return _apiInvoke('getAnkiDeckNames');
|
||||
}
|
||||
|
||||
function apiGetAnkiModelNames() {
|
||||
return _apiInvoke('getAnkiModelNames');
|
||||
}
|
||||
|
||||
function apiGetAnkiModelFieldNames(modelName) {
|
||||
return _apiInvoke('getAnkiModelFieldNames', {modelName});
|
||||
}
|
||||
|
||||
function apiGetDictionaryInfo() {
|
||||
return _apiInvoke('getDictionaryInfo');
|
||||
}
|
||||
|
||||
function apiGetDictionaryCounts(dictionaryNames, getTotal) {
|
||||
return _apiInvoke('getDictionaryCounts', {dictionaryNames, getTotal});
|
||||
}
|
||||
|
||||
function apiPurgeDatabase() {
|
||||
return _apiInvoke('purgeDatabase');
|
||||
}
|
||||
|
||||
function _apiInvoke(action, params={}) {
|
||||
const data = {action, params};
|
||||
return new Promise((resolve, reject) => {
|
||||
|
Loading…
Reference in New Issue
Block a user