feat: add custom sidebar item

chore/upgrade-rn-0.72.7
moonrailgun 1 year ago
parent 960898f7e6
commit e73046e7d5

@ -0,0 +1,31 @@
import type { PluginCustomPanel } from '@/plugin/common';
import React, { useMemo } from 'react';
import { Icon } from 'tailchat-design';
import { SidebarItem } from './SidebarItem';
const defaultUseIsShow = () => true;
/**
*
*
*/
export const CustomSidebarItem: React.FC<{
panelInfo: PluginCustomPanel;
}> = React.memo(({ panelInfo }) => {
const useIsShow = useMemo(() => panelInfo.useIsShow ?? defaultUseIsShow, []);
const isShow = useIsShow();
if (!isShow) {
return null;
}
return (
<SidebarItem
key={panelInfo.name}
name={panelInfo.label}
icon={<Icon icon={panelInfo.icon} />}
to={`/main/personal/custom/${panelInfo.name}`}
/>
);
});
CustomSidebarItem.displayName = 'CustomSidebarItem';

@ -14,6 +14,7 @@ import { CreateDMConverse } from '@/components/modals/CreateDMConverse';
import { SectionHeader } from '@/components/SectionHeader';
import { CommonSidebarWrapper } from '@/components/CommonSidebarWrapper';
import { pluginCustomPanel } from '@/plugin/common';
import { CustomSidebarItem } from '../CustomSidebarItem';
const SidebarSection: React.FC<
PropsWithChildren<{
@ -73,12 +74,7 @@ export const PersonalSidebar: React.FC = React.memo(() => {
{pluginCustomPanel
.filter((p) => p.position === 'personal')
.map((p) => (
<SidebarItem
key={p.name}
name={p.label}
icon={<Icon icon={p.icon} />}
to={`/main/personal/custom/${p.name}`}
/>
<CustomSidebarItem key={p.name} panelInfo={p} />
))}
<SidebarSection

@ -12,10 +12,12 @@ const defaultUseIsShow = () => true;
*/
export const NavbarCustomNavItem: React.FC<{
panelInfo: PluginCustomPanel;
/**
*
*/
withBg: boolean;
}> = React.memo(({ panelInfo, withBg }) => {
const useIsShow = useMemo(() => panelInfo.useIsShow ?? defaultUseIsShow, []);
const isShow = useIsShow();
if (!isShow) {

Loading…
Cancel
Save