Chats: make chatsExpiration a conditional feature
This commit is contained in:
parent
239b2af553
commit
69d92b6f95
|
@ -7,7 +7,7 @@ import List, { ListItem } from 'soapbox/components/list';
|
||||||
import { Avatar, HStack, Icon, IconButton, Menu, MenuButton, MenuItem, MenuList, Stack, Text } from 'soapbox/components/ui';
|
import { Avatar, HStack, Icon, IconButton, Menu, MenuButton, MenuItem, MenuList, Stack, Text } from 'soapbox/components/ui';
|
||||||
import VerificationBadge from 'soapbox/components/verification_badge';
|
import VerificationBadge from 'soapbox/components/verification_badge';
|
||||||
import { useChatContext } from 'soapbox/contexts/chat-context';
|
import { useChatContext } from 'soapbox/contexts/chat-context';
|
||||||
import { useAppDispatch, useAppSelector } from 'soapbox/hooks';
|
import { useAppDispatch, useAppSelector, useFeatures } from 'soapbox/hooks';
|
||||||
import { MessageExpirationValues, useChatActions } from 'soapbox/queries/chats';
|
import { MessageExpirationValues, useChatActions } from 'soapbox/queries/chats';
|
||||||
import { secondsToDays } from 'soapbox/utils/numbers';
|
import { secondsToDays } from 'soapbox/utils/numbers';
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ const messages = defineMessages({
|
||||||
const ChatPageMain = () => {
|
const ChatPageMain = () => {
|
||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
const features = useFeatures();
|
||||||
|
|
||||||
const inputRef = useRef<HTMLTextAreaElement | null>(null);
|
const inputRef = useRef<HTMLTextAreaElement | null>(null);
|
||||||
|
|
||||||
|
@ -138,32 +139,34 @@ const ChatPageMain = () => {
|
||||||
</Stack>
|
</Stack>
|
||||||
</HStack>
|
</HStack>
|
||||||
|
|
||||||
<List>
|
{features.chatsExpiration && (
|
||||||
<ListItem
|
<List>
|
||||||
label={intl.formatMessage(messages.autoDeleteLabel)}
|
<ListItem
|
||||||
hint={intl.formatMessage(messages.autoDeleteHint)}
|
label={intl.formatMessage(messages.autoDeleteLabel)}
|
||||||
/>
|
hint={intl.formatMessage(messages.autoDeleteHint)}
|
||||||
<ListItem
|
/>
|
||||||
label={intl.formatMessage(messages.autoDelete7Days)}
|
<ListItem
|
||||||
onSelect={() => handleUpdateChat(MessageExpirationValues.SEVEN)}
|
label={intl.formatMessage(messages.autoDelete7Days)}
|
||||||
isSelected={chat.message_expiration === MessageExpirationValues.SEVEN}
|
onSelect={() => handleUpdateChat(MessageExpirationValues.SEVEN)}
|
||||||
/>
|
isSelected={chat.message_expiration === MessageExpirationValues.SEVEN}
|
||||||
<ListItem
|
/>
|
||||||
label={intl.formatMessage(messages.autoDelete14Days)}
|
<ListItem
|
||||||
onSelect={() => handleUpdateChat(MessageExpirationValues.FOURTEEN)}
|
label={intl.formatMessage(messages.autoDelete14Days)}
|
||||||
isSelected={chat.message_expiration === MessageExpirationValues.FOURTEEN}
|
onSelect={() => handleUpdateChat(MessageExpirationValues.FOURTEEN)}
|
||||||
/>
|
isSelected={chat.message_expiration === MessageExpirationValues.FOURTEEN}
|
||||||
<ListItem
|
/>
|
||||||
label={intl.formatMessage(messages.autoDelete30Days)}
|
<ListItem
|
||||||
onSelect={() => handleUpdateChat(MessageExpirationValues.THIRTY)}
|
label={intl.formatMessage(messages.autoDelete30Days)}
|
||||||
isSelected={chat.message_expiration === MessageExpirationValues.THIRTY}
|
onSelect={() => handleUpdateChat(MessageExpirationValues.THIRTY)}
|
||||||
/>
|
isSelected={chat.message_expiration === MessageExpirationValues.THIRTY}
|
||||||
<ListItem
|
/>
|
||||||
label={intl.formatMessage(messages.autoDelete90Days)}
|
<ListItem
|
||||||
onSelect={() => handleUpdateChat(MessageExpirationValues.NINETY)}
|
label={intl.formatMessage(messages.autoDelete90Days)}
|
||||||
isSelected={chat.message_expiration === MessageExpirationValues.NINETY}
|
onSelect={() => handleUpdateChat(MessageExpirationValues.NINETY)}
|
||||||
/>
|
isSelected={chat.message_expiration === MessageExpirationValues.NINETY}
|
||||||
</List>
|
/>
|
||||||
|
</List>
|
||||||
|
)}
|
||||||
|
|
||||||
<Stack space={2}>
|
<Stack space={2}>
|
||||||
<MenuItem
|
<MenuItem
|
||||||
|
|
|
@ -6,7 +6,7 @@ import { openModal } from 'soapbox/actions/modals';
|
||||||
import List, { ListItem } from 'soapbox/components/list';
|
import List, { ListItem } from 'soapbox/components/list';
|
||||||
import { Avatar, HStack, Icon, Select, 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 { useChatContext } from 'soapbox/contexts/chat-context';
|
||||||
import { useAppDispatch, useAppSelector } from 'soapbox/hooks';
|
import { useAppDispatch, useAppSelector, useFeatures } from 'soapbox/hooks';
|
||||||
import { messageExpirationOptions, MessageExpirationValues, useChatActions } from 'soapbox/queries/chats';
|
import { messageExpirationOptions, MessageExpirationValues, useChatActions } from 'soapbox/queries/chats';
|
||||||
import { secondsToDays } from 'soapbox/utils/numbers';
|
import { secondsToDays } from 'soapbox/utils/numbers';
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ const messages = defineMessages({
|
||||||
const ChatSettings = () => {
|
const ChatSettings = () => {
|
||||||
const dispatch = useAppDispatch();
|
const dispatch = useAppDispatch();
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
const features = useFeatures();
|
||||||
|
|
||||||
const { chat, setEditing, toggleChatPane } = useChatContext();
|
const { chat, setEditing, toggleChatPane } = useChatContext();
|
||||||
const { deleteChat, updateChat } = useChatActions(chat?.id as string);
|
const { deleteChat, updateChat } = useChatActions(chat?.id as string);
|
||||||
|
@ -113,21 +114,23 @@ const ChatSettings = () => {
|
||||||
</Stack>
|
</Stack>
|
||||||
</HStack>
|
</HStack>
|
||||||
|
|
||||||
<List>
|
{features.chatsExpiration && (
|
||||||
<ListItem label={intl.formatMessage(messages.autoDeleteLabel)}>
|
<List>
|
||||||
<Select defaultValue={chat.message_expiration} onChange={(event) => handleUpdateChat(Number(event.target.value))}>
|
<ListItem label={intl.formatMessage(messages.autoDeleteLabel)}>
|
||||||
{messageExpirationOptions.map((duration) => {
|
<Select defaultValue={chat.message_expiration} onChange={(event) => handleUpdateChat(Number(event.target.value))}>
|
||||||
const inDays = secondsToDays(duration);
|
{messageExpirationOptions.map((duration) => {
|
||||||
|
const inDays = secondsToDays(duration);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<option key={duration} value={duration}>
|
<option key={duration} value={duration}>
|
||||||
{intl.formatMessage(messages.autoDeleteDays, { day: inDays })}
|
{intl.formatMessage(messages.autoDeleteDays, { day: inDays })}
|
||||||
</option>
|
</option>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
</Select>
|
</Select>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
</List>
|
</List>
|
||||||
|
)}
|
||||||
|
|
||||||
<Stack space={5}>
|
<Stack space={5}>
|
||||||
<button onClick={isBlocking ? handleUnblockUser : handleBlockUser} className='w-full flex items-center space-x-2 font-bold text-sm text-primary-600 dark:text-accent-blue'>
|
<button onClick={isBlocking ? handleUnblockUser : handleBlockUser} className='w-full flex items-center space-x-2 font-bold text-sm text-primary-600 dark:text-accent-blue'>
|
||||||
|
|
|
@ -204,6 +204,12 @@ const getInstanceFeatures = (instance: Instance) => {
|
||||||
*/
|
*/
|
||||||
chats: v.software === TRUTHSOCIAL || (v.software === PLEROMA && gte(v.version, '2.1.0')),
|
chats: v.software === TRUTHSOCIAL || (v.software === PLEROMA && gte(v.version, '2.1.0')),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ability to set disappearing messages on chats.
|
||||||
|
* @see PATCH /api/v1/pleroma/chats/:id
|
||||||
|
*/
|
||||||
|
chatsExpiration: v.software === TRUTHSOCIAL,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ability to search among chats.
|
* Ability to search among chats.
|
||||||
* @see GET /api/v1/pleroma/chats
|
* @see GET /api/v1/pleroma/chats
|
||||||
|
|
Loading…
Reference in New Issue