/* * Copyright (C) Contributors to the Suwayomi project * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ import { createRoot } from 'react-dom/client'; import { ThemeProvider } from '@mui/material/styles'; import { ConfirmDialog } from '@/components/molecules/ConfirmDialog.tsx'; import { ControlledPromise } from '@/lib/ControlledPromise.ts'; import { getCurrentTheme } from '@/theme.ts'; export const awaitConfirmation = async ( dialogProps: Omit, 'onCancel' | 'onConfirm'>, ) => { const dialogContainer = document.createElement('div'); document.body.appendChild(dialogContainer); const root = createRoot(dialogContainer); const confirmationPromise = new ControlledPromise(); const handleConfirmation = (accepted: boolean) => { if (accepted) { confirmationPromise.resolve(); } else { confirmationPromise.reject(); } root.unmount(); document.body.removeChild(dialogContainer); }; root.render( handleConfirmation(false)} onConfirm={() => handleConfirmation(true)} /> , , ); return confirmationPromise.promise; };