Patch up radio locking and frontend contact delete behavior for bulk contact delete

This commit is contained in:
Jack Kingsman
2026-04-01 16:52:25 -07:00
parent fd1188abcd
commit 630ba67ef0
5 changed files with 29 additions and 16 deletions

View File

@@ -558,6 +558,10 @@ export function App() {
onToggleBlockedKey: handleBlockKey,
onToggleBlockedName: handleBlockName,
contacts,
onBulkDeleteContacts: (deletedKeys: string[]) => {
const keySet = new Set(deletedKeys.map((k) => k.toLowerCase()));
setContacts((prev) => prev.filter((c) => !keySet.has(c.public_key.toLowerCase())));
},
};
const crackerProps = {
packets: rawPackets,

View File

@@ -49,6 +49,7 @@ interface SettingsModalBaseProps {
onToggleBlockedKey?: (key: string) => void;
onToggleBlockedName?: (name: string) => void;
contacts?: Contact[];
onBulkDeleteContacts?: (deletedKeys: string[]) => void;
}
export type SettingsModalProps = SettingsModalBaseProps &
@@ -83,6 +84,7 @@ export function SettingsModal(props: SettingsModalProps) {
onToggleBlockedKey,
onToggleBlockedName,
contacts,
onBulkDeleteContacts,
} = props;
const externalSidebarNav = props.externalSidebarNav === true;
const desktopSection = props.externalSidebarNav ? props.desktopSection : undefined;
@@ -243,6 +245,7 @@ export function SettingsModal(props: SettingsModalProps) {
onToggleBlockedKey={onToggleBlockedKey}
onToggleBlockedName={onToggleBlockedName}
contacts={contacts}
onBulkDeleteContacts={onBulkDeleteContacts}
className={sectionContentClass}
/>
) : (

View File

@@ -36,7 +36,7 @@ interface BulkDeleteContactsModalProps {
open: boolean;
onClose: () => void;
contacts: Contact[];
onDeleted: () => void;
onDeleted: (deletedKeys: string[]) => void;
}
export function BulkDeleteContactsModal({
@@ -133,9 +133,10 @@ export function BulkDeleteContactsModal({
const handleDelete = async () => {
setDeleting(true);
try {
const result = await api.bulkDeleteContacts([...selectedKeys]);
const keysToDelete = [...selectedKeys];
const result = await api.bulkDeleteContacts(keysToDelete);
toast.success(`Deleted ${result.deleted} contact${result.deleted === 1 ? '' : 's'}`);
onDeleted();
onDeleted(keysToDelete);
resetAndClose();
} catch (err) {
console.error('Bulk delete failed:', err);

View File

@@ -19,6 +19,7 @@ export function SettingsDatabaseSection({
onToggleBlockedKey,
onToggleBlockedName,
contacts = [],
onBulkDeleteContacts,
className,
}: {
appSettings: AppSettings;
@@ -30,6 +31,7 @@ export function SettingsDatabaseSection({
onToggleBlockedKey?: (key: string) => void;
onToggleBlockedName?: (name: string) => void;
contacts?: Contact[];
onBulkDeleteContacts?: (deletedKeys: string[]) => void;
className?: string;
}) {
const [retentionDays, setRetentionDays] = useState('14');
@@ -297,7 +299,7 @@ export function SettingsDatabaseSection({
open={bulkDeleteOpen}
onClose={() => setBulkDeleteOpen(false)}
contacts={contacts}
onDeleted={() => {}}
onDeleted={(keys) => onBulkDeleteContacts?.(keys)}
/>
</div>