sbot/ui/lib/muxrpc-ipc.js

45 lines
1.0 KiB
JavaScript

var ipc = require('ipc')
var muxrpc = require('muxrpc')
var pull = require('pull-stream')
var pullipc = require('pull-ipc')
var ui = require('./ui')
var clientApiManifest = {
navigate: 'async',
contextualToggleDevTools: 'async',
triggerFind: 'async'
}
var clientApi = {
navigate: function (path, cb) {
window.location.hash = '#/webview/'+path
cb()
},
contextualToggleDevTools: function (cb) {
ui.toggleDevTools()
cb()
},
triggerFind: function (cb) {
ui.triggerFind()
cb()
}
}
module.exports = function () {
// fetch manifest
var manifest = ipc.sendSync('fetch-manifest')
console.log('got manifest', manifest)
// create rpc object
var ssb = muxrpc(manifest, clientApiManifest, serialize)(clientApi)
function serialize (stream) { return stream }
// setup rpc stream over ipc
var rpcStream = ssb.createStream()
var ipcStream = pullipc('ssb-muxrpc', ipc, function (err) {
console.log('ipc-stream ended', err)
})
pull(ipcStream, rpcStream, ipcStream)
return ssb
}