Compare commits

...

2 Commits

  1. 4
      src/components/WorkflowCanvas.tsx
  2. 35
      src/utils/modelSelection.ts

4
src/components/WorkflowCanvas.tsx

@ -1505,7 +1505,7 @@ export function WorkflowCanvas() {
// Handle node selection from drop menu
const handleMenuSelect = useCallback(
(selection: { type: NodeType | MenuAction; isAction: boolean }) => {
async (selection: { type: NodeType | MenuAction; isAction: boolean }) => {
if (!connectionDrop) return;
const { flowPosition, sourceNodeId, sourceHandleId, connectionType, handleType } = connectionDrop;
@ -1536,7 +1536,7 @@ export function WorkflowCanvas() {
const nodeType = selection.type as NodeType;
// Create the new node at the drop position (empty - tutorial will populate after connection)
const newNodeId = addNode(nodeType, flowPosition);
const newNodeId = addNode(nodeType, flowPosition, await buildDefaultGenerationNodeData(nodeType));
// Tutorial tracking
if (tutorialActive && nodeType === "nanoBanana") {

35
src/utils/modelSelection.ts

@ -15,6 +15,39 @@ function hasValue(value: unknown): boolean {
return value !== undefined && value !== null && value !== "";
}
function selectedModelIdentifiers(model: SelectedModel | undefined): Set<string> {
const identifiers = new Set<string>();
if (!model) return identifiers;
for (const value of [
model.modelId,
model.displayName,
model.metadata?.aiModelId,
model.metadata?.aiModelCode,
model.metadata?.aiModelCodeAlias,
]) {
if (hasValue(value)) {
identifiers.add(String(value));
}
}
return identifiers;
}
function providerModelMatchesSelectedModel(model: ProviderModel, selected: SelectedModel | undefined): boolean {
if (!selected || model.provider !== selected.provider) return false;
const identifiers = selectedModelIdentifiers(selected);
if (identifiers.size === 0) return false;
return [
model.id,
model.name,
model.metadata?.aiModelId,
model.metadata?.aiModelCode,
model.metadata?.aiModelCodeAlias,
].some((value) => hasValue(value) && identifiers.has(String(value)));
}
export function shouldUpdateSelectedModelFromProviderModel(
current: SelectedModel | undefined,
model: ProviderModel
@ -34,7 +67,7 @@ export function chooseModelFromList(
models: ProviderModel[],
preferred?: SelectedModel
): SelectedModel | null {
const model = models.find((item) => item.id === preferred?.modelId)
const model = models.find((item) => providerModelMatchesSelectedModel(item, preferred))
?? models.find((item) => item.metadata?.isDefault === 1)
?? models[0];
return model ? toSelectedModel(model) : null;

Loading…
Cancel
Save