skypager-project-types-electron-app
Version:
skypager electron app project type
53 lines (41 loc) • 1.19 kB
JavaScript
import Helper from 'skypager-helper'
import DataStore from './data-store'
import Presenter from './presenter'
import { Runtime } from 'skypager-runtime'
export class ProjectRuntime extends Runtime {
static optionTypes = {
entryPoint: 'string'
}
static contextTypes = {
responder: 'object',
positioner: 'object',
storage: 'object',
ipc: 'object',
ipcRenderer: 'object'
}
async connect() {
return Promise.resolve(this)
}
setupEventBindings() {
this.responder.registerTopic('PANEL', (payload) => this.receiveMessage({payload, channel: 'PANEL'}))
this.responder.registerTopic('RUNTIME', (payload) => this.receiveMessage({payload, channel: 'RUNTIME'}))
}
async receiveMessage({payload, channel}) {
return this
}
get storage() {
this.tryGet('storage', window.storage)
}
get positioner() {
this.tryGet('positioner', window.positioner)
}
get responder() {
this.tryGet('responder', window.responder)
}
get ipc() {
this.tryGet('ipc', window.ipcRenderer)
}
}
export default ProjectRuntime
Helper.registry.register('data-store', () => DataStore)
Helper.registry.register('presenter', () => Presenter)