Olá,
Fazendo o exercício de adicionar um item no Tray menu encontrei um erro e não consegui encontrar o problema:
A JavaScript error occurred in the main process
Uncaught Exception:
TypeError: Error processing argument at index 0, conversion failure from [object Array]
at TypeError (native)
at EventEmitter.ipcMain.on (/home/wt/Willian/projetos/alura/electon-alura/alura-timer/main.js:63:10)
at emitTwo (events.js:106:13)
at EventEmitter.emit (events.js:191:7)
at WebContents.<anonymous> (/home/wt/Willian/projetos/alura/electon-alura/alura-timer/node_modules/electron/dist/resources/electron.asar/browser/api/web-contents.js:222:13)
at emitTwo (events.js:106:13)
at WebContents.emit (events.js:191:7)
main.js
ipcMain.on('curso-adicionado', (event, novoCurso)=>{
let novoTemplate = templateGenerator.adicionaCursoNoTray(novoCurso,mainWindow);
let novoTrayMenu = Menu.buildFromTemplate(novoTemplate);
tray.setContextMenu(novoTemplate);
})
renderer,js
let $ = document.querySelector.bind(document);
let campoAdicionar = $('.campo-adicionar');
let botaoAdicionar = $('.botao-adicionar');
botaoAdicionar.addEventListener('click',function(){
let novoCurso = campoAdicionar.value;
labelCurso.textContent = novoCurso;
labelTempo.textContent = '00:00:00';
campoAdicionar.value = '';
ipcRenderer.send('curso-adicionado',novoCurso);
});
template,js
const data = require('./data');
module.exports = {
templateInical: null,
geraTrayTemplate(win){
let template = [
{'label': 'Cursos'},
{type: 'separator'}
];
let cursos = data.pegaNomeDosCursos();
cursos.forEach((curso)=>{
let menuItem ={
label: curso,
type: 'radio',
click: ()=>{
win.send('curso-trocado',curso);
}
}
template.push(menuItem);
});
this.templateInicial = template;
return template;
},
adicionaCursoNoTray(curso, win) {
this.templateInicial.push({
label: curso,
type: 'radio',
checked: true,
click: () => {
win.send('curso-trocado', curso);
}
});
return this.templateInicial;
}
}