diff --git a/src/components/Editor/Project/Project.jsx b/src/components/Editor/Project/Project.jsx index 4fa543b97..9baf1e198 100644 --- a/src/components/Editor/Project/Project.jsx +++ b/src/components/Editor/Project/Project.jsx @@ -25,6 +25,7 @@ const Project = (props) => { } = props; const saving = useSelector((state) => state.editor.saving); const autosave = useSelector((state) => state.editor.lastSaveAutosave); + const project = useSelector((state) => state.editor.project); useEffect(() => { if (saving === "success" && autosave === false) { @@ -52,6 +53,8 @@ const Project = (props) => { setLoading(false); }, []); + const iframeSrc = "https://scratch-editor.pages.dev/"; + return (
{ {withProjectbar && } {!loading && (
- - - - + {project.project_type === "scratch" ? ( + + ) : ( + <> + + + + + + )}
)}
diff --git a/src/hooks/useProject.js b/src/hooks/useProject.js index 3174735f2..a513b18bd 100644 --- a/src/hooks/useProject.js +++ b/src/hooks/useProject.js @@ -2,7 +2,7 @@ import { useRef, useEffect, useState } from "react"; import { useDispatch, useSelector } from "react-redux"; import { syncProject, setProject } from "../redux/EditorSlice"; -import { defaultPythonProject } from "../utils/defaultProjects"; +import { defaultScratchProject } from "../utils/defaultProjects"; import { useTranslation } from "react-i18next"; export const useProject = ({ @@ -87,7 +87,7 @@ export const useProject = ({ return; } - const data = defaultPythonProject; + const data = defaultScratchProject; dispatch(setProject(data)); } }, [ diff --git a/src/hooks/useProject.test.js b/src/hooks/useProject.test.js index ed4b88d63..c3123dd59 100644 --- a/src/hooks/useProject.test.js +++ b/src/hooks/useProject.test.js @@ -4,7 +4,7 @@ import configureStore from "redux-mock-store"; import { useProject } from "./useProject"; import { syncProject, setProject } from "../redux/EditorSlice"; -import { defaultPythonProject } from "../utils/defaultProjects"; +import { defaultScratchProject } from "../utils/defaultProjects"; jest.mock("react-redux", () => ({ ...jest.requireActual("react-redux"), @@ -53,9 +53,9 @@ describe("When not embedded", () => { wrapper = ({ children }) => {children}; }); - test("If no identifier uses default python project", () => { + test("If no identifier uses default Scratch project", () => { renderHook(() => useProject({}), { wrapper }); - expect(setProject).toHaveBeenCalledWith(defaultPythonProject); + expect(setProject).toHaveBeenCalledWith(defaultScratchProject); }); test("If cached project matches identifer uses cached project", () => { diff --git a/src/utils/defaultProjects.js b/src/utils/defaultProjects.js index abacf349f..bb1c6f32b 100644 --- a/src/utils/defaultProjects.js +++ b/src/utils/defaultProjects.js @@ -21,7 +21,14 @@ export const defaultHtmlProject = { ], }; +export const defaultScratchProject = { + project_type: "scratch", + name: i18n.t("project.untitled"), + components: [{ extension: "sb3", name: "main", content: "" }], +}; + export const DEFAULT_PROJECTS = { python: defaultPythonProject, html: defaultHtmlProject, + scratch: defaultScratchProject, }; diff --git a/webpack.config.js b/webpack.config.js index 0666b78f8..62b15c29d 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -106,7 +106,7 @@ module.exports = { "X-Requested-With, content-type, Authorization", // Pyodide - required for input and code interruption - needed on the host app "Cross-Origin-Opener-Policy": "same-origin", - "Cross-Origin-Embedder-Policy": "require-corp", + "Cross-Origin-Embedder-Policy": "cross-origin" }, setupMiddlewares: (middlewares, devServer) => { devServer.app.use((req, res, next) => {