const assert = require('assert')
const {BrowserWindow} = require('electron').remote

exports.closeWindow = (window, {assertSingleWindow} = {assertSingleWindow: true}) => {
  if (window == null || window.isDestroyed()) {
    if (assertSingleWindow) {
      assert.equal(BrowserWindow.getAllWindows().length, 1)
    }
    return Promise.resolve()
  } else {
    return new Promise((resolve, reject) => {
      window.once('closed', () => {
        if (assertSingleWindow) {
          assert.equal(BrowserWindow.getAllWindows().length, 1)
        }
        resolve()
      })
      window.setClosable(true)
      window.close()
    })
  }
}