Skip to content

Commit 7d59224

Browse files
Pull out ModelableMethodRow as a separate component
1 parent aba574e commit 7d59224

File tree

1 file changed

+25
-18
lines changed
  • extensions/ql-vscode/src/view/data-extensions-editor

1 file changed

+25
-18
lines changed

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

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,30 @@ type Props = {
5858
};
5959

6060
export const MethodRow = (props: Props) => {
61-
const { externalApiUsage, modeledMethod, mode, onChange } = props;
61+
const { externalApiUsage, modeledMethod } = props;
62+
63+
const jumpToUsage = useCallback(() => {
64+
vscode.postMessage({
65+
t: "jumpToUsage",
66+
// In framework mode, the first and only usage is the definition of the method
67+
location: externalApiUsage.usages[0].url,
68+
});
69+
}, [externalApiUsage]);
70+
71+
const methodCanBeModeled =
72+
!externalApiUsage.supported ||
73+
(modeledMethod && modeledMethod?.type !== "none");
74+
75+
if (methodCanBeModeled) {
76+
return <ModelableMethodRow {...props} jumpToUsage={jumpToUsage} />;
77+
} else {
78+
return <UmmodelableMethodRow {...props} jumpToUsage={jumpToUsage} />;
79+
}
80+
};
81+
82+
function ModelableMethodRow(props: Props & { jumpToUsage: () => void }) {
83+
const { externalApiUsage, modeledMethod, mode, onChange, jumpToUsage } =
84+
props;
6285

6386
const argumentsList = useMemo(() => {
6487
if (externalApiUsage.methodParameters === "()") {
@@ -134,14 +157,6 @@ export const MethodRow = (props: Props) => {
134157
[onChange, externalApiUsage, modeledMethod],
135158
);
136159

137-
const jumpToUsage = useCallback(() => {
138-
vscode.postMessage({
139-
t: "jumpToUsage",
140-
// In framework mode, the first and only usage is the definition of the method
141-
location: externalApiUsage.usages[0].url,
142-
});
143-
}, [externalApiUsage]);
144-
145160
const inputOptions = useMemo(
146161
() => [
147162
{ value: "Argument[this]", label: "Argument[this]" },
@@ -165,14 +180,6 @@ export const MethodRow = (props: Props) => {
165180
[argumentsList],
166181
);
167182

168-
const methodCanBeModeled =
169-
!externalApiUsage.supported ||
170-
(modeledMethod && modeledMethod?.type !== "none");
171-
172-
if (!methodCanBeModeled) {
173-
return <UmmodelableMethodRow {...props} jumpToUsage={jumpToUsage} />;
174-
}
175-
176183
const showInputCell =
177184
modeledMethod?.type && ["sink", "summary"].includes(modeledMethod?.type);
178185
const showOutputCell =
@@ -228,7 +235,7 @@ export const MethodRow = (props: Props) => {
228235
</VSCodeDataGridCell>
229236
</VSCodeDataGridRow>
230237
);
231-
};
238+
}
232239

233240
function UmmodelableMethodRow(props: {
234241
externalApiUsage: ExternalApiUsage;

0 commit comments

Comments
 (0)