/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: BUSL-1.1 */ import Component from '@glimmer/component'; import { task } from 'ember-concurrency'; import { service } from '@ember/service'; import { tracked } from '@glimmer/tracking'; import type Router from '@ember/routing/router'; import type FlashMessageService from 'vault/services/flash-messages'; import type ApiService from 'vault/services/api'; import type SecretsEngineResource from 'vault/resources/secrets/engine'; /** * @module GeneralSettingsComponent is used to configure the SSH secret engine. * * @example * ```js * * ``` * * @param {string} secretsEngine - secrets engine resource */ interface Args { model: { secretsEngine: SecretsEngineResource; }; } export default class GeneralSettingsComponent extends Component { @service declare readonly router: Router; @service declare readonly api: ApiService; @service declare readonly flashMessages: FlashMessageService; @tracked errorMessage: string | null = null; @tracked invalidFormAlert: string | null = null; @tracked showUnsavedChangesModal = false; saveGeneralSettings = task(async (event) => { event.preventDefault(); try { const fd = new FormData(event.target as HTMLFormElement); await this.api.sys.mountsTuneConfigurationParameters(this.args.model.secretsEngine.id, { // TODO: add other params when other card components are made description: fd.get('description') as string, }); this.flashMessages.success('Engine settings successfully updated.'); } catch (e) { // handle error state const { message } = await this.api.parseError(e); this.flashMessages.danger(`Try again or check your network connection. ${message}`); } }); }