Эх сурвалжийг харах

v1.1.8

新增数据持久化开关
skyffire 1 жил өмнө
parent
commit
1a45bfeb27

+ 9 - 0
example/main.js

@@ -11,6 +11,7 @@ let memoryCache = {};
 
 const loginFilePath = path.join(app.getPath('userData'), 'loginSession.json');
 const symbolFilePath = path.join(app.getPath('userData'), 'symbolSession.json');
+const persistentFilePath = path.join(app.getPath('userData'), 'persistentSession.json');
 const dbBasePath = path.join(app.getPath('userData'))
 
 function readData(filePath) {
@@ -124,6 +125,14 @@ app.whenReady().then(() => {
     writeData(symbolFilePath, newData);
   });
 
+  ipcMain.handle('get-is-persistent-data', () => {
+    return readData(persistentFilePath);
+  });
+
+  ipcMain.handle('set-is-persistent-data', (event, newData) => {
+    writeData(persistentFilePath, newData);
+  });
+
   ipcMain.handle('set-db-data', (event, dataList, symbol) => {
     const finalPath = path.join(dbBasePath, `${symbol}.json`)
     writeData(finalPath, dataList)

+ 1 - 1
example/package.json

@@ -1,7 +1,7 @@
 {
   "name": "heatmap",
   "homepage": ".",
-  "version": "1.1.6",
+  "version": "1.1.7",
   "private": true,
   "main": "main.js",
   "scripts": {

+ 17 - 6
example/src/App.js

@@ -4,7 +4,7 @@ import '@rongmz/react-stock-heatmap/example/src/index.css';
 import toast, { Toaster } from 'react-hot-toast';
 import { v4 as uuidv4 } from 'uuid';
 import axios from 'axios';
-import { Select, Button, Input, Space } from 'tdesign-react';
+import { Select, Button, Input, Space, Checkbox } from "tdesign-react";
 import { DeleteIcon } from 'tdesign-icons-react';
 import 'tdesign-react/es/style/index.css';
 
@@ -100,6 +100,7 @@ export default () => {
   const [isActivation, setIsActivation] = React.useState(false);
   const [activationCode, setActivationCode] = React.useState();
   const [loginSymbol,setLoginSymbol]= React.useState();
+  const [isPersistent,setIsPersistent]= React.useState(false);
   const [loading, setLoading] = React.useState(true);
   const progressRef = React.useRef(null);
   /** @type {React.MutableRefObject<StockHeatmap>} */
@@ -247,14 +248,16 @@ export default () => {
       toast.success(response.data.msg)
       setInterval(()=>{
         checkStatus()
-      },5000)
+      }, 5000)
       setIsActivation(true)
       await readLocalDb()
       connectWebSocket()
-      // 每300秒存放一次本地数据
-      // setInterval(() => {
-      //   saveLocalDb()
-      // }, 300 * 1000)
+      if (isPersistent){
+        // 每30秒存放一次本地数据
+        setInterval(() => {
+          saveLocalDb()
+        }, 30 * 1000)
+      }
     }else{
       toast.error(response.data.msg);
     }
@@ -281,6 +284,10 @@ export default () => {
       }
     }
 
+    // 处理持久化选项
+    let persistent = await window.electronAPI.getIsPersistentData() || false;
+    if (persistent) setIsPersistent(persistent)
+
     const updateFn = () => {
       setWindowDim([
         window.innerWidth,
@@ -419,6 +426,10 @@ export default () => {
                   </Option>
                   ))}
               </Select>
+              <Checkbox checked={isPersistent} onChange={async (value)=>{
+                setIsPersistent(value)
+                await window.electronAPI.setIsPersistentData(value)
+              }}>是否持久化数据</Checkbox>
             </div>
             <div className="btnWp">
               <div className="btn" onClick={handleActivation}>登 录</div>

+ 2 - 0
example/src/preload.js

@@ -5,6 +5,8 @@ contextBridge.exposeInMainWorld('electronAPI', {
   setLoginInfoData: (data) => ipcRenderer.invoke('set-login-info-data', data),
   getSymbolData: () => ipcRenderer.invoke('get-symbol-data'),
   setSymbolData: (data) => ipcRenderer.invoke('set-symbol-data', data),
+  getIsPersistentData: () => ipcRenderer.invoke('get-is-persistent-data'),
+  setIsPersistentData: (data) => ipcRenderer.invoke('set-is-persistent-data', data),
   getDbData: (symbol) => ipcRenderer.invoke('get-db-data', symbol),
   setDbData: (data, symbol) => ipcRenderer.invoke('set-db-data', data, symbol),
   flushMemoryDbData: (data, symbol) => ipcRenderer.invoke('flush-memory-db-data', data, symbol),