import {BSON} from "realm"; import {Card, Divider, Paragraph, useTheme} from "react-native-paper"; import {useCallback, useEffect, useLayoutEffect, useState} from "react"; import {Platform, TextInput, TouchableOpacity, View} from "react-native"; import {useModalStyles} from "../../utils/ModalStyles"; import {AMCard} from "../../models/AMCard"; import RealmContext from "../../models/RealmContext"; const {useObject, useRealm} = RealmContext; export default function CardEditorModal({navigation, route}) { if (!route.params || !route.params.cardId) { navigation.goBack(); return; } const theme = useTheme(); const modalStyles = useModalStyles(); const realm = useRealm(); const card = useObject(AMCard, BSON.ObjectId.createFromHexString(route.params.cardId)); const [cardName, setCardName] = useState(''); const updateCardCallback = useCallback((newName: string) => { realm.write(() => { card.name = newName; }); navigation.goBack(); }, [realm, navigation]); useEffect(() => { if (card?.isValid() !== true) { navigation.goBack(); return; } if (!cardName.length) { setCardName(card.name); } }, [card]); // header effects if (Platform.OS === 'ios') { useLayoutEffect(() => { navigation.setOptions({ headerLeft: () => navigation.goBack()}> Cancel , }); }, [navigation, modalStyles]); } useLayoutEffect(() => { navigation.setOptions({ headerRight: () => updateCardCallback(cardName)} disabled={!cardName.length}> Save }); }, [cardName]); return ( Card Name Access Code ) }