From 710f0f1e01b0b07b6b91897b46588baa6617fc2e Mon Sep 17 00:00:00 2001 From: dank074 Date: Tue, 26 Oct 2021 00:40:14 -0500 Subject: [PATCH] added user reporting and issue handling --- .../handlers/RoomWidgetInfostandHandler.ts | 2 + src/events/help/HelpReportUserEvent.ts | 9 +-- src/views/help/HelpView.scss | 2 +- .../help/views/SelectReportedChatsView.tsx | 21 ++++- .../help/views/SelectReportedUserView.tsx | 18 ++++- src/views/help/views/SelectTopicView.tsx | 41 ++++++---- src/views/mod-tools/ModToolsView.scss | 13 +--- .../mod-tools/common/IssueCategoryNames.ts | 35 +++++++++ .../views/tickets/ModToolsTicketView.scss | 11 +++ .../views/tickets/ModToolsTicketsView.tsx | 37 ++++++++- .../tickets/issue-info/CfhChatlogView.tsx | 37 +++++++++ .../issue-info/CfhChatlogView.types.ts | 5 ++ .../tickets/issue-info/IssueInfoView.tsx | 72 +++++++++++++++++ .../tickets/issue-info/IssueInfoView.types.ts | 5 ++ .../my-issues/ModToolsMyIssuesTabView.tsx | 78 +++++++++---------- .../ModToolsMyIssuesTabView.types.ts | 1 + .../open-issues/ModToolsOpenIssuesTabView.tsx | 69 +++++++--------- .../ModToolsPickedIssuesTabView.tsx | 64 ++++++--------- 18 files changed, 350 insertions(+), 170 deletions(-) create mode 100644 src/views/mod-tools/common/IssueCategoryNames.ts create mode 100644 src/views/mod-tools/views/tickets/ModToolsTicketView.scss create mode 100644 src/views/mod-tools/views/tickets/issue-info/CfhChatlogView.tsx create mode 100644 src/views/mod-tools/views/tickets/issue-info/CfhChatlogView.types.ts create mode 100644 src/views/mod-tools/views/tickets/issue-info/IssueInfoView.tsx create mode 100644 src/views/mod-tools/views/tickets/issue-info/IssueInfoView.types.ts diff --git a/src/api/nitro/room/widgets/handlers/RoomWidgetInfostandHandler.ts b/src/api/nitro/room/widgets/handlers/RoomWidgetInfostandHandler.ts index e86aba4e..be1d8608 100644 --- a/src/api/nitro/room/widgets/handlers/RoomWidgetInfostandHandler.ts +++ b/src/api/nitro/room/widgets/handlers/RoomWidgetInfostandHandler.ts @@ -2,6 +2,7 @@ import { IFurnitureData, NitroEvent, ObjectDataFactory, PetFigureData, PetRespec import { GetNitroInstance, GetRoomEngine, GetSessionDataManager, IsOwnerOfFurniture } from '../../../..'; import { InventoryTradeRequestEvent, WiredSelectObjectEvent } from '../../../../../events'; import { FriendsSendFriendRequestEvent } from '../../../../../events/friends/FriendsSendFriendRequestEvent'; +import { HelpReportUserEvent } from '../../../../../events/help/HelpReportUserEvent'; import { dispatchUiEvent } from '../../../../../hooks/events'; import { SendMessageHook } from '../../../../../hooks/messages'; import { PetSupplementEnum } from '../../../../../views/room/widgets/avatar-info/common/PetSupplementEnum'; @@ -164,6 +165,7 @@ export class RoomWidgetInfostandHandler extends RoomWidgetHandler case RoomWidgetUserActionMessage.REPORT: return; case RoomWidgetUserActionMessage.REPORT_CFH_OTHER: + dispatchUiEvent(new HelpReportUserEvent(userId)); return; case RoomWidgetUserActionMessage.AMBASSADOR_ALERT_USER: this.container.roomSession.sendAmbassadorAlertMessage(userId); diff --git a/src/events/help/HelpReportUserEvent.ts b/src/events/help/HelpReportUserEvent.ts index 4af418af..b4711b76 100644 --- a/src/events/help/HelpReportUserEvent.ts +++ b/src/events/help/HelpReportUserEvent.ts @@ -5,23 +5,16 @@ export class HelpReportUserEvent extends HelpEvent public static REPORT_USER: string = 'HCE_HELP_CENTER_REPORT_USER'; private _reportedUserId: number; - private _reportedUsername: string; - constructor(userId: number, username: string) + constructor(userId: number) { super(HelpReportUserEvent.REPORT_USER); this._reportedUserId = userId; - this._reportedUsername = username; } public get reportedUserId(): number { return this._reportedUserId; } - - public get reportedUsername(): string - { - return this._reportedUsername; - } } diff --git a/src/views/help/HelpView.scss b/src/views/help/HelpView.scss index 927c1cdc..f7f513f8 100644 --- a/src/views/help/HelpView.scss +++ b/src/views/help/HelpView.scss @@ -1,5 +1,5 @@ .nitro-help { - height: 400px; + height: 430px; width: 300px; .index-image { diff --git a/src/views/help/views/SelectReportedChatsView.tsx b/src/views/help/views/SelectReportedChatsView.tsx index 67658015..ce1080b1 100644 --- a/src/views/help/views/SelectReportedChatsView.tsx +++ b/src/views/help/views/SelectReportedChatsView.tsx @@ -45,14 +45,25 @@ export const SelectReportedChatsView: FC<{}> = props => setHelpReportState(reportState); }, [helpReportState, selectedChats, setHelpReportState]); + + const back = useCallback(() => + { + const reportState = Object.assign({}, helpReportState); + reportState.currentStep = --reportState.currentStep; + setHelpReportState(reportState); + }, [helpReportState, setHelpReportState]); return ( <>

{LocalizeText('help.emergency.chat_report.subtitle')}

-
{LocalizeText('help.emergency.chat_report.description')}
+ { userChats.length > 0 && +
{LocalizeText('help.emergency.chat_report.description')}
+ }
- + { + (userChats.length === 0) &&
{LocalizeText('help.cfh.error.no_user_data')}
+ } { userChats.length > 0 && <> @@ -65,7 +76,11 @@ export const SelectReportedChatsView: FC<{}> = props => ) })} - + +
+ + +
} diff --git a/src/views/help/views/SelectReportedUserView.tsx b/src/views/help/views/SelectReportedUserView.tsx index 456558f6..7f9aefdb 100644 --- a/src/views/help/views/SelectReportedUserView.tsx +++ b/src/views/help/views/SelectReportedUserView.tsx @@ -1,6 +1,6 @@ import { RoomObjectType } from '@nitrots/nitro-renderer'; import { FC, useCallback, useMemo, useState } from 'react'; -import { LocalizeText } from '../../../api'; +import { GetSessionDataManager, LocalizeText } from '../../../api'; import { NitroCardGridItemView, NitroCardGridView } from '../../../layout'; import { GetChatHistory } from '../../chat-history/common/GetChatHistory'; import { ChatEntryType } from '../../chat-history/context/ChatHistoryContext.types'; @@ -19,7 +19,7 @@ export const SelectReportedUserView: FC<{}> = props => GetChatHistory().chats .forEach(chat => { - if((chat.type === ChatEntryType.TYPE_CHAT) && (chat.entityType === RoomObjectType.USER))//todo: remove own chats + if((chat.type === ChatEntryType.TYPE_CHAT) && (chat.entityType === RoomObjectType.USER) && (chat.entityId !== GetSessionDataManager().userId)) { if(!users.has(chat.entityId)) { @@ -47,6 +47,13 @@ export const SelectReportedUserView: FC<{}> = props => else setSelectedUserId(userId); }, [selectedUserId]); + const back = useCallback(() => + { + const reportState = Object.assign({}, helpReportState); + reportState.currentStep = --reportState.currentStep; + setHelpReportState(reportState); + }, [helpReportState, setHelpReportState]); + return ( <>
@@ -63,14 +70,17 @@ export const SelectReportedUserView: FC<{}> = props => {availableUsers.map((user, index) => { return ( - selectUser(user.id)} itemActive={( selectedUserId === user.id)}> + selectUser(user.id)} itemActive={(selectedUserId === user.id)}> ) })} - +
+ + +
} diff --git a/src/views/help/views/SelectTopicView.tsx b/src/views/help/views/SelectTopicView.tsx index da0dec3b..654f6cc3 100644 --- a/src/views/help/views/SelectTopicView.tsx +++ b/src/views/help/views/SelectTopicView.tsx @@ -6,8 +6,8 @@ import { useHelpContext } from '../context/HelpContext'; export const SelectTopicView: FC<{}> = props => { const { helpReportState = null, setHelpReportState = null } = useHelpContext(); - const [ selectedCategory, setSelectedCategory ] = useState(-1); - const [ selectedTopic, setSelectedTopic ] = useState(-1); + const [selectedCategory, setSelectedCategory] = useState(-1); + const [selectedTopic, setSelectedTopic] = useState(-1); const cfhCategories = useMemo(() => { @@ -17,7 +17,7 @@ export const SelectTopicView: FC<{}> = props => const submitTopic = useCallback(() => { if(selectedCategory < 0) return; - if(selectedTopic < 0 ) return; + if(selectedTopic < 0) return; const reportState = Object.assign({}, helpReportState); reportState.cfhCategory = selectedCategory; @@ -25,29 +25,40 @@ export const SelectTopicView: FC<{}> = props => reportState.currentStep = 4; setHelpReportState(reportState); }, [cfhCategories, helpReportState, selectedCategory, selectedTopic, setHelpReportState]); - + + const back = useCallback(() => + { + const reportState = Object.assign({}, helpReportState); + reportState.currentStep = --reportState.currentStep; + setHelpReportState(reportState); + }, [helpReportState, setHelpReportState]); + return ( <>

{LocalizeText('help.emergency.chat_report.subtitle')}

{LocalizeText('help.cfh.pick.topic')}
-
- { (selectedCategory < 0) && - cfhCategories.map((category, index) => +
+ {(selectedCategory < 0) && + cfhCategories.map((category, index) => { return }) - } - { (selectedCategory >= 0 ) && - cfhCategories[selectedCategory].topics.map((topic, index) => - { - return - }) - } + } + {(selectedCategory >= 0) && + cfhCategories[selectedCategory].topics.map((topic, index) => + { + return + }) + } +
+ +
+ +
- ); } diff --git a/src/views/mod-tools/ModToolsView.scss b/src/views/mod-tools/ModToolsView.scss index 58b133ef..e8fb9e18 100644 --- a/src/views/mod-tools/ModToolsView.scss +++ b/src/views/mod-tools/ModToolsView.scss @@ -1,20 +1,9 @@ .nitro-mod-tools { width: 200px; - - -} - -.nitro-mod-tools-tickets -{ - width: 400px; - - .issues - { - height: 200px; - } } @import './views/room/room-tools/ModToolsRoomView'; @import './views/chatlog/ChatlogView'; @import './views/user/user-info/ModToolsUserView'; @import './views/user/user-room-visits/ModToolsUserRoomVisitsView'; +@import './views/tickets/ModToolsTicketView'; diff --git a/src/views/mod-tools/common/IssueCategoryNames.ts b/src/views/mod-tools/common/IssueCategoryNames.ts new file mode 100644 index 00000000..bb1ca2c5 --- /dev/null +++ b/src/views/mod-tools/common/IssueCategoryNames.ts @@ -0,0 +1,35 @@ +export const getSourceName = (categoryId: number): string => +{ + switch(categoryId) + { + case 1: + case 2: + return 'Normal'; + case 3: + return 'Automatic'; + case 4: + return 'Automatic IM'; + case 5: + return 'Guide System'; + case 6: + return 'IM'; + case 7: + return 'Room'; + case 8: + return 'Panic'; + case 9: + return 'Guardian'; + case 10: + return 'Automatic Helper'; + case 11: + return 'Discussion'; + case 12: + return 'Selfie'; + case 14: + return 'Photo'; + case 15: + return 'Ambassador'; + default: + return 'Unknown'; + } +} diff --git a/src/views/mod-tools/views/tickets/ModToolsTicketView.scss b/src/views/mod-tools/views/tickets/ModToolsTicketView.scss new file mode 100644 index 00000000..f2459483 --- /dev/null +++ b/src/views/mod-tools/views/tickets/ModToolsTicketView.scss @@ -0,0 +1,11 @@ +.nitro-mod-tools-tickets +{ + width: 400px; + height: 200px; +} + +.nitro-mod-tools-handle-issue +{ + width: 400px; + height: 300px; +} diff --git a/src/views/mod-tools/views/tickets/ModToolsTicketsView.tsx b/src/views/mod-tools/views/tickets/ModToolsTicketsView.tsx index 2a542f13..e2ccea90 100644 --- a/src/views/mod-tools/views/tickets/ModToolsTicketsView.tsx +++ b/src/views/mod-tools/views/tickets/ModToolsTicketsView.tsx @@ -3,6 +3,7 @@ import { FC, useCallback, useMemo, useState } from 'react'; import { GetSessionDataManager } from '../../../../api'; import { NitroCardContentView, NitroCardHeaderView, NitroCardTabsItemView, NitroCardTabsView, NitroCardView } from '../../../../layout'; import { useModToolsContext } from '../../context/ModToolsContext'; +import { IssueInfoView } from './issue-info/IssueInfoView'; import { ModToolsTicketsViewProps } from './ModToolsTicketsView.types'; import { ModToolsMyIssuesTabView } from './my-issues/ModToolsMyIssuesTabView'; import { ModToolsOpenIssuesTabView } from './open-issues/ModToolsOpenIssuesTabView'; @@ -20,11 +21,11 @@ export const ModToolsTicketsView: FC = props => const { modToolsState = null } = useModToolsContext(); const { tickets= null } = modToolsState; const [ currentTab, setCurrentTab ] = useState(0); + const [ issueInfoWindows, setIssueInfoWindows ] = useState([]); const openIssues = useMemo(() => { if(!tickets) return []; - console.log(tickets); return tickets.filter(issue => issue.state === IssueMessageData.STATE_OPEN); }, [tickets]); @@ -43,18 +44,44 @@ export const ModToolsTicketsView: FC = props => return tickets.filter(issue => issue.state === IssueMessageData.STATE_PICKED); }, [tickets]); + const onIssueInfoClosed = useCallback((issueId: number) => + { + const indexOfValue = issueInfoWindows.indexOf(issueId); + + if(indexOfValue === -1) return; + + const newValues = Array.from(issueInfoWindows); + newValues.splice(indexOfValue, 1); + setIssueInfoWindows(newValues); + }, [issueInfoWindows]); + + const onIssueHandleClicked = useCallback((issueId: number) => + { + if(issueInfoWindows.indexOf(issueId) === -1) + { + const newValues = Array.from(issueInfoWindows); + newValues.push(issueId); + setIssueInfoWindows(newValues); + } + else + { + onIssueInfoClosed(issueId); + } + }, [issueInfoWindows, onIssueInfoClosed]); + const CurrentTabComponent = useCallback(() => { switch(currentTab) { case 0: return ; - case 1: return ; + case 1: return ; case 2: return ; default: return null; } - }, [currentTab, myIssues, openIssues, pickedIssues]); + }, [currentTab, myIssues, onIssueHandleClicked, openIssues, pickedIssues]); return ( + <> @@ -71,5 +98,9 @@ export const ModToolsTicketsView: FC = props =>
+ { + issueInfoWindows && issueInfoWindows.map(issueId => ) + } + ); } diff --git a/src/views/mod-tools/views/tickets/issue-info/CfhChatlogView.tsx b/src/views/mod-tools/views/tickets/issue-info/CfhChatlogView.tsx new file mode 100644 index 00000000..fdb4c28e --- /dev/null +++ b/src/views/mod-tools/views/tickets/issue-info/CfhChatlogView.tsx @@ -0,0 +1,37 @@ +import { CfhChatlogData, CfhChatlogEvent, GetCfhChatlogMessageComposer } from '@nitrots/nitro-renderer'; +import { FC, useCallback, useEffect, useState } from 'react'; +import { CreateMessageHook, SendMessageHook } from '../../../../../hooks'; +import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../../layout'; +import { ChatlogView } from '../../chatlog/ChatlogView'; +import { CfhChatlogViewProps } from './CfhChatlogView.types'; + +export const CfhChatlogView: FC = props => +{ + const { onCloseClick = null, issueId = null } = props; + const [ chatlogData, setChatlogData ] = useState(null); + + useEffect(() => + { + SendMessageHook(new GetCfhChatlogMessageComposer(issueId)); + }, [issueId]); + + const onCfhChatlogEvent = useCallback((event: CfhChatlogEvent) => + { + const parser = event.getParser(); + + if(!parser || parser.data.issueId !== issueId) return; + + setChatlogData(parser.data); + }, [issueId]); + + CreateMessageHook(CfhChatlogEvent, onCfhChatlogEvent); + + return ( + + + + { chatlogData && } + + + ); +} diff --git a/src/views/mod-tools/views/tickets/issue-info/CfhChatlogView.types.ts b/src/views/mod-tools/views/tickets/issue-info/CfhChatlogView.types.ts new file mode 100644 index 00000000..c40c18ad --- /dev/null +++ b/src/views/mod-tools/views/tickets/issue-info/CfhChatlogView.types.ts @@ -0,0 +1,5 @@ +export interface CfhChatlogViewProps +{ + issueId: number; + onCloseClick(): void; +} diff --git a/src/views/mod-tools/views/tickets/issue-info/IssueInfoView.tsx b/src/views/mod-tools/views/tickets/issue-info/IssueInfoView.tsx new file mode 100644 index 00000000..61a9784a --- /dev/null +++ b/src/views/mod-tools/views/tickets/issue-info/IssueInfoView.tsx @@ -0,0 +1,72 @@ +import { CloseIssuesMessageComposer, ReleaseIssuesMessageComposer } from '@nitrots/nitro-renderer'; +import { FC, useCallback, useMemo, useState } from 'react'; +import { LocalizeText } from '../../../../../api'; +import { ModToolsOpenUserInfoEvent } from '../../../../../events/mod-tools/ModToolsOpenUserInfoEvent'; +import { dispatchUiEvent, SendMessageHook } from '../../../../../hooks'; +import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../../../../layout'; +import { getSourceName } from '../../../common/IssueCategoryNames'; +import { useModToolsContext } from '../../../context/ModToolsContext'; +import { CfhChatlogView } from './CfhChatlogView'; +import { IssueInfoViewProps } from './IssueInfoView.types'; + +export const IssueInfoView: FC = props => +{ + const { issueId = null, onIssueInfoClosed = null } = props; + const { modToolsState = null } = useModToolsContext(); + const { tickets= null } = modToolsState; + const [ cfhChatlogOpen, setcfhChatlogOpen ] = useState(false); + + const ticket = useMemo(() => + { + return tickets.find( issue => issue.issueId === issueId); + }, [issueId, tickets]); + + const onReleaseIssue = useCallback((issueId: number) => + { + SendMessageHook(new ReleaseIssuesMessageComposer([issueId])); + onIssueInfoClosed(issueId); + }, [onIssueInfoClosed]); + + const openUserInfo = useCallback((userId: number) => + { + dispatchUiEvent(new ModToolsOpenUserInfoEvent(userId)); + }, []); + + const closeIssue = useCallback((resolutionType: number) => + { + SendMessageHook(new CloseIssuesMessageComposer([issueId], resolutionType)); + onIssueInfoClosed(issueId) + }, [issueId, onIssueInfoClosed]); + + return ( + <> + + onIssueInfoClosed(issueId)} /> + +
+
+

Issue Information

+
Source: {getSourceName(ticket.categoryId)}
+
Category: {LocalizeText('help.cfh.topic.' + ticket.reportedCategoryId)}
+
Description: {ticket.message}
+
Caller:
+
Reported User:
+
+
+
+ +
+
+ + + + +
+
+
+
+
+ { cfhChatlogOpen && setcfhChatlogOpen(false) }/>} + + ); +} diff --git a/src/views/mod-tools/views/tickets/issue-info/IssueInfoView.types.ts b/src/views/mod-tools/views/tickets/issue-info/IssueInfoView.types.ts new file mode 100644 index 00000000..1b28d803 --- /dev/null +++ b/src/views/mod-tools/views/tickets/issue-info/IssueInfoView.types.ts @@ -0,0 +1,5 @@ +export interface IssueInfoViewProps +{ + issueId: number; + onIssueInfoClosed(issueId: number): void; +} diff --git a/src/views/mod-tools/views/tickets/my-issues/ModToolsMyIssuesTabView.tsx b/src/views/mod-tools/views/tickets/my-issues/ModToolsMyIssuesTabView.tsx index 63ab7546..1a3fcde3 100644 --- a/src/views/mod-tools/views/tickets/my-issues/ModToolsMyIssuesTabView.tsx +++ b/src/views/mod-tools/views/tickets/my-issues/ModToolsMyIssuesTabView.tsx @@ -1,53 +1,45 @@ -import { FC } from 'react'; -import { AutoSizer, List, ListRowProps, ListRowRenderer } from 'react-virtualized'; +import { ReleaseIssuesMessageComposer } from '@nitrots/nitro-renderer'; +import { FC, useCallback } from 'react'; +import { SendMessageHook } from '../../../../../hooks'; import { ModToolsMyIssuesTabViewProps } from './ModToolsMyIssuesTabView.types'; export const ModToolsMyIssuesTabView: FC = props => { - const { myIssues = null } = props; - - const RowRenderer: ListRowRenderer = (props: ListRowProps) => - { - const item = myIssues[props.index]; - - return ( -
-
{item.categoryId}
-
{item.reportedUserName}
-
{item.getOpenTime(new Date().getTime())}
-
- -
-
- ); - }; + const { myIssues = null, onIssueHandleClick = null } = props; + + const onReleaseIssue = useCallback((issueId: number) => + { + SendMessageHook(new ReleaseIssuesMessageComposer([issueId])); + }, []); + return ( <> -
-
Type
-
Room/Player
-
Opened
-
-
-
- - {({ height, width }) => - { - return ( - - ) - } - } - -
+ + + + + + + + + + + + {myIssues.map(issue => + { + return ( + + + + + + + ) + }) + } + +
TypeRoom/PlayerOpened
{issue.categoryId}{issue.reportedUserName}{new Date(Date.now() - issue.issueAgeInMilliseconds).toLocaleTimeString()}
); } diff --git a/src/views/mod-tools/views/tickets/my-issues/ModToolsMyIssuesTabView.types.ts b/src/views/mod-tools/views/tickets/my-issues/ModToolsMyIssuesTabView.types.ts index 15935fc9..6d03fbf8 100644 --- a/src/views/mod-tools/views/tickets/my-issues/ModToolsMyIssuesTabView.types.ts +++ b/src/views/mod-tools/views/tickets/my-issues/ModToolsMyIssuesTabView.types.ts @@ -3,4 +3,5 @@ import { IssueMessageData } from '@nitrots/nitro-renderer'; export interface ModToolsMyIssuesTabViewProps { myIssues: IssueMessageData[]; + onIssueHandleClick(issueId: number): void; } diff --git a/src/views/mod-tools/views/tickets/open-issues/ModToolsOpenIssuesTabView.tsx b/src/views/mod-tools/views/tickets/open-issues/ModToolsOpenIssuesTabView.tsx index 3452aba5..4f8bb6d6 100644 --- a/src/views/mod-tools/views/tickets/open-issues/ModToolsOpenIssuesTabView.tsx +++ b/src/views/mod-tools/views/tickets/open-issues/ModToolsOpenIssuesTabView.tsx @@ -1,53 +1,42 @@ -import { FC } from 'react'; -import { AutoSizer, List, ListRowProps, ListRowRenderer } from 'react-virtualized'; +import { PickIssuesMessageComposer } from '@nitrots/nitro-renderer'; +import { FC, useCallback } from 'react'; +import { SendMessageHook } from '../../../../../hooks'; import { ModToolsOpenIssuesTabViewProps } from './ModToolsOpenIssuesTabView.types'; export const ModToolsOpenIssuesTabView: FC = props => { const { openIssues = null } = props; - const RowRenderer: ListRowRenderer = (props: ListRowProps) => + const onPickIssue = useCallback((issueId: number) => { - const item = openIssues[props.index]; + SendMessageHook(new PickIssuesMessageComposer([issueId], false, 0, 'pick issue button')); + }, []); - return ( -
-
{item.categoryId}
-
{item.reportedUserName}
-
{item.getOpenTime(new Date().getTime())}
-
- -
-
- ); - }; - return ( <> -
-
Type
-
Room/Player
-
Opened
-
-
-
- - {({ height, width }) => - { - return ( - - ) - } - } - -
+ + + + + + + + + + + {openIssues.map(issue => + { + return ( + + + + + + ) + }) + } + +
TypeRoom/PlayerOpened
{issue.categoryId}{issue.reportedUserName}{new Date(Date.now() - issue.issueAgeInMilliseconds).toLocaleTimeString()}
); } diff --git a/src/views/mod-tools/views/tickets/picked-issues/ModToolsPickedIssuesTabView.tsx b/src/views/mod-tools/views/tickets/picked-issues/ModToolsPickedIssuesTabView.tsx index dc7f79b1..988a0fd9 100644 --- a/src/views/mod-tools/views/tickets/picked-issues/ModToolsPickedIssuesTabView.tsx +++ b/src/views/mod-tools/views/tickets/picked-issues/ModToolsPickedIssuesTabView.tsx @@ -1,53 +1,35 @@ import { FC } from 'react'; -import { AutoSizer, List, ListRowProps, ListRowRenderer } from 'react-virtualized'; import { ModToolsPickedIssuesTabViewProps } from './ModToolsPickedIssuesTabView.types'; export const ModToolsPickedIssuesTabView: FC = props => { const { pickedIssues = null } = props; - - const RowRenderer: ListRowRenderer = (props: ListRowProps) => - { - const item = pickedIssues[props.index]; - - return ( -
-
{item.categoryId}
-
{item.reportedUserName}
-
{item.getOpenTime(new Date().getTime())}
-
- {item.pickerUserName} -
-
- ); - }; return ( <> -
-
Type
-
Room/Player
-
Opened
-
Picker
-
-
- - {({ height, width }) => - { - return ( - - ) - } - } - -
+ + + + + + + + + + + {pickedIssues.map(issue => + { + return ( + + + + + + ) + }) + } + +
TypeRoom/PlayerOpenedPicker
{issue.categoryId}{issue.reportedUserName}{new Date(Date.now() - issue.issueAgeInMilliseconds).toLocaleTimeString()}{issue.pickerUserName}
); }