File tree Expand file tree Collapse file tree 3 files changed +32
-28
lines changed
apps/stage-tamagotchi/src/preload
packages/stage-shared/src Expand file tree Collapse file tree 3 files changed +32
-28
lines changed Original file line number Diff line number Diff line change 1- import { contextIsolated , platform } from 'node:process '
1+ import { expose } from './shared '
22
3- import { electronAPI } from '@electron-toolkit/preload'
4- import { contextBridge } from 'electron'
5-
6- // Custom APIs for renderer
7- const api = { }
8-
9- // Use `contextBridge` APIs to expose Electron APIs to
10- // renderer only if context isolation is enabled, otherwise
11- // just add to the DOM global.
12- if ( contextIsolated ) {
13- try {
14- contextBridge . exposeInMainWorld ( 'electron' , electronAPI )
15- contextBridge . exposeInMainWorld ( 'platform' , platform )
16- contextBridge . exposeInMainWorld ( 'api' , api )
17- }
18- catch ( error ) {
19- console . error ( error )
20- }
21- }
22- else {
23- window . electron = electronAPI
24- window . platform = platform
25- window . api = api
26- }
3+ expose ( )
Original file line number Diff line number Diff line change 1+ import type { ElectronWindow } from '@proj-airi/stage-shared'
2+
3+ import { contextIsolated , platform } from 'node:process'
4+
5+ import { electronAPI } from '@electron-toolkit/preload'
6+ import { contextBridge } from 'electron'
7+
8+ export function expose < CustomApi = unknown > ( customApi : CustomApi = undefined as CustomApi ) {
9+ // Use `contextBridge` APIs to expose Electron APIs to
10+ // renderer only if context isolation is enabled, otherwise
11+ // just add to the DOM global.
12+ if ( contextIsolated ) {
13+ try {
14+ contextBridge . exposeInMainWorld ( 'electron' , electronAPI )
15+ contextBridge . exposeInMainWorld ( 'platform' , platform )
16+ contextBridge . exposeInMainWorld ( 'api' , customApi )
17+ }
18+ catch ( error ) {
19+ console . error ( error )
20+ }
21+ }
22+ else {
23+ window . electron = electronAPI
24+ window . platform = platform
25+ ; ( window as ElectronWindow < CustomApi > ) . api = customApi
26+ }
27+ }
Original file line number Diff line number Diff line change @@ -2,12 +2,12 @@ import type { ElectronAPI } from '@electron-toolkit/preload'
22
33import { isStageTamagotchi } from './environment'
44
5- export interface ElectronWindow {
5+ export interface ElectronWindow < CustomApi = unknown > {
66 electron : ElectronAPI
77 platform : NodeJS . Platform
8- api : unknown
8+ api : CustomApi
99}
1010
11- export function isElectronWindow ( window : Window ) : window is ( Window & ElectronWindow ) {
11+ export function isElectronWindow < CustomApi = unknown > ( window : Window ) : window is ( Window & ElectronWindow < CustomApi > ) {
1212 return isStageTamagotchi ( ) && typeof window === 'object' && window !== null && 'electron' in window
1313}
You can’t perform that action at this time.
0 commit comments