feat: setup tipc
This commit is contained in:
parent
a60ce0d23c
commit
591b6424f1
|
|
@ -25,6 +25,7 @@
|
|||
"prepare": "husky"
|
||||
},
|
||||
"dependencies": {
|
||||
"@egoist/tipc": "0.3.1",
|
||||
"@electron-toolkit/preload": "^3.0.0",
|
||||
"@electron-toolkit/utils": "^3.0.0",
|
||||
"@fontsource/sn-pro": "5.0.1",
|
||||
|
|
|
|||
|
|
@ -8,6 +8,9 @@ importers:
|
|||
|
||||
.:
|
||||
dependencies:
|
||||
'@egoist/tipc':
|
||||
specifier: 0.3.1
|
||||
version: 0.3.1(electron@30.0.3)(react@18.3.1)
|
||||
'@electron-toolkit/preload':
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.1(electron@30.0.3)
|
||||
|
|
@ -375,6 +378,11 @@ packages:
|
|||
peerDependencies:
|
||||
tailwindcss: '*'
|
||||
|
||||
'@egoist/tipc@0.3.1':
|
||||
resolution: {integrity: sha512-jnolALBsPffkUUoBMYNX3/ONX019D94KR/cQwPDF7Ns7eHwbHhormAFr445BjFbtxEifAlt/KWwehrE+0HS5Zg==}
|
||||
peerDependencies:
|
||||
electron: '>=26.0.0'
|
||||
|
||||
'@electron-toolkit/eslint-config-prettier@2.0.0':
|
||||
resolution: {integrity: sha512-L+uG1FvJcAZkPZpSi6B1pmdpyJFyOxWDTjr1Vs47vSryxv/EX1Ch6o4HVsachlDq3fMEkDgojuP2F3ZvVZMoLw==}
|
||||
peerDependencies:
|
||||
|
|
@ -4575,6 +4583,14 @@ snapshots:
|
|||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@egoist/tipc@0.3.1(electron@30.0.3)(react@18.3.1)':
|
||||
dependencies:
|
||||
electron: 30.0.3
|
||||
optionalDependencies:
|
||||
'@tanstack/react-query': 5.36.0(react@18.3.1)
|
||||
transitivePeerDependencies:
|
||||
- react
|
||||
|
||||
'@electron-toolkit/eslint-config-prettier@2.0.0(eslint@9.2.0)(prettier@3.2.5)':
|
||||
dependencies:
|
||||
eslint: 9.2.0
|
||||
|
|
|
|||
|
|
@ -3,6 +3,10 @@ import { app, BrowserWindow, ipcMain, ShareMenu } from "electron"
|
|||
import path from "path"
|
||||
import { electronApp, optimizer } from "@electron-toolkit/utils"
|
||||
import { createWindow } from "./window"
|
||||
import { registerIpcMain } from "@egoist/tipc/main"
|
||||
import { router } from "./tipc"
|
||||
|
||||
registerIpcMain(router)
|
||||
|
||||
if (process.defaultApp) {
|
||||
if (process.argv.length >= 2) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,46 @@
|
|||
import { tipc } from "@egoist/tipc/main"
|
||||
import { Menu } from "electron"
|
||||
|
||||
const t = tipc.create()
|
||||
|
||||
export const router = {
|
||||
sum: t.procedure
|
||||
.input<{ a: number; b: number }>()
|
||||
.action(async ({ input }) => {
|
||||
return input.a + input.b
|
||||
}),
|
||||
inspectElement: t.procedure
|
||||
.input<{ x: number; y: number }>()
|
||||
.action(async ({ input, context }) => {
|
||||
context.sender.inspectElement(input.x, input.y)
|
||||
}),
|
||||
showContextMenu: t.procedure
|
||||
.input<{
|
||||
items: Array<{ type: "text"; label: string } | { type: "separator" }>
|
||||
}>()
|
||||
.action(async ({ input, context }) => {
|
||||
const menu = Menu.buildFromTemplate(
|
||||
input.items.map((item, index) => {
|
||||
if (item.type === "separator") {
|
||||
return {
|
||||
type: "separator" as const,
|
||||
}
|
||||
}
|
||||
return {
|
||||
label: item.label,
|
||||
click() {
|
||||
context.sender.send("menu-click", index)
|
||||
},
|
||||
}
|
||||
}),
|
||||
)
|
||||
|
||||
menu.popup({
|
||||
callback: () => {
|
||||
context.sender.send("menu-closed")
|
||||
},
|
||||
})
|
||||
}),
|
||||
}
|
||||
|
||||
export type Router = typeof router
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
import { createClient } from "@egoist/tipc/renderer"
|
||||
import type { Router } from "@main/tipc"
|
||||
|
||||
export const client = createClient<Router>({
|
||||
ipcInvoke: window.electron.ipcRenderer.invoke,
|
||||
})
|
||||
|
|
@ -4,7 +4,8 @@
|
|||
"src/renderer/src/env.d.ts",
|
||||
"src/renderer/src/**/*",
|
||||
"src/renderer/src/**/*.tsx",
|
||||
"src/preload/*.d.ts"
|
||||
"src/preload/*.d.ts",
|
||||
"src/main/*.ts",
|
||||
],
|
||||
"compilerOptions": {
|
||||
"composite": true,
|
||||
|
|
@ -13,7 +14,10 @@
|
|||
"paths": {
|
||||
"@renderer/*": [
|
||||
"src/renderer/src/*"
|
||||
]
|
||||
],
|
||||
"@main/*": [
|
||||
"src/main/*"
|
||||
],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue