Skip to content

Instantly share code, notes, and snippets.

@sokcuri
Created July 16, 2017 03:13
Show Gist options
  • Save sokcuri/d698c96986d440fbe793f150e54de93f to your computer and use it in GitHub Desktop.
Save sokcuri/d698c96986d440fbe793f150e54de93f to your computer and use it in GitHub Desktop.
BrowserWindow.create = function () {
// Arguments
let pref = arguments[0] || {};
pref.webPreferences = pref.webPreferences || {};
// Config object
let config = {
preload: pref.webPreferences.preload
}
// Argument passing to renderer process using base64
let argument_passing = Buffer.from(JSON.stringify(config)).toString('base64');
// Override preload settings
pref.webPreferences.blinkFeatures = pref.webPreferences.blinkFeatures || '';
pref.webPreferences.blinkFeatures += `,--config-object:${argument_passing}`;
pref.webPreferences.preload = path.join(__dirname, '..', 'renderer', 'init.js');
pref.title = pref.title || app.getName();
let browserWindow = new BrowserWindow(pref);
const openPopup = (url, target) => {
let popupWindow;
popupWindow = new BrowserWindow({width: 800, height: 800,
webPreferences: {
preload: path.join(__dirname, '..', 'renderer', 'preload.js')
}
});
popupWindow.loadURL(url);
}
browserWindow.webContents.on('new-window', (e, url, target) => {
e.preventDefault();
openPopup(url, target);
});
browserWindow.on('close', (event) => {
message('Close BrowserWindow', 'main');
});
browserWindow.webContents.session.webRequest.onBeforeRequest(filter, (details, callback) => {
let requestURL = new URL(details.url);
let redirectURL = '';
if (requestURL.protocol === 'https:') {
if (details.method == 'GET' &&
details.uploadData === undefined) {
if (requestURL.hostname === 'ton.twimg.com')
redirectURL = 'sokcuri://' + Buffer.from(JSON.stringify(requestURL.href)).toString('base64');
else if (requestURL.hostname === 'pbs.twimg.com')
redirectURL = 'twimg://' + Buffer.from(JSON.stringify(requestURL.href)).toString('base64');
}
}
callback({cancel: false, redirectURL: redirectURL})
});
/* Fix to Electron */
// electron cannot post redirect request
browserWindow.webContents.on('did-get-redirect-request', (e, oldURL, newURL, isMainFrame) => {
if (isMainFrame) {
setTimeout(function() {
browserWindow.send('Renderer.redirect-url', newURL)
}, 100);
e.preventDefault();
}
});
message('Create BrowserWindow', 'main');
return browserWindow;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment