import React, {useEffect, useState} from 'react'; import { ScrollView, View, Text, TouchableOpacity, Dimensions, Image, SafeAreaView, Platform, Modal, } from 'react-native'; import NavigationService from '../../services/NavigationService'; import { COLOR_SCHEME, SIZE, br, ph, pv, opacity, FONT, WEIGHT, } from '../../common/common'; import Icon from 'react-native-vector-icons/Feather'; import {getElevation, h, w, timeSince} from '../../utils/utils'; import {FlatList, TextInput} from 'react-native-gesture-handler'; import {useForceUpdate} from '../../views/ListsEditor'; const refs = []; export const AddNotebookDialog = ({visible}) => { const [colors, setColors] = useState(COLOR_SCHEME); const [topicsToAdd, setTopicsToAdd] = useState(['']); const forceUpdate = useForceUpdate(); let prevItem = null; let prevIndex = null; let currentSelectedItem = null; const onSubmit = (text, index, willFocus = true) => { let oldData = topicsToAdd; oldData[index] = text; if ( oldData.length === index + 1 && prevIndex !== null && prevItem !== null ) { oldData.push(''); } setTopicsToAdd(oldData); forceUpdate(); currentSelectedItem = null; if (!willFocus) return; if (!refs[index + 1]) { setTimeout(() => { refs[index + 1].focus(); }, 400); } else { refs[index + 1].focus(); } }; const onFocus = index => { currentSelectedItem = index; if (currentSelectedItem) { let oldData = topicsToAdd; oldData[prevIndex] = prevItem; if (oldData.length === prevIndex + 1) { oldData.push(''); } prevIndex = null; prevItem = null; setTopicsToAdd(oldData); console.log(oldData); forceUpdate(); } }; const onChange = (text, index) => { prevIndex = index; prevItem = text; }; const onDelete = index => { let listData = topicsToAdd; listData.splice(index, 1); setTopicsToAdd(listData); forceUpdate(); }; return ( New Notebook Topics ( )} /> Add Cancel ); }; const TopicItem = ({ item, index, onFocus, onSubmit, onDelete, onChange, colors, }) => { const [focus, setFocus] = useState(true); const topicRef = ref => (refs[index] = ref); let text = item; return ( { onFocus(index); setFocus(true); }} onBlur={() => { onSubmit(text, index, false); setFocus(false); }} onChangeText={value => { onChange(value, index); text = value; }} onSubmit={() => onSubmit(text, index, true)} blurOnSubmit style={{ padding: pv - 5, paddingHorizontal: 0, fontSize: SIZE.sm, fontFamily: WEIGHT.regular, width: '90%', maxWidth: '90%', }} placeholder="Add a topic" placeholderTextColor={colors.icon} /> {index == 0 && !focus ? ( !focus && index !== 0 ? onDelete(index) : onSubmit(text, index, true) } style={{ justifyContent: 'center', alignItems: 'center', }}> ) : null} ); };