Skip to content

Commit f57d441

Browse files
committed
Hide type models for Ruby in non-canary mode
1 parent 6031d9b commit f57d441

File tree

17 files changed

+144
-7
lines changed

17 files changed

+144
-7
lines changed

extensions/ql-vscode/src/model-editor/languages/models-as-data.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ import type { AccessPathSuggestionRow } from "../suggestions";
1919

2020
type GenerateMethodDefinition<T> = (method: T) => DataTuple[];
2121
type ReadModeledMethod = (row: DataTuple[]) => ModeledMethod;
22+
type IsHiddenContext = {
23+
method: MethodDefinition;
24+
isCanary: boolean;
25+
};
2226

2327
export type ModelsAsDataLanguagePredicate<T> = {
2428
extensiblePredicate: string;
@@ -30,6 +34,14 @@ export type ModelsAsDataLanguagePredicate<T> = {
3034
supportedEndpointTypes?: EndpointType[];
3135
generateMethodDefinition: GenerateMethodDefinition<T>;
3236
readModeledMethod: ReadModeledMethod;
37+
38+
/**
39+
* Controls whether this predicate is hidden for a certain method. This only applies to the UI.
40+
* If not specified, the predicate is visible for all methods.
41+
*
42+
* @param method The method to check if the predicate is hidden for.
43+
*/
44+
isHidden?: (context: IsHiddenContext) => boolean;
3345
};
3446

3547
type ParseGenerationResults = (

extensions/ql-vscode/src/model-editor/languages/ruby/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ export const ruby: ModelsAsDataLanguage = {
169169
methodParameters: "",
170170
};
171171
},
172+
// Hide for all non-canary users
173+
isHidden: ({ isCanary }) => !isCanary,
172174
},
173175
},
174176
modelGeneration: {

extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-view-provider.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type { ModelingStore } from "../modeling-store";
1111
import { AbstractWebviewViewProvider } from "../../common/vscode/abstract-webview-view-provider";
1212
import { assertNever } from "../../common/helpers-pure";
1313
import type { ModelConfigListener } from "../../config";
14+
import { isCanary } from "../../config";
1415
import type { DatabaseItem } from "../../databases/local-databases";
1516
import type { ModelingEvents } from "../modeling-events";
1617
import type { QueryLanguage } from "../../common/query-language";
@@ -46,6 +47,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
4647
t: "setMethodModelingPanelViewState",
4748
viewState: {
4849
language: this.language,
50+
isCanary: isCanary(),
4951
},
5052
});
5153
}

extensions/ql-vscode/src/model-editor/model-editor-view.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import type { Method } from "./method";
4040
import type { ModeledMethod } from "./modeled-method";
4141
import type { ExtensionPack } from "./shared/extension-pack";
4242
import type { ModelConfigListener } from "../config";
43+
import { isCanary } from "../config";
4344
import { Mode } from "./shared/mode";
4445
import { loadModeledMethods, saveModeledMethods } from "./modeled-method-fs";
4546
import { pickExtensionPack } from "./extension-pack-picker";
@@ -450,6 +451,7 @@ export class ModelEditorView extends AbstractWebview<
450451
mode: this.modelingStore.getMode(this.databaseItem),
451452
showModeSwitchButton,
452453
sourceArchiveAvailable,
454+
isCanary: isCanary(),
453455
},
454456
});
455457
}

extensions/ql-vscode/src/model-editor/shared/view-state.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@ export interface ModelEditorViewState {
1111
mode: Mode;
1212
showModeSwitchButton: boolean;
1313
sourceArchiveAvailable: boolean;
14+
isCanary: boolean;
1415
}
1516

1617
export interface MethodModelingPanelViewState {
1718
language: QueryLanguage | undefined;
19+
isCanary: boolean;
1820
}

