-
Notifications
You must be signed in to change notification settings - Fork 0
dBrowser Framework
Jared Rice Sr edited this page Jun 30, 2018
·
3 revisions
dBrowser's core framework. dBrowser extensions are built from this framework, which was factored out of the original core.
Here's how we use it in dBrowser
import {app, protocol} from 'electron'
import dBrowserFramework from '@dbrowser/framework'
const DISALLOWED_SAVE_PATH_NAMES = [
'home',
'desktop',
'documents',
'downloads',
'music',
'pictures',
'videos'
]
// setup dBrowser framework
await dBrowserFramework.setup({
// config
userDataPath: app.getPath('userData'),
homePath: app.getPath('home'),
disallowedSavePaths: DISALLOWED_SAVE_PATH_NAMES.map(path => app.getPath(path)),
// APIs
permsAPI: {
async checkLabsPerm({perm, labApi, apiDocsUrl, sender}) {/*...*/},
async queryPermission(perm, sender) {/*...*/},
async requestPermission(perm, sender) {/*...*/},
async grantPermission(perm, senderURL) {/*...*/}
},
uiAPI: {
async showModal(sender, modalName, opts) {/*...*/}
},
rpcAPI: {
exportAPI(apiName, apiManifest, apiImpl, [guardFn])
},
downloadsWebAPI: {...},
browserWebAPI: {...}
})
// setup the protocol handler
protocol.registerStreamProtocol('dweb', dBrowserFramework.dweb.protocol.electronHandler, err => {
if (err) throw ProtocolSetupError(err, 'Failed to create protocol: dweb')
})
In the webview preload:
import dBrowserFrameworkWebview from '@dbrowser/framework/webview'
dBrowserFrameworkWebview.setup({
// APIs
rpcAPI: {
importAPI(apiName, apiManifest, opts)
}
})