Skip to content

Commit c7451fc

Browse files
Remove need for forEachModeledMethod method
1 parent 918362f commit c7451fc

2 files changed

Lines changed: 16 additions & 24 deletions

File tree

extensions/ql-vscode/src/model-editor/shared/modeling-status.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@ import { ModeledMethod } from "../modeled-method";
33
export type ModelingStatus = "unmodeled" | "unsaved" | "saved";
44

55
export function getModelingStatus(
6-
modeledMethods: ModeledMethod[],
6+
modeledMethods: Array<ModeledMethod | undefined>,
77
methodIsUnsaved: boolean,
88
): ModelingStatus {
99
if (modeledMethods.length > 0) {
1010
if (methodIsUnsaved) {
1111
return "unsaved";
12-
} else if (modeledMethods.some((m) => m.type !== "none")) {
12+
} else if (modeledMethods.some((m) => m && m.type !== "none")) {
1313
return "saved";
1414
}
1515
}

extensions/ql-vscode/src/view/model-editor/MethodRow.tsx

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {
55
VSCodeProgressRing,
66
} from "@vscode/webview-ui-toolkit/react";
77
import * as React from "react";
8-
import { forwardRef, useCallback, useEffect, useRef } from "react";
8+
import { forwardRef, useCallback, useEffect, useMemo, useRef } from "react";
99
import { styled } from "styled-components";
1010
import { vscode } from "../vscode-api";
1111

@@ -103,9 +103,15 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
103103
onChange,
104104
} = props;
105105

106-
const modeledMethods = viewState.showMultipleModels
107-
? modeledMethodsProp
108-
: modeledMethodsProp.slice(0, 1);
106+
const modeledMethods: Array<ModeledMethod | undefined> = useMemo(
107+
() =>
108+
modeledMethodsProp.length === 0
109+
? [undefined]
110+
: viewState.showMultipleModels
111+
? modeledMethodsProp
112+
: modeledMethodsProp.slice(0, 1),
113+
[modeledMethodsProp, viewState],
114+
);
109115

110116
const jumpToMethod = useCallback(
111117
() => sendJumpToMethodMessage(method),
@@ -153,7 +159,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
153159
{!props.modelingInProgress && (
154160
<>
155161
<MultiModelColumn gridColumn={2}>
156-
{forEachModeledMethod(modeledMethods, (modeledMethod, index) => (
162+
{modeledMethods.map((modeledMethod, index) => (
157163
<ModelTypeDropdown
158164
key={index}
159165
method={method}
@@ -163,7 +169,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
163169
))}
164170
</MultiModelColumn>
165171
<MultiModelColumn gridColumn={3}>
166-
{forEachModeledMethod(modeledMethods, (modeledMethod, index) => (
172+
{modeledMethods.map((modeledMethod, index) => (
167173
<ModelInputDropdown
168174
key={index}
169175
method={method}
@@ -173,7 +179,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
173179
))}
174180
</MultiModelColumn>
175181
<MultiModelColumn gridColumn={4}>
176-
{forEachModeledMethod(modeledMethods, (modeledMethod, index) => (
182+
{modeledMethods.map((modeledMethod, index) => (
177183
<ModelOutputDropdown
178184
key={index}
179185
method={method}
@@ -183,7 +189,7 @@ const ModelableMethodRow = forwardRef<HTMLElement | undefined, MethodRowProps>(
183189
))}
184190
</MultiModelColumn>
185191
<MultiModelColumn gridColumn={5}>
186-
{forEachModeledMethod(modeledMethods, (modeledMethod, index) => (
192+
{modeledMethods.map((modeledMethod, index) => (
187193
<ModelKindDropdown
188194
key={index}
189195
method={method}
@@ -244,17 +250,3 @@ function sendJumpToMethodMessage(method: Method) {
244250
methodSignature: method.signature,
245251
});
246252
}
247-
248-
function forEachModeledMethod(
249-
modeledMethods: ModeledMethod[],
250-
renderer: (
251-
modeledMethod: ModeledMethod | undefined,
252-
index: number,
253-
) => JSX.Element,
254-
): JSX.Element | JSX.Element[] {
255-
if (modeledMethods.length === 0) {
256-
return renderer(undefined, 0);
257-
} else {
258-
return modeledMethods.map(renderer);
259-
}
260-
}

0 commit comments

Comments
 (0)