fix: check friendship

This commit is contained in:
cha0s 2020-12-13 02:23:13 -06:00
parent f011adddfb
commit 5de08cf49d

View File

@ -1,5 +1,6 @@
import './index.scss'; import './index.scss';
import {push} from 'connected-react-router';
import React, {useRef} from 'react'; import React, {useRef} from 'react';
import {useDispatch, useSelector} from 'react-redux'; import {useDispatch, useSelector} from 'react-redux';
import {v4 as uuidv4} from 'uuid'; import {v4 as uuidv4} from 'uuid';
@ -10,7 +11,12 @@ import {
inputText, inputText,
submitMessage, submitMessage,
} from '@reddichat/chat/client'; } from '@reddichat/chat/client';
import {userSelector} from '@reddichat/user/client'; import {
friendshipSelector,
userSelector,
redditUsernameSelector,
usernamesSelector,
} from '@reddichat/user/client';
import useChannel from 'hooks/useChannel'; import useChannel from 'hooks/useChannel';
@ -18,9 +24,29 @@ export default function ChatSubmitMessage() {
const channel = useChannel(); const channel = useChannel();
const dispatch = useDispatch(); const dispatch = useDispatch();
const $form = useRef(null); const $form = useRef(null);
const redditUsername = useSelector(redditUsernameSelector);
const user = useSelector(userSelector); const user = useSelector(userSelector);
const usernames = useSelector(usernamesSelector);
const text = useSelector((state) => inputChannelSelector(state, channel)); const text = useSelector((state) => inputChannelSelector(state, channel));
const setText = (text) => dispatch(inputText({channel, text})); const setText = (text) => dispatch(inputText({channel, text}));
const friendship = useSelector(friendshipSelector);
const areNotFriends = 'r' !== channel.type && !friendship.find(({addeeId, adderId, status}) => {
const addeeName = usernames[addeeId];
const adderName = usernames[adderId];
if (
(redditUsername === addeeName && channel.name === adderName)
|| (redditUsername === adderName && channel.name === addeeName)
) {
if ('active' === status) {
return true;
}
}
return false;
});
if (areNotFriends) {
dispatch(push('/chat'));
return null;
}
return ( return (
<div className="chat--messageSubmit"> <div className="chat--messageSubmit">
<form <form