mirror of
https://gitea.tendokyu.moe/ppc/amnet.git
synced 2026-09-22 22:28:22 +03:00
improve card selection when changing games
This commit is contained in:
@@ -59,6 +59,7 @@ export default function ServerCardIn({route, navigation}) {
|
||||
// server state
|
||||
const [serverRefreshing, setServerRefreshing] = useState<boolean>(false);
|
||||
const [serverReloadCounter, setServerReloadCounter] = useState<number>(0);
|
||||
const [serverPreviousGameId, setServerPreviousGameId] = useState<string | null>(null);
|
||||
const [connectionTestResult, setConnectionTestResult] = useState<boolean | null>(null);
|
||||
|
||||
let {serverId} = route.params;
|
||||
@@ -96,30 +97,31 @@ export default function ServerCardIn({route, navigation}) {
|
||||
}
|
||||
|
||||
// select a card if there's none selected
|
||||
let setCard = selectedCard?.isValid() !== true;
|
||||
if (setCard) {
|
||||
if (selectedCard?.isValid() !== true) {
|
||||
setSelectedCard(cards.length ? cards[0] : null);
|
||||
}
|
||||
|
||||
const abortController = new AbortController();
|
||||
fetchServerInfo(server.serverAddress, abortController.signal).then(r => {
|
||||
if (r) {
|
||||
setConnectionTestResult(true);
|
||||
realm.write(() => {
|
||||
server.lastUsed = new Date();
|
||||
Object.keys(r).forEach(x => server[x] = r[x]);
|
||||
});
|
||||
|
||||
if (setCard && cards.length) {
|
||||
const matchingGameCard = cards.find(x => x.lastUsedGameId === server.gameId);
|
||||
setSelectedCard(matchingGameCard || cards[0]);
|
||||
|
||||
if (matchingGameCard) {
|
||||
setDefaultCard(matchingGameCard);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (!r) {
|
||||
setConnectionTestResult(false);
|
||||
return;
|
||||
}
|
||||
|
||||
setConnectionTestResult(true);
|
||||
realm.write(() => {
|
||||
server.lastUsed = new Date();
|
||||
Object.keys(r).forEach(x => server[x] = r[x]);
|
||||
});
|
||||
|
||||
const matchingGameCard = cards.find(x => x.lastUsedGameId === server.gameId);
|
||||
if (matchingGameCard) {
|
||||
setDefaultCard(matchingGameCard);
|
||||
}
|
||||
|
||||
if (server.gameId !== serverPreviousGameId) {
|
||||
setServerPreviousGameId(server.gameId);
|
||||
setSelectedCard(matchingGameCard || cards[0]);
|
||||
}
|
||||
}).catch(() => {
|
||||
setConnectionTestResult(false);
|
||||
|
||||
Reference in New Issue
Block a user