diff --git a/src/packages/frontend/cspell.json b/src/packages/frontend/cspell.json index e71300200a..1ce3d01b55 100644 --- a/src/packages/frontend/cspell.json +++ b/src/packages/frontend/cspell.json @@ -43,6 +43,7 @@ "vertexai", "vfill", "xsmall", + "MDLG" ], "flagWords": [], "ignorePaths": ["node_modules/**", "dist/**", "dist-ts/**", "build/**"], diff --git a/src/packages/frontend/project/page/software-env-upgrade.tsx b/src/packages/frontend/project/page/software-env-upgrade.tsx index eeccf596fa..5171e06d19 100644 --- a/src/packages/frontend/project/page/software-env-upgrade.tsx +++ b/src/packages/frontend/project/page/software-env-upgrade.tsx @@ -56,11 +56,14 @@ const TO_UPGRADE = [ function useComputeImage(project_id) { const [compute_image, set_compute_image] = useState( - undefined + undefined, ); const project_map = useTypedRedux("projects", "project_map"); // ? below because reported to be null in some cases of iframe embedding. - const current_image = project_map?.getIn([project_id, "compute_image"]) as any; + const current_image = project_map?.getIn([ + project_id, + "compute_image", + ]) as any; if (current_image != compute_image) { set_compute_image(current_image); } @@ -89,7 +92,7 @@ const SoftwareEnvUpgradeAlert: React.FC = (props: Props) => { const project_state = useProjectState(project_id); const is_running = project_state.get("state") === "running"; const customize_software = useTypedRedux("customize", "software"); - const [software_envs, dflt_compute_image] = useMemo(() => { + const [software_envs, default_compute_image] = useMemo(() => { return [ customize_software.get("environments")?.toJS() as any, customize_software.get("default"), @@ -110,11 +113,21 @@ const SoftwareEnvUpgradeAlert: React.FC = (props: Props) => { [UBUNTU2004_DEPRECATED, UBUNTU2004_DEV].indexOf(compute_image) != -1; // just a safety measure, before accessing .title - if (software_envs == null || dflt_compute_image == null) return null; - if (software_envs[compute_image] == null) return null; + if (software_envs == null || default_compute_image == null) return null; + + // In case there is no information, we can't upgrade or fallback + // https://github.com/sagemathinc/cocalc/issues/8141 + for (const key of [ + compute_image, + UBUNTU2004_DEPRECATED, + default_compute_image, + ]) { + if (software_envs[key] == null) return null; + } + const oldname = software_envs[compute_image].title; const name2004 = software_envs[UBUNTU2004_DEPRECATED].title; - const name2204 = software_envs[dflt_compute_image].title; + const name2204 = software_envs[default_compute_image].title; const KEEP_IMAGE = only2204 ? DISMISS_IMG_2004 : DISMISS_IMG_1804; @@ -134,11 +147,11 @@ const SoftwareEnvUpgradeAlert: React.FC = (props: Props) => { } } - function render_conrol_buttons() { + function render_control_buttons() { if (only2204) { return ( - {render_conrol_buttons()} + {render_control_buttons()} set_hide(true)} /> );