mirror of
https://github.com/ItzCrazyKns/Perplexica.git
synced 2025-10-25 16:38:16 +00:00
feat(app): fix empty message being sent
This commit is contained in:
@@ -8,7 +8,7 @@ import {
|
|||||||
PopoverPanel,
|
PopoverPanel,
|
||||||
Transition,
|
Transition,
|
||||||
} from '@headlessui/react';
|
} from '@headlessui/react';
|
||||||
import { Fragment, useEffect, useState } from 'react';
|
import { Fragment, useEffect, useMemo, useState } from 'react';
|
||||||
import { MinimalProvider } from '@/lib/models/types';
|
import { MinimalProvider } from '@/lib/models/types';
|
||||||
import { useChat } from '@/lib/hooks/useChat';
|
import { useChat } from '@/lib/hooks/useChat';
|
||||||
|
|
||||||
@@ -30,24 +30,7 @@ const ModelSelector = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const data: { providers: MinimalProvider[] } = await res.json();
|
const data: { providers: MinimalProvider[] } = await res.json();
|
||||||
|
setProviders(data.providers);
|
||||||
const currentProviderIndex = data.providers.findIndex(
|
|
||||||
(p: MinimalProvider) => {
|
|
||||||
return p.id === chatModelProvider?.providerId;
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
if (currentProviderIndex === -1) {
|
|
||||||
setProviders(data.providers);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const selectedProvider = data.providers[currentProviderIndex];
|
|
||||||
const remainingProviders = data.providers.filter(
|
|
||||||
(_, index) => index !== currentProviderIndex,
|
|
||||||
);
|
|
||||||
|
|
||||||
setProviders([selectedProvider, ...remainingProviders]);
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error loading providers:', error);
|
console.error('Error loading providers:', error);
|
||||||
} finally {
|
} finally {
|
||||||
@@ -56,7 +39,26 @@ const ModelSelector = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
loadProviders();
|
loadProviders();
|
||||||
}, [chatModelProvider]);
|
}, []);
|
||||||
|
|
||||||
|
const orderedProviders = useMemo(() => {
|
||||||
|
if (!chatModelProvider?.providerId) return providers;
|
||||||
|
|
||||||
|
const currentProviderIndex = providers.findIndex(
|
||||||
|
(p) => p.id === chatModelProvider.providerId,
|
||||||
|
);
|
||||||
|
|
||||||
|
if (currentProviderIndex === -1) {
|
||||||
|
return providers;
|
||||||
|
}
|
||||||
|
|
||||||
|
const selectedProvider = providers[currentProviderIndex];
|
||||||
|
const remainingProviders = providers.filter(
|
||||||
|
(_, index) => index !== currentProviderIndex,
|
||||||
|
);
|
||||||
|
|
||||||
|
return [selectedProvider, ...remainingProviders];
|
||||||
|
}, [providers, chatModelProvider]);
|
||||||
|
|
||||||
const handleModelSelect = (providerId: string, modelKey: string) => {
|
const handleModelSelect = (providerId: string, modelKey: string) => {
|
||||||
setChatModelProvider({ providerId, key: modelKey });
|
setChatModelProvider({ providerId, key: modelKey });
|
||||||
@@ -64,7 +66,7 @@ const ModelSelector = () => {
|
|||||||
localStorage.setItem('chatModelKey', modelKey);
|
localStorage.setItem('chatModelKey', modelKey);
|
||||||
};
|
};
|
||||||
|
|
||||||
const filteredProviders = providers
|
const filteredProviders = orderedProviders
|
||||||
.map((provider) => ({
|
.map((provider) => ({
|
||||||
...provider,
|
...provider,
|
||||||
chatModels: provider.chatModels.filter(
|
chatModels: provider.chatModels.filter(
|
||||||
@@ -141,6 +143,7 @@ const ModelSelector = () => {
|
|||||||
onClick={() =>
|
onClick={() =>
|
||||||
handleModelSelect(provider.id, model.key)
|
handleModelSelect(provider.id, model.key)
|
||||||
}
|
}
|
||||||
|
type="button"
|
||||||
className={cn(
|
className={cn(
|
||||||
'px-3 py-2 flex items-center justify-between text-start duration-200 cursor-pointer transition rounded-lg group',
|
'px-3 py-2 flex items-center justify-between text-start duration-200 cursor-pointer transition rounded-lg group',
|
||||||
chatModelProvider?.providerId === provider.id &&
|
chatModelProvider?.providerId === provider.id &&
|
||||||
|
|||||||
@@ -535,7 +535,7 @@ export const ChatProvider = ({ children }: { children: React.ReactNode }) => {
|
|||||||
messageId,
|
messageId,
|
||||||
rewrite = false,
|
rewrite = false,
|
||||||
) => {
|
) => {
|
||||||
if (loading) return;
|
if (loading || !message) return;
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
setMessageAppeared(false);
|
setMessageAppeared(false);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user