mirror of
https://github.com/lordmathis/llamactl.git
synced 2025-11-06 09:04:27 +00:00
Refactor InstanceSettingsCard and API types to use NodesMap
This commit is contained in:
@@ -8,7 +8,7 @@ import NumberInput from '@/components/form/NumberInput'
|
|||||||
import CheckboxInput from '@/components/form/CheckboxInput'
|
import CheckboxInput from '@/components/form/CheckboxInput'
|
||||||
import EnvironmentVariablesInput from '@/components/form/EnvironmentVariablesInput'
|
import EnvironmentVariablesInput from '@/components/form/EnvironmentVariablesInput'
|
||||||
import SelectInput from '@/components/form/SelectInput'
|
import SelectInput from '@/components/form/SelectInput'
|
||||||
import { nodesApi, type NodeResponse } from '@/lib/api'
|
import { nodesApi, type NodesMap } from '@/lib/api'
|
||||||
|
|
||||||
interface InstanceSettingsCardProps {
|
interface InstanceSettingsCardProps {
|
||||||
instanceName: string
|
instanceName: string
|
||||||
@@ -27,7 +27,7 @@ const InstanceSettingsCard: React.FC<InstanceSettingsCardProps> = ({
|
|||||||
onNameChange,
|
onNameChange,
|
||||||
onChange
|
onChange
|
||||||
}) => {
|
}) => {
|
||||||
const [nodes, setNodes] = useState<NodeResponse[]>([])
|
const [nodes, setNodes] = useState<NodesMap>({})
|
||||||
const [loadingNodes, setLoadingNodes] = useState(true)
|
const [loadingNodes, setLoadingNodes] = useState(true)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -45,13 +45,10 @@ const InstanceSettingsCard: React.FC<InstanceSettingsCardProps> = ({
|
|||||||
void fetchNodes()
|
void fetchNodes()
|
||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
const nodeOptions = [
|
const nodeOptions = Object.keys(nodes).map(nodeName => ({
|
||||||
{ value: '', label: 'Default (Main Node)' },
|
value: nodeName,
|
||||||
...nodes.map(node => ({
|
label: nodeName
|
||||||
value: node.name,
|
}))
|
||||||
label: node.name
|
|
||||||
}))
|
|
||||||
]
|
|
||||||
|
|
||||||
const handleNodeChange = (value: string | undefined) => {
|
const handleNodeChange = (value: string | undefined) => {
|
||||||
if (value) {
|
if (value) {
|
||||||
@@ -89,7 +86,7 @@ const InstanceSettingsCard: React.FC<InstanceSettingsCardProps> = ({
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* Node Selection */}
|
{/* Node Selection */}
|
||||||
{!loadingNodes && nodes.length > 0 && (
|
{!loadingNodes && Object.keys(nodes).length > 0 && (
|
||||||
<SelectInput
|
<SelectInput
|
||||||
id="node"
|
id="node"
|
||||||
label="Node"
|
label="Node"
|
||||||
|
|||||||
@@ -105,14 +105,15 @@ export const backendsApi = {
|
|||||||
|
|
||||||
// Node API types
|
// Node API types
|
||||||
export interface NodeResponse {
|
export interface NodeResponse {
|
||||||
name: string;
|
|
||||||
address: string;
|
address: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type NodesMap = Record<string, NodeResponse>;
|
||||||
|
|
||||||
// Node API functions
|
// Node API functions
|
||||||
export const nodesApi = {
|
export const nodesApi = {
|
||||||
// GET /nodes
|
// GET /nodes - returns map of node name to NodeResponse
|
||||||
list: () => apiCall<NodeResponse[]>("/nodes"),
|
list: () => apiCall<NodesMap>("/nodes"),
|
||||||
|
|
||||||
// GET /nodes/{name}
|
// GET /nodes/{name}
|
||||||
get: (name: string) => apiCall<NodeResponse>(`/nodes/${name}`),
|
get: (name: string) => apiCall<NodeResponse>(`/nodes/${name}`),
|
||||||
|
|||||||
Reference in New Issue
Block a user