import { HeaderLeft, HeaderRight } from '@components/Header' import Input from '@components/Input' import { TabMeProfileStackScreenProps } from '@utils/navigation/navigators' import { useProfileMutation } from '@utils/queryHooks/profile' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import React, { RefObject, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { Alert, StyleSheet, View } from 'react-native' import FlashMessage from 'react-native-flash-message' import { ScrollView } from 'react-native-gesture-handler' const TabMeProfileNote: React.FC & { messageRef: RefObject }> = ({ messageRef, route: { params: { note } }, navigation }) => { const { mode } = useTheme() const { t, i18n } = useTranslation('screenTabs') const { mutateAsync, status } = useProfileMutation() const [newNote, setNewNote] = useState(note) const [dirty, setDirty] = useState(false) useEffect(() => { setDirty(note !== newNote) }, [newNote]) useEffect(() => { navigation.setOptions({ headerLeft: () => ( { if (dirty) { Alert.alert( t('me.profile.cancellation.title'), t('me.profile.cancellation.message'), [ { text: t('me.profile.cancellation.buttons.cancel'), style: 'default' }, { text: t('me.profile.cancellation.buttons.discard'), style: 'destructive', onPress: () => navigation.navigate('Tab-Me-Profile-Root') } ] ) } else { navigation.navigate('Tab-Me-Profile-Root') } }} /> ), headerRight: () => ( { mutateAsync({ mode, messageRef, message: { text: 'me.profile.root.note.title', succeed: true, failed: true }, type: 'note', data: newNote }).then(() => { navigation.navigate('Tab-Me-Profile-Root') }) }} /> ) }) }, [mode, i18n.language, dirty, status, newNote]) return ( ) } const styles = StyleSheet.create({ base: { paddingHorizontal: StyleConstants.Spacing.Global.PagePadding } }) export default TabMeProfileNote