{{ $t('version') }}:
{{ selectedPlugin.version }}
@@ -49,6 +52,7 @@ import MkButton from '../../components/ui/button.vue';
import MkTextarea from '../../components/ui/textarea.vue';
import MkSelect from '../../components/ui/select.vue';
import MkInfo from '../../components/ui/info.vue';
+import MkSwitch from '../../components/ui/switch.vue';
export default Vue.extend({
components: {
@@ -56,6 +60,7 @@ export default Vue.extend({
MkTextarea,
MkSelect,
MkInfo,
+ MkSwitch,
},
data() {
@@ -171,6 +176,17 @@ export default Vue.extend({
config: result
});
+ this.$nextTick(() => {
+ location.reload();
+ });
+ },
+
+ changeActive(plugin, active) {
+ this.$store.commit('deviceUser/changePluginActive', {
+ id: plugin.id,
+ active: active
+ });
+
this.$nextTick(() => {
location.reload();
});
diff --git a/src/client/scripts/aiscript/api.ts b/src/client/scripts/aiscript/api.ts
index 9ca16df494..bfbfe8d59d 100644
--- a/src/client/scripts/aiscript/api.ts
+++ b/src/client/scripts/aiscript/api.ts
@@ -14,9 +14,9 @@ export function createAiScriptEnv(vm, opts) {
text: text.value,
});
}),
- 'Mk:confirm': values.FN_NATIVE(async ([title, text]) => {
+ 'Mk:confirm': values.FN_NATIVE(async ([title, text, type]) => {
const confirm = await vm.$root.dialog({
- type: 'warning',
+ type: type ? type.value : 'question',
showCancelButton: true,
title: title.value,
text: text.value,
@@ -44,12 +44,13 @@ export function createAiScriptEnv(vm, opts) {
export function createPluginEnv(vm, opts) {
const config = new Map();
- for (const [k, v] of Object.entries(opts.plugin.config)) {
+ for (const [k, v] of Object.entries(opts.plugin.config || {})) {
config.set(k, jsToVal(opts.plugin.configData[k] || v.default));
}
return {
...createAiScriptEnv(vm, { ...opts, token: opts.plugin.token }),
+ //#region Deprecated
'Mk:register_post_form_action': values.FN_NATIVE(([title, handler]) => {
vm.$store.commit('registerPostFormAction', { pluginId: opts.plugin.id, title: title.value, handler });
}),
@@ -59,6 +60,16 @@ export function createPluginEnv(vm, opts) {
'Mk:register_note_action': values.FN_NATIVE(([title, handler]) => {
vm.$store.commit('registerNoteAction', { pluginId: opts.plugin.id, title: title.value, handler });
}),
+ //#endregion
+ 'Plugin:register_post_form_action': values.FN_NATIVE(([title, handler]) => {
+ vm.$store.commit('registerPostFormAction', { pluginId: opts.plugin.id, title: title.value, handler });
+ }),
+ 'Plugin:register_user_action': values.FN_NATIVE(([title, handler]) => {
+ vm.$store.commit('registerUserAction', { pluginId: opts.plugin.id, title: title.value, handler });
+ }),
+ 'Plugin:register_note_action': values.FN_NATIVE(([title, handler]) => {
+ vm.$store.commit('registerNoteAction', { pluginId: opts.plugin.id, title: title.value, handler });
+ }),
'Plugin:config': values.OBJ(config),
};
}
diff --git a/src/client/store.ts b/src/client/store.ts
index 2bf44088af..67dd6ea06a 100644
--- a/src/client/store.ts
+++ b/src/client/store.ts
@@ -45,7 +45,14 @@ export const defaultDeviceUserSettings = {
columns: [],
layout: [],
},
- plugins: [],
+ plugins: [] as {
+ id: string;
+ name: string;
+ active: boolean;
+ configData: Record
;
+ token: string;
+ ast: any[];
+ }[],
};
export const defaultDeviceSettings = {
@@ -591,6 +598,7 @@ export default () => new Vuex.Store({
installPlugin(state, { meta, ast, token }) {
state.plugins.push({
...meta,
+ active: true,
configData: {},
token: token,
ast: ast
@@ -604,6 +612,10 @@ export default () => new Vuex.Store({
configPlugin(state, { id, config }) {
state.plugins.find(p => p.id === id).configData = config;
},
+
+ changePluginActive(state, { id, active }) {
+ state.plugins.find(p => p.id === id).active = active;
+ },
}
},