RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/views/teams/ConvertToChannelModal/ConvertToChannelModal.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import type { IRoom, Serialized } from '@rocket.chat/core-typings';
import React, { useMemo } from 'react';

import GenericModalSkeleton from '../../../components/GenericModal/GenericModalSkeleton';
import { useEndpointData } from '../../../hooks/useEndpointData';
import { AsyncStatePhase } from '../../../lib/asyncState';
import BaseConvertToChannelModal from './BaseConvertToChannelModal';

type ConvertToChannelModalProps = {
    onClose: () => void;
    onCancel: () => void;
    onConfirm: () => Serialized<IRoom>[];
    teamId: string;
    userId: string;
};

const ConvertToChannelModal = ({ onClose, onCancel, onConfirm, teamId, userId }: ConvertToChannelModalProps) => {
    const { value, phase } = useEndpointData('/v1/teams.listRoomsOfUser', {
        params: useMemo(() => ({ teamId, userId, canUserDelete: 'true' }), [teamId, userId]),
    });

    if (phase === AsyncStatePhase.LOADING) {
        return <GenericModalSkeleton />;
    }

    return <BaseConvertToChannelModal onClose={onClose} onCancel={onCancel} onConfirm={onConfirm} rooms={value?.rooms} />;
};

export default ConvertToChannelModal;