@capital/common
register
regGroupPanel
Register Group Panel
regGroupPanel({
name: `com.msgbyte.webview/grouppanel`,
label: 'web panel',
provider: PLUGIN_NAME,
extraFormMeta: [{ type: 'text', name: 'url', label: 'URL' }],
render: GroupWebPanelRender,
});
Parameter type: PluginGroupPanel
regMessageInterpreter
register message interpreter
regMessageInterpreter({
name: 'Meow language translation',
explainMessage(message: string) {
// Meow -> Human
if (!isMiao(message)) {
return null;
}
return decode(message);
},
});
Parameter type: PluginMessageInterpreter
regMessageRender
Multiple registrations only take effect for the last one
Register a message renderer, enter the message text and return the rendered content
regMessageRender((message) => {
return <BBCode plainText={message} />;
});
regChatInputAction
Register chat input box operation
regChatInputAction({
label: 'Meow words',
onClick: (actions) => {
openModal(createElement(SendMiaoModal, { actions }));
},
});
Parameter Type: ChatInputAction
regPluginColorScheme
Register plugin color schemes/themes
regPluginColorScheme({
label: 'Miku onion',
name: 'light+miku',
});
Utility function
useGroupPanelParams
Get user panel related information in hooks
import { useGroupPanelParams } from '@capital/common';
const { groupId, panelId } = useGroupPanelParams();
openModal
open a modal
openModal(
content: React.ReactNode,
props?: Pick<ModalProps, 'closable' | 'maskClosable'>
)
type:
- [ModalProps] (#modalprops)
ModalWrapper
Modal Wrapper
<ModalWrapper>
<div></div>
</ModalWrapper>
useModalContext
Get the modal context
const { closeModal } = useModalContext();
getGlobalState
Get the global Redux state context
const state = getGlobalState();
getCachedUserInfo
Get user information, cached version
The email field is optional. User profile queries (user.getUserInfo,
user.getUserInfoList, and user.searchUserWithUniqueName) include it only for
the authenticated user's own profile. Anonymous queries omit email entirely.
const info = getCachedUserInfo(userId);
getCachedConverseInfo
Get session information
const info = getCachedConverseInfo(converseId);
type
PluginGroupPanel
interface PluginGroupPanel {
/**
* The unique identification of the panel
* @example com.msgbyte.webview/grouppanel
*/
name: string;
/**
* panel display name
*/
label: string;
/**
* Plug-in provider, used to guide users who have not installed the plug-in to install the plug-in
*/
provider: string;
/**
* Additional form data, used when creating panels
*/
extraFormMeta: FastFormFieldMeta[];
/**
* How the panel is rendered
*/
render: React. ComponentType;
}
PluginMessageInterpreter
Plugin Message Interpreter
interface PluginMessageInterpreter {
name?: string;
explainMessage: (message: string) => React. ReactNode;
}
ChatInputAction
Message input box operation object
interface ChatInputAction {
label: string;
onClick: (actions: ChatInputActionContextProps) => void;
}
###GroupPanel
interface GroupPanel {
id: string; // unique in the group
name: string;
parentId?: string;
type: GroupPanelType;
provider?: string; // panel provider
pluginPanelName?: string; // plugin panel name
meta?: Record<string, unknown>;
}
ModalProps
interface ModalProps {
visible?: boolean;
onChangeVisible?: (visible: boolean) => void;
/**
* Whether to display the close button in the upper right corner
* @default false
*/
closable?: boolean;
/**
* Whether the mask layer can be closed
*/
maskClosable?: boolean;
}