feat: load conversation

This commit is contained in:
josc146
2024-02-04 22:03:59 +08:00
parent 4added7390
commit 1c025c3d29
5 changed files with 107 additions and 39 deletions

View File

@@ -29,14 +29,14 @@ import {
} from '../../types/composition';
import { toast } from 'react-toastify';
import {
absPathAsset,
flushMidiRecordingContent,
getMidiRawContentMainInstrument,
getMidiRawContentTime,
getServerRoot,
OpenFileDialog,
refreshTracksTotalTime
} from '../../utils';
import { OpenOpenFileDialog, PlayNote } from '../../../wailsjs/go/backend_golang/App';
import { PlayNote } from '../../../wailsjs/go/backend_golang/App';
const snapValue = 25;
const minimalMoveTime = 8; // 1000/125=8ms wait_events=125
@@ -471,15 +471,7 @@ const AudiotrackEditor: FC<{ setPrompt: (prompt: string) => void }> = observer((
return;
}
OpenOpenFileDialog('*.mid').then(async filePath => {
if (!filePath)
return;
let blob: Blob;
if (commonStore.platform === 'web')
blob = (filePath as unknown as { blob: Blob }).blob;
else
blob = await fetch(absPathAsset(filePath)).then(r => r.blob());
OpenFileDialog('*.mid').then(async blob => {
const bodyForm = new FormData();
bodyForm.append('file_data', blob);
fetch(getServerRoot(commonStore.getCurrentModelConfig().apiParameters.apiPort) + '/midi-to-text', {
@@ -510,8 +502,6 @@ const AudiotrackEditor: FC<{ setPrompt: (prompt: string) => void }> = observer((
).catch(e => {
toast(t('Error') + ' - ' + (e.message || e), { type: 'error', autoClose: 2500 });
});
}).catch(e => {
toast(t('Error') + ' - ' + (e.message || e), { type: 'error', autoClose: 2500 });
});
}}>
{t('Import MIDI')}

View File

@@ -26,6 +26,7 @@ import {
Delete28Regular,
Dismiss16Regular,
Dismiss24Regular,
FolderOpenVerticalRegular,
RecordStop28Regular,
SaveRegular,
TextAlignJustify24Regular,
@@ -37,9 +38,17 @@ import { toast } from 'react-toastify';
import { WorkHeader } from '../components/WorkHeader';
import { DialogButton } from '../components/DialogButton';
import { OpenFileFolder, OpenOpenFileDialog, OpenSaveFileDialog } from '../../wailsjs/go/backend_golang/App';
import { absPathAsset, bytesToReadable, getServerRoot, setActivePreset, toastWithButton } from '../utils';
import {
absPathAsset,
bytesToReadable,
getServerRoot,
newChatConversation,
OpenFileDialog,
setActivePreset,
toastWithButton
} from '../utils';
import { useMediaQuery } from 'usehooks-ts';
import { botName, ConversationMessage, MessageType, userName, welcomeUuid } from '../types/chat';
import { botName, ConversationMessage, MessageType, Role, userName, welcomeUuid } from '../types/chat';
import { Labeled } from '../components/Labeled';
import { ValuedSlider } from '../components/ValuedSlider';
import { PresetsButton } from './PresetsManager/PresetsButton';
@@ -302,12 +311,45 @@ const SidePanel: FC = observer(() => {
});
}} />
} />
{/*<Button*/}
{/* icon={<FolderOpenVerticalRegular />}*/}
{/* onClick={() => {*/}
{/* }}>*/}
{/* {t('Load Conversation')}*/}
{/*</Button>*/}
<Button
icon={<FolderOpenVerticalRegular />}
onClick={() => {
OpenFileDialog('*.txt;*.md').then(async blob => {
const userNames = ['User:', 'Question:', 'Q:', 'Human:', 'Bob:'];
const assistantNames = ['Assistant:', 'Answer:', 'A:', 'Bot:', 'Alice:'];
const names = userNames.concat(assistantNames);
const content = await blob.text();
const lines = content.split('\n');
const { pushMessage, saveConversation } = newChatConversation();
let messageRole: Role = 'user';
let messageContent = '';
for (const [i, line] of lines.entries()) {
let lineName = '';
if (names.some(name => {
lineName = name;
return line.startsWith(name);
})) {
if (messageContent.trim())
pushMessage(messageRole, messageContent.trim());
if (userNames.includes(lineName))
messageRole = 'user';
else
messageRole = 'assistant';
messageContent = line.replace(lineName, '');
} else {
messageContent += '\n' + line;
}
if (i === lines.length - 1)
pushMessage(messageRole, messageContent.trim());
}
saveConversation();
});
}}>
{t('Load Conversation')}
</Button>
<Button
icon={<SaveRegular />}
onClick={() => {