Skip to content

Commit 5e84b5f

Browse files
Enforce that viewState is defined and show a loading screen otherwise
1 parent 6cf2f32 commit 5e84b5f

File tree

3 files changed

+26
-19
lines changed

3 files changed

+26
-19
lines changed

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

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ import { ModeledMethodsList } from "./ModeledMethodsList";
1818
import { percentFormatter } from "./formatters";
1919
import { Mode } from "../../data-extensions-editor/shared/mode";
2020

21+
const LoadingContainer = styled.div`
22+
text-align: center;
23+
padding: 1em;
24+
font-size: x-large;
25+
font-weight: 600;
26+
`;
27+
2128
const DataExtensionsEditorContainer = styled.div`
2229
margin-top: 1rem;
2330
`;
@@ -223,6 +230,10 @@ export function DataExtensionsEditor({
223230
});
224231
}, [viewState?.mode]);
225232

233+
if (viewState === undefined) {
234+
return <LoadingContainer>Loading...</LoadingContainer>;
235+
}
236+
226237
return (
227238
<DataExtensionsEditorContainer>
228239
{progress.maxStep > 0 && (
@@ -236,25 +247,21 @@ export function DataExtensionsEditor({
236247
<>
237248
<ViewTitle>Data extensions editor</ViewTitle>
238249
<DetailsContainer>
239-
{viewState?.extensionPack && (
240-
<>
241-
<LinkIconButton onClick={onOpenExtensionPackClick}>
242-
<span slot="start" className="codicon codicon-package"></span>
243-
{viewState.extensionPack.name}
244-
</LinkIconButton>
245-
</>
246-
)}
250+
<LinkIconButton onClick={onOpenExtensionPackClick}>
251+
<span slot="start" className="codicon codicon-package"></span>
252+
{viewState.extensionPack.name}
253+
</LinkIconButton>
247254
<div>
248255
{percentFormatter.format(modeledPercentage / 100)} modeled
249256
</div>
250257
<div>
251258
{percentFormatter.format(unModeledPercentage / 100)} unmodeled
252259
</div>
253-
{viewState?.enableFrameworkMode && (
260+
{viewState.enableFrameworkMode && (
254261
<>
255262
<div>
256263
Mode:{" "}
257-
{viewState?.mode === Mode.Framework
264+
{viewState.mode === Mode.Framework
258265
? "Framework"
259266
: "Application"}
260267
</div>
@@ -274,17 +281,17 @@ export function DataExtensionsEditor({
274281
<EditorContainer>
275282
<ButtonsContainer>
276283
<VSCodeButton onClick={onSaveAllClick}>Apply</VSCodeButton>
277-
{viewState?.enableFrameworkMode && (
284+
{viewState.enableFrameworkMode && (
278285
<VSCodeButton appearance="secondary" onClick={onRefreshClick}>
279286
Refresh
280287
</VSCodeButton>
281288
)}
282289
<VSCodeButton onClick={onGenerateFromSourceClick}>
283-
{viewState?.mode === Mode.Framework
290+
{viewState.mode === Mode.Framework
284291
? "Generate"
285292
: "Download and generate"}
286293
</VSCodeButton>
287-
{viewState?.showLlmButton && (
294+
{viewState.showLlmButton && (
288295
<>
289296
<VSCodeButton onClick={onGenerateAllFromLlmClick}>
290297
Generate using LLM
@@ -297,7 +304,7 @@ export function DataExtensionsEditor({
297304
unsavedModels={unsavedModels}
298305
modeledMethods={modeledMethods}
299306
viewState={viewState}
300-
mode={viewState?.mode ?? Mode.Application}
307+
mode={viewState.mode}
301308
onChange={onChange}
302309
onSaveModelClick={onSaveModelClick}
303310
onGenerateFromLlmClick={onGenerateFromLlmClick}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ type Props = {
7070
title: string;
7171
externalApiUsages: ExternalApiUsage[];
7272
modeledMethods: Record<string, ModeledMethod>;
73-
viewState: DataExtensionEditorViewState | undefined;
73+
viewState: DataExtensionEditorViewState;
7474
mode: Mode;
7575
hasUnsavedChanges: boolean;
7676
onChange: (
@@ -166,7 +166,7 @@ export const LibraryRow = ({
166166
</ModeledPercentage>
167167
{hasUnsavedChanges ? <VSCodeTag>UNSAVED</VSCodeTag> : null}
168168
</NameContainer>
169-
{viewState?.showLlmButton && (
169+
{viewState.showLlmButton && (
170170
<VSCodeButton appearance="icon" onClick={handleModelWithAI}>
171171
<Codicon name="lightbulb-autofix" label="Model with AI" />
172172
&nbsp;Model with AI
@@ -176,8 +176,8 @@ export const LibraryRow = ({
176176
<Codicon name="code" label="Model from source" />
177177
&nbsp;Model from source
178178
</VSCodeButton>
179-
{viewState?.enableFrameworkMode &&
180-
viewState?.mode === Mode.Application && (
179+
{viewState.enableFrameworkMode &&
180+
viewState.mode === Mode.Application && (
181181
<VSCodeButton appearance="icon" onClick={handleModelDependency}>
182182
<Codicon name="references" label="Model dependency" />
183183
&nbsp;Model dependency

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ type Props = {
1414
externalApiUsages: ExternalApiUsage[];
1515
unsavedModels: Set<string>;
1616
modeledMethods: Record<string, ModeledMethod>;
17-
viewState: DataExtensionEditorViewState | undefined;
17+
viewState: DataExtensionEditorViewState;
1818
mode: Mode;
1919
onChange: (
2020
modelName: string,

0 commit comments

Comments
 (0)