import Button from '@components/Button' import Icon from '@components/Icon' import { MenuRow } from '@components/Menu' import CustomText from '@components/Text' import { useActionSheet } from '@expo/react-native-action-sheet' import { androidActionSheetStyles } from '@utils/helpers/androidActionSheetStyles' import { useInstanceQuery } from '@utils/queryHooks/instance' import { StyleConstants } from '@utils/styles/constants' import { useTheme } from '@utils/styles/ThemeManager' import React, { useContext, useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { StyleSheet, TextInput, View } from 'react-native' import ComposeContext from '../../utils/createContext' const ComposePoll: React.FC = () => { const { showActionSheetWithOptions } = useActionSheet() const { composeState: { poll: { total, options, multiple, expire } }, composeDispatch } = useContext(ComposeContext) const { t } = useTranslation(['common', 'screenCompose']) const { colors, mode } = useTheme() const { data } = useInstanceQuery() const MAX_OPTIONS = data?.configuration?.polls.max_options || 4 const MAX_CHARS_PER_OPTION = data?.configuration?.polls.max_characters_per_option const MIN_EXPIRATION = data?.configuration?.polls.min_expiration || 300 const MAX_EXPIRATION = data?.configuration?.polls.max_expiration || 2629746 const [firstRender, setFirstRender] = useState(true) useEffect(() => { setFirstRender(false) }, []) return ( {[...Array(total)].map((_, i) => { const hasConflict = options.filter((_, ii) => ii !== i && ii < total).includes(options[i]) return ( { const newOptions = [...options] newOptions[i] = e composeDispatch({ type: 'poll', payload: { options: [...newOptions] } }) }} /> ) })}