Files
bigcapital/packages/webapp/src/containers/Alerts/CashFlow/AccountDeleteTransactionAlert.tsx
Ahmed Bouhuolia b6970fefc2 refactor: convert containers default exports to named exports
## Summary
Converted 905 default exports in src/containers to named exports for improved tree-shaking, better IDE refactoring support, and consistency with modern TypeScript practices.

## Changes
- Converted `export default function X` to `export function X` (916 files)
- Converted `export default compose(...)(X)` to `export const X = compose(...)(XInner)` with HOC wrapping
- Updated 373 import sites from default to named imports
- Fixed 136 React.lazy() imports to use .then() pattern for compatibility with named exports
- Updated re-export patterns in index files
- Fixed edge cases (alert arrays, connector HOCs, type definitions)

## Implementation
- Created codemod script: codemod-containers-exports.js (905 files converted)
- Created import updater: codemod-update-default-imports.js (373 imports fixed)
- Created lazy import fixer: codemod-fix-lazy-imports.js (136 lazy imports fixed)
- Manual fixes for 30 edge-case files (arrays, HOC factories, type definitions)

## Testing
- TypeScript type check: 0 codemod-related errors
- All lazy imports updated with .then() pattern
- All import sites updated to use named imports
- Zero remaining default exports in containers directory

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-31 20:08:39 +02:00

115 lines
2.9 KiB
TypeScript

// @ts-nocheck
import React from 'react';
import intl from 'react-intl-universal';
import { Intent, Alert } from '@blueprintjs/core';
import {
AppToaster,
FormattedMessage as T,
FormattedHTMLMessage,
} from '@/components';
import { useDeleteCashflowTransaction } from '@/hooks/query';
import { withAlertStoreConnect } from '@/containers/Alert/withAlertStoreConnect';
import { withAlertActions } from '@/containers/Alert/withAlertActions';
import { withDrawerActions } from '@/containers/Drawer/withDrawerActions';
import { compose } from '@/utils';
import { DRAWERS } from '@/constants/drawers';
/**
* Account delete transaction alert.
*/
function AccountDeleteTransactionAlertInner({
name,
// #withAlertStoreConnect
isOpen,
payload: { referenceId },
// #withAlertActions
closeAlert,
// #withDrawerActions
closeDrawer,
}) {
const { mutateAsync: deleteTransactionMutate, isLoading } =
useDeleteCashflowTransaction();
// handle cancel delete alert
const handleCancelDeleteAlert = () => {
closeAlert(name);
};
// handleConfirm delete transaction.
const handleConfirmTransactioneDelete = () => {
deleteTransactionMutate(referenceId)
.then(() => {
AppToaster.show({
message: intl.get('cash_flow_transaction.delete.alert_message'),
intent: Intent.SUCCESS,
});
closeDrawer(DRAWERS.CASHFLOW_TRNASACTION_DETAILS);
})
.catch(
({
response: {
data: { errors },
},
}) => {
if (
errors.find(
(e) =>
e.type ===
'CANNOT_DELETE_TRANSACTION_CONVERTED_FROM_UNCATEGORIZED',
)
) {
AppToaster.show({
message:
'Cannot delete transaction converted from uncategorized transaction but you uncategorize it.',
intent: Intent.DANGER,
});
} else if (
errors.find((e) => e.type === 'CANNOT_DELETE_TRANSACTION_MATCHED')
) {
AppToaster.show({
message:
'Cannot delete a transaction matched to the bank transaction',
intent: Intent.DANGER,
});
}
},
)
.finally(() => {
closeAlert(name);
});
};
return (
<Alert
cancelButtonText={<T id={'cancel'} />}
confirmButtonText={<T id={'delete'} />}
icon="trash"
intent={Intent.DANGER}
isOpen={isOpen}
onCancel={handleCancelDeleteAlert}
onConfirm={handleConfirmTransactioneDelete}
loading={isLoading}
>
<p>
<FormattedHTMLMessage
id={
'cash_flow_transaction_once_delete_this_transaction_you_will_able_to_restore_it'
}
/>
</p>
</Alert>
);
}
export const AccountDeleteTransactionAlert = compose(
withAlertStoreConnect(),
withAlertActions,
withDrawerActions,
)(AccountDeleteTransactionAlertInner);