From 4820c68e81987e481f5532c34bf4321988e117f7 Mon Sep 17 00:00:00 2001 From: ppc Date: Tue, 13 Aug 2024 21:51:06 +0100 Subject: [PATCH] add realm safety checks --- amnet-native/app/CardManager.tsx | 6 +++++- amnet-native/app/ServerCardIn.tsx | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/amnet-native/app/CardManager.tsx b/amnet-native/app/CardManager.tsx index 7dc00a1..58b0e22 100644 --- a/amnet-native/app/CardManager.tsx +++ b/amnet-native/app/CardManager.tsx @@ -15,6 +15,10 @@ const {useQuery, useRealm} = RealmContext; function CardEntry(props: { card: AMCard }) { const realm = useRealm(); const callback = useCallback(async (index: number) => { + if (!props.card.isValid()) { + return; + } + switch (index) { // copy card no case 0: @@ -42,7 +46,7 @@ function CardEntry(props: { card: AMCard }) { export default function CardManager({navigation}) { const query = useQuery(AMCard); - const cards = useMemo(() => query.sorted("added", true), [query]); + const cards = useMemo(() => query.sorted("added", true).filter(x => x.isValid()), [query]); const theme = useTheme(); diff --git a/amnet-native/app/ServerCardIn.tsx b/amnet-native/app/ServerCardIn.tsx index e8eb059..32e9d9f 100644 --- a/amnet-native/app/ServerCardIn.tsx +++ b/amnet-native/app/ServerCardIn.tsx @@ -24,7 +24,21 @@ export default function ServerCardIn({route, navigation}) { const [selectedCard, setSelectedCard] = useState(null); const [cardInCompleted, setCardInCompleted] = useState(null); - const unselectedCards = useMemo(() => cards.filter(x => !x._id.equals(selectedCard?._id)), [cards, selectedCard]); + const unselectedCards = useMemo(() => { + // protect against selected card being removed + switch (selectedCard?.isValid()) { + case true: + return cards.filter(x => !x._id.equals(selectedCard._id)); + + // clear out invalid + case false: + setSelectedCard(null); + return cards; + + default: + return cards; + } + }, [cards, selectedCard]); // server state const [serverInfo, setServerInfo] = useState(null);