feat:开始跳转笔记,跳转首页
This commit is contained in:
parent
9febf49d37
commit
9fda560ba3
26
main.js
26
main.js
|
@ -1,13 +1,7 @@
|
|||
// npm start
|
||||
const { app,Menu, BrowserWindow , ipcMain } = require('electron')
|
||||
const { app,Menu, BrowserWindow } = require('electron')
|
||||
const path = require('path')
|
||||
const fs = require('fs')
|
||||
const https = require('https')
|
||||
const {menuRebuild} = require('./src/comment/TopMenu.js')
|
||||
const { fileHelper } = require('./src/utils/File/fileHelper');
|
||||
|
||||
const iconName = path.join(__dirname, 'iconForDragAndDrop.png')
|
||||
|
||||
const createWindow = () => {
|
||||
// Create the browser window.
|
||||
const win = new BrowserWindow({
|
||||
|
@ -15,8 +9,8 @@ const createWindow = () => {
|
|||
height: 600,
|
||||
webPreferences: {
|
||||
nodeIntegration:true,
|
||||
// 启用后nodeIntegration会无效
|
||||
contextIsolation:false,
|
||||
|
||||
preload: path.join(__dirname, 'preload.js')
|
||||
}
|
||||
})
|
||||
|
@ -25,28 +19,12 @@ const createWindow = () => {
|
|||
win.loadURL('http://localhost:3000')
|
||||
// 打开开发工具
|
||||
win.webContents.openDevTools()
|
||||
console.log('fileHelper',fileHelper)
|
||||
Menu.setApplicationMenu(Menu.buildFromTemplate(menuRebuild(win)))
|
||||
}
|
||||
|
||||
const ipcMainOn = () => {
|
||||
// ipcMain.handle('ping', () => 'pong')
|
||||
ipcMain.on('open-dir-result', (_event, value) => {
|
||||
console.log(value)
|
||||
})
|
||||
ipcMain.on('ondragstart', (event, filePath) => {
|
||||
console.log(filePath)
|
||||
event.sender.startDrag({
|
||||
file: path.join(__dirname, filePath),
|
||||
icon: iconName
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 这段程序将会在 Electron 结束初始化和创建浏览器窗口的时候调用
|
||||
// 部分 API 在 ready 事件触发后才能使用。
|
||||
app.whenReady().then(() => {
|
||||
ipcMainOn()
|
||||
createWindow()
|
||||
// 在 macOS 系统内, 如果没有已开启的应用窗口
|
||||
// 点击托盘图标时通常会重新创建一个新窗口
|
||||
|
|
12
preload.js
12
preload.js
|
@ -1,10 +1,8 @@
|
|||
// 预加载脚本 在上下文隔离渲染器进程中导入 Node.js 和 Electron 模块的概念
|
||||
// 所有的 Node.js API接口 都可以在 preload 进程中被调用.
|
||||
// 它拥有与Chrome扩展一样的沙盒。
|
||||
const { contextBridge, ipcRenderer } = require('electron/renderer')
|
||||
contextBridge.exposeInMainWorld('electronAPI', {
|
||||
startDrag : (fileName) => ipcRenderer.send('ondragstart', fileName),
|
||||
openDirectory : (callback) =>
|
||||
ipcRenderer.on('openDirectory', (_event, value) => callback(value)),
|
||||
openDirectoryResult:(value) => ipcRenderer.send('open-dir-result', value)
|
||||
})
|
||||
const { ipcRenderer } = require('electron/renderer')
|
||||
ipcRenderer.on('redirectUrl',(event,args) => {
|
||||
console.log('event',event)
|
||||
console.log('args',args)
|
||||
})
|
||||
|
|
13
src/App.js
13
src/App.js
|
@ -1,9 +1,20 @@
|
|||
import React from 'react';
|
||||
import routes from './routes'
|
||||
import {Outlet, useRoutes} from 'react-router-dom'
|
||||
import {Outlet, useNavigate, useRoutes} from 'react-router-dom'
|
||||
import useIpcRenderer from '../src/utils/useIpcRenderer'
|
||||
function App() {
|
||||
|
||||
let navigateFunction = useNavigate();
|
||||
function nativeTo(path){
|
||||
navigateFunction(path)
|
||||
}
|
||||
const redirectUrl =(event,args)=> {
|
||||
nativeTo(args)
|
||||
}
|
||||
|
||||
console.log("routes",routes)
|
||||
const element = useRoutes(routes)
|
||||
useIpcRenderer({'redirectUrl':redirectUrl})
|
||||
return (
|
||||
<>
|
||||
{/* 注册路由 */}
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
// https://nodejs.org/docs/latest-v16.x/api/fs.html
|
||||
import { readdir } from 'node:fs/promises';
|
||||
try {
|
||||
const files = await readdir("/home/shixiaohua");
|
||||
for (const file of files)
|
||||
console.log(file);
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
|
@ -54,6 +54,11 @@ exports.menuRebuild=(mainWindow)=> {
|
|||
})
|
||||
}
|
||||
},
|
||||
{label:'全部应用',
|
||||
click: () => {
|
||||
mainWindow.webContents.send('redirectUrl', '/GateWay')
|
||||
}
|
||||
},
|
||||
isMac ? { role: 'close' } : { role: 'quit' },
|
||||
]
|
||||
},
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
// html中使用的js代码 之后用react替换
|
||||
document.getElementById('drag1').ondragstart = (event) => {
|
||||
event.preventDefault()
|
||||
window.electronAPI.startDrag('drag-and-drop-1.md')
|
||||
}
|
||||
|
||||
document.getElementById('drag2').ondragstart = (event) => {
|
||||
event.preventDefault()
|
||||
window.electronAPI.startDrag('drag-and-drop-2.md')
|
||||
}
|
||||
|
||||
|
||||
const openDir=document.getElementById('openDir');
|
||||
window.electronAPI.openDirectory ((value) => {
|
||||
openDir.innerText = JSON.stringify(value)
|
||||
window.electronAPI.openDirectoryResult('ok')
|
||||
})
|
|
@ -1,43 +1,30 @@
|
|||
import React, { useState } from 'react';
|
||||
import { Col, Row, Slider } from 'antd';
|
||||
import { NavLink } from 'react-router-dom'
|
||||
import React, {useState} from 'react';
|
||||
import {Col, Row, Slider} from 'antd';
|
||||
import {NavLink} from 'react-router-dom'
|
||||
import './index.less'
|
||||
// const gutters = {};
|
||||
// const vgutters = {};
|
||||
// const colCounts = {};
|
||||
// [8, 16, 24, 32, 40, 48].forEach((value, i) => {
|
||||
// gutters[i] = value;
|
||||
// });
|
||||
// [8, 16, 24, 32, 40, 48].forEach((value, i) => {
|
||||
// vgutters[i] = value;
|
||||
// });
|
||||
// [2, 3, 4, 6, 8, 12].forEach((value, i) => {
|
||||
// colCounts[i] = value;
|
||||
// });
|
||||
const GateWay = () => {
|
||||
|
||||
const cols = [];
|
||||
const colCount = 3;
|
||||
let colCode = '';
|
||||
|
||||
const cols = [];
|
||||
const colCount = 3;
|
||||
cols.push(
|
||||
<Col key={'bj'} span={24 / colCount}>
|
||||
<div><NavLink to='/note'>笔记</NavLink></div>
|
||||
</Col>,
|
||||
<Col key={'bj'} span={24 / colCount}>
|
||||
<div><NavLink to='/note'>笔记</NavLink></div>
|
||||
</Col>,
|
||||
);
|
||||
cols.push(
|
||||
<Col key={'todo'} span={24 / colCount}>
|
||||
<div>TODO</div>
|
||||
</Col>,
|
||||
<Col key={'todo'} span={24 / colCount}>
|
||||
<div>TODO</div>
|
||||
</Col>,
|
||||
);
|
||||
cols.push(
|
||||
<Col key={'dlt'} span={24 / colCount}>
|
||||
<div><NavLink to='/show/sync'>大乐透</NavLink></div>
|
||||
</Col>,
|
||||
<Col key={'dlt'} span={24 / colCount}>
|
||||
<div><NavLink to='/show/sync'>大乐透</NavLink></div>
|
||||
</Col>,
|
||||
);
|
||||
return (
|
||||
<Row id='components-grid-demo-playground' gutter={[8, 8]}>
|
||||
{cols}
|
||||
</Row>
|
||||
);
|
||||
return (
|
||||
<Row id='components-grid-demo-playground' gutter={[8, 8]}>
|
||||
{cols}
|
||||
</Row>
|
||||
);
|
||||
};
|
||||
export default GateWay;
|
|
@ -0,0 +1,23 @@
|
|||
import { createSlice } from '@reduxjs/toolkit'
|
||||
|
||||
export const redirectUrlSlice = createSlice({
|
||||
name: 'redirectUrl',
|
||||
initialState: {
|
||||
data: []
|
||||
},
|
||||
reducers: {
|
||||
redirectUrlSync: (state, action) => {
|
||||
console.log("redirectUrl:redirectUrlSync", state, action)
|
||||
console.log(state)
|
||||
console.log(action)
|
||||
if(action.payload.length>0){
|
||||
// 路径跳转
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
})
|
||||
export const { redirectUrlSync } = redirectUrlSlice.actions
|
||||
|
||||
export default redirectUrlSlice.reducer
|
|
@ -1,9 +1,11 @@
|
|||
import { configureStore } from '@reduxjs/toolkit'
|
||||
import historyReducer from './historyRecord_reducer'
|
||||
import redirectReducer from './redirectUrl_reducer'
|
||||
// 用于支持异步函数
|
||||
// import thunk from 'redux-thunk'
|
||||
export default configureStore({
|
||||
reducer: {
|
||||
historyRecord:historyReducer
|
||||
historyRecord:historyReducer,
|
||||
redirectUrl:redirectReducer
|
||||
}
|
||||
})
|
||||
})
|
|
@ -33,32 +33,20 @@ export default [
|
|||
{
|
||||
path:'Hlexical',
|
||||
element:<Hlexical/>
|
||||
},
|
||||
{
|
||||
path:'sync',
|
||||
element:<SyncContext/>,
|
||||
},
|
||||
{
|
||||
path:'probability',
|
||||
element:<EchartsPage/>
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
path:'/login',
|
||||
element:<Login/>,
|
||||
},
|
||||
// {
|
||||
// path:'/',
|
||||
// element:<Navigate to="/show/sync"/>
|
||||
// }
|
||||
{
|
||||
path:'/GateWay',
|
||||
element:<GateWay/>,
|
||||
},
|
||||
{
|
||||
path:'/',
|
||||
element:<Navigate to="/gateway"/>
|
||||
element:<Navigate to="/note"/>
|
||||
},
|
||||
|
||||
]
|
|
@ -0,0 +1,18 @@
|
|||
import { useEffect } from 'react'
|
||||
const { ipcRenderer } = window.require('electron')
|
||||
|
||||
|
||||
const useIpcRenderer = (keyCallbackMap) => {
|
||||
useEffect(() => {
|
||||
Object.keys(keyCallbackMap).forEach(key => {
|
||||
ipcRenderer.on(key, keyCallbackMap[key])
|
||||
})
|
||||
return () => {
|
||||
Object.keys(keyCallbackMap).forEach(key => {
|
||||
ipcRenderer.removeListener(key, keyCallbackMap[key])
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
export default useIpcRenderer
|
Loading…
Reference in New Issue