|
|
@@ -448,10 +448,20 @@ export function ChatActions(props: {
|
|
|
// switch model
|
|
|
const currentModel = chatStore.currentSession().mask.modelConfig.model;
|
|
|
const allModels = useAllModels();
|
|
|
- const models = useMemo(
|
|
|
- () => allModels.filter((m) => m.available),
|
|
|
- [allModels],
|
|
|
- );
|
|
|
+ const models = useMemo(() => {
|
|
|
+ const filteredModels = allModels.filter((m) => m.available);
|
|
|
+ const defaultModel = filteredModels.find((m) => m.isDefault);
|
|
|
+
|
|
|
+ if (defaultModel) {
|
|
|
+ const arr = [
|
|
|
+ defaultModel,
|
|
|
+ ...filteredModels.filter((m) => m !== defaultModel),
|
|
|
+ ];
|
|
|
+ return arr;
|
|
|
+ } else {
|
|
|
+ return filteredModels;
|
|
|
+ }
|
|
|
+ }, [allModels]);
|
|
|
const [showModelSelector, setShowModelSelector] = useState(false);
|
|
|
const [showUploadImage, setShowUploadImage] = useState(false);
|
|
|
|
|
|
@@ -467,7 +477,10 @@ export function ChatActions(props: {
|
|
|
// switch to first available model
|
|
|
const isUnavaliableModel = !models.some((m) => m.name === currentModel);
|
|
|
if (isUnavaliableModel && models.length > 0) {
|
|
|
- const nextModel = models[0].name as ModelType;
|
|
|
+ // show next model to default model if exist
|
|
|
+ let nextModel: ModelType = (
|
|
|
+ models.find((model) => model.isDefault) || models[0]
|
|
|
+ ).name;
|
|
|
chatStore.updateCurrentSession(
|
|
|
(session) => (session.mask.modelConfig.model = nextModel),
|
|
|
);
|
|
|
@@ -1102,11 +1115,13 @@ function _Chat() {
|
|
|
};
|
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
|
}, []);
|
|
|
-
|
|
|
+
|
|
|
const handlePaste = useCallback(
|
|
|
async (event: React.ClipboardEvent<HTMLTextAreaElement>) => {
|
|
|
const currentModel = chatStore.currentSession().mask.modelConfig.model;
|
|
|
- if(!isVisionModel(currentModel)){return;}
|
|
|
+ if (!isVisionModel(currentModel)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
const items = (event.clipboardData || window.clipboardData).items;
|
|
|
for (const item of items) {
|
|
|
if (item.kind === "file" && item.type.startsWith("image/")) {
|