import React, { useCallback, useState } from 'react'; import { ScrollView, View } from 'react-native'; import { Appbar, Button, useTheme } from 'react-native-paper'; import { useNavigation } from '@react-navigation/native'; import { NativeStackScreenProps } from '@react-navigation/native-stack'; import { BSON } from 'realm'; import { useObject, useRealm } from '@realm/react'; import { TagEditor } from '../components'; import styles from '../styles'; import { ORIENTATION, useDimensions } from '../contexts'; import { ROUTE, RootStackParamList } from '../types'; import { Tag } from '../database'; import { deleteTag, validateColor, validateTagName } from '../utilities'; const EditTag = ({ route, }: NativeStackScreenProps) => { const { goBack } = useNavigation(); const { colors } = useTheme(); const { orientation } = useDimensions(); const realm = useRealm(); // eslint-disable-next-line @typescript-eslint/no-non-null-assertion const tag = useObject( Tag.schema.name, BSON.UUID.createFromHexString(route.params.id), )!; const [tagName, setTagName] = useState(validateTagName(tag.name)); const [tagColor, setTagColor] = useState(validateColor(tag.color)); const handleSave = useCallback(() => { realm.write(() => { tag.name = tagName.parsed; tag.color = tagColor.parsed; tag.dateModified = new Date(); }); }, [realm, tag, tagColor.parsed, tagName.parsed]); return ( <> goBack()} /> { deleteTag(realm, tag); goBack(); }} /> ); }; export default EditTag;