feat: basic browsing (#1)
This commit is contained in:
14
src/preload/index.d.ts
vendored
14
src/preload/index.d.ts
vendored
@@ -1,8 +1,20 @@
|
||||
import { TRelayGroup, TTheme, TThemeSetting } from '@common/types'
|
||||
import { ElectronAPI } from '@electron-toolkit/preload'
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
electron: ElectronAPI
|
||||
api: unknown
|
||||
api: {
|
||||
theme: {
|
||||
onChange: (cb: (theme: TTheme) => void) => void
|
||||
current: () => Promise<TTheme>
|
||||
themeSetting: () => Promise<TThemeSetting>
|
||||
set: (themeSetting: TThemeSetting) => Promise<void>
|
||||
}
|
||||
storage: {
|
||||
getRelayGroups: () => Promise<TRelayGroup[]>
|
||||
setRelayGroups: (relayGroups: TRelayGroup[]) => Promise<void>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,25 @@
|
||||
import { contextBridge } from 'electron'
|
||||
import { TRelayGroup, TThemeSetting } from '@common/types'
|
||||
import { electronAPI } from '@electron-toolkit/preload'
|
||||
import { contextBridge, ipcRenderer } from 'electron'
|
||||
|
||||
// Custom APIs for renderer
|
||||
const api = {}
|
||||
const api = {
|
||||
theme: {
|
||||
onChange: (cb: (theme: 'dark' | 'light') => void) => {
|
||||
ipcRenderer.on('theme:change', (_, theme) => {
|
||||
cb(theme)
|
||||
})
|
||||
},
|
||||
current: () => ipcRenderer.invoke('theme:current'),
|
||||
themeSetting: () => ipcRenderer.invoke('theme:themeSetting'),
|
||||
set: (themeSetting: TThemeSetting) => ipcRenderer.invoke('theme:set', themeSetting)
|
||||
},
|
||||
storage: {
|
||||
getRelayGroups: () => ipcRenderer.invoke('storage:getRelayGroups'),
|
||||
setRelayGroups: (relayGroups: TRelayGroup[]) =>
|
||||
ipcRenderer.invoke('storage:setRelayGroups', relayGroups)
|
||||
}
|
||||
}
|
||||
|
||||
// Use `contextBridge` APIs to expose Electron APIs to
|
||||
// renderer only if context isolation is enabled, otherwise
|
||||
|
||||
Reference in New Issue
Block a user