From e964eec09999988d24100eff4f3b32cdae3a17d9 Mon Sep 17 00:00:00 2001 From: undefined Date: Sun, 16 Oct 2022 21:51:48 +0800 Subject: [PATCH] ui: scratchpad: handle duplicate click event --- .../components/scratchpad/ScratchpadEditorContainer.tsx | 4 ++-- packages/ui-default/package.json | 2 +- packages/ui-default/pages/problem_detail.page.jsx | 8 ++++++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/ui-default/components/scratchpad/ScratchpadEditorContainer.tsx b/packages/ui-default/components/scratchpad/ScratchpadEditorContainer.tsx index 1ccbecd59..0b6bf7382 100644 --- a/packages/ui-default/components/scratchpad/ScratchpadEditorContainer.tsx +++ b/packages/ui-default/components/scratchpad/ScratchpadEditorContainer.tsx @@ -26,7 +26,7 @@ export default connect((state: any) => ({ }); }, }))(class MonacoEditor extends React.PureComponent { - disposable = []; + disposable: monaco.IDisposable[] = []; __prevent_trigger_change_event = false; model: monaco.editor.ITextModel; editor: monaco.editor.IStandaloneCodeEditor; @@ -78,7 +78,7 @@ export default connect((state: any) => ({ [ { range: model.getFullModelRange(), - text: value, + text: value!, }, ], () => null, diff --git a/packages/ui-default/package.json b/packages/ui-default/package.json index fa65b8391..9301fa422 100644 --- a/packages/ui-default/package.json +++ b/packages/ui-default/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/ui-default", - "version": "4.41.15", + "version": "4.41.16", "author": "undefined ", "license": "AGPL-3.0", "main": "index.ts", diff --git a/packages/ui-default/pages/problem_detail.page.jsx b/packages/ui-default/pages/problem_detail.page.jsx index 7a62b0055..544481c71 100644 --- a/packages/ui-default/pages/problem_detail.page.jsx +++ b/packages/ui-default/pages/problem_detail.page.jsx @@ -163,18 +163,26 @@ const page = new NamedPage(['problem_detail', 'contest_detail_problem', 'homewor $('.loader-container').hide(); } + let progress = false; + async function enterScratchpadMode() { + if (progress) return; + progress = true; await extender.extend(); await loadReact(); renderReact(); await scratchpadFadeIn(); + progress = false; } async function leaveScratchpadMode() { + if (progress) return; + progress = true; await scratchpadFadeOut(); $('.problem-content-container').append($('.problem-content')); await extender.collapse(); unmountReact(); + progress = false; } async function loadObjective() {