From a159c049df64e1b7bf82301ae6ad026965bbcd58 Mon Sep 17 00:00:00 2001 From: cha0s Date: Wed, 9 Dec 2020 04:44:56 -0600 Subject: [PATCH] flow --- app/.eslint.defaults.js | 1 + app/package.json | 4 +- app/src/react/components/app/index.jsx | 3 +- app/src/react/components/app/index.scss | 4 + app/src/react/components/chat/index.jsx | 3 +- app/src/react/components/chat/index.scss | 6 +- .../{chat--messages.jsx => index.jsx} | 27 +- .../{chat--messages.scss => index.scss} | 3 +- .../message/index.jsx} | 20 +- .../message/index.scss} | 2 +- .../message/markdown/expandos/index.js} | 0 .../message/markdown/expandos/index.scss} | 0 .../message/markdown/index.jsx} | 6 +- .../message/markdown/index.scss} | 2 +- .../messages/message/moderation/index.jsx | 43 +++ .../messages/message/moderation/index.scss | 11 + .../message/time/index.jsx} | 2 +- .../message/time/index.scss} | 0 .../components/chat/messages/submit/index.jsx | 73 +++++ .../chat/messages/submit/index.scss | 3 + app/yarn.lock | 280 +++++++++++++++++- packages/chat/package.json | 2 +- packages/chat/src/state.js | 2 +- packages/chat/yarn.lock | 7 +- 24 files changed, 455 insertions(+), 49 deletions(-) rename app/src/react/components/chat/messages/{chat--messages.jsx => index.jsx} (80%) rename app/src/react/components/chat/messages/{chat--messages.scss => index.scss} (94%) rename app/src/react/components/chat/{message/chat--message.jsx => messages/message/index.jsx} (75%) rename app/src/react/components/chat/{message/chat--message.scss => messages/message/index.scss} (97%) rename app/src/react/components/chat/{message/markdown/expandos/chat--messageMarkdownExpandos.js => messages/message/markdown/expandos/index.js} (100%) rename app/src/react/components/chat/{message/markdown/expandos/chat--messageMarkdownExpandos.scss => messages/message/markdown/expandos/index.scss} (100%) rename app/src/react/components/chat/{message/markdown/chat--messageMarkdown.jsx => messages/message/markdown/index.jsx} (78%) rename app/src/react/components/chat/{message/markdown/chat--messageMarkdown.scss => messages/message/markdown/index.scss} (91%) create mode 100644 app/src/react/components/chat/messages/message/moderation/index.jsx create mode 100644 app/src/react/components/chat/messages/message/moderation/index.scss rename app/src/react/components/chat/{message/time/chat--messageTime.jsx => messages/message/time/index.jsx} (95%) rename app/src/react/components/chat/{message/time/chat--messageTime.scss => messages/message/time/index.scss} (100%) create mode 100644 app/src/react/components/chat/messages/submit/index.jsx create mode 100644 app/src/react/components/chat/messages/submit/index.scss diff --git a/app/.eslint.defaults.js b/app/.eslint.defaults.js index f6304c2..2e945a8 100644 --- a/app/.eslint.defaults.js +++ b/app/.eslint.defaults.js @@ -1,6 +1,7 @@ const config = { globals: { __non_webpack_require__: true, + Event: true, process: true, window: true, }, diff --git a/app/package.json b/app/package.json index 5394e5c..e4830d1 100644 --- a/app/package.json +++ b/app/package.json @@ -38,8 +38,10 @@ "prop-types": "^15.7.2", "react": "^17.0.1", "react-hot-loader": "4.13.0", + "react-markdown": "^5.0.3", "react-redux": "^7.2.2", - "react-router-dom": "^5.2.0" + "react-router-dom": "^5.2.0", + "uuid": "^8.3.2" }, "devDependencies": { "@neutrinojs/airbnb": "^9.1.0", diff --git a/app/src/react/components/app/index.jsx b/app/src/react/components/app/index.jsx index 086211e..d970b25 100644 --- a/app/src/react/components/app/index.jsx +++ b/app/src/react/components/app/index.jsx @@ -1,5 +1,6 @@ import './index.scss'; +import classnames from 'classnames'; import {isAnonymousSelector} from '@reddichat/user/client'; import React, {useRef} from 'react'; import {useSelector} from 'react-redux'; @@ -38,7 +39,7 @@ const App = () => { }} />
+ {/*
{ const max = Math.min(window.innerWidth - (4 * 16), 25 * 16); diff --git a/app/src/react/components/chat/index.scss b/app/src/react/components/chat/index.scss index 9d77be0..607add4 100644 --- a/app/src/react/components/chat/index.scss +++ b/app/src/react/components/chat/index.scss @@ -3,9 +3,9 @@ .chat { display: flex; height: 100%; - left: 0; - position: absolute; - width: 100%; + // left: 0; + // position: absolute; + // width: 100%; &:not(.moving) { transition: 0.2s left; } diff --git a/app/src/react/components/chat/messages/chat--messages.jsx b/app/src/react/components/chat/messages/index.jsx similarity index 80% rename from app/src/react/components/chat/messages/chat--messages.jsx rename to app/src/react/components/chat/messages/index.jsx index 95ee695..d4b316e 100644 --- a/app/src/react/components/chat/messages/chat--messages.jsx +++ b/app/src/react/components/chat/messages/index.jsx @@ -1,4 +1,4 @@ -import './chat--messages.scss'; +import './index.scss'; import React, { useEffect, @@ -8,15 +8,15 @@ import React, { } from 'react'; import {useSelector} from 'react-redux'; -import {channelMessagesSelector} from '~/common/state/chat'; -import {blockedSelector} from '~/common/state/user'; +import {channelMessagesSelector} from '@reddichat/chat/client'; +import {blockedSelector} from '@reddichat/user/client'; -import useChannel from '~/client/hooks/useChannel'; +import useChannel from 'hooks/useChannel'; -import ChatMessage from './chat--message'; -import ChatSubmitMessage from './chat--submitMessage'; +import Message from './message'; +import Submit from './submit'; -export default function ChatMessages() { +export default function Messages() { const blocked = useSelector(blockedSelector); const channel = useChannel(); const $messages = useRef(null); @@ -48,15 +48,14 @@ export default function ChatMessages() { ? true : -1 === scrollTop || scrollTop + outerHeight >= scrollHeight; setIsAtBottom(isAtBottom); - if (isAtBottom) { - current?.scrollTo(0, scrollHeight); + if (isAtBottom && current) { + current.scrollTo(0, scrollHeight); } }, [current, messageCount, outerHeight, scrollHeight, scrollTop]); useLayoutEffect(() => { const onReddichatExpandoToggle = () => { - if (isAtBottom) { - const scrollHeight = !current ? 0 : current.scrollHeight; - current?.scrollTo(0, scrollHeight); + if (isAtBottom && current) { + current.scrollTo(0, current.scrollHeight); } onResize(); }; @@ -80,7 +79,7 @@ export default function ChatMessages() { return null; } const $message = ( - - +
); } diff --git a/app/src/react/components/chat/messages/chat--messages.scss b/app/src/react/components/chat/messages/index.scss similarity index 94% rename from app/src/react/components/chat/messages/chat--messages.scss rename to app/src/react/components/chat/messages/index.scss index 1475599..a7a247c 100644 --- a/app/src/react/components/chat/messages/chat--messages.scss +++ b/app/src/react/components/chat/messages/index.scss @@ -3,7 +3,8 @@ display: flex; flex-direction: column; overflow: hidden; - height: calc(100% - 3em); + height: 100%; + width: 100%; } .chat--messagesSmoosh { diff --git a/app/src/react/components/chat/message/chat--message.jsx b/app/src/react/components/chat/messages/message/index.jsx similarity index 75% rename from app/src/react/components/chat/message/chat--message.jsx rename to app/src/react/components/chat/messages/message/index.jsx index 33b6b09..0ba18b6 100644 --- a/app/src/react/components/chat/message/chat--message.jsx +++ b/app/src/react/components/chat/messages/message/index.jsx @@ -1,4 +1,4 @@ -import './chat--message.scss'; +import './index.scss'; import classnames from 'classnames'; import PropTypes from 'prop-types'; @@ -8,13 +8,13 @@ import React, { } from 'react'; import {useSelector} from 'react-redux'; -import {usernameSelector} from '~/common/state/usernames'; +import {usernameSelector} from '@reddichat/user/client'; -import ChatMessageMarkdown from './chat--messageMarkdown'; -import ChatMessageTime from './chat--messageTime'; -import ChatMessageModeration from './chat--messageModeration'; +import Markdown from './markdown'; +import Time from './time'; +import Moderation from './moderation'; -export default function ChatMessage(props) { +export default function Message(props) { const { isShort, message: { @@ -31,7 +31,7 @@ export default function ChatMessage(props) { return () => clearTimeout(handle); }); const username = useSelector((state) => usernameSelector(state, owner)); - const $messageTime = ; + const $messageTime =