import React, { useState } from 'react'; import { useRecoilValue } from 'recoil'; import EndpointOptionsDialog from '../Endpoints/EndpointOptionsDialog'; import { Button } from '../ui/Button.tsx'; import store from '~/store'; const clipPromptPrefix = str => { if (typeof str !== 'string') { return null; } else if (str.length > 10) { return str.slice(0, 10) + '...'; } else { return str; } }; const MessageHeader = ({ isSearchView = false }) => { const [saveAsDialogShow, setSaveAsDialogShow] = useState(false); const conversation = useRecoilValue(store.conversation); const searchQuery = useRecoilValue(store.searchQuery); const { endpoint } = conversation; const getConversationTitle = () => { if (isSearchView) return `Search: ${searchQuery}`; else { let _title = `${endpoint}`; if (endpoint === 'azureOpenAI' || endpoint === 'openAI') { const { chatGptLabel, model } = conversation; if (model) _title += `: ${model}`; if (chatGptLabel) _title += ` as ${chatGptLabel}`; } else if (endpoint === 'bingAI') { const { jailbreak, toneStyle } = conversation; if (toneStyle) _title += `: ${toneStyle}`; if (jailbreak) _title += ` as Sydney`; } else if (endpoint === 'chatGPTBrowser') { const { model } = conversation; if (model) _title += `: ${model}`; } else if (endpoint === null) { null; } else { null; } return _title; } }; return ( <>