feat: login (#2)

This commit is contained in:
Cody Tseng
2024-11-04 22:59:09 +08:00
committed by GitHub
parent 199b44d280
commit a7cf6dc5e8
27 changed files with 382 additions and 86 deletions

View File

@@ -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>
}
}
}
}

View File

@@ -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)
}
}