import { useEffect, type ReactNode } from "react";
import { SettingsRegular, DeleteRegular, SaveRegular } from "@fluentui/react-icons";
import { Button, Input, Select } from "../ui";
import { isQmiControl } from "./shared";
import type { DeviceConfig } from "../../types";
import type { DeviceDetail } from "./types";
import { useI18n } from "../../lib/i18n";
import { DEVICE_TYPES, deviceTypeImage } from "../../lib/deviceTypes";
export interface DeviceConfigTabProps {
editConfig: DeviceConfig | null;
deviceStatus: DeviceDetail | null;
saving: boolean;
deleting: boolean;
onSave: () => void;
onDelete: () => void;
onEditConfig: (next: DeviceConfig) => void;
}
function Field({ label, children }: { label: ReactNode; children: ReactNode }) {
return (
{children}
);
}
export function DeviceConfigTab({ editConfig, deviceStatus, saving, deleting, onSave, onDelete, onEditConfig }: DeviceConfigTabProps) {
const { t } = useI18n();
const controlDevice = deviceStatus?.controlDevice || editConfig?.controlDevice;
const interfaceName = deviceStatus?.interface || editConfig?.interface;
const atPort = deviceStatus?.atPort || editConfig?.atPort;
const usbPath = deviceStatus?.usbPath || editConfig?.usbPath;
const isQmi = isQmiControl(controlDevice);
const isMbim = String(editConfig?.deviceBackend || "").toLowerCase() === "mbim";
const isReader = editConfig?.deviceType === "usb_sim_reader";
useEffect(() => {
if (isQmi && editConfig && editConfig.deviceBackend !== "qmi") onEditConfig({ ...editConfig, deviceBackend: "qmi" });
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isQmi]);
const backendOptions = isReader ? [{ value: "pcsc", label: "PC/SC" }] : [
...(isMbim
? []
: [
{ value: "at", label: "AT", disabled: isQmi },
{ value: "qmi", label: "QMI", disabled: !controlDevice && editConfig?.deviceBackend !== "qmi" },
]),
...(isMbim ? [{ value: "mbim", label: "MBIM" }] : []),
];
return (
{t("设备配置")}
{t("配置存储在数据库中,部分字段可能需要重启生效")}
}>
{t("删除设备")}
}>
{t("保存配置")}
{editConfig ? (
) : null}
);
}