From d8131fdff29596a374b61c2ca2d36dc6d517fd3d Mon Sep 17 00:00:00 2001 From: Alex Ramsdell Date: Tue, 7 Nov 2023 13:55:37 -0500 Subject: [PATCH] pass loading state to revert file button from parent compnent. fixme: janky loader likely caused by an extra re-render. --- .../instance/functions/manage/index.js | 10 +- src/components/shared/webide/Editor.js | 2 +- src/components/shared/webide/EditorMenu.js | 68 ++++++------- src/components/shared/webide/FileMenu.js | 3 +- src/components/shared/webide/index.js | 96 +++++++++---------- src/functions/api/instance/getComponents.js | 5 +- 6 files changed, 88 insertions(+), 96 deletions(-) diff --git a/src/components/instance/functions/manage/index.js b/src/components/instance/functions/manage/index.js index f36c4b0d8..2d5715f4b 100644 --- a/src/components/instance/functions/manage/index.js +++ b/src/components/instance/functions/manage/index.js @@ -480,26 +480,24 @@ function ManageIndex({ refreshCustomFunctions, loading }) { async function revertFileChanges(selectedFile) { - // ditch local storage version + // unset local storage version removeFileFromLocalStorage({ path: selectedFile.path }); - // get file - // - const { error, message} = await getComponentFile({ + // get canonical file version + const { error, message } = await getComponentFile({ auth, url, project: selectedFile.project, file: getRelativeFilepath(selectedFile.path) }); - removeFileFromLocalStorage({ path: selectedFile.path }); - if (error) { return alert.error(message); } await refreshCustomFunctions(); + // return canonical file content to caller return message; } diff --git a/src/components/shared/webide/Editor.js b/src/components/shared/webide/Editor.js index 8a673a2ab..af0403cae 100644 --- a/src/components/shared/webide/Editor.js +++ b/src/components/shared/webide/Editor.js @@ -39,7 +39,7 @@ function Editor({ active, file, onFileChange, theme }) { return null; } - const filepathRelativeToComponentsDir = file.path.split('/').slice(1).join('/'); + const filepathRelativeToComponentsDir = file?.path.split('/').slice(1).join('/'); // eslint-disable-next-line no-unused-vars return <> diff --git a/src/components/shared/webide/EditorMenu.js b/src/components/shared/webide/EditorMenu.js index b09e3d946..eb5ac3dce 100644 --- a/src/components/shared/webide/EditorMenu.js +++ b/src/components/shared/webide/EditorMenu.js @@ -1,33 +1,34 @@ /* eslint-disable jsx-a11y/click-events-have-key-events */ /* eslint-disable jsx-a11y/no-static-element-interactions */ -import React, { useState } from 'react'; +import React, { useState, useEffect } from 'react'; import cn from 'classnames'; export function SaveButton({ onClick, disabled }) { const [ loading, setLoading ] = useState(false); + return (