add server card context menu

This commit is contained in:
ppc
2024-08-13 18:39:46 +01:00
parent 82953e094c
commit aab2e220c5
+36 -15
View File
@@ -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>
)
}