feat: login (#2)
This commit is contained in:
15
src/preload/index.d.ts
vendored
15
src/preload/index.d.ts
vendored
@@ -1,10 +1,14 @@
|
||||
import { TRelayGroup, TTheme, TThemeSetting } from '@common/types'
|
||||
import { TDraftEvent, TRelayGroup, TTheme, TThemeSetting } from '@common/types'
|
||||
import { ElectronAPI } from '@electron-toolkit/preload'
|
||||
import { Event } from 'nostr-tools'
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
electron: ElectronAPI
|
||||
api: {
|
||||
system: {
|
||||
isEncryptionAvailable: () => Promise<boolean>
|
||||
}
|
||||
theme: {
|
||||
onChange: (cb: (theme: TTheme) => void) => void
|
||||
current: () => Promise<TTheme>
|
||||
@@ -15,6 +19,15 @@ declare global {
|
||||
getRelayGroups: () => Promise<TRelayGroup[]>
|
||||
setRelayGroups: (relayGroups: TRelayGroup[]) => Promise<void>
|
||||
}
|
||||
nostr: {
|
||||
login: (nsec: string) => Promise<{
|
||||
pubkey?: string
|
||||
reason?: string
|
||||
}>
|
||||
logout: () => Promise<void>
|
||||
getPublicKey: () => Promise<string | null>
|
||||
signEvent: (draftEvent: TDraftEvent) => Promise<Event | null>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import { TRelayGroup, TThemeSetting } from '@common/types'
|
||||
import { TDraftEvent, TRelayGroup, TThemeSetting } from '@common/types'
|
||||
import { electronAPI } from '@electron-toolkit/preload'
|
||||
import { contextBridge, ipcRenderer } from 'electron'
|
||||
|
||||
// Custom APIs for renderer
|
||||
const api = {
|
||||
system: {
|
||||
isEncryptionAvailable: () => ipcRenderer.invoke('system:isEncryptionAvailable')
|
||||
},
|
||||
theme: {
|
||||
onChange: (cb: (theme: 'dark' | 'light') => void) => {
|
||||
ipcRenderer.on('theme:change', (_, theme) => {
|
||||
@@ -18,6 +21,12 @@ const api = {
|
||||
getRelayGroups: () => ipcRenderer.invoke('storage:getRelayGroups'),
|
||||
setRelayGroups: (relayGroups: TRelayGroup[]) =>
|
||||
ipcRenderer.invoke('storage:setRelayGroups', relayGroups)
|
||||
},
|
||||
nostr: {
|
||||
login: (nsec: string) => ipcRenderer.invoke('nostr:login', nsec),
|
||||
logout: () => ipcRenderer.invoke('nostr:logout'),
|
||||
getPublicKey: () => ipcRenderer.invoke('nostr:getPublicKey'),
|
||||
signEvent: (draftEvent: TDraftEvent) => ipcRenderer.invoke('nostr:signEvent', draftEvent)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user