import { FC, useCallback } from 'react'; import { TouchableTile, Text, Visible, Divider, Card, UnderLay } from 'components'; import { Row, Container } from 'components/layout'; import { CopyLink, Pencil, Trash } from 'icons'; import { isMessageMoreActionOpenVar } from 'state-management/dialogs'; import { deletingMessageIdVar, editingMessageIdVar, isEditingMessageVar, messageMoreActionsPositionVar, selectedMessageIdVar, } from 'state-management/chat'; import { ColorName } from '@emotion/react'; import { useReactiveVar } from '@apollo/client'; export const MessageMoreAction: FC = () => { const selectedMessageId = useReactiveVar(selectedMessageIdVar); const isMessageMoreActionOpen = useReactiveVar(isMessageMoreActionOpenVar); const dialogPosition = useReactiveVar(messageMoreActionsPositionVar); const closeDialog = useCallback(() => { isMessageMoreActionOpenVar(false); }, []); const deleteMessage = useCallback(() => { deletingMessageIdVar(selectedMessageId); closeDialog(); }, [closeDialog, selectedMessageId]); const editMessage = useCallback(() => { editingMessageIdVar(selectedMessageId); isEditingMessageVar(true); closeDialog(); }, [closeDialog, selectedMessageId]); const editActions: ActionType[] = [ { id: 3, title: 'Copy Link', onPress: () => {}, leftElement: , }, { id: 4, onPress: editMessage, title: 'Edit Message', leftElement: , }, { id: 5, onPress: deleteMessage, title: 'Delete Message', leftElement: , titleColor: 'secondary', }, ]; return ( {editActions.map(({ id, title, titleColor, leftElement, onPress }) => { return ( {leftElement} {title} } /> ); })} ); }; interface ActionType { id: number; title?: string; caption?: string; titleColor?: ColorName; onPress?: () => void; leftElement?: JSX.Element; }