diff --git a/app/soapbox/components/list.tsx b/app/soapbox/components/list.tsx index 2109aca66..18d9fd71f 100644 --- a/app/soapbox/components/list.tsx +++ b/app/soapbox/components/list.tsx @@ -66,7 +66,7 @@ const ListItem: React.FC = ({ label, hint, children, onClick, onSelec - ) : renderChildren()} + ) : null} {onSelect ? (
@@ -76,7 +76,9 @@ const ListItem: React.FC = ({ label, hint, children, onClick, onSelec ) : null}
- ) : renderChildren()} + ) : null} + + {typeof onClick === 'undefined' && typeof onSelect === 'undefined' ? renderChildren() : null} ); }; diff --git a/app/soapbox/features/chats/components/chat-pane/chat-pane.tsx b/app/soapbox/features/chats/components/chat-pane/chat-pane.tsx index fe82fc84f..5659f363e 100644 --- a/app/soapbox/features/chats/components/chat-pane/chat-pane.tsx +++ b/app/soapbox/features/chats/components/chat-pane/chat-pane.tsx @@ -29,8 +29,8 @@ const ChatPane = () => { const hasSearchValue = Number(debouncedValue?.length) > 0; - const handleClickChat = (chat: IChat) => { - setChat(chat); + const handleClickChat = (nextChat: IChat) => { + setChat(nextChat); setValue(undefined); }; diff --git a/app/soapbox/features/chats/components/chat-widget/chat-settings.tsx b/app/soapbox/features/chats/components/chat-widget/chat-settings.tsx index f36728dfc..d24314ad1 100644 --- a/app/soapbox/features/chats/components/chat-widget/chat-settings.tsx +++ b/app/soapbox/features/chats/components/chat-widget/chat-settings.tsx @@ -4,10 +4,11 @@ import { defineMessages, useIntl } from 'react-intl'; import { blockAccount, unblockAccount } from 'soapbox/actions/accounts'; import { openModal } from 'soapbox/actions/modals'; import List, { ListItem } from 'soapbox/components/list'; -import { Avatar, HStack, Icon, Stack, Text } from 'soapbox/components/ui'; +import { Avatar, HStack, Icon, Select, Stack, Text } from 'soapbox/components/ui'; import { useChatContext } from 'soapbox/contexts/chat-context'; import { useAppDispatch, useAppSelector } from 'soapbox/hooks'; -import { MessageExpirationValues, useChatActions } from 'soapbox/queries/chats'; +import { messageExpirationOptions, MessageExpirationValues, useChatActions } from 'soapbox/queries/chats'; +import { secondsToDays } from 'soapbox/utils/numbers'; import ChatPaneHeader from './chat-pane-header'; @@ -26,11 +27,7 @@ const messages = defineMessages({ unblockUser: { id: 'chat_settings.options.unblock_user', defaultMessage: 'Unblock @{acct}' }, leaveChat: { id: 'chat_settings.options.leave_chat', defaultMessage: 'Leave Chat' }, autoDeleteLabel: { id: 'chat_settings.auto_delete.label', defaultMessage: 'Auto-delete messages' }, - autoDeleteHint: { id: 'chat_settings.auto_delete.hint', defaultMessage: 'Sent messages will auto-delete after the time period selected' }, - autoDelete7Days: { id: 'chat_settings.auto_delete.7days', defaultMessage: '7 days' }, - autoDelete14Days: { id: 'chat_settings.auto_delete.14days', defaultMessage: '14 days' }, - autoDelete30Days: { id: 'chat_settings.auto_delete.30days', defaultMessage: '30 days' }, - autoDelete90Days: { id: 'chat_settings.auto_delete.90days', defaultMessage: '90 days' }, + autoDeleteDays: { id: 'chat_settings.auto_delete.days', defaultMessage: '{day} days' }, }); const ChatSettings = () => { @@ -117,30 +114,19 @@ const ChatSettings = () => { - - handleUpdateChat(MessageExpirationValues.SEVEN)} - isSelected={chat.message_expiration === MessageExpirationValues.SEVEN} - /> - handleUpdateChat(MessageExpirationValues.FOURTEEN)} - isSelected={chat.message_expiration === MessageExpirationValues.FOURTEEN} - /> - handleUpdateChat(MessageExpirationValues.THIRTY)} - isSelected={chat.message_expiration === MessageExpirationValues.THIRTY} - /> - handleUpdateChat(MessageExpirationValues.NINETY)} - isSelected={chat.message_expiration === MessageExpirationValues.NINETY} - /> + + + diff --git a/app/soapbox/queries/chats.ts b/app/soapbox/queries/chats.ts index 623cea4a3..c22f0ff7b 100644 --- a/app/soapbox/queries/chats.ts +++ b/app/soapbox/queries/chats.ts @@ -15,11 +15,13 @@ import { queryClient } from './client'; import type { IAccount } from './accounts'; +export const messageExpirationOptions = [604800, 1209600, 2592000, 7776000]; + export enum MessageExpirationValues { - 'SEVEN' = 604800, - 'FOURTEEN' = 1209600, - 'THIRTY' = 2592000, - 'NINETY' = 7776000 + 'SEVEN' = messageExpirationOptions[0], + 'FOURTEEN' = messageExpirationOptions[1], + 'THIRTY' = messageExpirationOptions[2], + 'NINETY' = messageExpirationOptions[3] } export interface IChat { @@ -225,6 +227,7 @@ const useChatActions = (chatId: string) => { }, onSuccess(response) { queryClient.invalidateQueries(ChatKeys.chat(chatId)); + queryClient.invalidateQueries(ChatKeys.chatSearch()); setChat(response.data); dispatch(snackbar.success('Chat Settings updated successfully')); },