import shortid from 'shortid';
import SimpleBar from 'simplebar-react';
import InfiniteScroll from 'react-infinite-scroll-component';
import React, { useEffect, useRef, useState } from 'react';
// import message
import DashupUIChatMessage from './Message';
import { Box, Stack, Typography, CircularProgress } from '../';
// let context
let Message = null;
let DashupUIContext = null;
// create dashup grid body
const DashupUIChatThread = (props = {}) => {
// messages
const messages = props.messages || [];
// use state
const [id] = useState(shortid());
const [key, setKey] = useState(null);
// scroll ref
const scrollRef = useRef(null);
// use effect
useEffect(() => {
// check key
if (key === (messages[0]?.id || messages[0]?.temp)) return;
// set key
setKey(messages[0]?.id || messages[0]?.temp);
// scroll down
if (scrollRef.current?.getScrollElement()) scrollRef.current.getScrollElement().scrollTop = 0;
}, [messages[0]?.id || messages[0]?.temp]);
// return jsx
return (
{ !!scrollRef.current?.getScrollElement() && (
) }
endMessage={ (
{ !(messages || []).length ? (
'Nothing here yet, say hi!'
) : (
'Yay! You have seen it all.'
) }
) }
scrollableTarget={ id }
>
{ messages.map((m, i) => {
// return jsx
return (
);
}) }
) }
);
};
// wrapper
const DashupUIChatWrapper = (props = {}) => {
// return jsx
return (
{ (data) => {
// return jsx
return (
)
} }
);
};
// export default page menu
export default (ctx) => {
// use context
Message = DashupUIChatMessage(ctx);
DashupUIContext = ctx;
// return actual component
return DashupUIChatWrapper;
};