import {getGameName} from "amnet-shared";
import {FlatList, Platform, View} from "react-native";
import {Button, Text, useTheme} from "react-native-paper";
import React, {useCallback, useLayoutEffect, useMemo, useState} from "react";
import {Globe, History, Joystick, Plus, ServerOff} from "lucide-react-native";
import TimeAgo from "../components/TimeAgo";
import {AMUICard, AMUICardDetail} from "../components/AMUICard";
import {EmptyStatePlaceholder} from "../components/EmptyStatePlaceholder";
import {AMServer} from "../models/AMServer";
import RealmContext from "../models/RealmContext";
const {useQuery} = RealmContext;
function ServerCard(props: { server: AMServer, navigation: any }) {
const gameName = useMemo(() => getGameName(props.server.gameId ?? ''), [props.server.gameId]);
const pageCallback = useCallback(() => {
props.navigation.navigate('server', {
serverId: props.server._id.toHexString()
});
}, [props.navigation, props.server]);
return (
{props.server.serverAddress}
{gameName && (
{gameName}
)}
{props.server.lastUsed
? ()
: (never)}
)
}
export default function ServerManager({navigation}) {
const theme = useTheme();
const [searchQuery, setSearchQuery] = useState('');
const query = useQuery(AMServer);
const servers = useMemo(() => {
let q = query;
if (searchQuery !== '') {
q = q.filtered("serverName CONTAINS[c] $0 OR serverAddress CONTAINS[c] $0", searchQuery);
}
return q.sorted("lastUsed", true);
}, [query, searchQuery]);
// enable searchbar
useLayoutEffect(() => {
navigation.setOptions({
headerSearchBarOptions: {
type: "text",
value: searchQuery,
autoCorrect: "none",
autoCapitalize: "none",
textColor: theme.colors.onSurface,
headerIconColor: theme.colors.primary,
onChangeText: e => setSearchQuery(e.nativeEvent.text)
},
})
}, [navigation, setSearchQuery]);
if (!servers.length) {
return (
}/>
{(!searchQuery || !query.length) && (
)}
);
}
return (
i._id.toString()}
style={{padding: 16, paddingTop: 24}}
contentContainerStyle={{paddingBottom: 80}}
renderItem={i => }
ItemSeparatorComponent={() => }
ListFooterComponent={() => Platform.OS === "ios" ? null : (
)}/>
)
}