-
Notifications
You must be signed in to change notification settings - Fork 22
Expand file tree
/
Copy pathapp.ts
More file actions
82 lines (71 loc) · 3.17 KB
/
Copy pathapp.ts
File metadata and controls
82 lines (71 loc) · 3.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { ipcRenderer } from 'electron'
// Captured once at preload bootstrap (before the page loads). `sendSync` here
// is the canonical pattern for static, immutable strings sourced from the main
// process: zero React Query / useEffect boilerplate in every consumer.
const mainLogPath = ipcRenderer.sendSync('get-main-log-path-sync') as string
// Resolved once at preload load time (sync) → a plain string available
// immediately to the renderer, no async/Suspense. Source of truth: app.getName().
const appDisplayName: string = ipcRenderer.sendSync('get-app-display-name')
export const appApi = {
appDisplayName,
getAutoLaunchStatus: () => ipcRenderer.invoke('get-auto-launch-status'),
setAutoLaunch: (enabled: boolean) =>
ipcRenderer.invoke('set-auto-launch', enabled),
showApp: () => ipcRenderer.invoke('show-app'),
hideApp: () => ipcRenderer.invoke('hide-app'),
quitApp: () => ipcRenderer.invoke('quit-app'),
getSkipQuitConfirmation: (): Promise<boolean> =>
ipcRenderer.invoke('get-skip-quit-confirmation'),
setSkipQuitConfirmation: (skip: boolean): Promise<void> =>
ipcRenderer.invoke('set-skip-quit-confirmation', skip),
getNewsletterState: (): Promise<{
subscribed: boolean
dismissedAt: string
}> => ipcRenderer.invoke('get-newsletter-state'),
setNewsletterSubscribed: (subscribed: boolean): Promise<void> =>
ipcRenderer.invoke('set-newsletter-subscribed', subscribed),
setNewsletterDismissedAt: (dismissedAt: string): Promise<boolean> =>
ipcRenderer.invoke('set-newsletter-dismissed-at', dismissedAt),
getExpertConsultationState: (): Promise<{
submitted: boolean
dismissedAt: string
}> => ipcRenderer.invoke('get-expert-consultation-state'),
setExpertConsultationSubmitted: (submitted: boolean): Promise<void> =>
ipcRenderer.invoke('set-expert-consultation-submitted', submitted),
setExpertConsultationDismissedAt: (dismissedAt: string): Promise<void> =>
ipcRenderer.invoke('set-expert-consultation-dismissed-at', dismissedAt),
mainLogPath,
getMainLogContent: () => ipcRenderer.invoke('get-main-log-content'),
isMac: process.platform === 'darwin',
isWindows: process.platform === 'win32',
isLinux: process.platform === 'linux',
platform: process.platform,
}
export interface AppAPI {
appDisplayName: string
getAutoLaunchStatus: () => Promise<boolean>
setAutoLaunch: (enabled: boolean) => Promise<boolean>
showApp: () => Promise<void>
hideApp: () => Promise<void>
quitApp: () => Promise<void>
getSkipQuitConfirmation: () => Promise<boolean>
setSkipQuitConfirmation: (skip: boolean) => Promise<void>
getNewsletterState: () => Promise<{
subscribed: boolean
dismissedAt: string
}>
setNewsletterSubscribed: (subscribed: boolean) => Promise<void>
setNewsletterDismissedAt: (dismissedAt: string) => Promise<boolean>
getExpertConsultationState: () => Promise<{
submitted: boolean
dismissedAt: string
}>
setExpertConsultationSubmitted: (submitted: boolean) => Promise<void>
setExpertConsultationDismissedAt: (dismissedAt: string) => Promise<void>
mainLogPath: string
getMainLogContent: () => Promise<string>
isMac: boolean
isWindows: boolean
isLinux: boolean
platform: NodeJS.Platform
}