mirror of
https://gitea.tendokyu.moe/ppc/amnet.git
synced 2026-10-01 03:07:55 +03:00
add realm safety checks
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -24,7 +24,21 @@ export default function ServerCardIn({route, navigation}) {
|
||||
const [selectedCard, setSelectedCard] = useState<AMCard>(null);
|
||||
const [cardInCompleted, setCardInCompleted] = useState<boolean>(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<AMServer>(null);
|
||||
|
||||
Reference in New Issue
Block a user