extensions/ql-vscode/src/stories/method-modeling/MethodModelingInputs.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const Template: StoryFn<typeof MethodModelingInputsComponent> = (args) => {
3434
language={QueryLanguage.Java}
3535
modeledMethod={m}
3636
onChange={onChange}
37+
isCanary={true}
3738
/>
3839
);
3940
};

extensions/ql-vscode/src/view/method-modeling/MethodModeling.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ const UnsavedTag = ({ modelingStatus }: { modelingStatus: ModelingStatus }) => (
5050

5151
export type MethodModelingProps = {
5252
language: QueryLanguage;
53+
isCanary: boolean;
5354
modelingStatus: ModelingStatus;
5455
method: Method;
5556
modeledMethods: ModeledMethod[];
@@ -60,6 +61,7 @@ export type MethodModelingProps = {
6061

6162
export const MethodModeling = ({
6263
language,
64+
isCanary,
6365
modelingStatus,
6466
modeledMethods,
6567
method,
@@ -80,6 +82,7 @@ export const MethodModeling = ({
8082
</DependencyContainer>
8183
<MultipleModeledMethodsPanel
8284
language={language}
85+
isCanary={isCanary}
8386
method={method}
8487
modeledMethods={modeledMethods}
8588
isModelingInProgress={isModelingInProgress}

extensions/ql-vscode/src/view/method-modeling/MethodModelingInputs.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ const Name = styled.span`
2424

2525
export type MethodModelingInputsProps = {
2626
language: QueryLanguage;
27+
isCanary: boolean;
2728
method: Method;
2829
modeledMethod: ModeledMethod | undefined;
2930
modelPending: boolean;
@@ -33,6 +34,7 @@ export type MethodModelingInputsProps = {
3334

3435
export const MethodModelingInputs = ({
3536
language,
37+
isCanary,
3638
method,
3739
modeledMethod,
3840
modelPending,
@@ -55,7 +57,7 @@ export const MethodModelingInputs = ({
5557
{isModelingInProgress ? (
5658
<InProgressDropdown />
5759
) : (
58-
<ModelTypeDropdown {...inputProps} />
60+
<ModelTypeDropdown isCanary={isCanary} {...inputProps} />
5961
)}
6062
</Input>
6163
</Container>

extensions/ql-vscode/src/view/method-modeling/MethodModelingView.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ export function MethodModelingView({
116116
return (
117117
<MethodModeling
118118
language={viewState?.language}
119+
isCanary={viewState?.isCanary ?? false}
119120
modelingStatus={modelingStatus}
120121
method={method}
121122
modeledMethods={modeledMethods}

extensions/ql-vscode/src/view/method-modeling/MultipleModeledMethodsPanel.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type { ModelingStatus } from "../../model-editor/shared/modeling-status";
1919

2020
export type MultipleModeledMethodsPanelProps = {
2121
language: QueryLanguage;
22+
isCanary: boolean;
2223
method: Method;
2324
modeledMethods: ModeledMethod[];
2425
modelingStatus: ModelingStatus;
@@ -61,6 +62,7 @@ const ModificationActions = styled.div`
6162

6263
export const MultipleModeledMethodsPanel = ({
6364
language,
65+
isCanary,
6466
method,
6567
modeledMethods,
6668
modelingStatus,
@@ -157,6 +159,7 @@ export const MultipleModeledMethodsPanel = ({
157159
{modeledMethods.length > 0 ? (
158160
<MethodModelingInputs
159161
language={language}
162+
isCanary={isCanary}
160163
method={method}
161164
modeledMethod={modeledMethods[selectedIndex]}
162165
modelPending={isModelPending(
@@ -170,6 +173,7 @@ export const MultipleModeledMethodsPanel = ({
170173
) : (
171174
<MethodModelingInputs
172175
language={language}
176+
isCanary={isCanary}
173177
method={method}
174178
modeledMethod={undefined}
175179
modelPending={isModelPending(

0 commit comments

Comments
 (0)