// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import {useManagedConfig} from '@mattermost/react-native-emm'; import React from 'react'; import {View} from 'react-native'; import {CopyPermalinkOption, FollowThreadOption, ReplyOption, SaveOption} from '@components/common_post_options'; import FormattedText from '@components/formatted_text'; import {ITEM_HEIGHT} from '@components/option_item'; import {Screens} from '@constants'; import {useTheme} from '@context/theme'; import {useIsTablet} from '@hooks/device'; import useNavButtonPressed from '@hooks/navigation_button_pressed'; import BottomSheet from '@screens/bottom_sheet'; import {dismissModal} from '@screens/navigation'; import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme'; import {typography} from '@utils/typography'; import MarkAsUnreadOption from './options/mark_as_unread_option'; import OpenInChannelOption from './options/open_in_channel_option'; import type PostModel from '@typings/database/models/servers/post'; import type TeamModel from '@typings/database/models/servers/team'; import type ThreadModel from '@typings/database/models/servers/thread'; type ThreadOptionsProps = { componentId: string; isSaved: boolean; post: PostModel; team: TeamModel; thread: ThreadModel; }; const getStyleSheet = makeStyleSheetFromTheme((theme: Theme) => { return { listHeader: { marginBottom: 12, }, listHeaderText: { color: changeOpacity(theme.centerChannelColor, 0.56), textTransform: 'uppercase', ...typography('Body', 75, 'SemiBold'), }, }; }); const THREAD_OPTIONS_BUTTON = 'close-thread-options'; const ThreadOptions = ({ componentId, isSaved, post, team, thread, }: ThreadOptionsProps) => { const theme = useTheme(); const isTablet = useIsTablet(); const style = getStyleSheet(theme); const close = () => { dismissModal({componentId}); }; useNavButtonPressed(THREAD_OPTIONS_BUTTON, componentId, close, []); const options = [ , , , , , ]; const managedConfig = useManagedConfig(); const canCopyLink = managedConfig?.copyAndPasteProtection !== 'true'; if (canCopyLink) { options.push( , ); } const renderContent = () => ( <> {!isTablet && ( )} {options} ); return ( ); }; export default ThreadOptions;