UNPKG

i18ntk

Version:

i18n Tool Kit - Zero-dependency internationalization toolkit for setup, scanning, analysis, validation, auto translation, fixing, reporting, and runtime translation loading.

54 lines (46 loc) 1.63 kB
/** * Settings Menu Manager * @module managers/SettingsMenu */ const { t } = require('../../../utils/i18n-helper'); const cliHelper = require('../../../utils/cli-helper'); const SettingsCLI = require('../../../settings/settings-cli'); module.exports = class SettingsMenu { constructor(manager) { this.manager = manager; // Reference to I18nManager for access to methods and properties this.adminAuth = manager.adminAuth; } /** * Display the settings management menu */ async showSettingsMenu() { try { // Check for PIN protection const authRequired = await this.adminAuth.isAuthRequiredForScript('settingsMenu'); if (authRequired) { console.log(`\n${t('adminPin.protectedAccess')}`); const pin = await cliHelper.promptPin(t('adminPin.enterPin') + ': '); const isValid = await this.adminAuth.verifyPin(pin); if (!isValid) { console.log(t('adminPin.invalidPin')); await this.manager.prompt(t('menu.pressEnterToContinue')); await this.manager.showInteractiveMenu(); return; } console.log(t('adminPin.accessGranted')); } const settingsCLI = new SettingsCLI(); await settingsCLI.run(); } catch (error) { console.error('❌ Error opening settings:', error.message); await this.manager.prompt(t('menu.pressEnterToContinue')); } await this.manager.showInteractiveMenu(); } /** * Alias for showSettingsMenu for backward compatibility */ async show() { return this.showSettingsMenu(); } };