diff --git a/src/components/CurrentUserMessage.tsx b/src/components/CurrentUserMessage.tsx index ffd159e58..53f9d222e 100644 --- a/src/components/CurrentUserMessage.tsx +++ b/src/components/CurrentUserMessage.tsx @@ -1,9 +1,9 @@ +import { styled } from '@linaria/react'; import { UserMessage } from '@sendbird/chat/message'; -import styled from 'styled-components'; -import { DefaultSentTime, BodyContainer, BodyComponent } from './MessageComponent'; +import { BodyContainer, BodyComponent } from './MessageComponent'; +import MyMessageStatus from './MyMessageStatus'; import { useConstantState } from '../context/ConstantContext'; -import { formatCreatedAtToAMPM } from '../utils/messageTimestamp'; const Root = styled.div<{ enableEmojiFeedback: boolean }>` display: flex; @@ -22,7 +22,7 @@ export default function CurrentUserMessage(props: Props) { return ( - {formatCreatedAtToAMPM(message.createdAt, dateLocale)} +
{message.message}
diff --git a/src/components/LoadingScreen.tsx b/src/components/LoadingScreen.tsx index b7b640fec..0e6a90657 100644 --- a/src/components/LoadingScreen.tsx +++ b/src/components/LoadingScreen.tsx @@ -9,7 +9,7 @@ const spinner = keyframes` 100% { transform: rotate(360deg); } -}`; +`; const Container = styled.div` width: 100%; diff --git a/src/components/MyMessageStatus.tsx b/src/components/MyMessageStatus.tsx new file mode 100644 index 000000000..fa539fbed --- /dev/null +++ b/src/components/MyMessageStatus.tsx @@ -0,0 +1,43 @@ +import { css } from '@linaria/core'; +import { SendableMessage } from '@sendbird/chat/lib/__definition'; +import { SendingStatus } from '@sendbird/chat/message'; +import { Locale } from 'date-fns'; +import { useTheme } from 'styled-components'; + +import { DefaultSentTime } from './MessageComponent'; +import { Icon } from '../foundation/components/Icon'; +import { Loader } from '../foundation/components/Loader'; +import { formatCreatedAtToAMPM } from '../utils/messageTimestamp'; + +interface MyMessageStatusProps { + message: SendableMessage; + dateLocale: Locale; +} + +export default function MyMessageStatus(props: MyMessageStatusProps) { + const { message, dateLocale } = props; + const theme = useTheme(); + + switch (message.sendingStatus) { + case SendingStatus.PENDING: + return ( + + + + ); + case SendingStatus.FAILED: + return ( +
+ +
+ ); + default: + return {formatCreatedAtToAMPM(message.createdAt, dateLocale)}; + } +} + +const sendbirdLoader = css` + margin-bottom: 2px; + width: 16px; + height: 16px; +`; diff --git a/src/components/messages/OutgoingFileMessage.tsx b/src/components/messages/OutgoingFileMessage.tsx index b02693bcf..c4ed94cbb 100644 --- a/src/components/messages/OutgoingFileMessage.tsx +++ b/src/components/messages/OutgoingFileMessage.tsx @@ -8,8 +8,8 @@ import { Icon } from '../../foundation/components/Icon'; import { Label } from '../../foundation/components/Label'; import { Loader } from '../../foundation/components/Loader'; import { META_ARRAY_ASPECT_RATIO_KEY } from '../../utils/getImageAspectRatio'; -import { formatCreatedAtToAMPM } from '../../utils/messageTimestamp'; -import { BodyComponent, BodyContainer, DefaultSentTime } from '../MessageComponent'; +import { BodyComponent, BodyContainer } from '../MessageComponent'; +import MyMessageStatus from '../MyMessageStatus'; import { FileViewer } from '../ui/FileViewer'; type Props = { @@ -36,7 +36,7 @@ export const OutgoingFileMessage = ({ message }: Props) => { const renderTimestamp = () => { return (
- {formatCreatedAtToAMPM(message.createdAt, dateLocale)} +
); };