첫번째 window 닫고, 두번째 window열기

2020. 8. 10. 19:42Electron

반응형

* 원하는 로직

처음접속시 버전체크 페이지로 연결

-> 버전체크 완료후 토큰 확인후 인덱스 페이지로 연결

 

* 실패한 로직

[main.js]

function start(){

  createWindow();

}

function createWindow(){

 if(versionCk) //기본 인덱스파일 로드 (버전체크 완료를 의미)

 else //버전체크파일 로드(버전체크 미완료)

}

ipcMain.on('check-version', (eventarg=> {

    versionCk = true;

    start();

    event.returnValue = 0;

})

app.on('window-all-closed'function () {

  if (process.platform !== 'darwin'){

    db.close();

    app.quit();

  }

[버전체크.js]

//버전체크후 문제없으면 호출

ipcRenderer.sendSync('check-version');

return;

window.close();

 

=> 위의 실패한 로직대로 실행하면 새로운 윈도우를 만들기 이전에 버전체크 window가 삭제됨. app에서 모든 window가 삭제된 것으로 판단하여 app자체를 종료함

 

* 새로운로직

[main.js]

let versionCkWindow;

function start(){

  if(versionCk) createWindow();//mainWindow  생성(버전체크 완료를 의미)

  else createVersionCkWindow(); //versionCkWindow 생성(버전체크 미완료)

}

function createWindow(){

  mainWindow 생성

  versionCkWindow.close();

}

 

function createVersionCkWindow(){

 versionCkWindow생성

}

 

ipcMain.on('check-version', (eventarg=> {

    versionCk = true;

    start();

    event.returnValue = 0;

})

app.on('window-all-closed'function () {

  if (process.platform !== 'darwin'){

    db.close();

    app.quit();

  }

[버전체크.js]

//버전체크후 문제없으면 호출

ipcRenderer.sendSync('check-version');

 

=> 사실상 해당로직의 순서는 먼저 버전체크윈도우를 생성하고, 해당 버전체크가 끝나면 메인윈도우를 생성한다. 그후에 버전체크를 닫는다.

반응형