feat: 增加插件安装方法到window对象

pull/90/head
moonrailgun 2 years ago
parent 02095aa628
commit 65d1e916f8

@ -7,6 +7,7 @@ import { initMiniStar, loadSinglePlugin } from 'mini-star';
import _once from 'lodash/once';
import { builtinPlugins } from './builtin';
import { showPluginLoadError } from './showPluginLoadError';
import { injectTailchatGlobalValue } from '@/utils/global-helper';
class PluginManager {
/**
@ -133,3 +134,4 @@ class PluginManager {
}
export const pluginManager = new PluginManager();
injectTailchatGlobalValue('installPlugin', pluginManager.installPlugin);

@ -0,0 +1,15 @@
type TailchatTypeMap = NonNullable<typeof window.tailchat>;
/**
* tailchatwindow
*/
export function injectTailchatGlobalValue<T extends keyof TailchatTypeMap>(
key: T,
value: TailchatTypeMap[T]
) {
if (!window.tailchat) {
window.tailchat = {};
}
window.tailchat[key] = value;
}

@ -0,0 +1,63 @@
/**
* Copy from `tailchat/client/shared/model/plugin.ts`
*/
interface PluginManifest {
/**
*
* @example
*/
label: string;
/**
* ,
* @example com.msgbyte.webview
*/
name: string;
/**
*
*/
url: string;
/**
*
* : 128x128
*/
icon?: string;
/**
*
* semver
*
* major.minor.patch
* @example 1.0.0
*/
version: string;
/**
*
*/
author: string;
/**
*
*/
description: string;
/**
*
*/
requireRestart: boolean;
/**
*
* markdown, html使iframe
*/
documentUrl?: string;
}
declare interface Window {
tailchat?: {
installPlugin?: (manifest: PluginManifest) => Promise<void>;
};
}
Loading…
Cancel
Save