diff --git a/src/screens/Messages/Conversation/MessageListError.tsx b/src/screens/Messages/Conversation/MessageListError.tsx index 1e0dc34747..6a6ce5e693 100644 --- a/src/screens/Messages/Conversation/MessageListError.tsx +++ b/src/screens/Messages/Conversation/MessageListError.tsx @@ -5,26 +5,25 @@ import {useLingui} from '@lingui/react' import {ConvoItem, ConvoItemError} from '#/state/messages/convo/types' import {atoms as a, useTheme} from '#/alf' -import {Button, ButtonIcon, ButtonText} from '#/components/Button' -import {ArrowRotateCounterClockwise_Stroke2_Corner0_Rounded as Refresh} from '#/components/icons/ArrowRotateCounterClockwise' import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo' +import {InlineLinkText} from '#/components/Link' import {Text} from '#/components/Typography' export function MessageListError({item}: {item: ConvoItem & {type: 'error'}}) { const t = useTheme() const {_} = useLingui() - const message = React.useMemo(() => { + const {description, help, cta} = React.useMemo(() => { return { - [ConvoItemError.Unknown]: _( - msg`An unknown error occurred. If the issue persists, contact support.`, - ), - [ConvoItemError.FirehoseFailed]: _( - msg`This chat was disconnected due to a network error.`, - ), - [ConvoItemError.HistoryFailed]: _(msg`Failed to load past messages.`), - [ConvoItemError.UserBlocked]: _( - msg`The other user in this chat has blocked you.`, - ), + [ConvoItemError.FirehoseFailed]: { + description: _(msg`This chat was disconnected`), + help: _(msg`Press to attempt reconnection`), + cta: _(msg`Reconnect`), + }, + [ConvoItemError.HistoryFailed]: { + description: _(msg`Failed to load past messages`), + help: _(msg`Press to retry`), + cta: _(msg`Retry`), + }, }[item.code] }, [_, item.code]) @@ -35,39 +34,31 @@ export function MessageListError({item}: {item: ConvoItem & {type: 'error'}}) { a.flex_row, a.align_center, a.justify_between, - a.gap_lg, - a.py_md, - a.px_lg, - a.rounded_md, - t.atoms.bg_contrast_25, + a.gap_sm, + a.pb_lg, {maxWidth: 400}, ]}> - - - - {message} - - + - {item.retry && ( - - )} + + {description} ·{' '} + {item.retry && ( + { + e.preventDefault() + item.retry?.() + return false + }}> + {cta} + + )} + ) diff --git a/src/screens/Messages/Conversation/MessageListFirehoseError.tsx b/src/screens/Messages/Conversation/MessageListFirehoseError.tsx deleted file mode 100644 index 63b06c413e..0000000000 --- a/src/screens/Messages/Conversation/MessageListFirehoseError.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react' -import {View} from 'react-native' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' - -import {ConvoItem} from '#/state/messages/convo/types' -import {atoms as a, useTheme} from '#/alf' -import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo' -import {InlineLinkText} from '#/components/Link' -import {Text} from '#/components/Typography' - -export function MessageListFirehoseError({ - item, -}: { - item: ConvoItem & {type: 'firehose-error'} -}) { - const t = useTheme() - const {_} = useLingui() - - return ( - - - - - - {_(msg`This chat was disconnected`)} ·{' '} - {item.retry && ( - { - e.preventDefault() - item.retry?.() - return false - }}> - {_(msg`Reconnect`)} - - )} - - - - ) -} diff --git a/src/screens/Messages/Conversation/MessagesList.tsx b/src/screens/Messages/Conversation/MessagesList.tsx index 2fb848cc7b..bb65567a27 100644 --- a/src/screens/Messages/Conversation/MessagesList.tsx +++ b/src/screens/Messages/Conversation/MessagesList.tsx @@ -15,7 +15,6 @@ import {isWeb} from 'platform/detection' import {List} from 'view/com/util/List' import {MessageInput} from '#/screens/Messages/Conversation/MessageInput' import {MessageListError} from '#/screens/Messages/Conversation/MessageListError' -import {MessageListFirehoseError} from '#/screens/Messages/Conversation/MessageListFirehoseError' import {atoms as a} from '#/alf' import {MessageItem} from '#/components/dms/MessageItem' import {Loader} from '#/components/Loader' @@ -42,8 +41,6 @@ function renderItem({item}: {item: ConvoItem}) { return Deleted message } else if (item.type === 'error') { return - } else if (item.type === 'firehose-error') { - return } return null diff --git a/src/state/messages/convo/agent.ts b/src/state/messages/convo/agent.ts index a0ea7fc18b..7d4ab23f38 100644 --- a/src/state/messages/convo/agent.ts +++ b/src/state/messages/convo/agent.ts @@ -1007,8 +1007,9 @@ export class Convo { if (this.firehoseError) { items.push({ - type: 'firehose-error', - key: 'firehose-error', + type: 'error', + code: ConvoItemError.FirehoseFailed, + key: ConvoItemError.FirehoseFailed, retry: () => { this.firehoseError?.retry() }, diff --git a/src/state/messages/convo/types.ts b/src/state/messages/convo/types.ts index 01b24a2a17..25e79aba6d 100644 --- a/src/state/messages/convo/types.ts +++ b/src/state/messages/convo/types.ts @@ -23,10 +23,6 @@ export enum ConvoStatus { } export enum ConvoItemError { - /** - * Generic error - */ - Unknown = 'unknown', /** * Error connecting to event firehose */ @@ -35,10 +31,6 @@ export enum ConvoItemError { * Error fetching past messages */ HistoryFailed = 'historyFailed', - /** - * Recipient is blocking the user - */ - UserBlocked = 'userBlocked', } export enum ConvoErrorCode { @@ -123,14 +115,6 @@ export type ConvoItem = */ retry?: () => void } - | { - type: 'firehose-error' - key: string - /** - * If present, error is recoverable. - */ - retry?: () => void - } type DeleteMessage = (messageId: string) => Promise type SendMessage = (