// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React, {useCallback} from 'react'; import {defineMessage, useIntl} from 'react-intl'; import SettingContainer from '@components/settings/container'; import SettingItem from '@components/settings/item'; import {Screens} from '@constants'; import {useTheme} from '@context/theme'; import useAndroidHardwareBackHandler from '@hooks/android_back_handler'; import useUserTimezoneProps from '@hooks/user_timezone'; import {usePreventDoubleTap} from '@hooks/utils'; import {goToScreen, popTopScreen} from '@screens/navigation'; import {gotoSettingsScreen} from '@screens/settings/config'; import type UserModel from '@typings/database/models/servers/user'; import type {AvailableScreens} from '@typings/screens/navigation'; const CRT_FORMAT = [ defineMessage({ id: 'display_settings.crt.on', defaultMessage: 'On', }), defineMessage({ id: 'display_settings.crt.off', defaultMessage: 'Off', }), ]; const TIME_FORMAT = [ defineMessage({ id: 'display_settings.clock.standard', defaultMessage: '12-hour', }), defineMessage({ id: 'display_settings.clock.military', defaultMessage: '24-hour', }), ]; const TIMEZONE_FORMAT = [ defineMessage({ id: 'display_settings.tz.auto', defaultMessage: 'Auto', }), defineMessage({ id: 'display_settings.tz.manual', defaultMessage: 'Manual', }), ]; type DisplayProps = { componentId: AvailableScreens; currentUser?: UserModel; hasMilitaryTimeFormat: boolean; isCRTEnabled: boolean; isCRTSwitchEnabled: boolean; isThemeSwitchingEnabled: boolean; } const Display = ({componentId, currentUser, hasMilitaryTimeFormat, isCRTEnabled, isCRTSwitchEnabled, isThemeSwitchingEnabled}: DisplayProps) => { const intl = useIntl(); const theme = useTheme(); const timezone = useUserTimezoneProps(currentUser); const goToThemeSettings = usePreventDoubleTap(useCallback(() => { const screen = Screens.SETTINGS_DISPLAY_THEME; const title = intl.formatMessage({id: 'display_settings.theme', defaultMessage: 'Theme'}); goToScreen(screen, title); }, [intl])); const goToClockDisplaySettings = usePreventDoubleTap(useCallback(() => { const screen = Screens.SETTINGS_DISPLAY_CLOCK; const title = intl.formatMessage({id: 'display_settings.clockDisplay', defaultMessage: 'Clock Display'}); gotoSettingsScreen(screen, title); }, [intl])); const goToTimezoneSettings = usePreventDoubleTap(useCallback(() => { const screen = Screens.SETTINGS_DISPLAY_TIMEZONE; const title = intl.formatMessage({id: 'display_settings.timezone', defaultMessage: 'Timezone'}); gotoSettingsScreen(screen, title); }, [intl])); const goToCRTSettings = usePreventDoubleTap(useCallback(() => { const screen = Screens.SETTINGS_DISPLAY_CRT; const title = intl.formatMessage({id: 'display_settings.crt', defaultMessage: 'Collapsed Reply Threads'}); gotoSettingsScreen(screen, title); }, [intl])); const close = useCallback(() => { popTopScreen(componentId); }, [componentId]); useAndroidHardwareBackHandler(componentId, close); return ( {isThemeSwitchingEnabled && ( )} {isCRTSwitchEnabled && ( )} ); }; export default Display;