Make testing for moderator state centralized in User class

This commit is contained in:
Gabe Kangas
2023-03-03 21:54:01 -08:00
parent e5dee5d258
commit c4f057eded
6 changed files with 59 additions and 27 deletions

View File

@@ -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> = ({

View File

@@ -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');
}

View File

@@ -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]);