Skip to content

Commit f0131c9

Browse files
Upgrade MakeCode embed and microbit connection libraries (#586)
Use MakeCodeProject instead of Project as per API change in MakeCode embed
1 parent 1556e4f commit f0131c9

File tree

9 files changed

+49
-50
lines changed

9 files changed

+49
-50
lines changed

package-lock.json

Lines changed: 13 additions & 13 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@
6161
"@chakra-ui/react": "^2.8.2",
6262
"@emotion/react": "^11.11.4",
6363
"@emotion/styled": "^11.11.5",
64-
"@microbit/makecode-embed": "^0.0.0-alpha.7",
65-
"@microbit/microbit-connection": "^0.0.0-alpha.30",
64+
"@microbit/makecode-embed": "^0.1.0",
65+
"@microbit/microbit-connection": "^0.0.0-alpha.33",
6666
"@microbit/ml-header-generator": "^0.4.3",
6767
"@microbit/smoothie": "^1.37.0-microbit.2",
6868
"@tensorflow/tfjs": "^4.20.0",

src/components/CodeViewCard.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ import { Box, Card, SkeletonText, VStack } from "@chakra-ui/react";
77
import {
88
BlockLayout,
99
MakeCodeBlocksRendering,
10-
Project,
10+
MakeCodeProject,
1111
} from "@microbit/makecode-embed/react";
1212
import { memo, useLayoutEffect, useRef, useState } from "react";
1313
import { tourElClassname } from "../tours";
1414

1515
interface CodeViewCardProps {
16-
project: Project;
16+
project: MakeCodeProject;
1717
parentRef: React.RefObject<HTMLDivElement>;
1818
}
1919

src/components/TestingModelTable.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -61,13 +61,7 @@ const TestingModelTable = () => {
6161
const scrollableAreaRef = useRef<HTMLDivElement>(null);
6262
const intl = useIntl();
6363
return (
64-
<MakeCodeRenderBlocksProvider
65-
key={makeCodeLang}
66-
options={{
67-
version: undefined,
68-
lang: makeCodeLang,
69-
}}
70-
>
64+
<MakeCodeRenderBlocksProvider key={makeCodeLang} lang={makeCodeLang}>
7165
<HeadingGrid {...gridCommonProps} px={5} headings={headings} />
7266
<VStack
7367
px={5}

src/hooks/project-hooks.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {
88
EditorWorkspaceSaveRequest,
99
MakeCodeFrameDriver,
1010
MakeCodeFrameProps,
11-
Project,
11+
MakeCodeProject,
1212
} from "@microbit/makecode-embed/react";
1313
import {
1414
createContext,
@@ -53,7 +53,7 @@ export type LoadType = "drop-load" | "file-upload";
5353
interface ProjectContext {
5454
browserNavigationToEditor(): Promise<boolean>;
5555
openEditor(): Promise<void>;
56-
project: Project;
56+
project: MakeCodeProject;
5757
projectEdited: boolean;
5858
resetProject: () => void;
5959
loadFile: (file: File, type: LoadType) => void;

src/makecode/utils.test.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
* SPDX-License-Identifier: MIT
1010
*/
11-
import { Project } from "@microbit/makecode-embed/react";
11+
import { MakeCodeProject } from "@microbit/makecode-embed/react";
1212
import * as tf from "@tensorflow/tfjs";
1313
import { assert, vi } from "vitest";
1414
import { TrainingResult, trainModel } from "../ml";
@@ -66,7 +66,7 @@ describe("test project update", () => {
6666
assert(!trainingResult.error);
6767
// The oldProject has had the _history and .simstate fields removed.
6868
// We don't care about these and it makes equality easier to test.
69-
const projectToUpdate = oldProject as unknown as Project;
69+
const projectToUpdate = oldProject as unknown as MakeCodeProject;
7070

7171
const projectToUpdatePxtJSON = projectToUpdate.text?.[filenames.pxtJson];
7272
const projectToUpdatePxt = JSON.parse(
@@ -87,7 +87,7 @@ describe("test project update", () => {
8787
projectToUpdate.text?.[filenames.autogenerated]
8888
);
8989

90-
const updatedProject: Project = {
90+
const updatedProject: MakeCodeProject = {
9191
...projectToUpdate,
9292
text: {
9393
...projectToUpdate.text,
@@ -107,7 +107,7 @@ describe("test project update", () => {
107107
data,
108108
trainingResult.model,
109109
currentDataWindow,
110-
projectToUpdate as unknown as Project
110+
projectToUpdate as unknown as MakeCodeProject
111111
),
112112
},
113113
};
@@ -256,7 +256,7 @@ describe("test actionNamesFromLabels", () => {
256256

257257
describe("test hasMakeCodeMlExtension", () => {
258258
it("has extension, returns true", () => {
259-
const project: Project = {
259+
const project: MakeCodeProject = {
260260
text: {
261261
[filenames.pxtJson]: JSON.stringify({
262262
dependencies: {
@@ -269,7 +269,7 @@ describe("test hasMakeCodeMlExtension", () => {
269269
});
270270

271271
it("does not have extension, returns false", () => {
272-
const project: Project = {
272+
const project: MakeCodeProject = {
273273
text: {
274274
[filenames.pxtJson]: JSON.stringify({
275275
dependencies: {

src/makecode/utils.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import upperFirst from "lodash.upperfirst";
1111
import { DatasetEditorJsonFormat } from "../model";
1212
import { getMainScript } from "./generate-main-scripts";
1313
import { getAutogeneratedTs, getDatasetJson } from "./generate-custom-scripts";
14-
import { Project } from "@microbit/makecode-embed/react";
14+
import { MakeCodeProject } from "@microbit/makecode-embed/react";
1515
import { DataWindow } from "../store";
1616
import { untitledProjectName } from "../project-name";
1717

@@ -64,7 +64,7 @@ export const generateCustomFiles = (
6464
actionState: DatasetEditorJsonFormat,
6565
model: LayersModel | undefined,
6666
dataWindow: DataWindow,
67-
project?: Project
67+
project?: MakeCodeProject
6868
) => {
6969
const { data: actions } = actionState;
7070
const useableActions = model ? actions : [];
@@ -135,7 +135,7 @@ export const actionNamesFromLabels = (actionLabels: string[]): ActionName[] => {
135135
return actionNames;
136136
};
137137

138-
export const hasMakeCodeMlExtension = (project: Project) => {
138+
export const hasMakeCodeMlExtension = (project: MakeCodeProject) => {
139139
if (!project.text || !project.text[filenames.pxtJson]) {
140140
return false;
141141
}

src/pages/ImportPage.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
Text,
1313
VStack,
1414
} from "@chakra-ui/react";
15-
import { Project } from "@microbit/makecode-embed/react";
15+
import { MakeCodeProject } from "@microbit/makecode-embed/react";
1616
import { ReactNode, useCallback, useEffect, useState } from "react";
1717
import { FormattedMessage, IntlShape, useIntl } from "react-intl";
1818
import { useNavigate } from "react-router";
@@ -38,7 +38,7 @@ const ImportPage = () => {
3838
const [name, setName] = useState<string>(defaultProjectName);
3939
const isValidSetup = validateProjectName(name);
4040
const [fetchingProject, setFetchingProject] = useState<boolean>(true);
41-
const [project, setProject] = useState<Project>();
41+
const [project, setProject] = useState<MakeCodeProject>();
4242
const logging = useLogging();
4343

4444
useEffect(() => {
@@ -168,7 +168,9 @@ const ImportPage = () => {
168168
);
169169
};
170170

171-
const isValidProject = (content: Project): content is Project => {
171+
const isValidProject = (
172+
content: MakeCodeProject
173+
): content is MakeCodeProject => {
172174
return (
173175
content &&
174176
typeof content === "object" &&
@@ -181,7 +183,7 @@ const fetchMicrobitOrgResourceProjectCode = async (
181183
activitiesBaseUrl: string,
182184
resource: MicrobitOrgResource,
183185
intl: IntlShape
184-
): Promise<Project> => {
186+
): Promise<MakeCodeProject> => {
185187
const url = `${activitiesBaseUrl}${encodeURIComponent(
186188
resource.id
187189
)}-makecode.json`;

src/store.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*
55
* SPDX-License-Identifier: MIT
66
*/
7-
import { Project } from "@microbit/makecode-embed/react";
7+
import { MakeCodeProject } from "@microbit/makecode-embed/react";
88
import * as tf from "@tensorflow/tfjs";
99
import { create } from "zustand";
1010
import { devtools, persist } from "zustand/middleware";
@@ -82,7 +82,7 @@ interface PredictionResult {
8282
detected: Action | undefined;
8383
}
8484

85-
const createUntitledProject = (): Project => ({
85+
const createUntitledProject = (): MakeCodeProject => ({
8686
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
8787
header: {
8888
target: "microbit",
@@ -114,7 +114,7 @@ const createUntitledProject = (): Project => ({
114114
});
115115

116116
const updateProject = (
117-
project: Project,
117+
project: MakeCodeProject,
118118
projectEdited: boolean,
119119
actions: ActionData[],
120120
model: tf.LayersModel | undefined,
@@ -151,7 +151,7 @@ export interface State {
151151

152152
isRecording: boolean;
153153

154-
project: Project;
154+
project: MakeCodeProject;
155155
/**
156156
* We use this for the UI to tell when we've switched new project,
157157
* e.g. to show a toast.
@@ -220,7 +220,7 @@ export interface Actions {
220220
dataCollectionMicrobitConnected(): void;
221221

222222
loadDataset(actions: ActionData[]): void;
223-
loadProject(project: Project, name: string): void;
223+
loadProject(project: MakeCodeProject, name: string): void;
224224
setEditorOpen(open: boolean): void;
225225
recordingStarted(): void;
226226
recordingStopped(): void;
@@ -244,11 +244,11 @@ export interface Actions {
244244
* When interacting outside of React to sync with MakeCode it's important to have
245245
* the current project after state changes.
246246
*/
247-
getCurrentProject(): Project;
247+
getCurrentProject(): MakeCodeProject;
248248
checkIfProjectNeedsFlush(): boolean;
249249
checkIfLangChanged(): boolean;
250250
langChangeFlushedToEditor(): void;
251-
editorChange(project: Project): void;
251+
editorChange(project: MakeCodeProject): void;
252252
editorReady(): void;
253253
editorTimedOut(): void;
254254
getEditorStartUp(): EditorStartUp;
@@ -669,7 +669,7 @@ const createMlStore = (logging: Logging) => {
669669
* Generally project loads go via MakeCode as it reads the hex but when we open projects
670670
* from microbit.org we have the JSON already and use this route.
671671
*/
672-
loadProject(project: Project, name: string) {
672+
loadProject(project: MakeCodeProject, name: string) {
673673
const newActions = getActionsFromProject(project);
674674
set(({ settings }) => {
675675
const timestamp = Date.now();
@@ -843,7 +843,7 @@ const createMlStore = (logging: Logging) => {
843843
);
844844
},
845845

846-
editorChange(newProject: Project) {
846+
editorChange(newProject: MakeCodeProject) {
847847
const actionName = "editorChange";
848848
set(
849849
(state) => {
@@ -1364,7 +1364,7 @@ const actionIcon = ({
13641364
return useableIcons[0];
13651365
};
13661366

1367-
const getActionsFromProject = (project: Project): ActionData[] => {
1367+
const getActionsFromProject = (project: MakeCodeProject): ActionData[] => {
13681368
const { text } = project;
13691369
if (text === undefined || !("dataset.json" in text)) {
13701370
return [];
@@ -1376,7 +1376,10 @@ const getActionsFromProject = (project: Project): ActionData[] => {
13761376
return dataset.data as ActionData[];
13771377
};
13781378

1379-
const renameProject = (project: Project, name: string): Project => {
1379+
const renameProject = (
1380+
project: MakeCodeProject,
1381+
name: string
1382+
): MakeCodeProject => {
13801383
const pxtString = project.text?.[filenames.pxtJson];
13811384
const pxt = JSON.parse(pxtString ?? "{}") as Record<string, unknown>;
13821385

0 commit comments

Comments
 (0)