address MR comments

This commit is contained in:
Ginger Wong 2020-08-26 00:51:40 -07:00
parent 6457015406
commit b399fbba22
7 changed files with 122 additions and 126 deletions

View File

@ -8,22 +8,17 @@
<link href="./styles/standalone-chat.css" rel="stylesheet" /> <link href="./styles/standalone-chat.css" rel="stylesheet" />
<script src="//unpkg.com/showdown/dist/showdown.min.js"></script> <script src="//unpkg.com/showdown/dist/showdown.min.js"></script>
</head> </head>
<body> <body>
<div id="messages-only"></div> <div id="messages-only"></div>
<script type="module"> <script type="module">
import { render, h } from 'https://unpkg.com/preact?module'; import { render, html } from 'https://unpkg.com/htm/preact/standalone.module.js';
import htm from 'https://unpkg.com/htm?module';
const html = htm.bind(h);
import StandaloneChat from './js/app-standalone-chat.js'; import StandaloneChat from './js/app-standalone-chat.js';
render(
(function () { html`<${StandaloneChat} messagesOnly />`, document.getElementById("messages-only")
render(html`<${StandaloneChat} messagesOnly />`, document.getElementById("messages-only")); );
})();
</script> </script>
</body> </body>
</html> </html>

View File

@ -20,15 +20,9 @@
<div id="video-only"></div> <div id="video-only"></div>
<script type="module"> <script type="module">
import { h, render } from 'https://unpkg.com/preact?module'; import { render, html } from 'https://unpkg.com/htm/preact/standalone.module.js';
import htm from 'https://unpkg.com/htm?module';
const html = htm.bind(h);
import VideoOnly from './js/app-video-only.js'; import VideoOnly from './js/app-video-only.js';
(function () {
render(html`<${VideoOnly} />`, document.getElementById("video-only")); render(html`<${VideoOnly} />`, document.getElementById("video-only"));
})();
</script> </script>
</body> </body>
</html> </html>

View File

