import cx from 'clsx'; import * as React from 'react'; import { Eye, EyeOff, X as Close } from 'react-feather'; import { useToggle } from '~/hooks/basic'; import { getClashAPIConfigs, getSelectedClashAPIConfigIndex } from '~/store/app'; import { ClashAPIConfig } from '~/types'; import s from './BackendList.module.scss'; import { connect, useStoreActions } from './StateProvider'; type Config = ClashAPIConfig & { addedAt: number }; const mapState = (s) => ({ apiConfigs: getClashAPIConfigs(s), selectedClashAPIConfigIndex: getSelectedClashAPIConfigIndex(s), }); export const BackendList = connect(mapState)(BackendListImpl); function BackendListImpl({ apiConfigs, selectedClashAPIConfigIndex, }: { apiConfigs: Config[]; selectedClashAPIConfigIndex: number; }) { const { app: { removeClashAPIConfig, selectClashAPIConfig }, } = useStoreActions(); const onRemove = React.useCallback( (conf: ClashAPIConfig) => { removeClashAPIConfig(conf); }, [removeClashAPIConfig] ); const onSelect = React.useCallback( (conf: ClashAPIConfig) => { selectClashAPIConfig(conf); }, [selectClashAPIConfig] ); return ( <>