Skip to content

Commit 295334b

Browse files
committed
feat(app): fix empty message being sent
1 parent b106abd commit 295334b

File tree

2 files changed

+25
-22
lines changed

2 files changed

+25
-22
lines changed

src/components/MessageInputActions/ChatModelSelector.tsx

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
PopoverPanel,
99
Transition,
1010
} from '@headlessui/react';
11-
import { Fragment, useEffect, useState } from 'react';
11+
import { Fragment, useEffect, useMemo, useState } from 'react';
1212
import { MinimalProvider } from '@/lib/models/types';
1313
import { useChat } from '@/lib/hooks/useChat';
1414

@@ -30,24 +30,7 @@ const ModelSelector = () => {
3030
}
3131

3232
const data: { providers: MinimalProvider[] } = await res.json();
33-
34-
const currentProviderIndex = data.providers.findIndex(
35-
(p: MinimalProvider) => {
36-
return p.id === chatModelProvider?.providerId;
37-
},
38-
);
39-
40-
if (currentProviderIndex === -1) {
41-
setProviders(data.providers);
42-
return;
43-
}
44-
45-
const selectedProvider = data.providers[currentProviderIndex];
46-
const remainingProviders = data.providers.filter(
47-
(_, index) => index !== currentProviderIndex,
48-
);
49-
50-
setProviders([selectedProvider, ...remainingProviders]);
33+
setProviders(data.providers);
5134
} catch (error) {
5235
console.error('Error loading providers:', error);
5336
} finally {
@@ -56,15 +39,34 @@ const ModelSelector = () => {
5639
};
5740

5841
loadProviders();
59-
}, [chatModelProvider]);
42+
}, []);
43+
44+
const orderedProviders = useMemo(() => {
45+
if (!chatModelProvider?.providerId) return providers;
46+
47+
const currentProviderIndex = providers.findIndex(
48+
(p) => p.id === chatModelProvider.providerId,
49+
);
50+
51+
if (currentProviderIndex === -1) {
52+
return providers;
53+
}
54+
55+
const selectedProvider = providers[currentProviderIndex];
56+
const remainingProviders = providers.filter(
57+
(_, index) => index !== currentProviderIndex,
58+
);
59+
60+
return [selectedProvider, ...remainingProviders];
61+
}, [providers, chatModelProvider]);
6062

6163
const handleModelSelect = (providerId: string, modelKey: string) => {
6264
setChatModelProvider({ providerId, key: modelKey });
6365
localStorage.setItem('chatModelProviderId', providerId);
6466
localStorage.setItem('chatModelKey', modelKey);
6567
};
6668

67-
const filteredProviders = providers
69+
const filteredProviders = orderedProviders
6870
.map((provider) => ({
6971
...provider,
7072
chatModels: provider.chatModels.filter(
@@ -141,6 +143,7 @@ const ModelSelector = () => {
141143
onClick={() =>
142144
handleModelSelect(provider.id, model.key)
143145
}
146+
type="button"
144147
className={cn(
145148
'px-3 py-2 flex items-center justify-between text-start duration-200 cursor-pointer transition rounded-lg group',
146149
chatModelProvider?.providerId === provider.id &&

src/lib/hooks/useChat.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -535,7 +535,7 @@ export const ChatProvider = ({ children }: { children: React.ReactNode }) => {
535535
messageId,
536536
rewrite = false,
537537
) => {
538-
if (loading) return;
538+
if (loading || !message) return;
539539
setLoading(true);
540540
setMessageAppeared(false);
541541

0 commit comments

Comments
 (0)