make the confirmModal controller send a boolean back depending on the user's answer

this avoids the error in console "uncaught exception in promise"
This commit is contained in:
Jacob Overgaard
2024-04-02 17:10:26 +02:00
parent 3c8f954847
commit a0167b1b27
5 changed files with 33 additions and 25 deletions

View File

@@ -27,6 +27,11 @@ export class UmbConfirmModalController extends UmbControllerBase {
}
}
export function umbConfirmModal(host: UmbControllerHost, args: UmbConfirmModalArgs) {
return new UmbConfirmModalController(host).open(args);
export async function umbConfirmModal(host: UmbControllerHost, args: UmbConfirmModalArgs): Promise<boolean> {
try {
await new UmbConfirmModalController(host).open(args);
return true;
} catch {
return false;
}
}

View File

@@ -4,6 +4,7 @@ import type { UmbEntityActionArgs } from '@umbraco-cms/backoffice/entity-action'
import { UmbEntityActionBase } from '@umbraco-cms/backoffice/entity-action';
import type { UmbControllerHost } from '@umbraco-cms/backoffice/controller-api';
import { umbConfirmModal } from '@umbraco-cms/backoffice/modal';
import { UmbLocalizationController } from '@umbraco-cms/backoffice/localization-api';
export class UmbDisableUserEntityAction extends UmbEntityActionBase<never> {
constructor(host: UmbControllerHost, args: UmbEntityActionArgs<never>) {
@@ -22,13 +23,17 @@ export class UmbDisableUserEntityAction extends UmbEntityActionBase<never> {
const item = data[0];
await umbConfirmModal(this._host, {
headline: `Disable ${item.name}`,
content: 'Are you sure you want to disable this user?',
const localize = new UmbLocalizationController(this._host);
const confirm = await umbConfirmModal(this._host, {
headline: `${localize.term('user_disabled')} ${item.name}`,
content: localize.term('defaultdialogs_confirmdisable'),
color: 'danger',
confirmLabel: 'Disable',
confirmLabel: localize.term('actions_disable'),
});
if (!confirm) return;
const disableUserRepository = new UmbDisableUserRepository(this);
await disableUserRepository.disable([this.args.unique]);
}

View File

@@ -22,12 +22,14 @@ export class UmbEnableUserEntityAction extends UmbEntityActionBase<never> {
const item = data[0];
await umbConfirmModal(this._host, {
const confirm = await umbConfirmModal(this._host, {
headline: `Enable ${item.name}`,
content: 'Are you sure you want to enable this user?',
confirmLabel: 'Enable',
});
if (!confirm) return;
const enableRepository = new UmbEnableUserRepository(this);
await enableRepository.enable([this.args.unique]);
}

View File

@@ -22,12 +22,14 @@ export class UmbUnlockUserEntityAction extends UmbEntityActionBase<never> {
const item = data[0];
await umbConfirmModal(this._host, {
const confirm = await umbConfirmModal(this._host, {
headline: `Unlock ${item.name}`,
content: 'Are you sure you want to unlock this user?',
confirmLabel: 'Unlock',
});
if (!confirm) return;
const unlockUserRepository = new UmbUnlockUserRepository(this);
await unlockUserRepository?.unlock([this.args.unique]);
}

View File

@@ -3,7 +3,7 @@ import type { UmbUserMfaProviderModel } from '../../types.js';
import type { UmbUserMfaModalConfiguration } from './user-mfa-modal.token.js';
import { css, customElement, html, property, repeat, state, when } from '@umbraco-cms/backoffice/external/lit';
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
import { UMB_CONFIRM_MODAL, UMB_MODAL_MANAGER_CONTEXT, type UmbModalContext } from '@umbraco-cms/backoffice/modal';
import { umbConfirmModal, type UmbModalContext } from '@umbraco-cms/backoffice/modal';
import { UmbTextStyles } from '@umbraco-cms/backoffice/style';
import { umbExtensionsRegistry } from '@umbraco-cms/backoffice/extension-registry';
import { mergeObservables } from '@umbraco-cms/backoffice/observable-api';
@@ -125,23 +125,17 @@ export class UmbUserMfaModalElement extends UmbLitElement {
* NB! The user must have administrative rights before doing so.
*/
async #onProviderDisable(item: UmbMfaLoginProviderOption) {
const modalManager = await this.getContext(UMB_MODAL_MANAGER_CONTEXT);
const confirm = await modalManager
.open(this, UMB_CONFIRM_MODAL, {
data: {
headline: this.localize.term('actions_disable'),
content: this.localize.term('user_2faDisableForUser'),
confirmLabel: this.localize.term('actions_disable'),
color: 'danger',
},
})
.onSubmit()
.catch(() => false);
const confirm = await umbConfirmModal(this, {
headline: this.localize.term('actions_disable'),
content: this.localize.term('user_2faDisableForUser'),
confirmLabel: this.localize.term('actions_disable'),
color: 'danger',
});
if (confirm !== false) {
await this.#userRepository.disableMfaProvider(this.#unique, item.providerName);
this.#loadProviders();
}
if (!confirm) return;
await this.#userRepository.disableMfaProvider(this.#unique, item.providerName);
this.#loadProviders();
}
static styles = [