import { Image as Img, Bubble, FileCard, ScrollView, Typing } from '@samagra-x/stencil-chatui';
import moment from 'moment';
import { JsonToTable } from '../json-to-table';
import SpeakerIcon from './assets/speaker.svg';
import MsgThumbsUp from './assets/msg-thumbs-up';
import MsgThumbsDown from './assets/msg-thumbs-down';
import styles from './index.module.css';
export const UpdatedBubble = ({
message,
themeColor,
chatUi,
theme,
handleAudio,
feedbackHandler,
getLists,
reaction,
}: any) => {
const { content, type } = message;
switch (type) {
case 'loader':
return ;
case 'text':
return (
{content?.text}{' '}
{/* {
content?.data?.position === 'right'
? null
: !content?.data?.isEnd
&&
} */}
{moment(content?.data?.sentTimestamp || content?.data?.repliedTimestamp).format(
'hh:mm A DD/MM/YYYY',
)}
{content?.data?.btns ? (
) : (
content?.data?.position === 'left' && (
{chatUi.allowTextToSpeech && (
{chatUi.textToSpeechLabel}
)}
{chatUi.allowFeedback && (
feedbackHandler({
like: 1,
msgId: content?.data?.messageId,
})
}
>
{chatUi.positiveFeedbackText}
feedbackHandler({
like: -1,
msgId: content?.data?.messageId,
})
}
>
{chatUi.negativeFeedbackText}
)}
)
)}
);
case 'image': {
const url = content?.data?.payload?.media?.url || content?.data?.imageUrl;
return ;
}
case 'file': {
const url = content?.data?.payload?.media?.url || content?.data?.fileUrl;
return ;
}
case 'video': {
const url = content?.data?.payload?.media?.url || content?.data?.videoUrl;
const videoId = url.split('=')[1];
return (
<>
{moment(content?.data?.sentTimestamp || content?.data?.repliedTimestamp).format(
'hh:mm A DD/MM/YYYY',
)}
>
);
}
case 'options': {
return (
<>
{content?.data?.payload?.text}
{getLists({
choices: content?.data?.payload?.buttonChoices ?? content?.data?.choices,
})}
>
);
}
case 'table': {
return (
{`\n` +
JSON.parse(content?.text)?.generalAdvice +
`\n\n` +
JSON.parse(content?.text)?.buttonDescription}
{getLists({
choices: JSON.parse(content?.text)?.buttons,
})}
);
}
default:
return (
// @ts-ignore
}
/>
);
}
};
const MediaBubble = ({ content, themeColor, isFile }: any) => {
const url = isFile
? content?.data?.payload?.media?.url || content?.data?.fileUrl
: content?.data?.payload?.media?.url || content?.data?.imageUrl;
const renderMedia = () => {
if (isFile) {
return ;
} else {
// @ts-ignore
return
;
}
};
return (
<>
{content?.data?.position === 'left' && (
)}
{renderMedia()}
{moment(content?.data?.sentTimestamp || content?.data?.repliedTimestamp).format(
'hh:mm A DD/MM/YYYY',
)}
>
);
};