RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/views/marketplace/MarketplaceSidebar.tsx

Summary

Maintainability
B
6 hrs
Test Coverage
import { useTranslation, useLayout, useCurrentRoutePath } from '@rocket.chat/ui-contexts';
import type { ReactElement } from 'react';
import React, { memo } from 'react';
import { useSyncExternalStore } from 'use-sync-external-store/shim';

import Sidebar from '../../components/Sidebar';
import SidebarItemsAssembler from '../../components/Sidebar/SidebarItemsAssembler';
import SettingsProvider from '../../providers/SettingsProvider';
import { getMarketplaceSidebarItems, subscribeToMarketplaceSidebarItems } from './sidebarItems';

const MarketplaceSidebar = (): ReactElement => {
    const items = useSyncExternalStore(subscribeToMarketplaceSidebarItems, getMarketplaceSidebarItems);
    const t = useTranslation();

    const { sidebar } = useLayout();

    const currentPath = useCurrentRoutePath();

    return (
        <SettingsProvider privileged>
            <Sidebar>
                <Sidebar.Header onClose={sidebar.close} title={t('Marketplace')} />
                <Sidebar.Content>
                    <SidebarItemsAssembler items={items} currentPath={currentPath} />
                </Sidebar.Content>
            </Sidebar>
        </SettingsProvider>
    );
};

export default memo(MarketplaceSidebar);