mirror of
https://gitea.tendokyu.moe/ppc/amnet.git
synced 2026-09-27 17:27:55 +03:00
add server card context menu
This commit is contained in:
@@ -8,31 +8,52 @@ import TimeAgo from "../components/TimeAgo";
|
||||
|
||||
import RealmContext from "../models/RealmContext";
|
||||
import {AMServer} from "../models/AMServer";
|
||||
import ContextMenu from "react-native-context-menu-view";
|
||||
|
||||
const {useQuery} = RealmContext;
|
||||
const {useRealm, useQuery} = RealmContext;
|
||||
|
||||
function ServerCard(props: { server: AMServer, navigation: any }) {
|
||||
const realm = useRealm();
|
||||
const pageCallback = useCallback(() => {
|
||||
props.navigation.navigate('server-card-in', {
|
||||
serverId: props.server._id.toHexString()
|
||||
});
|
||||
}, [props.navigation, props.server]);
|
||||
|
||||
const pageContextMenuCallback = useCallback((action) => {
|
||||
switch (action.nativeEvent.index) {
|
||||
case 0:
|
||||
pageCallback();
|
||||
break;
|
||||
|
||||
case 1:
|
||||
realm.write(() => {
|
||||
realm.delete(props.server);
|
||||
});
|
||||
break;
|
||||
}
|
||||
}, [realm, props.server]);
|
||||
|
||||
return (
|
||||
<AMUICard title={props.server.serverName} onPress={pageCallback}>
|
||||
<AMUICardDetail>
|
||||
<Globe size={18} color="gray"/>
|
||||
<Text style={{color: "gray", fontFamily: "JetBrainsMono_400Regular"}}>
|
||||
{props.server.serverAddress}
|
||||
</Text>
|
||||
</AMUICardDetail>
|
||||
<AMUICardDetail>
|
||||
<History size={18} color="gray"/>
|
||||
{props.server.lastUsed
|
||||
? (<TimeAgo style={{color: "gray"}} dateTo={props.server.lastUsed}/>)
|
||||
: (<Paragraph style={{color: "gray"}}>never</Paragraph>)}
|
||||
</AMUICardDetail>
|
||||
</AMUICard>
|
||||
<ContextMenu onPress={pageContextMenuCallback} actions={[
|
||||
{title: `Select ${props.server.serverName}`, systemIcon: "chevron.right"},
|
||||
{title: "Delete Server", systemIcon: "trash", destructive: true}
|
||||
]}>
|
||||
<AMUICard title={props.server.serverName} onPress={pageCallback}>
|
||||
<AMUICardDetail>
|
||||
<Globe size={18} color="gray"/>
|
||||
<Text style={{color: "gray", fontFamily: "JetBrainsMono_400Regular"}}>
|
||||
{props.server.serverAddress}
|
||||
</Text>
|
||||
</AMUICardDetail>
|
||||
<AMUICardDetail>
|
||||
<History size={18} color="gray"/>
|
||||
{props.server.lastUsed
|
||||
? (<TimeAgo style={{color: "gray"}} dateTo={props.server.lastUsed}/>)
|
||||
: (<Paragraph style={{color: "gray"}}>never</Paragraph>)}
|
||||
</AMUICardDetail>
|
||||
</AMUICard>
|
||||
</ContextMenu>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user