diff options
Diffstat (limited to 'ext/js/pages')
| -rw-r--r-- | ext/js/pages/action-popup-main.js | 12 | ||||
| -rw-r--r-- | ext/js/pages/info-main.js | 83 | ||||
| -rw-r--r-- | ext/js/pages/permissions-main.js | 82 | ||||
| -rw-r--r-- | ext/js/pages/settings/popup-preview-frame-main.js | 43 | ||||
| -rw-r--r-- | ext/js/pages/settings/settings-main.js | 165 | ||||
| -rw-r--r-- | ext/js/pages/welcome-main.js | 83 | 
6 files changed, 202 insertions, 266 deletions
| diff --git a/ext/js/pages/action-popup-main.js b/ext/js/pages/action-popup-main.js index 6d2c85ab..e5738878 100644 --- a/ext/js/pages/action-popup-main.js +++ b/ext/js/pages/action-popup-main.js @@ -305,17 +305,9 @@ class DisplayController {      }  } -/** Entry point. */ -async function main() { -    const application = new Application(); -    await application.prepare(); - +await Application.main(async (application) => {      application.api.logIndicatorClear();      const displayController = new DisplayController(application.api);      displayController.prepare(); - -    application.ready(); -} - -await main(); +}); diff --git a/ext/js/pages/info-main.js b/ext/js/pages/info-main.js index ca5094b1..7d7d56a5 100644 --- a/ext/js/pages/info-main.js +++ b/ext/js/pages/info-main.js @@ -17,7 +17,6 @@   */  import {Application} from '../application.js'; -import {log} from '../core/logger.js';  import {promiseTimeout} from '../core/utilities.js';  import {DocumentFocusController} from '../dom/document-focus-controller.js';  import {querySelectorNotNull} from '../dom/query-selector.js'; @@ -116,59 +115,49 @@ async function showDictionaryInfo(api) {      container.appendChild(fragment);  } -/** Entry point. */ -async function main() { -    try { -        const documentFocusController = new DocumentFocusController(); -        documentFocusController.prepare(); - -        const manifest = chrome.runtime.getManifest(); -        const language = chrome.i18n.getUILanguage(); - -        const application = new Application(); -        await application.prepare(); +await Application.main(async (application) => { +    const documentFocusController = new DocumentFocusController(); +    documentFocusController.prepare(); -        const {userAgent} = navigator; -        const {name, version} = manifest; -        const {browser, platform: {os}} = await application.api.getEnvironmentInfo(); +    const manifest = chrome.runtime.getManifest(); +    const language = chrome.i18n.getUILanguage(); -        /** @type {HTMLLinkElement} */ -        const thisVersionLink = querySelectorNotNull(document, '#release-notes-this-version-link'); -        const {hrefFormat} = thisVersionLink.dataset; -        thisVersionLink.href = typeof hrefFormat === 'string' ? hrefFormat.replace(/\{version\}/g, version) : ''; +    const {userAgent} = navigator; +    const {name, version} = manifest; +    const {browser, platform: {os}} = await application.api.getEnvironmentInfo(); -        /** @type {HTMLElement} */ -        const versionElement = querySelectorNotNull(document, '#version'); -        /** @type {HTMLElement} */ -        const browserElement = querySelectorNotNull(document, '#browser'); -        /** @type {HTMLElement} */ -        const platformElement = querySelectorNotNull(document, '#platform'); -        /** @type {HTMLElement} */ -        const languageElement = querySelectorNotNull(document, '#language'); -        /** @type {HTMLElement} */ -        const userAgentElement = querySelectorNotNull(document, '#user-agent'); +    /** @type {HTMLLinkElement} */ +    const thisVersionLink = querySelectorNotNull(document, '#release-notes-this-version-link'); +    const {hrefFormat} = thisVersionLink.dataset; +    thisVersionLink.href = typeof hrefFormat === 'string' ? hrefFormat.replace(/\{version\}/g, version) : ''; -        versionElement.textContent = `${name} ${version}`; -        browserElement.textContent = getBrowserDisplayName(browser); -        platformElement.textContent = getOperatingSystemDisplayName(os); -        languageElement.textContent = `${language}`; -        userAgentElement.textContent = userAgent; +    /** @type {HTMLElement} */ +    const versionElement = querySelectorNotNull(document, '#version'); +    /** @type {HTMLElement} */ +    const browserElement = querySelectorNotNull(document, '#browser'); +    /** @type {HTMLElement} */ +    const platformElement = querySelectorNotNull(document, '#platform'); +    /** @type {HTMLElement} */ +    const languageElement = querySelectorNotNull(document, '#language'); +    /** @type {HTMLElement} */ +    const userAgentElement = querySelectorNotNull(document, '#user-agent'); -        showAnkiConnectInfo(application.api); -        showDictionaryInfo(application.api); +    versionElement.textContent = `${name} ${version}`; +    browserElement.textContent = getBrowserDisplayName(browser); +    platformElement.textContent = getOperatingSystemDisplayName(os); +    languageElement.textContent = `${language}`; +    userAgentElement.textContent = userAgent; -        const settingsController = new SettingsController(application); -        await settingsController.prepare(); +    showAnkiConnectInfo(application.api); +    showDictionaryInfo(application.api); -        const backupController = new BackupController(settingsController, null); -        await backupController.prepare(); +    const settingsController = new SettingsController(application); +    await settingsController.prepare(); -        await promiseTimeout(100); +    const backupController = new BackupController(settingsController, null); +    await backupController.prepare(); -        document.documentElement.dataset.loaded = 'true'; -    } catch (e) { -        log.error(e); -    } -} +    await promiseTimeout(100); -await main(); +    document.documentElement.dataset.loaded = 'true'; +}); diff --git a/ext/js/pages/permissions-main.js b/ext/js/pages/permissions-main.js index 1659bea5..3092782b 100644 --- a/ext/js/pages/permissions-main.js +++ b/ext/js/pages/permissions-main.js @@ -17,7 +17,6 @@   */  import {Application} from '../application.js'; -import {log} from '../core/logger.js';  import {promiseTimeout} from '../core/utilities.js';  import {DocumentFocusController} from '../dom/document-focus-controller.js';  import {querySelectorNotNull} from '../dom/query-selector.js'; @@ -87,63 +86,52 @@ function setupPermissionsToggles() {      }  } -/** Entry point. */ -async function main() { -    try { -        const application = new Application(); +await Application.main(async (application) => { +    const documentFocusController = new DocumentFocusController(); +    documentFocusController.prepare(); -        const documentFocusController = new DocumentFocusController(); -        documentFocusController.prepare(); +    const extensionContentController = new ExtensionContentController(); +    extensionContentController.prepare(); -        const extensionContentController = new ExtensionContentController(); -        extensionContentController.prepare(); +    setupPermissionsToggles(); -        setupPermissionsToggles(); +    setupEnvironmentInfo(application.api); -        await application.prepare(); +    /** @type {HTMLInputElement} */ +    const permissionCheckbox1 = querySelectorNotNull(document, '#permission-checkbox-allow-in-private-windows'); +    /** @type {HTMLInputElement} */ +    const permissionCheckbox2 = querySelectorNotNull(document, '#permission-checkbox-allow-file-url-access'); +    /** @type {HTMLInputElement[]} */ +    const permissionsCheckboxes = [permissionCheckbox1, permissionCheckbox2]; -        setupEnvironmentInfo(application.api); +    const permissions = await Promise.all([ +        isAllowedIncognitoAccess(), +        isAllowedFileSchemeAccess() +    ]); -        /** @type {HTMLInputElement} */ -        const permissionCheckbox1 = querySelectorNotNull(document, '#permission-checkbox-allow-in-private-windows'); -        /** @type {HTMLInputElement} */ -        const permissionCheckbox2 = querySelectorNotNull(document, '#permission-checkbox-allow-file-url-access'); -        /** @type {HTMLInputElement[]} */ -        const permissionsCheckboxes = [permissionCheckbox1, permissionCheckbox2]; - -        const permissions = await Promise.all([ -            isAllowedIncognitoAccess(), -            isAllowedFileSchemeAccess() -        ]); - -        for (let i = 0, ii = permissions.length; i < ii; ++i) { -            permissionsCheckboxes[i].checked = permissions[i]; -        } - -        const modalController = new ModalController(); -        modalController.prepare(); +    for (let i = 0, ii = permissions.length; i < ii; ++i) { +        permissionsCheckboxes[i].checked = permissions[i]; +    } -        const settingsController = new SettingsController(application); -        await settingsController.prepare(); +    const modalController = new ModalController(); +    modalController.prepare(); -        const permissionsToggleController = new PermissionsToggleController(settingsController); -        permissionsToggleController.prepare(); +    const settingsController = new SettingsController(application); +    await settingsController.prepare(); -        const permissionsOriginController = new PermissionsOriginController(settingsController); -        permissionsOriginController.prepare(); +    const permissionsToggleController = new PermissionsToggleController(settingsController); +    permissionsToggleController.prepare(); -        const persistentStorageController = new PersistentStorageController(application); -        persistentStorageController.prepare(); +    const permissionsOriginController = new PermissionsOriginController(settingsController); +    permissionsOriginController.prepare(); -        await promiseTimeout(100); +    const persistentStorageController = new PersistentStorageController(application); +    persistentStorageController.prepare(); -        document.documentElement.dataset.loaded = 'true'; +    await promiseTimeout(100); -        const settingsDisplayController = new SettingsDisplayController(settingsController, modalController); -        settingsDisplayController.prepare(); -    } catch (e) { -        log.error(e); -    } -} +    document.documentElement.dataset.loaded = 'true'; -await main(); +    const settingsDisplayController = new SettingsDisplayController(settingsController, modalController); +    settingsDisplayController.prepare(); +}); diff --git a/ext/js/pages/settings/popup-preview-frame-main.js b/ext/js/pages/settings/popup-preview-frame-main.js index fd08bf1d..cffbf01b 100644 --- a/ext/js/pages/settings/popup-preview-frame-main.js +++ b/ext/js/pages/settings/popup-preview-frame-main.js @@ -18,37 +18,26 @@  import {PopupFactory} from '../../app/popup-factory.js';  import {Application} from '../../application.js'; -import {log} from '../../core/logger.js';  import {HotkeyHandler} from '../../input/hotkey-handler.js';  import {PopupPreviewFrame} from './popup-preview-frame.js'; -/** Entry point. */ -async function main() { -    try { -        const application = new Application(); -        await application.prepare(); - -        const {tabId, frameId} = await application.api.frameInformationGet(); -        if (typeof tabId === 'undefined') { -            throw new Error('Failed to get tabId'); -        } -        if (typeof frameId === 'undefined') { -            throw new Error('Failed to get frameId'); -        } - -        const hotkeyHandler = new HotkeyHandler(); -        hotkeyHandler.prepare(application.crossFrame); +await Application.main(async (application) => { +    const {tabId, frameId} = await application.api.frameInformationGet(); +    if (typeof tabId === 'undefined') { +        throw new Error('Failed to get tabId'); +    } +    if (typeof frameId === 'undefined') { +        throw new Error('Failed to get frameId'); +    } -        const popupFactory = new PopupFactory(application, frameId); -        popupFactory.prepare(); +    const hotkeyHandler = new HotkeyHandler(); +    hotkeyHandler.prepare(application.crossFrame); -        const preview = new PopupPreviewFrame(application, tabId, frameId, popupFactory, hotkeyHandler); -        await preview.prepare(); +    const popupFactory = new PopupFactory(application, frameId); +    popupFactory.prepare(); -        document.documentElement.dataset.loaded = 'true'; -    } catch (e) { -        log.error(e); -    } -} +    const preview = new PopupPreviewFrame(application, tabId, frameId, popupFactory, hotkeyHandler); +    await preview.prepare(); -await main(); +    document.documentElement.dataset.loaded = 'true'; +}); diff --git a/ext/js/pages/settings/settings-main.js b/ext/js/pages/settings/settings-main.js index c3391173..dc4b36c9 100644 --- a/ext/js/pages/settings/settings-main.js +++ b/ext/js/pages/settings/settings-main.js @@ -17,7 +17,6 @@   */  import {Application} from '../../application.js'; -import {log} from '../../core/logger.js';  import {DocumentFocusController} from '../../dom/document-focus-controller.js';  import {querySelectorNotNull} from '../../dom/query-selector.js';  import {ExtensionContentController} from '../common/extension-content-controller.js'; @@ -58,124 +57,114 @@ async function setupGenericSettingController(genericSettingController) {      await genericSettingController.refresh();  } -/** Entry point. */ -async function main() { -    try { -        const documentFocusController = new DocumentFocusController(); -        documentFocusController.prepare(); +await Application.main(async (application) => { +    const documentFocusController = new DocumentFocusController(); +    documentFocusController.prepare(); -        const extensionContentController = new ExtensionContentController(); -        extensionContentController.prepare(); +    const extensionContentController = new ExtensionContentController(); +    extensionContentController.prepare(); -        /** @type {HTMLElement} */ -        const statusFooterElement = querySelectorNotNull(document, '.status-footer-container'); -        const statusFooter = new StatusFooter(statusFooterElement); -        statusFooter.prepare(); +    /** @type {HTMLElement} */ +    const statusFooterElement = querySelectorNotNull(document, '.status-footer-container'); +    const statusFooter = new StatusFooter(statusFooterElement); +    statusFooter.prepare(); -        /** @type {?number} */ -        let prepareTimer = window.setTimeout(() => { -            prepareTimer = null; -            document.documentElement.dataset.loadingStalled = 'true'; -        }, 1000); +    /** @type {?number} */ +    let prepareTimer = window.setTimeout(() => { +        prepareTimer = null; +        document.documentElement.dataset.loadingStalled = 'true'; +    }, 1000); -        const application = new Application(); -        await application.prepare(); - -        if (prepareTimer !== null) { -            clearTimeout(prepareTimer); -            prepareTimer = null; -        } -        delete document.documentElement.dataset.loadingStalled; - -        const preparePromises = []; +    if (prepareTimer !== null) { +        clearTimeout(prepareTimer); +        prepareTimer = null; +    } +    delete document.documentElement.dataset.loadingStalled; -        const modalController = new ModalController(); -        modalController.prepare(); +    const preparePromises = []; -        const settingsController = new SettingsController(application); -        await settingsController.prepare(); +    const modalController = new ModalController(); +    modalController.prepare(); -        const persistentStorageController = new PersistentStorageController(application); -        persistentStorageController.prepare(); +    const settingsController = new SettingsController(application); +    await settingsController.prepare(); -        const storageController = new StorageController(persistentStorageController); -        storageController.prepare(); +    const persistentStorageController = new PersistentStorageController(application); +    persistentStorageController.prepare(); -        const dictionaryController = new DictionaryController(settingsController, modalController, statusFooter); -        dictionaryController.prepare(); +    const storageController = new StorageController(persistentStorageController); +    storageController.prepare(); -        const dictionaryImportController = new DictionaryImportController(settingsController, modalController, statusFooter); -        dictionaryImportController.prepare(); +    const dictionaryController = new DictionaryController(settingsController, modalController, statusFooter); +    dictionaryController.prepare(); -        const genericSettingController = new GenericSettingController(settingsController); -        preparePromises.push(setupGenericSettingController(genericSettingController)); +    const dictionaryImportController = new DictionaryImportController(settingsController, modalController, statusFooter); +    dictionaryImportController.prepare(); -        const audioController = new AudioController(settingsController, modalController); -        audioController.prepare(); +    const genericSettingController = new GenericSettingController(settingsController); +    preparePromises.push(setupGenericSettingController(genericSettingController)); -        const profileController = new ProfileController(settingsController, modalController); -        profileController.prepare(); +    const audioController = new AudioController(settingsController, modalController); +    audioController.prepare(); -        const settingsBackup = new BackupController(settingsController, modalController); -        settingsBackup.prepare(); +    const profileController = new ProfileController(settingsController, modalController); +    profileController.prepare(); -        const ankiController = new AnkiController(settingsController); -        ankiController.prepare(); +    const settingsBackup = new BackupController(settingsController, modalController); +    settingsBackup.prepare(); -        const ankiTemplatesController = new AnkiTemplatesController(settingsController, modalController, ankiController); -        ankiTemplatesController.prepare(); +    const ankiController = new AnkiController(settingsController); +    ankiController.prepare(); -        const popupPreviewController = new PopupPreviewController(settingsController); -        popupPreviewController.prepare(); +    const ankiTemplatesController = new AnkiTemplatesController(settingsController, modalController, ankiController); +    ankiTemplatesController.prepare(); -        const scanInputsController = new ScanInputsController(settingsController); -        scanInputsController.prepare(); +    const popupPreviewController = new PopupPreviewController(settingsController); +    popupPreviewController.prepare(); -        const simpleScanningInputController = new ScanInputsSimpleController(settingsController); -        simpleScanningInputController.prepare(); +    const scanInputsController = new ScanInputsController(settingsController); +    scanInputsController.prepare(); -        const nestedPopupsController = new NestedPopupsController(settingsController); -        nestedPopupsController.prepare(); +    const simpleScanningInputController = new ScanInputsSimpleController(settingsController); +    simpleScanningInputController.prepare(); -        const permissionsToggleController = new PermissionsToggleController(settingsController); -        permissionsToggleController.prepare(); +    const nestedPopupsController = new NestedPopupsController(settingsController); +    nestedPopupsController.prepare(); -        const secondarySearchDictionaryController = new SecondarySearchDictionaryController(settingsController); -        secondarySearchDictionaryController.prepare(); +    const permissionsToggleController = new PermissionsToggleController(settingsController); +    permissionsToggleController.prepare(); -        const translationTextReplacementsController = new TranslationTextReplacementsController(settingsController); -        translationTextReplacementsController.prepare(); +    const secondarySearchDictionaryController = new SecondarySearchDictionaryController(settingsController); +    secondarySearchDictionaryController.prepare(); -        const sentenceTerminationCharactersController = new SentenceTerminationCharactersController(settingsController); -        sentenceTerminationCharactersController.prepare(); +    const translationTextReplacementsController = new TranslationTextReplacementsController(settingsController); +    translationTextReplacementsController.prepare(); -        const keyboardShortcutController = new KeyboardShortcutController(settingsController); -        keyboardShortcutController.prepare(); +    const sentenceTerminationCharactersController = new SentenceTerminationCharactersController(settingsController); +    sentenceTerminationCharactersController.prepare(); -        const extensionKeyboardShortcutController = new ExtensionKeyboardShortcutController(settingsController); -        extensionKeyboardShortcutController.prepare(); +    const keyboardShortcutController = new KeyboardShortcutController(settingsController); +    keyboardShortcutController.prepare(); -        const popupWindowController = new PopupWindowController(application.api); -        popupWindowController.prepare(); +    const extensionKeyboardShortcutController = new ExtensionKeyboardShortcutController(settingsController); +    extensionKeyboardShortcutController.prepare(); -        const mecabController = new MecabController(application.api); -        mecabController.prepare(); +    const popupWindowController = new PopupWindowController(application.api); +    popupWindowController.prepare(); -        const collapsibleDictionaryController = new CollapsibleDictionaryController(settingsController); -        collapsibleDictionaryController.prepare(); +    const mecabController = new MecabController(application.api); +    mecabController.prepare(); -        const sortFrequencyDictionaryController = new SortFrequencyDictionaryController(settingsController); -        sortFrequencyDictionaryController.prepare(); +    const collapsibleDictionaryController = new CollapsibleDictionaryController(settingsController); +    collapsibleDictionaryController.prepare(); -        await Promise.all(preparePromises); +    const sortFrequencyDictionaryController = new SortFrequencyDictionaryController(settingsController); +    sortFrequencyDictionaryController.prepare(); -        document.documentElement.dataset.loaded = 'true'; +    await Promise.all(preparePromises); -        const settingsDisplayController = new SettingsDisplayController(settingsController, modalController); -        settingsDisplayController.prepare(); -    } catch (e) { -        log.error(e); -    } -} +    document.documentElement.dataset.loaded = 'true'; -await main(); +    const settingsDisplayController = new SettingsDisplayController(settingsController, modalController); +    settingsDisplayController.prepare(); +}); diff --git a/ext/js/pages/welcome-main.js b/ext/js/pages/welcome-main.js index 030d2826..82afaacb 100644 --- a/ext/js/pages/welcome-main.js +++ b/ext/js/pages/welcome-main.js @@ -17,7 +17,6 @@   */  import {Application} from '../application.js'; -import {log} from '../core/logger.js';  import {DocumentFocusController} from '../dom/document-focus-controller.js';  import {querySelectorNotNull} from '../dom/query-selector.js';  import {ExtensionContentController} from './common/extension-content-controller.js'; @@ -50,64 +49,54 @@ async function setupGenericSettingsController(genericSettingController) {      await genericSettingController.refresh();  } -/** Entry point. */ -async function main() { -    try { -        const documentFocusController = new DocumentFocusController(); -        documentFocusController.prepare(); +await Application.main(async (application) => { +    const documentFocusController = new DocumentFocusController(); +    documentFocusController.prepare(); -        const extensionContentController = new ExtensionContentController(); -        extensionContentController.prepare(); +    const extensionContentController = new ExtensionContentController(); +    extensionContentController.prepare(); -        /** @type {HTMLElement} */ -        const statusFooterElement = querySelectorNotNull(document, '.status-footer-container'); -        const statusFooter = new StatusFooter(statusFooterElement); -        statusFooter.prepare(); +    /** @type {HTMLElement} */ +    const statusFooterElement = querySelectorNotNull(document, '.status-footer-container'); +    const statusFooter = new StatusFooter(statusFooterElement); +    statusFooter.prepare(); -        const application = new Application(); -        await application.prepare(); +    setupEnvironmentInfo(application.api); -        setupEnvironmentInfo(application.api); +    chrome.storage.session.get({'needsCustomTemplatesWarning': false}).then((result) => { +        if (result.needsCustomTemplatesWarning) { +            document.documentElement.dataset.warnCustomTemplates = 'true'; +            chrome.storage.session.remove(['needsCustomTemplatesWarning']); +        } +    }); -        chrome.storage.session.get({'needsCustomTemplatesWarning': false}).then((result) => { -            if (result.needsCustomTemplatesWarning) { -                document.documentElement.dataset.warnCustomTemplates = 'true'; -                chrome.storage.session.remove(['needsCustomTemplatesWarning']); -            } -        }); +    const preparePromises = []; -        const preparePromises = []; +    const modalController = new ModalController(); +    modalController.prepare(); -        const modalController = new ModalController(); -        modalController.prepare(); +    const settingsController = new SettingsController(application); +    await settingsController.prepare(); -        const settingsController = new SettingsController(application); -        await settingsController.prepare(); +    const dictionaryController = new DictionaryController(settingsController, modalController, statusFooter); +    dictionaryController.prepare(); -        const dictionaryController = new DictionaryController(settingsController, modalController, statusFooter); -        dictionaryController.prepare(); +    const dictionaryImportController = new DictionaryImportController(settingsController, modalController, statusFooter); +    dictionaryImportController.prepare(); -        const dictionaryImportController = new DictionaryImportController(settingsController, modalController, statusFooter); -        dictionaryImportController.prepare(); +    const genericSettingController = new GenericSettingController(settingsController); +    preparePromises.push(setupGenericSettingsController(genericSettingController)); -        const genericSettingController = new GenericSettingController(settingsController); -        preparePromises.push(setupGenericSettingsController(genericSettingController)); +    const simpleScanningInputController = new ScanInputsSimpleController(settingsController); +    simpleScanningInputController.prepare(); -        const simpleScanningInputController = new ScanInputsSimpleController(settingsController); -        simpleScanningInputController.prepare(); +    const recommendedPermissionsController = new RecommendedPermissionsController(settingsController); +    recommendedPermissionsController.prepare(); -        const recommendedPermissionsController = new RecommendedPermissionsController(settingsController); -        recommendedPermissionsController.prepare(); +    await Promise.all(preparePromises); -        await Promise.all(preparePromises); +    document.documentElement.dataset.loaded = 'true'; -        document.documentElement.dataset.loaded = 'true'; - -        const settingsDisplayController = new SettingsDisplayController(settingsController, modalController); -        settingsDisplayController.prepare(); -    } catch (e) { -        log.error(e); -    } -} - -await main(); +    const settingsDisplayController = new SettingsDisplayController(settingsController, modalController); +    settingsDisplayController.prepare(); +}); |