From 9b73e897df134ba57d4ac4d0e6e6924f8ddbc23d Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 12 Jul 2020 00:38:55 +0900 Subject: Plugin system (#6479) * wip * wip * wip * wip * Update store.ts --- src/client/init.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/client/init.ts') diff --git a/src/client/init.ts b/src/client/init.ts index d00b4f5cca..7e11efe37c 100644 --- a/src/client/init.ts +++ b/src/client/init.ts @@ -25,6 +25,8 @@ import { isDeviceDarkmode } from './scripts/is-device-darkmode'; import createStore from './store'; import { clientDb, get, count } from './db'; import { setI18nContexts } from './scripts/set-i18n-contexts'; +import { createPluginEnv } from './scripts/aiscript/api'; +import { AiScript } from '@syuilo/aiscript'; Vue.use(Vuex); Vue.use(VueHotkey); @@ -231,6 +233,35 @@ os.init(async () => { //store.commit('instance/set', ); }); + for (const plugin of store.state.deviceUser.plugins) { + console.info('Plugin installed:', plugin.name, 'v' + plugin.version); + + const aiscript = new AiScript(createPluginEnv(app, { + plugin: plugin, + storageKey: 'plugins:' + plugin.id + }), { + in: (q) => { + return new Promise(ok => { + app.dialog({ + title: q, + input: {} + }).then(({ canceled, result: a }) => { + ok(a); + }); + }); + }, + out: (value) => { + console.log(value); + }, + log: (type, params) => { + }, + }); + + store.commit('initPlugin', { plugin, aiscript }); + + aiscript.exec(plugin.ast); + } + if (store.getters.isSignedIn) { const main = os.stream.useSharedConnection('main'); -- cgit v1.2.3-freya