// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React, {useState} from 'react' import {useIntl} from 'react-intl' import {History} from 'history' import {Archiver} from '../../archiver' import Menu from '../../widgets/menu' import MenuWrapper from '../../widgets/menuWrapper' import {useAppDispatch, useAppSelector} from '../../store/hooks' import {storeLanguage} from '../../store/language' import {patchProps, getMe} from '../../store/users' import {getCurrentTeam, Team} from '../../store/teams' import {IUser, UserConfigPatch} from '../../user' import octoClient from '../../octoClient' import {UserSettings} from '../../userSettings' import CheckIcon from '../../widgets/icons/check' import SettingsIcon from '../../widgets/icons/settings' import {Constants} from '../../constants' import TelemetryClient, {TelemetryCategory, TelemetryActions} from '../../telemetry/telemetryClient' import './globalHeaderSettingsMenu.scss' type Props = { history: History } const GlobalHeaderSettingsMenu = (props: Props) => { const intl = useIntl() const me = useAppSelector(getMe) const currentTeam = useAppSelector(getCurrentTeam) const dispatch = useAppDispatch() const [randomIcons, setRandomIcons] = useState(UserSettings.prefillRandomIcons) const toggleRandomIcons = () => { UserSettings.prefillRandomIcons = !UserSettings.prefillRandomIcons setRandomIcons(!randomIcons) } return (
{ TelemetryClient.trackEvent(TelemetryCategory, TelemetryActions.ImportArchive) Archiver.importFullArchive() }} /> { Constants.imports.map((i) => ( { TelemetryClient.trackEvent(TelemetryCategory, i.telemetryName) window.open(i.href) }} /> )) } { Constants.languages.map((language) => ( dispatch(storeLanguage(language.code))} rightIcon={intl.locale.toLowerCase() === language.code ? : null} /> )) } toggleRandomIcons()} suppressItemClicked={true} /> {me?.is_guest !== true && { TelemetryClient.trackEvent(TelemetryCategory, TelemetryActions.StartTour) if (!me) { return } if (!currentTeam) { return } const patch: UserConfigPatch = { updatedFields: { onboardingTourStarted: '1', onboardingTourStep: '0', tourCategory: 'onboarding', }, } const patchedProps = await octoClient.patchUserConfig(me.id, patch) if (patchedProps) { await dispatch(patchProps(patchedProps)) } const onboardingData = await octoClient.prepareOnboarding(currentTeam.id) const newPath = `/team/${onboardingData?.teamID}/${onboardingData?.boardID}` props.history.push(newPath) }} />}
) } export default React.memo(GlobalHeaderSettingsMenu)