RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/sidebarv2/hooks/useTemplateByViewMode.ts

Summary

Maintainability
A
2 hrs
Test Coverage
import { useUserPreference } from '@rocket.chat/ui-contexts';
import type { ComponentType } from 'react';
import { useMemo } from 'react';

import Condensed from '../Item/Condensed';
import Extended from '../Item/Extended';
import Medium from '../Item/Medium';

export const useTemplateByViewMode = (): ComponentType<any> => {
    const sidebarViewMode = useUserPreference('sidebarViewMode');
    return useMemo(() => {
        switch (sidebarViewMode) {
            case 'extended':
                return Extended;
            case 'medium':
                return Medium;
            case 'condensed':
            default:
                return Condensed;
        }
    }, [sidebarViewMode]);
};