// Copyright 2017-2023 @polkadot/react-components authors & contributors // SPDX-License-Identifier: Apache-2.0 import type { AddressFlags } from '@polkadot/react-hooks/types'; import React, { useCallback } from 'react'; import { useApi, useToggle } from '@polkadot/react-hooks'; import { isFunction } from '@polkadot/util'; import Button from '../Button/index.js'; import { TransferModal } from '../modals/index.js'; import { styled } from '../styled.js'; import { useTranslation } from '../translate.js'; interface Props { className?: string; flags: AddressFlags; isEditingName: boolean; isEditing: boolean; toggleIsEditingName: () => void; toggleIsEditingTags: () => void; onCancel: () => void; onSaveName: () => void; onSaveTags: () => void; onForgetAddress: () => void; onUpdateName?: (() => void) | null; recipientId: string; } function AccountMenuButtons ({ className = '', flags, isEditing, isEditingName, onCancel, onForgetAddress, onSaveName, onSaveTags, onUpdateName, recipientId, toggleIsEditingName, toggleIsEditingTags }: Props): React.ReactElement { const { t } = useTranslation(); const [isTransferOpen, toggleIsTransferOpen] = useToggle(); const api = useApi(); const _onForgetAddress = useCallback( (): void => { onForgetAddress(); onUpdateName && onUpdateName(); }, [onForgetAddress, onUpdateName] ); const toggleIsEditing = useCallback(() => { flags.isEditable && toggleIsEditingName(); toggleIsEditingTags(); }, [flags.isEditable, toggleIsEditingName, toggleIsEditingTags]); const _onUpdateName = useCallback( (): void => { onSaveName(); onUpdateName && onUpdateName(); }, [onSaveName, onUpdateName] ); const updateName = useCallback(() => { if (isEditingName && (flags.isInContacts || flags.isOwned)) { _onUpdateName(); toggleIsEditingName(); } }, [isEditingName, flags.isInContacts, flags.isOwned, _onUpdateName, toggleIsEditingName]); const onEdit = useCallback(() => { if (isEditing) { updateName(); onSaveTags(); } toggleIsEditing(); }, [isEditing, toggleIsEditing, updateName, onSaveTags]); return ( {isEditing ? (