RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/views/room/composer/ComposerFederation/ComposerFederation.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import type { IRoom } from '@rocket.chat/core-typings';
import { useSetting } from '@rocket.chat/ui-contexts';
import React from 'react';
import type { ReactElement } from 'react';

import { useHasLicenseModule } from '../../../../hooks/useHasLicenseModule';
import type { ComposerMessageProps } from '../ComposerMessage';
import ComposerMessage from '../ComposerMessage';
import ComposerFederationDisabled from './ComposerFederationDisabled';
import ComposerFederationJoinRoomDisabled from './ComposerFederationJoinRoomDisabled';

const ComposerFederation = ({ room, subscription, children, ...props }: ComposerMessageProps & { room: IRoom }): ReactElement => {
    const federationEnabled = useSetting('Federation_Matrix_enabled') === true;
    const federationModuleEnabled = useHasLicenseModule('federation') === true;

    if (!federationEnabled) {
        return <ComposerFederationDisabled />;
    }

    if (!subscription && !federationModuleEnabled) {
        return <ComposerFederationJoinRoomDisabled />;
    }

    return (
        <>
            {children}
            <ComposerMessage readOnly={room.ro} {...props} />
        </>
    );
};

export default ComposerFederation;