Skip to main content

@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;
}