@ -28,30 +28,23 @@
<script src="//unpkg.com/video.js@7.9.2/dist/video.js"></script> <script src="//unpkg.com/video.js@7.9.2/dist/video.js"></script>
<!-- markdown renderer --> <!-- markdown renderer -->
<script src="//unpkg.com/showdown/dist/showdown.min.js"></script> <script src="//unpkg.com/showdown/dist/showdown.min.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/lite-youtube@0.6.2/lite-youtube.js"></script>
<link href="./styles/video.css" rel="stylesheet" /> <link href="./styles/video.css" rel="stylesheet" />
<link href="./styles/chat.css" rel="stylesheet" /> <link href="./styles/chat.css" rel="stylesheet" />
<link href="./styles/user-content.css" rel="stylesheet" /> <link href="./styles/user-content.css" rel="stylesheet" />
<link href="./styles/app.css" rel="stylesheet" /> <link href="./styles/app.css" rel="stylesheet" />
</head> </head>
<body class="bg-gray-300 text-gray-800"> <body class="bg-gray-300 text-gray-800">
<div id="app"></div> <div id="app"></div>
<script type="module"> <script type="module">
import { render, h } from 'https://unpkg.com/preact?module'; import { render, html } from 'https://unpkg.com/htm/preact/standalone.module.js';
import htm from 'https://unpkg.com/htm?module';
const html = htm.bind(h);
import App from './js/app.js'; import App from './js/app.js';
(function () {
render(html`<${App} />`, document.getElementById("app")); render(html`<${App} />`, document.getElementById("app"));
})();
</script> </script>
<noscript> <noscript>
<style> <style>
.noscript { .noscript {

View File

@ -29,10 +29,6 @@ export default class StandaloneChat extends Component {
}); });
} }
handleChatToggle() {
return;
}
render(props, state) { render(props, state) {
const { username, userAvatarImage, websocket } = state; const { username, userAvatarImage, websocket } = state;

View File

@ -135,13 +135,26 @@ export default class ChatInput extends Component {
} }
handleMessageInputKeydown(event) { handleMessageInputKeydown(event) {
const okCodes = [37,38,39,40,16,91,18,46,8]; const okCodes = [
'ArrowLeft',
'ArrowUp',
'ArrowRight',
'ArrowDown',
'Shift',
'Meta',
'Alt',
'Delete',
'Backspace',
];
// const okCodes = [37,38,39,40,16,91,18,46,8];//left, up , right , down , shift, left window key, alt, delete, backspace
const formField = this.formMessageInput.current; const formField = this.formMessageInput.current;
let textValue = formField.innerText.trim(); // get this only to count chars let textValue = formField.innerText.trim(); // get this only to count chars
let numCharsLeft = this.maxMessageLength - textValue.length; let numCharsLeft = this.maxMessageLength - textValue.length;
if (event.keyCode === 13) { // enter const key = event.key;
if (key === 'Enter') {
if (!this.prepNewLine) { if (!this.prepNewLine) {
this.sendMessage(); this.sendMessage();
event.preventDefault(); event.preventDefault();
@ -149,10 +162,10 @@ export default class ChatInput extends Component {
return; return;
} }
} }
if (event.keyCode === 16 || event.keyCode === 17) { // ctrl, shift if (key === 'Control' || key === 'Shift') {
this.prepNewLine = true; this.prepNewLine = true;
} }
if (event.keyCode === 9) { // tab if (key === 'Tab') {
if (this.autoCompleteNames()) { if (this.autoCompleteNames()) {
event.preventDefault(); event.preventDefault();
@ -167,7 +180,7 @@ export default class ChatInput extends Component {
this.setState({ this.setState({
inputWarning: `${numCharsLeft} chars left`, inputWarning: `${numCharsLeft} chars left`,
}); });
if (numCharsLeft <= 0 && !okCodes.includes(event.keyCode)) { if (numCharsLeft <= 0 && !okCodes.includes(key)) {
event.preventDefault(); // prevent typing more event.preventDefault(); // prevent typing more
return; return;
} }
@ -179,7 +192,7 @@ export default class ChatInput extends Component {
} }
handleMessageInputKeyup(event) { handleMessageInputKeyup(event) {
if (event.keyCode === 16 || event.keyCode === 17) { // ctrl, shift if (event.key === 'Control' || event.key === 'Shift') {
this.prepNewLine = false; this.prepNewLine = false;
} }
} }

View File

@ -95,9 +95,9 @@ export default class Chat extends Component {
sendUsernameChange(oldName, newName, image) { sendUsernameChange(oldName, newName, image) {
const nameChange = { const nameChange = {
type: SOCKET_MESSAGE_TYPES.NAME_CHANGE, type: SOCKET_MESSAGE_TYPES.NAME_CHANGE,
oldName: oldName, oldName,
newName: newName, newName,
image: image, image,
}; };
this.websocket.send(nameChange); this.websocket.send(nameChange);
} }
@ -106,12 +106,14 @@ export default class Chat extends Component {
this.addMessage(message); this.addMessage(message);
} }
// if incoming message has same id as existing message, don't add it
addMessage(message) { addMessage(message) {
const { messages: curMessages } = this.state; const { messages: curMessages } = this.state;
// if incoming message has same id as existing message, don't add it
const existing = curMessages.filter(function (item) { const existing = curMessages.filter(function (item) {
return item.id === message.id; return item.id === message.id;
}) })
if (existing.length === 0 || !existing) { if (existing.length === 0 || !existing) {
const newState = { const newState = {
messages: [...curMessages, message], messages: [...curMessages, message],

View File

@ -112,7 +112,10 @@ function getYoutubeIdFromURL(url) {
} }
function getYoutubeEmbedFromID(id) { function getYoutubeEmbedFromID(id) {
return `<iframe class="chat-embed youtube-embed" src="//www.youtube.com/embed/${id}" frameborder="0" allowfullscreen></iframe>`; return `
<div class="chat-embed youtube-embed">
<lite-youtube videoid="${id}" />
</div>`;
} }
function getInstagramEmbedFromURL(url) { function getInstagramEmbedFromURL(url) {