feat(rn): 增加删除服务器功能

pull/90/head
moonrailgun 3 years ago
parent 4afe5051f8
commit 66b0f36bbb

@ -3,14 +3,22 @@ import { Alert, ScrollView, StyleSheet, TextInput } from 'react-native';
import { ServerCard } from './components/ServerCard';
import { useServerStore } from './store/server';
import Dialog from 'react-native-ui-lib/dialog';
import { Button, PanningProvider, Text, View } from 'react-native-ui-lib';
import {
Button,
PanningProvider,
Text,
View,
ActionSheet,
} from 'react-native-ui-lib';
import { isValidUrl } from './lib/utils';
export const Entry: React.FC = React.memo(() => {
const { serverList, selectServer, addServer } = useServerStore();
const { serverList, selectServer, addServer, removeServer } =
useServerStore();
const [dialogVisible, setDialogVisible] = useState(false);
const [serverUrl, setServerUrl] = useState('');
const [loading, setLoading] = useState(false);
const [selectedServer, setSelectedServer] = useState('');
return (
<ScrollView style={styles.root}>
@ -23,12 +31,33 @@ export const Entry: React.FC = React.memo(() => {
url={serverInfo.url}
version={serverInfo.version}
onPress={() => selectServer(serverInfo)}
onLongPress={() => {
if (i !== 0) {
setSelectedServer(serverInfo.url);
}
}}
/>
);
})}
<ServerCard name={'添加服务器'} onPress={() => setDialogVisible(true)} />
<ActionSheet
visible={!!selectedServer}
message={`选中服务器: ${selectedServer}`}
onDismiss={() => setSelectedServer('')}
destructiveButtonIndex={0}
options={[
{
label: '删除服务器',
onPress: () => {
removeServer(selectedServer);
},
},
]}
showCancelButton={true}
/>
<Dialog
visible={dialogVisible}
panDirection={PanningProvider.Directions.DOWN}

@ -13,12 +13,14 @@ interface ServerCardProps {
url?: string;
version?: string;
onPress?: () => void;
onLongPress?: () => void;
}
export const ServerCard: React.FC<ServerCardProps> = React.memo((props) => {
return (
<TouchableOpacity
style={[styles.root, props.style]}
onPress={props.onPress}
onLongPress={props.onLongPress}
>
<Text style={styles.name}>{props.name}</Text>

@ -14,6 +14,7 @@ interface ServerStoreState {
selectedServerInfo: ServerInfo | null;
serverList: ServerInfo[];
addServer: (url: string) => Promise<void>;
removeServer: (url: string) => void;
selectServer: (serverInfo: ServerInfo) => void;
}
@ -57,6 +58,11 @@ export const useServerStore = create<ServerStoreState>()(
throw err;
}
},
removeServer: (url: string) => {
set((state) => {
state.serverList = state.serverList.filter((s) => s.url !== url);
});
},
selectServer: (serverInfo: ServerInfo) => {
set({
selectedServerInfo: serverInfo,

Loading…
Cancel
Save