import { CloseIssuesMessageComposer, ReleaseIssuesMessageComposer } from '@nitrots/nitro-renderer';
import { FC, useState } from 'react';
import { FaBan, FaCheck, FaCommentDots, FaExternalLinkAlt, FaSignOutAlt, FaTrashAlt } from 'react-icons/fa';
import { GetIssueCategoryName, LocalizeText, SendMessageComposer } from '../../../../api';
import { Button, DraggableWindowPosition, NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../common';
import { useModTools } from '../../../../hooks';
import { CfhChatlogView } from './CfhChatlogView';
interface IssueInfoViewProps
{
issueId: number;
onIssueInfoClosed(issueId: number): void;
}
const Field: FC<{ label: string; children: React.ReactNode }> = ({ label, children }) => (
<>
{ label }
{ children || - }
>
);
export const ModToolsIssueInfoView: FC = props =>
{
const { issueId = null, onIssueInfoClosed = null } = props;
const [ cfhChatlogOpen, setCfhChatlogOpen ] = useState(false);
const { tickets = [], openUserInfo = null } = useModTools();
const ticket = tickets.find(issue => (issue.issueId === issueId));
const releaseIssue = () =>
{
SendMessageComposer(new ReleaseIssuesMessageComposer([ issueId ]));
onIssueInfoClosed(issueId);
};
const closeIssue = (resolutionType: number) =>
{
SendMessageComposer(new CloseIssuesMessageComposer([ issueId ], resolutionType));
onIssueInfoClosed(issueId);
};
if(!ticket) return null;
return (
<>
onIssueInfoClosed(issueId) } />
{/* Issue header */}
{ LocalizeText('modtools.tickets.issue.label', [ 'issueId' ], [ issueId.toString() ]) }
{ GetIssueCategoryName(ticket.categoryId) }
{ LocalizeText('help.cfh.topic.' + ticket.reportedCategoryId) }
{/* Details */}
{ LocalizeText('modtools.tickets.issue.details') }
{ GetIssueCategoryName(ticket.categoryId) }
{ LocalizeText('help.cfh.topic.' + ticket.reportedCategoryId) }
{ ticket.message }
{/* Tools */}
{/* Resolution buttons */}
{ LocalizeText('modtools.tickets.issue.resolve.heading') }
{ cfhChatlogOpen &&
setCfhChatlogOpen(false) } /> }
>
);
};