Make testing for moderator state centralized in User class
This commit is contained in:
@@ -17,6 +17,7 @@ import { ScrollToBotBtn } from './ScrollToBotBtn';
|
||||
import { ChatActionMessage } from '../ChatActionMessage/ChatActionMessage';
|
||||
import { ChatSocialMessage } from '../ChatSocialMessage/ChatSocialMessage';
|
||||
import { ChatNameChangeMessage } from '../ChatNameChangeMessage/ChatNameChangeMessage';
|
||||
import { User } from '../../../interfaces/user.model';
|
||||
|
||||
export type ChatContainerProps = {
|
||||
messages: ChatMessage[];
|
||||
@@ -75,15 +76,11 @@ function shouldCollapseMessages(
|
||||
}
|
||||
|
||||
function checkIsModerator(message: ChatMessage | ConnectedClientInfoEvent) {
|
||||
const {
|
||||
user: { scopes },
|
||||
} = message;
|
||||
const { user } = message;
|
||||
|
||||
if (!scopes || scopes.length === 0) {
|
||||
return false;
|
||||
}
|
||||
const u = new User(user);
|
||||
|
||||
return scopes.includes('MODERATOR');
|
||||
return u.isModerator();
|
||||
}
|
||||
|
||||
export const ChatContainer: FC<ChatContainerProps> = ({
|
||||
|
||||
@@ -140,15 +140,3 @@ export function emojify(HTML, emojiList) {
|
||||
}
|
||||
return HTML;
|
||||
}
|
||||
|
||||
// MODERATOR UTILS
|
||||
export function checkIsModerator(message) {
|
||||
const { user } = message;
|
||||
const { scopes } = user;
|
||||
|
||||
if (!scopes || scopes.length === 0) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return scopes.includes('MODERATOR');
|
||||
}
|
||||
|
||||
@@ -292,13 +292,14 @@ export const ClientConfigStore: FC = () => {
|
||||
setChatAuthenticated,
|
||||
setCurrentUser,
|
||||
);
|
||||
if (
|
||||
!hasBeenModeratorNotified &&
|
||||
(message as ChatEvent).user?.scopes.includes('MODERATOR')
|
||||
) {
|
||||
setChatMessages(currentState => [...currentState, message as ChatEvent]);
|
||||
hasBeenModeratorNotified = true;
|
||||
if (message as ChatEvent) {
|
||||
const m = new ChatEvent(message);
|
||||
if (!hasBeenModeratorNotified && m.user?.isModerator()) {
|
||||
setChatMessages(currentState => [...currentState, message as ChatEvent]);
|
||||
hasBeenModeratorNotified = true;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
case MessageType.CHAT:
|
||||
setChatMessages(currentState => [...currentState, message as ChatEvent]);
|
||||
|
||||
Reference in New Issue
Block a user