allow avatarImg to be local absolute path
This commit is contained in:
		
							parent
							
								
									d43954cc88
								
							
						
					
					
						commit
						7078f47f72
					
				| @ -25,7 +25,7 @@ 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 { bytesToReadable, toastWithButton } from '../utils'; | ||||
| import { absPathAsset, bytesToReadable, toastWithButton } from '../utils'; | ||||
| import { PresetsButton } from './PresetsManager/PresetsButton'; | ||||
| import { useMediaQuery } from 'usehooks-ts'; | ||||
| 
 | ||||
| @ -122,6 +122,13 @@ const ChatMessageItem: FC<{ | ||||
|     } | ||||
|   }; | ||||
| 
 | ||||
|   let avatarImg: string | undefined; | ||||
|   if (commonStore.activePreset && messageItem.sender === botName) { | ||||
|     avatarImg = absPathAsset(commonStore.activePreset.avatarImg); | ||||
|   } else if (messageItem.avatarImg) { | ||||
|     avatarImg = messageItem.avatarImg; | ||||
|   } | ||||
| 
 | ||||
|   return <div | ||||
|     className={classnames( | ||||
|       'flex gap-2 mb-2 overflow-hidden', | ||||
| @ -139,7 +146,7 @@ const ChatMessageItem: FC<{ | ||||
|     <Avatar | ||||
|       color={messageItem.color} | ||||
|       name={messageItem.sender} | ||||
|       image={(commonStore.activePreset && messageItem.sender === botName) ? { src: commonStore.activePreset.avatarImg } : messageItem.avatarImg ? { src: messageItem.avatarImg } : undefined} | ||||
|       image={avatarImg ? { src: avatarImg } : undefined} | ||||
|     /> | ||||
|     <div | ||||
|       className={classnames( | ||||
| @ -444,7 +451,7 @@ const ChatPanel: FC = observer(() => { | ||||
| 
 | ||||
|                     // Both are slow. Communication between frontend and backend is slow. Use AssetServer Handler to read the file.
 | ||||
|                     // const blob = new Blob([atob(info.content as unknown as string)]); // await fetch(`data:application/octet-stream;base64,${info.content}`).then(r => r.blob());
 | ||||
|                     const blob = await fetch(`=>${filePath}`).then(r => r.blob()); | ||||
|                     const blob = await fetch(absPathAsset(filePath)).then(r => r.blob()); | ||||
|                     const attachmentName = filePath.split(/[\\/]/).pop(); | ||||
|                     const urlPath = `/file-to-text?file_name=${attachmentName}`; | ||||
|                     const bodyForm = new FormData(); | ||||
|  | ||||
| @ -36,6 +36,7 @@ import { ClipboardGetText, ClipboardSetText } from '../../../wailsjs/runtime'; | ||||
| import { toast } from 'react-toastify'; | ||||
| import { CustomToastContainer } from '../../components/CustomToastContainer'; | ||||
| import { v4 as uuid } from 'uuid'; | ||||
| import { absPathAsset } from '../../utils'; | ||||
| 
 | ||||
| export type PresetType = 'chat' | 'completion' | 'chatInCompletion' | ||||
| 
 | ||||
| @ -124,7 +125,7 @@ export const PresetCard: FC<{ | ||||
|   const { t } = useTranslation(); | ||||
| 
 | ||||
|   return <PresetCardFrame onClick={onClick}> | ||||
|     <img src={avatarImg} className="rounded-xl select-none ml-auto mr-auto h-28" /> | ||||
|     <img src={absPathAsset(avatarImg)} className="rounded-xl select-none ml-auto mr-auto h-28" /> | ||||
|     <Text size={400}>{name}</Text> | ||||
|     <Text size={200} style={{ | ||||
|       overflow: 'hidden', textOverflow: 'ellipsis', | ||||
| @ -242,7 +243,7 @@ export const ChatPresetEditor: FC<{ | ||||
|               <Button appearance="subtle" icon={<Dismiss20Regular />} /> | ||||
|             </DialogTrigger> | ||||
|           </div> | ||||
|           <img src={editingPreset.avatarImg} className="rounded-xl select-none ml-auto mr-auto h-28" /> | ||||
|           <img src={absPathAsset(editingPreset.avatarImg)} className="rounded-xl select-none ml-auto mr-auto h-28" /> | ||||
|           <Labeled flex breakline label={t('Name')} | ||||
|             content={ | ||||
|               <div className="flex gap-2"> | ||||
|  | ||||
| @ -289,6 +289,14 @@ export function bytesToReadable(size: number) { | ||||
|   else return bytesToGb(size) + ' GB'; | ||||
| } | ||||
| 
 | ||||
| export function absPathAsset(path: string) { | ||||
|   if ((path.length > 0 && path[0] === '/') || | ||||
|     (path.length > 1 && path[1] === ':')) { | ||||
|     return '=>' + path; | ||||
|   } | ||||
|   return path; | ||||
| } | ||||
| 
 | ||||
| export async function checkUpdate(notifyEvenLatest: boolean = false) { | ||||
|   fetch(!commonStore.settings.giteeUpdatesSource ? | ||||
|     'https://api.github.com/repos/josstorer/RWKV-Runner/releases/latest' : | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user