/*
This file contains the ipc communication methos between the ui and the gui
*/

const { contextBridge, ipcRenderer, webUtils } = require('electron')

try {
    //For file lookup on drop
    contextBridge.exposeInMainWorld("explorer", {
        onFileDrop: (file) => webUtils.getPathForFile(file)
    })
    //For sending the specifications to the main
    contextBridge.exposeInMainWorld("submit", {
        submit: (meeting_specifications) => { ipcRenderer.send("file_submit", meeting_specifications) }
    })
    //For file lookup on search
    contextBridge.exposeInMainWorld("electronAPI", {
        getFilePath: (file) => { return webUtils.getPathForFile(file) }
    })
    //Gets all information from the main process
    contextBridge.exposeInMainWorld("onStartup", {
        getModuleNames: () => ipcRenderer.invoke('get-module-names')
    })
    //Calls from the main process regarding the progress
    contextBridge.exposeInMainWorld('electron', {
        progress: (callback) => ipcRenderer.on('progress', callback)
    })
    //For getting the speaker audios and names from the main
    contextBridge.exposeInMainWorld('audios', {
        speakerAudios: (callback) => ipcRenderer.on('speakerAudios', callback)
    })
    //For sending the new speaker names to the main process
    contextBridge.exposeInMainWorld("submitSpeaker", {
        speaker_submit: (speaker_names) => { ipcRenderer.send("speaker_submit", speaker_names) }
    })
    //For downloading the finished document
    contextBridge.exposeInMainWorld("download", {
        file_download: () => { ipcRenderer.send("file_download") }
    })
    
    //documenttypes 
    contextBridge.exposeInMainWorld('api', {
        getTxtFiles: () => ipcRenderer.invoke('get-txt-files'),
        saveTxtFile: (name, content) =>
            ipcRenderer.invoke('save-txt-file', name, content),
        readTxtFile: (fileName) =>
            ipcRenderer.invoke('read-txt-file', fileName),
        deleteTxtFile: (fileName) =>
            ipcRenderer.invoke('delete-txt-file', fileName)
    });


    ipcRenderer.on("error", (event, err) => { alert(err) })
} catch (error) {
    console.log("Error in preload.js");
}
