RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/views/omnichannel/businessHours/EditBusinessHoursWithData.tsx

Summary

Maintainability
A
1 hr
Test Coverage
import type { ILivechatBusinessHour, LivechatBusinessHourTypes } from '@rocket.chat/core-typings';
import { Button, States, StatesAction, StatesActions, StatesIcon, StatesTitle } from '@rocket.chat/fuselage';
import { useEndpoint, useRouter, useTranslation } from '@rocket.chat/ui-contexts';
import { useQuery } from '@tanstack/react-query';
import React from 'react';

import { Page, PageHeader, PageContent } from '../../../components/Page';
import PageSkeleton from '../../../components/PageSkeleton';
import EditBusinessHours from './EditBusinessHours';

const EditBusinessHoursWidthData = ({ id, type }: { id?: ILivechatBusinessHour['_id']; type: LivechatBusinessHourTypes }) => {
    const t = useTranslation();
    const router = useRouter();
    const getBusinessHour = useEndpoint('GET', '/v1/livechat/business-hour');

    const { data, isLoading, isError, refetch } = useQuery(
        ['livechat-getBusinessHourById', id, type],
        async () => getBusinessHour({ _id: id, type }),
        {
            refetchOnWindowFocus: false,
        },
    );

    if (isLoading) {
        return <PageSkeleton />;
    }

    if (isError) {
        return (
            <Page>
                <PageHeader title={t('Business_Hours')}>
                    <Button onClick={() => router.navigate('/omnichannel/businessHours')}>{t('Back')}</Button>
                </PageHeader>
                <PageContent>
                    <States>
                        <StatesIcon name='warning' variation='danger' />
                        <StatesTitle>{t('Something_went_wrong')}</StatesTitle>
                        <StatesActions>
                            <StatesAction onClick={() => refetch()}>{t('Reload_page')}</StatesAction>
                        </StatesActions>
                    </States>
                </PageContent>
            </Page>
        );
    }

    return <EditBusinessHours businessHourData={data.businessHour} type={type} />;
};

export default EditBusinessHoursWidthData;