import React, { Component } from "react"; import PropTypes from "prop-types"; import { connect } from "react-redux"; import { workspaceName } from "../../actions/workspaceActions"; import { clearMessages } from "../../actions/messageActions"; import { getTutorial, resetTutorial, tutorialStep, tutorialProgress, } from "../../actions/tutorialActions"; import { withRouter } from "react-router-dom"; import Breadcrumbs from "../Breadcrumbs"; import StepperHorizontal from "./StepperHorizontal"; import StepperVertical from "./StepperVertical"; import Instruction from "./Instruction"; import Assessment from "./Assessment"; import NotFound from "../NotFound"; import * as Blockly from "blockly"; import { detectWhitespacesAndReturnReadableResult } from "../../helpers/whitespace"; import Card from "@mui/material/Card"; import Button from "@mui/material/Button"; class Tutorial extends Component { componentDidMount() { this.props.tutorialProgress(); // retrieve tutorial only if a potential user is loaded - authentication // is finished (success or failed) if (!this.props.progress) { this.props.getTutorial(this.props.match.params.tutorialId); } } componentDidUpdate(props, state) { if (props.progress !== this.props.progress && !this.props.progress) { // authentication is completed this.props.getTutorial(this.props.match.params.tutorialId); } else if ( this.props.tutorial && !this.props.isLoading && this.props.tutorial._id !== this.props.match.params.tutorialId ) { this.props.getTutorial(this.props.match.params.tutorialId); } if (this.props.message.id === "GET_TUTORIAL_FAIL") { alert(this.props.message.msg); } } componentWillUnmount() { this.props.resetTutorial(); this.props.workspaceName(null); if (this.props.message.msg) { this.props.clearMessages(); } } render() { return (