refactor: ginify Screen (#24677)

This commit is contained in:
Jeremy Rose 2020-07-28 11:04:01 -07:00 committed by GitHub
parent 362da77c0a
commit e6cf5906f6
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 36 additions and 60 deletions

View file

@ -1,10 +1,20 @@
'use strict';
const { createScreen } = process._linkedBinding('electron_common_screen');
import { createLazyInstance } from '@electron/internal/browser/utils';
const { EventEmitter } = require('events');
const { Screen, createScreen } = process._linkedBinding('electron_common_screen');
let _screen: Electron.Screen;
// Screen is an EventEmitter.
Object.setPrototypeOf(Screen.prototype, EventEmitter.prototype);
module.exports = createLazyInstance(createScreen, Screen, true);
// We can't call createScreen until after app.on('ready'), but this module
// exposes an instance created by createScreen. In order to avoid
// side-effecting and calling createScreen upon import of this module, instead
// we export a proxy which lazily calls createScreen on first access.
export default new Proxy({}, {
get: (target, prop) => {
if (_screen === undefined) {
_screen = createScreen();
}
const v = (_screen as any)[prop];
if (typeof v === 'function') {
return v.bind(_screen);
}
return v;
}
});