import { Box, Pagination, States, StatesActions, StatesAction, StatesIcon, StatesTitle } from '@rocket.chat/fuselage';
import { useDebouncedValue } from '@rocket.chat/fuselage-hooks';
import {
GenericTable,
GenericTableBody,
GenericTableCell,
GenericTableHeader,
GenericTableHeaderCell,
GenericTableLoadingTable,
GenericTableRow,
usePagination,
useSort,
} from '@rocket.chat/ui-client';
import { useTranslation, useEndpoint } from '@rocket.chat/ui-contexts';
import { useQuery } from '@tanstack/react-query';
import type { MutableRefObject } from 'react';
import { useEffect, useMemo, useState } from 'react';
import FilterByText from '../../../components/FilterByText';
import GenericNoResults from '../../../components/GenericNoResults';
export type CustomEmojiProps = {
reload: MutableRefObject<() => void>;
onClick: (emoji: string) => () => void;
};
const CustomEmoji = ({ onClick, reload }: CustomEmojiProps) => {
const t = useTranslation();
const [text, setText] = useState('');
const { sortBy, sortDirection, setSort } = useSort<'name'>('name');
const { current, itemsPerPage, setItemsPerPage: onSetItemsPerPage, setCurrent: onSetCurrent, ...paginationProps } = usePagination();
const query = useDebouncedValue(
useMemo(
() => ({
name: text,
sort: `{ "${sortBy}": ${sortDirection === 'asc' ? 1 : -1} }`,
count: itemsPerPage,
offset: current,
}),
[text, itemsPerPage, current, sortBy, sortDirection],
),
500,
);
const headers = useMemo(
() => [
{t('Name')}
,
{t('Aliases')}
,
],
[setSort, sortDirection, sortBy, t],
);
const getEmojiList = useEndpoint('GET', '/v1/emoji-custom.all');
const { data, refetch, isSuccess, isLoading, isError } = useQuery({
queryKey: ['getEmojiList', query],
queryFn: () => getEmojiList(query),
});
useEffect(() => {
reload.current = refetch;
}, [reload, refetch]);
return (
<>
setText(event.target.value)} />
{isLoading && (
{headers}
)}
{isSuccess && data && data.emojis.length > 0 && (
<>
{headers}
{isSuccess &&
data?.emojis.map((emojis) => (
{emojis.name}
{Array.isArray(emojis.aliases) ? emojis.aliases.join(', ') : emojis.aliases}
))}
>
)}
{isSuccess && data && data.emojis.length === 0 && }
{isError && (
{t('Something_went_wrong')}
refetch()}>{t('Reload_page')}
)}
>
);
};
export default CustomEmoji;