76 lines
2.0 KiB
JavaScript
76 lines
2.0 KiB
JavaScript
var BrowserWindow = require('browser-window')
|
|
var path = require('path')
|
|
var shell = require('shell')
|
|
var setupRpc = require('./muxrpc-ipc')
|
|
var blobslib = require('./blobs')
|
|
|
|
var windows = []
|
|
|
|
var secureWebPreferences = {
|
|
javascript: true,
|
|
'web-security': true,
|
|
images: true,
|
|
java: false,
|
|
webgl: false, // maybe allow?
|
|
webaudio: false, // maybe allow?
|
|
plugins: false,
|
|
'experimental-features': false,
|
|
'experimental-canvas-features': false,
|
|
'shared-worker': false
|
|
}
|
|
|
|
var open =
|
|
module.exports.open = function (url, sbot, blobs, opts, params) {
|
|
var win = new BrowserWindow(opts)
|
|
win.loadUrl(url)
|
|
setupRpc(win, sbot, params)
|
|
windows.push(win)
|
|
|
|
win.on('closed', function() {
|
|
var i = windows.indexOf(win)
|
|
windows.splice(i, 1)
|
|
win = null
|
|
})
|
|
|
|
win.webContents.on('new-window', function (e, url) {
|
|
e.preventDefault() // hell naw
|
|
if (url.indexOf('http://localhost:7777/') === 0) {
|
|
// open the file
|
|
blobs.checkout(url, function (err, filepath) {
|
|
if (err) {
|
|
if (err.badUrl)
|
|
alert('Error: Not a valid file reference')
|
|
else if (err.notFound) {
|
|
// register want
|
|
var hash = blobslib.url_parse(url).hash
|
|
sbot.blobs.want(hash, {nowait: true}, function(){})
|
|
// open search interface
|
|
open(
|
|
'file://' + path.join(__dirname, '../../node_modules/ssbplug-phoenix/blob-search.html'),
|
|
sbot,
|
|
blobs,
|
|
{ width: 600, height: 650, 'web-preferences': secureWebPreferences },
|
|
{ url: url, hash: hash }
|
|
)
|
|
} else
|
|
console.log(err) // :TODO: something nicer
|
|
} else {
|
|
shell.openItem(filepath) // open in desktop's default program
|
|
}
|
|
})
|
|
} else if (url.indexOf('file://') === 0) {
|
|
var mainWindow = open(
|
|
url,
|
|
sbot,
|
|
blobs,
|
|
{ width: 1030, height: 720 }
|
|
)
|
|
require('./menu')(mainWindow)
|
|
} else {
|
|
// open in the browser
|
|
shell.openExternal(url)
|
|
}
|
|
})
|
|
|
|
return win
|
|
} |