import React from 'react';
import { Trans, useTranslation } from 'react-i18next';
import { useParams } from 'react-router';
import { Button } from '@actual-app/components/button';
import { SpaceBetween } from '@actual-app/components/space-between';
import { Text } from '@actual-app/components/text';
import { theme } from '@actual-app/components/theme';
import { View } from '@actual-app/components/view';
import { useUnlinkAccountMutation } from '@desktop-client/accounts';
import { BankSyncCheckboxOptions } from '@desktop-client/components/banksync/BankSyncCheckboxOptions';
import { FieldMapping } from '@desktop-client/components/banksync/FieldMapping';
import { useBankSyncAccountSettings } from '@desktop-client/components/banksync/useBankSyncAccountSettings';
import { MobileBackButton } from '@desktop-client/components/mobile/MobileBackButton';
import { MobilePageHeader, Page } from '@desktop-client/components/Page';
import { useAccount } from '@desktop-client/hooks/useAccount';
import { useNavigate } from '@desktop-client/hooks/useNavigate';
import { pushModal } from '@desktop-client/modals/modalsSlice';
import { useDispatch } from '@desktop-client/redux';
export function MobileBankSyncAccountEditPage() {
const { t } = useTranslation();
const navigate = useNavigate();
const dispatch = useDispatch();
const { accountId } = useParams<{ accountId: string }>();
const account = useAccount(accountId!);
const {
transactionDirection,
setTransactionDirection,
importPending,
setImportPending,
importNotes,
setImportNotes,
reimportDeleted,
setReimportDeleted,
importTransactions,
setImportTransactions,
updateDates,
setUpdateDates,
mappings,
setMapping,
fields,
saveSettings,
} = useBankSyncAccountSettings(accountId!);
const handleCancel = () => {
void navigate('/bank-sync');
};
const handleSave = async () => {
saveSettings();
void navigate('/bank-sync');
};
const unlinkAccount = useUnlinkAccountMutation();
const handleUnlink = () => {
dispatch(
pushModal({
modal: {
name: 'confirm-unlink-account',
options: {
accountName: account?.name || '',
isViewBankSyncSettings: true,
onUnlink: () => {
if (accountId) {
unlinkAccount.mutate(
{ id: accountId },
{
onSuccess: () => navigate('/bank-sync'),
},
);
}
},
},
},
}),
);
};
if (!account) {
return (
}
/>
}
padding={0}
>
Account not found
);
}
const mapping =
mappings.get(transactionDirection) ?? new Map();
return (
}
/>
}
padding={0}
>
Field mapping
Options
);
}