From 4b23d25e0a0bc2dcaf6f637c3198d30cd355de12 Mon Sep 17 00:00:00 2001 From: langren1353 <1353464539@qq.com> Date: Tue, 8 Mar 2022 22:25:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=89=8D=E7=AB=AF=20-=20=E8=B0=83=E8=AF=95=20-?= =?UTF-8?q?=20=E8=BF=90=E8=A1=8C=E8=84=9A=E6=9C=AC=E6=97=B6=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E4=BF=9D=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/script/editModal.tsx | 55 +++++++++++++++++++++++++++------- src/pages/script/index.tsx | 1 + 2 files changed, 46 insertions(+), 10 deletions(-) diff --git a/src/pages/script/editModal.tsx b/src/pages/script/editModal.tsx index 016d0fcc..6033ab43 100644 --- a/src/pages/script/editModal.tsx +++ b/src/pages/script/editModal.tsx @@ -72,18 +72,53 @@ const EditModal = ({ }); }; + class AutoSave { + private id: any; + + constructor() { + this.id = '' + } + start() { + this.id = setInterval(async() => await this.save, 3000) + } + stop() { + clearInterval(this.id) + } + async save() { + const payload = { + content: editorRef.current && editorRef.current.getValue().replace(/\r\n/g, '\n'), + filename: cNode?.value, + originFilename: cNode?.value, + path: cNode?.parent + } + return request.post(`${config.apiPrefix}scripts`, { + data: payload, + }) + } + } + + const autoSave = new AutoSave(); + + if (visible) { + autoSave.start() + } else { + autoSave.stop() + } + const run = () => { setLog(''); - request - .put(`${config.apiPrefix}scripts/run`, { - data: { - filename: cNode.value, - path: cNode.parent || '', - }, - }) - .then((data) => { - setIsRunning(true); - }); + autoSave.save().then(() => { + request + .put(`${config.apiPrefix}scripts/run`, { + data: { + filename: cNode.value, + path: cNode.parent || '', + }, + }) + .then((data) => { + setIsRunning(true); + }); + }) }; const stop = () => { diff --git a/src/pages/script/index.tsx b/src/pages/script/index.tsx index 8e71939e..854172c9 100644 --- a/src/pages/script/index.tsx +++ b/src/pages/script/index.tsx @@ -552,6 +552,7 @@ const Script = ({ headerStyle, isPhone, theme, socketMessage }: any) => { socketMessage={socketMessage} handleCancel={() => { setIsLogModalVisible(false); + getDetail(currentNode); }} />