71 lines
3.5 KiB
JavaScript
71 lines
3.5 KiB
JavaScript
const { contextBridge, ipcRenderer } = require('electron');
|
|
|
|
contextBridge.exposeInMainWorld('electronAPI', {
|
|
// Window controls
|
|
minimizeWindow: () => ipcRenderer.send('window-minimize'),
|
|
maximizeWindow: () => ipcRenderer.send('window-maximize'),
|
|
closeWindow: () => ipcRenderer.send('window-close'),
|
|
|
|
// Open URL in system default browser
|
|
openExternal: (url) => ipcRenderer.invoke('open-external', url),
|
|
|
|
// Desktop capturer for screen sharing
|
|
getSources: () => ipcRenderer.invoke('get-sources'),
|
|
|
|
// App data path for SQLite storage
|
|
getAppDataPath: () => ipcRenderer.invoke('get-app-data-path'),
|
|
|
|
// File system operations for database persistence
|
|
readFile: (filePath) => ipcRenderer.invoke('read-file', filePath),
|
|
writeFile: (filePath, data) => ipcRenderer.invoke('write-file', filePath, data),
|
|
fileExists: (filePath) => ipcRenderer.invoke('file-exists', filePath),
|
|
ensureDir: (dirPath) => ipcRenderer.invoke('ensure-dir', dirPath),
|
|
|
|
db: {
|
|
initialize: () => ipcRenderer.invoke('db:initialize'),
|
|
|
|
// Messages
|
|
saveMessage: (message) => ipcRenderer.invoke('db:saveMessage', message),
|
|
getMessages: (roomId, limit, offset) => ipcRenderer.invoke('db:getMessages', roomId, limit, offset),
|
|
deleteMessage: (messageId) => ipcRenderer.invoke('db:deleteMessage', messageId),
|
|
updateMessage: (messageId, updates) => ipcRenderer.invoke('db:updateMessage', messageId, updates),
|
|
getMessageById: (messageId) => ipcRenderer.invoke('db:getMessageById', messageId),
|
|
clearRoomMessages: (roomId) => ipcRenderer.invoke('db:clearRoomMessages', roomId),
|
|
|
|
// Reactions
|
|
saveReaction: (reaction) => ipcRenderer.invoke('db:saveReaction', reaction),
|
|
removeReaction: (messageId, userId, emoji) => ipcRenderer.invoke('db:removeReaction', messageId, userId, emoji),
|
|
getReactionsForMessage: (messageId) => ipcRenderer.invoke('db:getReactionsForMessage', messageId),
|
|
|
|
// Users
|
|
saveUser: (user) => ipcRenderer.invoke('db:saveUser', user),
|
|
getUser: (userId) => ipcRenderer.invoke('db:getUser', userId),
|
|
getCurrentUser: () => ipcRenderer.invoke('db:getCurrentUser'),
|
|
setCurrentUserId: (userId) => ipcRenderer.invoke('db:setCurrentUserId', userId),
|
|
getUsersByRoom: (roomId) => ipcRenderer.invoke('db:getUsersByRoom', roomId),
|
|
updateUser: (userId, updates) => ipcRenderer.invoke('db:updateUser', userId, updates),
|
|
|
|
// Rooms
|
|
saveRoom: (room) => ipcRenderer.invoke('db:saveRoom', room),
|
|
getRoom: (roomId) => ipcRenderer.invoke('db:getRoom', roomId),
|
|
getAllRooms: () => ipcRenderer.invoke('db:getAllRooms'),
|
|
deleteRoom: (roomId) => ipcRenderer.invoke('db:deleteRoom', roomId),
|
|
updateRoom: (roomId, updates) => ipcRenderer.invoke('db:updateRoom', roomId, updates),
|
|
|
|
// Bans
|
|
saveBan: (ban) => ipcRenderer.invoke('db:saveBan', ban),
|
|
removeBan: (oderId) => ipcRenderer.invoke('db:removeBan', oderId),
|
|
getBansForRoom: (roomId) => ipcRenderer.invoke('db:getBansForRoom', roomId),
|
|
isUserBanned: (userId, roomId) => ipcRenderer.invoke('db:isUserBanned', userId, roomId),
|
|
|
|
// Attachments
|
|
saveAttachment: (attachment) => ipcRenderer.invoke('db:saveAttachment', attachment),
|
|
getAttachmentsForMessage: (messageId) => ipcRenderer.invoke('db:getAttachmentsForMessage', messageId),
|
|
getAllAttachments: () => ipcRenderer.invoke('db:getAllAttachments'),
|
|
deleteAttachmentsForMessage: (messageId) => ipcRenderer.invoke('db:deleteAttachmentsForMessage', messageId),
|
|
|
|
// Utilities
|
|
clearAllData: () => ipcRenderer.invoke('db:clearAllData'),
|
|
},
|
|
});
|