bill fix this again

This commit is contained in:
dank074 2021-10-20 22:32:44 -05:00
parent 5ad80cadca
commit cf17d152d4
4 changed files with 102 additions and 31 deletions

View File

@ -0,0 +1,67 @@
import { IssueInfoMessageEvent, ModeratorInitMessageEvent } from '@nitrots/nitro-renderer';
import { FC, useCallback } from 'react';
import { CreateMessageHook } from '../../hooks';
import { useModToolsContext } from './context/ModToolsContext';
import { ModToolsActions } from './reducers/ModToolsReducer';
export const ModToolsMessageHandler: FC<{}> = props =>
{
const { modToolsState = null, dispatchModToolsState = null } = useModToolsContext();
const { tickets= null } = modToolsState;
const onModeratorInitMessageEvent = useCallback((event: ModeratorInitMessageEvent) =>
{
const parser = event.getParser();
if(!parser) return;
const data = parser.data;
dispatchModToolsState({
type: ModToolsActions.SET_INIT_DATA,
payload: {
settings: data
}
});
dispatchModToolsState({
type: ModToolsActions.SET_TICKETS,
payload: {
tickets: data.issues
}
});
console.log(parser);
}, [dispatchModToolsState]);
const onIssueInfoMessageEvent = useCallback((event: IssueInfoMessageEvent) =>
{
const parser = event.getParser();
if(!parser) return;
const newTickets = tickets ? Array.from(tickets) : [];
const existingIndex = newTickets.findIndex( entry => entry.issueId === parser.issueData.issueId)
if(existingIndex > -1)
{
newTickets[existingIndex] = parser.issueData;
}
else
{
newTickets.push(parser.issueData);
}
dispatchModToolsState({
type: ModToolsActions.SET_TICKETS,
payload: {
tickets: newTickets
}
})
}, [dispatchModToolsState, tickets]);
CreateMessageHook(ModeratorInitMessageEvent, onModeratorInitMessageEvent);
CreateMessageHook(IssueInfoMessageEvent, onIssueInfoMessageEvent);
return null;
}

View File

