mirror of
https://github.com/danny-avila/LibreChat.git
synced 2026-01-04 01:28:51 +01:00
refactor: Enhance EndpointItem and renderEndpoints for improved model render keys
- Updated EndpointItem to accept an endpointIndex prop for better indexing of endpoints. - Modified renderEndpoints to pass the endpointIndex to EndpointItem, improving the rendering of endpoint models. - Adjusted renderEndpointModels to utilize the endpointIndex for unique key generation, enhancing performance and preventing rendering issues.
This commit is contained in:
parent
20db2394d2
commit
12584e42b3
2 changed files with 27 additions and 8 deletions
|
|
@ -14,6 +14,7 @@ import { cn } from '~/utils';
|
|||
|
||||
interface EndpointItemProps {
|
||||
endpoint: Endpoint;
|
||||
endpointIndex: number;
|
||||
}
|
||||
|
||||
const SettingsButton = ({
|
||||
|
|
@ -54,7 +55,7 @@ const SettingsButton = ({
|
|||
);
|
||||
};
|
||||
|
||||
export function EndpointItem({ endpoint }: EndpointItemProps) {
|
||||
export function EndpointItem({ endpoint, endpointIndex }: EndpointItemProps) {
|
||||
const localize = useLocalize();
|
||||
const {
|
||||
agentsMap,
|
||||
|
|
@ -153,8 +154,21 @@ export function EndpointItem({ endpoint }: EndpointItemProps) {
|
|||
))}
|
||||
{/* Render endpoint models */}
|
||||
{filteredModels
|
||||
? renderEndpointModels(endpoint, endpoint.models || [], selectedModel, filteredModels)
|
||||
: endpoint.models && renderEndpointModels(endpoint, endpoint.models, selectedModel)}
|
||||
? renderEndpointModels(
|
||||
endpoint,
|
||||
endpoint.models || [],
|
||||
selectedModel,
|
||||
filteredModels,
|
||||
endpointIndex,
|
||||
)
|
||||
: endpoint.models &&
|
||||
renderEndpointModels(
|
||||
endpoint,
|
||||
endpoint.models,
|
||||
selectedModel,
|
||||
undefined,
|
||||
endpointIndex,
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
</Menu>
|
||||
|
|
@ -198,7 +212,11 @@ export function EndpointItem({ endpoint }: EndpointItemProps) {
|
|||
}
|
||||
|
||||
export function renderEndpoints(mappedEndpoints: Endpoint[]) {
|
||||
return mappedEndpoints.map((endpoint) => (
|
||||
<EndpointItem endpoint={endpoint} key={`endpoint-${endpoint.value}-item`} />
|
||||
return mappedEndpoints.map((endpoint, index) => (
|
||||
<EndpointItem
|
||||
endpoint={endpoint}
|
||||
endpointIndex={index}
|
||||
key={`endpoint-${endpoint.value}-${index}`}
|
||||
/>
|
||||
));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,7 +109,6 @@ export function EndpointModelItem({ modelId, endpoint, isSelected }: EndpointMod
|
|||
return (
|
||||
<MenuItem
|
||||
ref={itemRef}
|
||||
key={modelId}
|
||||
onClick={() => handleSelectModel(endpoint, modelId ?? '')}
|
||||
className="group flex w-full cursor-pointer items-center justify-between rounded-lg px-2 text-sm"
|
||||
>
|
||||
|
|
@ -161,14 +160,16 @@ export function renderEndpointModels(
|
|||
models: Array<{ name: string; isGlobal?: boolean }>,
|
||||
selectedModel: string | null,
|
||||
filteredModels?: string[],
|
||||
endpointIndex?: number,
|
||||
) {
|
||||
const modelsToRender = filteredModels || models.map((model) => model.name);
|
||||
const indexSuffix = endpointIndex != null ? `-${endpointIndex}` : '';
|
||||
|
||||
return modelsToRender.map(
|
||||
(modelId) =>
|
||||
(modelId, modelIndex) =>
|
||||
endpoint && (
|
||||
<EndpointModelItem
|
||||
key={modelId}
|
||||
key={`${endpoint.value}${indexSuffix}-${modelId}-${modelIndex}`}
|
||||
modelId={modelId}
|
||||
endpoint={endpoint}
|
||||
isSelected={selectedModel === modelId}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue