88 VStack ,
99} from "@chakra-ui/react" ;
1010import { Project } from "@microbit/makecode-embed/react" ;
11- import { ReactNode , useCallback , useEffect , useMemo , useState } from "react" ;
11+ import { ReactNode , useCallback , useEffect , useState } from "react" ;
1212import { FormattedMessage , IntlShape , useIntl } from "react-intl" ;
1313import { useNavigate } from "react-router" ;
1414import { useSearchParams } from "react-router-dom" ;
@@ -19,11 +19,11 @@ import DefaultPageLayout, {
1919import { useConnectionStage } from "../connection-stage-hooks" ;
2020import { useDeployment } from "../deployment" ;
2121import { useProject } from "../hooks/project-hooks" ;
22+ import { useLogging } from "../logging/logging-hooks" ;
2223import { MicrobitOrgResource } from "../model" ;
2324import { defaultProjectName , validateProjectName } from "../project-name" ;
2425import { useStore } from "../store" ;
2526import { createDataSamplesPageUrl } from "../urls" ;
26- import { useLogging } from "../logging/logging-hooks" ;
2727
2828const ImportPage = ( ) => {
2929 const intl = useIntl ( ) ;
@@ -36,15 +36,15 @@ const ImportPage = () => {
3636 const [ project , setProject ] = useState < Project > ( ) ;
3737 const logging = useLogging ( ) ;
3838
39- const resource = useMemo ( ( ) => {
40- const id = params . get ( "id" ) ;
41- const project = params . get ( "project" ) ;
42- const name = params . get ( "name" ) ;
43- return id && name && project ? { id, project, name } : undefined ;
44- } , [ params ] ) ;
45-
4639 useEffect ( ( ) => {
4740 const updateAsync = async ( ) => {
41+ const resourceId = params . get ( "id" ) ;
42+ const resourceProject = params . get ( "project" ) ;
43+ const resourceName = params . get ( "name" ) ;
44+ const resource =
45+ resourceId && resourceProject && resourceName
46+ ? { id : resourceId , project : resourceProject , name : resourceName }
47+ : undefined ;
4848 if ( ! resource || ! activitiesBaseUrl ) {
4949 return ;
5050 }
@@ -55,7 +55,7 @@ const ImportPage = () => {
5555 intl
5656 ) ;
5757 setProject ( project ) ;
58- setName ( project . header ?. name ?? defaultProjectName ) ;
58+ setName ( resourceName ?? defaultProjectName ) ;
5959 } catch ( e ) {
6060 // Log the fetch error, but fallback to new blank session by default.
6161 logging . error ( e ) ;
@@ -64,7 +64,7 @@ const ImportPage = () => {
6464 void updateAsync ( ) . then ( ( ) => {
6565 setFetchingProject ( false ) ;
6666 } ) ;
67- } , [ activitiesBaseUrl , intl , logging , resource ] ) ;
67+ } , [ activitiesBaseUrl , intl , logging , params ] ) ;
6868
6969 const loadProject = useStore ( ( s ) => s . loadProject ) ;
7070 const newSession = useStore ( ( s ) => s . newSession ) ;
0 commit comments