diff --git a/src/App.js b/src/App.js
index 1894346..ca9c79f 100644
--- a/src/App.js
+++ b/src/App.js
@@ -3,6 +3,7 @@ import routes from './routes'
import {Outlet, useNavigate, useRoutes} from 'react-router-dom'
import useIpcRenderer from '../src/utils/useIpcRenderer'
import {dirAdd} from "./redux/dirMessage_reducer";
+import {openFile} from "./redux/clickFile_reducer"
import {store} from "./redux/store";
function App() {
diff --git a/src/comment/TopMenu.js b/src/comment/TopMenu.js
index 152c729..4d1c74b 100644
--- a/src/comment/TopMenu.js
+++ b/src/comment/TopMenu.js
@@ -47,11 +47,16 @@ exports.menuRebuild = (mainWindow) => {
})
for (let i = 0; i < files.length; i++) {
const state = await stat(result.filePaths[0] + '/' + files[i]);
- fileChildList.push({
- 'fileName': files[i],
- "filePath": result.filePaths[0]+ '/' +files[i],
- 'dirFlag': state.isDirectory()
- })
+ if (state.isDirectory()
+ ||files[i].endsWith(".md")
+ ||files[i].endsWith(".html")
+ ||files[i].endsWith(".lexical")){
+ fileChildList.push({
+ 'fileName': files[i],
+ "filePath": result.filePaths[0]+ '/' +files[i],
+ 'dirFlag': state.isDirectory()
+ })
+ }
}
mainWindow.webContents.send('openDirectory', fileStateList)
} catch (err) {
diff --git a/src/components/ItemTree/index.jsx b/src/components/ItemTree/index.jsx
index 82c2c12..30532dd 100644
--- a/src/components/ItemTree/index.jsx
+++ b/src/components/ItemTree/index.jsx
@@ -3,33 +3,9 @@ import { Input, Tree } from 'antd';
import {FolderOutlined,FileMarkdownOutlined} from '@ant-design/icons';
const { Search } = Input;
import store from "../../redux/store";
-const defaultData = [
- // {
- // "title": "/media/shixiaohua/homedisk",
- // "key": "0-0",
- // "icon": ,
- // "children": [
- // {
- // "title": "electron",
- // "key": "0-0-0",
- // "icon": ,
- // "children": [
- // {
- // "title": "leaf",
- // "key": "0-0-0-0",
- // "icon":
- // }
- // ]
- // }
- // ]
- // },
- // {
- // "title": "media",
- // "key": "0-1",
- // "icon": ,
- // "children": []
- // }
-];
+import {clickFile} from "../../redux/clickFile_reducer";
+
+const defaultData = [];
// 将树平铺用于查找
const dataList = [];
const generateList = (data) => {
@@ -65,17 +41,22 @@ const getParentKey = (key, tree) => {
function generateChildList(fileList){
const result = []
for (let i = 0; i < fileList.length; i++) {
- const {fileName,filePath}=fileList[i];
+ const {fileName,filePath,dirFlag}=fileList[i];
result.push({
"key":filePath,
"title":fileName,
"icon":,
+ "dirFlag":dirFlag,
"children":[]
});
}
return result;
}
const ItemTree = () => {
+ const [expandedKeys, setExpandedKeys] = useState([]);
+ const [searchValue, setSearchValue] = useState('');
+ const [defaultValueState, setDefaultValueState] = useState([]);
+ const [autoExpandParent, setAutoExpandParent] = useState(true);
useEffect(()=>{
store.subscribe(() =>{
@@ -84,7 +65,7 @@ const ItemTree = () => {
for (let i = 0; i < fileDirDate.length; i++) {
const node = fileDirDate[i];
console.log("node:",node)
- const { fileName,filePath,childList } = node;
+ const { fileName,filePath,childList,dirFlag } = node;
const childListM=[]
if (childList.length>0) {
childListM.push(...generateChildList(childList));
@@ -96,6 +77,7 @@ const ItemTree = () => {
"key":filePath,
"title":fileName,
"icon":,
+ "dirFlag":dirFlag,
"children":childListM
});
}
@@ -105,10 +87,6 @@ const ItemTree = () => {
})
},[])
- const [expandedKeys, setExpandedKeys] = useState([]);
- const [searchValue, setSearchValue] = useState('');
- const [defaultValueState, setDefaultValueState] = useState([]);
- const [autoExpandParent, setAutoExpandParent] = useState(true);
const onExpand = (newExpandedKeys) => {
setExpandedKeys(newExpandedKeys);
setAutoExpandParent(false);
@@ -127,6 +105,12 @@ const ItemTree = () => {
setSearchValue(value);
setAutoExpandParent(true);
};
+ const onSelect = (selectedKeys,e) =>{
+ if (e.selected){
+ console.log('onSelect.selectedKeys',selectedKeys,e)
+ store.dispatch(clickFile({"fileName":e.node.title,"filePath":e.node.key}))
+ }
+ }
// const treeData = useMemo(() => {
// const loop = (data) =>
// data.map((item) => {
@@ -174,6 +158,7 @@ const ItemTree = () => {
showIcon ={true}
// treeNodes 数据,如果设置则不需要手动构造 TreeNode 节点(key 在整个树范围内唯一)
treeData={defaultValueState}
+ onSelect={onSelect}
/>
);
diff --git a/src/pages/Note/index.jsx b/src/pages/Note/index.jsx
index 0248d80..57b03ab 100644
--- a/src/pages/Note/index.jsx
+++ b/src/pages/Note/index.jsx
@@ -1,4 +1,4 @@
-import React, {useRef, useState } from 'react';
+import React, {useEffect, useRef, useState} from 'react';
import {
MenuFoldOutlined,
MenuUnfoldOutlined,
@@ -6,43 +6,35 @@ import {
UserOutlined,
VideoCameraOutlined,
} from '@ant-design/icons';
-import { Layout, Menu, Button, theme, Avatar,Tabs } from 'antd';
+import {Layout, Menu, Button, theme, Avatar, Tabs} from 'antd';
import Hlexical from './Hlexical';
import ItemTree from "../../components/ItemTree";
import './index.less'
-const { Header, Sider, Content } = Layout;
-
-
-const initialItems = [
- {
- label: 'Tab 1',
- children:
,
- key: '1',
- },
- {
- label: 'Tab 2',
- children: 'Content of Tab 2',
- key: '2',
- },
- {
- label: 'Tab 3',
- children: 'Content of Tab 3',
- key: '3',
- closable: false,
- },
-];
-
+import store from "../../redux/store";
+const {Header, Sider, Content} = Layout;
const Note = () => {
const [collapsed, setCollapsed] = useState(false);
// const {
// token: { colorBgContainer },
// } = theme.useToken();
const colorBgContainer = '#800080'
-
-
- const [activeKey, setActiveKey] = useState(initialItems[0].key);
- const [items, setItems] = useState(initialItems);
+ const [activeKey, setActiveKey] = useState();
+ const [items, setItems] = useState([]);
const newTabIndex = useRef(0);
+ store.subscribe(() => {
+ const openFile = store.getState().clickFileMessage.data;
+ console.log("store.getState().clickFileMessage.data:",openFile,items)
+ if (items.filter(fileItem => fileItem.key === openFile.filePath).length === 0) {
+ setItems([...items,
+ {
+ label: openFile.fileName,
+ children:
,
+ key: openFile.filePath,
+ }
+ ])
+ }
+ }
+ )
const onChange = (newActiveKey) => {
setActiveKey(newActiveKey);
};
@@ -88,13 +80,13 @@ const Note = () => {
-
+
diff --git a/src/redux/clickFile_reducer.js b/src/redux/clickFile_reducer.js
new file mode 100644
index 0000000..bad75e3
--- /dev/null
+++ b/src/redux/clickFile_reducer.js
@@ -0,0 +1,16 @@
+import { createSlice } from '@reduxjs/toolkit'
+
+export const clickFileSlice = createSlice({
+ name: 'clickFile',
+ initialState: {
+ data: {}
+ },
+ reducers: {
+ clickFile: (state, action) => {
+ console.log("clickFileSlice:clickFile", state, action)
+ state.data=action.payload
+ }
+ }
+})
+export const { clickFile } = clickFileSlice.actions
+export default clickFileSlice.reducer
diff --git a/src/redux/dirMessage_reducer.js b/src/redux/dirMessage_reducer.js
index 15e6f14..a5842ab 100644
--- a/src/redux/dirMessage_reducer.js
+++ b/src/redux/dirMessage_reducer.js
@@ -21,9 +21,7 @@ export const dirMessageSlice = createSlice({
state.data=[...new Set([...state.data,...action.payload])];
console.log('state.data:',state.data)
}
-
}
-
}
}
})
diff --git a/src/redux/store.js b/src/redux/store.js
index 86683ce..04a04e9 100644
--- a/src/redux/store.js
+++ b/src/redux/store.js
@@ -2,12 +2,14 @@ import { configureStore } from '@reduxjs/toolkit'
import historyReducer from './historyRecord_reducer'
import redirectReducer from './redirectUrl_reducer'
import dirMessageReducer from './dirMessage_reducer'
+import clickFileReducer from './clickFile_reducer'
// 用于支持异步函数
export const store = configureStore({
reducer: {
historyRecord:historyReducer,
redirectUrl:redirectReducer,
- dirMessage:dirMessageReducer
+ dirMessage:dirMessageReducer,
+ clickFileMessage:clickFileReducer
}
})
export default store
\ No newline at end of file