import React, { useState, useContext } from 'react'; import { Icon, IconButton, Stack, Form, } from '@openedx/paragon'; import { Edit } from '@openedx/paragon/icons'; import { useIntl } from '@edx/frontend-platform/i18n'; import messages from './messages'; import type { ContentLibrary } from '../data/api'; import { useUpdateLibraryMetadata } from '../data/apiHooks'; import { ToastContext } from '../../generic/toast-context'; type LibraryInfoHeaderProps = { library: ContentLibrary, }; const LibraryInfoHeader = ({ library } : LibraryInfoHeaderProps) => { const intl = useIntl(); const [inputIsActive, setIsActive] = useState(false); const updateMutation = useUpdateLibraryMetadata(); const { showToast } = useContext(ToastContext); const handleSaveTitle = (event) => { const newTitle = event.target.value; if (newTitle && newTitle !== library.title) { updateMutation.mutateAsync({ id: library.id, title: newTitle, }).then(() => { showToast(intl.formatMessage(messages.updateLibrarySuccessMsg)); }).catch(() => { showToast(intl.formatMessage(messages.updateLibraryErrorMsg)); }); } setIsActive(false); }; const handleClick = () => { setIsActive(true); }; const hanldeOnKeyDown = (event) => { if (event.key === 'Enter') { handleSaveTitle(event); } else if (event.key === 'Escape') { setIsActive(false); } }; return ( { inputIsActive ? ( ) : ( <> {library.title} {library.canEditLibrary && ( )} )} ); }; export default LibraryInfoHeader;