You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailchat/website/docs/plugins/api/common.md

3.8 KiB

sidebar_position title
1 @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

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