浏览代码

feat: store playground result

Signed-off-by: ryjiang <jiangruiyi@gmail.com>
ryjiang 3 周之前
父节点
当前提交
e32acdfec8
共有 4 个文件被更改,包括 13 次插入7 次删除
  1. 1 0
      client/src/consts/Localstorage.ts
  2. 1 1
      client/src/i18n/cn/nav.ts
  3. 1 1
      client/src/i18n/en/nav.ts
  4. 10 5
      client/src/pages/play/Play.tsx

+ 1 - 0
client/src/consts/Localstorage.ts

@@ -16,4 +16,5 @@ export const ATTU_UI_TREE_WIDTH = 'attu.ui.tree.with';
 export const ATTU_AUTH_HISTORY = 'attu.auth.history';
 export const ATTU_THEME_MODE = 'attu.theme.mode';
 export const ATTU_PLAY_CODE = 'attu.play.code';
+export const ATTU_PLAY_RESULT = 'attu.play.result';
 export const ATTU_PLAY_FOLD_STATE = 'attu.play.fold.state';

+ 1 - 1
client/src/i18n/cn/nav.ts

@@ -7,7 +7,7 @@ const navTrans = {
   system: '系统视图',
   user: '用户和角色',
   database: '数据库',
-  play: 'Play',
+  play: 'Play(beta)',
 };
 
 export default navTrans;

+ 1 - 1
client/src/i18n/en/nav.ts

@@ -7,7 +7,7 @@ const navTrans = {
   system: 'System View',
   user: 'User and Role',
   database: 'Database',
-  play: 'Play',
+  play: 'Play(beta)',
 };
 
 export default navTrans;

+ 10 - 5
client/src/pages/play/Play.tsx

@@ -10,7 +10,7 @@ import {
   useState,
 } from 'react';
 
-import { ATTU_PLAY_CODE } from '@/consts';
+import { ATTU_PLAY_CODE, ATTU_PLAY_RESULT } from '@/consts';
 import { authContext, dataContext } from '@/context';
 import { useNavigationHook } from '@/hooks';
 import { ALL_ROUTER_TYPES } from '@/router/consts';
@@ -40,9 +40,11 @@ const Play: FC = () => {
   // hooks
   const theme = useTheme();
   useNavigationHook(ALL_ROUTER_TYPES.PLAY);
-  const [detail, setDetail] = useState<PlaygroundCustomEventDetail>(
-    {} as PlaygroundCustomEventDetail
-  );
+  const [result, setResult] = useState(() => {
+    const savedResult = localStorage.getItem(ATTU_PLAY_RESULT);
+    return savedResult || '{}';
+  });
+
   const { collections, databases, loading } = useContext(dataContext);
   const { isManaged, authReq } = useContext(authContext);
 
@@ -56,6 +58,7 @@ const Play: FC = () => {
   // refs
   const container = useRef<HTMLDivElement>(null);
 
+  const detail = JSON.parse(result) as PlaygroundCustomEventDetail;
   const content = detail.error
     ? JSON.stringify(detail.error, null, 2)
     : JSON.stringify(detail.response, null, 2);
@@ -126,7 +129,9 @@ const Play: FC = () => {
   useEffect(() => {
     const handleCodeMirrorResponse = (event: Event) => {
       const { detail } = event as CustomEvent<PlaygroundCustomEventDetail>;
-      setDetail(detail);
+      const detailString = JSON.stringify(detail);
+      setResult(detailString);
+      localStorage.setItem(ATTU_PLAY_RESULT, detailString);
     };
 
     const unsubscribe = DocumentEventManager.subscribe(