import { Meta } from '@storybook/addon-docs'; import { Typography } from 'antd'; import UserChatMessage from '../components/chat/ChatUserMessage'; import { ChatMessage } from '../interfaces/chat-message.model'; Owncast Chat The Owncast chat is a websocket service that is authenticated with an access token. The chat user interface has a handful of different states. # App states ## Offline (stream is not live) - The entire chat UI is hidden. ## Online (stream is live) - The chat interface is visible. ### Online + chat is disconnected - Show a loading state within the chat component. - Disable the text input box. ## Banned from chat - The entire chat UI is hidden. ## Stream ended - Chat is visible for the next 5 minutes to allow viewers to say goodbye. - Also allows for chat to stay active in case the streamer wants to quickly restart their stream or there's a network blip. ## Chat Disconnected If chat server is not available (websocket disconnects/not available for some reason) then the chat input box should become disabled and placeholder should say chat is not availble. # Message types ## User chat message The message that is displayed when a chat user sends a message. ## System message A message sent from the server. Is commonly used for - Welcome message. - An external script or integration sending a message on behalf of the server. ## Action message A message saying an action has taken place. Is commonly used for - User joined. - User was banned. - User changed name. - Stream is starting. - Stream is ending. - An external script or integration sending an action. ## Federated action message A message stating that somebody on the Fediverse performed an action. It is used for: - User "liked" that the steam went live. - User followed the instance. - User shared the instance to their followers.