Handling certain types of messages

This commit is contained in:
He4eT 2021-02-28 03:25:41 +05:00
commit a36c36789d
2 changed files with 30 additions and 6 deletions

View file

@ -1,6 +1,15 @@
import { h } from 'preact'
import { useState, useEffect } from 'preact/hooks'
import TextMessage from './TextMessage'
const trimImputPrompt = messages =>
messages.length < 1
? messages
: messages.slice(-1)[0].text === '>'
? messages.slice(0, messages.length - 1)
: messages
const parseInbox = (inbox, currentWindow) => {
const currentInbox =
inbox.find(({ id }) =>
@ -16,7 +25,7 @@ const parseInbox = (inbox, currentWindow) => {
const { clear, text: inboxMessagesRaw } =
currentInbox
const incoming =
const incoming = trimImputPrompt(
inboxMessagesRaw
/* Normalize. */
.map(({ content }) =>
@ -32,7 +41,7 @@ const parseInbox = (inbox, currentWindow) => {
return prev.style === 'emptyLine'
? acc
: [...acc, x]
}, [])
}, []))
return { clear, incoming }
}
@ -50,9 +59,8 @@ export default function ({ inbox, currentWindow }) {
}, [inbox])
return (
<div>
{messages.map(({ text }) =>
(<div>{text}</div>))}
</div>
<section className='textBuffer'>
{messages.map(TextMessage)}
</section>
)
}

View file

@ -0,0 +1,16 @@
import { h } from 'preact'
export default function ({ style, text }) {
const defaultContent = (<span>{text}</span>)
const content = ({
emptyLine: (<br />),
subheader: (<strong>{text}</strong>)
})[style] || defaultContent
return (
<div class={['message', style].join(' ')}>
{content}
</div>
)
}