@ -1,4 +1,4 @@
import { ModeratorInitMessageEvent, RoomEngineEvent, RoomEngineObjectEvent, RoomObjectCategory } from '@nitrots/nitro-renderer';
import { RoomEngineEvent, RoomEngineObjectEvent, RoomObjectCategory } from '@nitrots/nitro-renderer';
import { FC, useCallback, useReducer, useState } from 'react';
import { GetRoomSession } from '../../api';
import { ModToolsEvent } from '../../events/mod-tools/ModToolsEvent';
@ -6,11 +6,11 @@ import { ModToolsOpenRoomChatlogEvent } from '../../events/mod-tools/ModToolsOpe
import { ModToolsOpenRoomInfoEvent } from '../../events/mod-tools/ModToolsOpenRoomInfoEvent';
import { ModToolsOpenUserChatlogEvent } from '../../events/mod-tools/ModToolsOpenUserChatlogEvent';
import { ModToolsOpenUserInfoEvent } from '../../events/mod-tools/ModToolsOpenUserInfoEvent';
import { CreateMessageHook } from '../../hooks';
import { useRoomEngineEvent } from '../../hooks/events';
import { dispatchUiEvent, useUiEvent } from '../../hooks/events/ui/ui-event';
import { NitroCardContentView, NitroCardHeaderView, NitroCardView } from '../../layout';
import { ModToolsContextProvider } from './context/ModToolsContext';
import { ModToolsMessageHandler } from './ModToolsMessageHandler';
import { ModToolsViewProps } from './ModToolsView.types';
import { initialModTools, ModToolsActions, ModToolsReducer } from './reducers/ModToolsReducer';
import { ISelectedUser } from './utils/ISelectedUser';
@ -24,7 +24,7 @@ export const ModToolsView: FC<ModToolsViewProps> = props =>
{
const [ isVisible, setIsVisible ] = useState(false);
const [ modToolsState, dispatchModToolsState ] = useReducer(ModToolsReducer, initialModTools);
const { currentRoomId = null, openRooms = null, openRoomChatlogs = null, openUserChatlogs = null, openUserInfo = null } = modToolsState;
const { currentRoomId = null, openRooms = null, openRoomChatlogs = null, openUserChatlogs = null, openUserInfo = null, tickets = null } = modToolsState;
const [ selectedUser, setSelectedUser] = useState<ISelectedUser>(null);
const [ isTicketsVisible, setIsTicketsVisible ] = useState(false);
@ -155,25 +155,6 @@ export const ModToolsView: FC<ModToolsViewProps> = props =>
useRoomEngineEvent(RoomEngineObjectEvent.SELECTED, onRoomEngineObjectEvent);
const onModeratorInitMessageEvent = useCallback((event: ModeratorInitMessageEvent) =>
{
const parser = event.getParser();
if(!parser) return;
const data = parser.data;
dispatchModToolsState({
type: ModToolsActions.SET_INIT_DATA,
payload: {
settings: data
}
});
console.log(parser);
}, []);
CreateMessageHook(ModeratorInitMessageEvent, onModeratorInitMessageEvent);
const handleClick = useCallback((action: string, value?: string) =>
{
if(!action) return;
@ -299,6 +280,7 @@ export const ModToolsView: FC<ModToolsViewProps> = props =>
return (
<ModToolsContextProvider value={ { modToolsState, dispatchModToolsState } }>
<ModToolsMessageHandler />
{ isVisible &&
<NitroCardView uniqueKey="mod-tools" className="nitro-mod-tools" simple={ false }>
<NitroCardHeaderView headerText={ 'Mod Tools' } onCloseClick={ event => setIsVisible(false) } />

View File

@ -1,4 +1,4 @@
import { ModeratorInitData } from '@nitrots/nitro-renderer';
import { IssueMessageData, ModeratorInitData } from '@nitrots/nitro-renderer';
import { Reducer } from 'react';
export interface IModToolsState
@ -9,6 +9,7 @@ export interface IModToolsState
openRoomChatlogs: number[];
openUserInfo: number[];
openUserChatlogs: number[];
tickets: IssueMessageData[]
}
export interface IModToolsAction
@ -21,6 +22,7 @@ export interface IModToolsAction
openRoomChatlogs?: number[];
openUserInfo?: number[];
openUserChatlogs?: number[];
tickets?: IssueMessageData[];
}
}
@ -32,6 +34,7 @@ export class ModToolsActions
public static SET_OPEN_USERINFO: string = 'MTA_SET_OPEN_USERINFO';
public static SET_OPEN_ROOM_CHATLOGS: string = 'MTA_SET_OPEN_CHATLOGS';
public static SET_OPEN_USER_CHATLOGS: string = 'MTA_SET_OPEN_USER_CHATLOGS';
public static SET_TICKETS: string = 'MTA_SET_TICKETS';
public static RESET_STATE: string = 'MTA_RESET_STATE';
}
@ -41,7 +44,8 @@ export const initialModTools: IModToolsState = {
openRooms: null,
openRoomChatlogs: null,
openUserChatlogs: null,
openUserInfo: null
openUserInfo: null,
tickets: null
};
export const ModToolsReducer: Reducer<IModToolsState, IModToolsAction> = (state, action) =>
@ -78,6 +82,11 @@ export const ModToolsReducer: Reducer<IModToolsState, IModToolsAction> = (state,
return { ...state, openUserChatlogs };
}
case ModToolsActions.SET_TICKETS: {
const tickets = (action.payload.tickets || state.tickets || null);
return { ...state, tickets };
}
case ModToolsActions.RESET_STATE: {
return { ...initialModTools };
}

View File

@ -1,5 +1,6 @@
import { IssueMessageData } from '@nitrots/nitro-renderer';
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 { ModToolsTicketsViewProps } from './ModToolsTicketsView.types';
@ -15,15 +16,29 @@ export const ModToolsTicketsView: FC<ModToolsTicketsViewProps> = props =>
{
const { onCloseClick = null } = props;
const { modToolsState = null } = useModToolsContext();
const { settings = null } = modToolsState;
const { tickets= null } = modToolsState;
const [ currentTab, setCurrentTab ] = useState<number>(0);
const openIssues = useMemo(() =>
{
if(!settings) return [];
if(!tickets) return [];
return settings.issues.filter(issue => issue.state === IssueMessageData.STATE_OPEN)
}, [settings]);
return tickets.filter(issue => issue.state === IssueMessageData.STATE_OPEN);
}, [tickets]);
const myIssues = useMemo(() =>
{
if(!tickets) return [];
return tickets.filter(issue => (issue.state === IssueMessageData.STATE_PICKED) && (issue.pickerUserId === GetSessionDataManager().userId));
}, [tickets]);
const pickedIssues = useMemo(() =>
{
if(!tickets) return [];
return tickets.filter(issue => issue.state === IssueMessageData.STATE_PICKED);
}, [tickets]);
const CurrentTabComponent = useCallback(() =>
{
@ -34,8 +49,6 @@ export const ModToolsTicketsView: FC<ModToolsTicketsViewProps> = props =>
}
}, [currentTab, openIssues]);
console.log(settings);
return (
<NitroCardView className="nitro-mod-tools-tickets" simple={ false }>
<NitroCardHeaderView headerText={ 'Tickets' } onCloseClick={ onCloseClick } />
@ -49,7 +62,7 @@ export const ModToolsTicketsView: FC<ModToolsTicketsViewProps> = props =>
}) }
</NitroCardTabsView>
<div className="p-2">
{settings && <CurrentTabComponent /> }
<CurrentTabComponent />
</div>
</NitroCardContentView>
</NitroCardView>