RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/views/banners/BannerRegion.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import type { ReactElement } from 'react';
import React from 'react';
import { useSyncExternalStore } from 'use-sync-external-store/shim';

import * as banners from '../../lib/banners';
import LegacyBanner from './LegacyBanner';
import UiKitBanner from './UiKitBanner';
import { useUserBanners } from './hooks/useUserBanners';

const BannerRegion = (): ReactElement | null => {
    const payload = useSyncExternalStore(...banners.firstSubscription);

    useUserBanners();

    if (!payload) {
        return null;
    }

    if (banners.isLegacyPayload(payload)) {
        return <LegacyBanner config={payload} />;
    }

    return <UiKitBanner key={payload.viewId} initialView={payload} />;
};

export default BannerRegion;