[MM-58379] Remove playbooks from onboarding (#27757)

* remove playbooks from onboarding

* i18n
Этот коммит содержится в:
Julien Tant
2024-07-26 14:58:10 -07:00
коммит произвёл GitHub
родитель c72e14f73d
Коммит 11c2159b7e
11 изменённых файлов: 5 добавлений и 225 удалений

Просмотреть файл

@@ -8,31 +8,22 @@ import styled from 'styled-components';
import IconButton from '@mattermost/compass-components/components/icon-button'; // eslint-disable-line no-restricted-imports import IconButton from '@mattermost/compass-components/components/icon-button'; // eslint-disable-line no-restricted-imports
import {getConfig, getLicense} from 'mattermost-redux/selectors/entities/general'; import {getLicense} from 'mattermost-redux/selectors/entities/general';
import {getInt} from 'mattermost-redux/selectors/entities/preferences';
import {getCurrentUserId} from 'mattermost-redux/selectors/entities/users';
import {setProductMenuSwitcherOpen} from 'actions/views/product_menu'; import {setProductMenuSwitcherOpen} from 'actions/views/product_menu';
import {isSwitcherOpen} from 'selectors/views/product_menu'; import {isSwitcherOpen} from 'selectors/views/product_menu';
import { import {
GenericTaskSteps,
OnboardingTaskCategory, OnboardingTaskCategory,
OnboardingTasksName, OnboardingTasksName,
TaskNameMapToSteps, TaskNameMapToSteps,
useHandleOnBoardingTaskData, useHandleOnBoardingTaskData,
} from 'components/onboarding_tasks'; } from 'components/onboarding_tasks';
import {FINISHED, TutorialTourName} from 'components/tours';
import {PlaybooksTourTip} from 'components/tours/onboarding_explore_tools_tour';
import Menu from 'components/widgets/menu/menu'; import Menu from 'components/widgets/menu/menu';
import MenuWrapper from 'components/widgets/menu/menu_wrapper'; import MenuWrapper from 'components/widgets/menu/menu_wrapper';
import {useGetPluginsActivationState} from 'plugins/useGetPluginsActivationState';
import {ExploreOtherToolsTourSteps, suitePluginIds} from 'utils/constants';
import {useCurrentProductId, useProducts, isChannels} from 'utils/products'; import {useCurrentProductId, useProducts, isChannels} from 'utils/products';
import type {GlobalState} from 'types/store';
import ProductBranding from './product_branding'; import ProductBranding from './product_branding';
import ProductBrandingTeamEdition from './product_branding_team_edition'; import ProductBrandingTeamEdition from './product_branding_team_edition';
import ProductMenuItem from './product_menu_item'; import ProductMenuItem from './product_menu_item';
@@ -77,16 +68,6 @@ const ProductMenu = (): JSX.Element => {
const currentProductID = useCurrentProductId(); const currentProductID = useCurrentProductId();
const license = useSelector(getLicense); const license = useSelector(getLicense);
const enableTutorial = useSelector(getConfig).EnableTutorial === 'true';
const currentUserId = useSelector(getCurrentUserId);
const tutorialStep = useSelector((state: GlobalState) => getInt(state, TutorialTourName.EXPLORE_OTHER_TOOLS, currentUserId, 0));
const triggerStep = useSelector((state: GlobalState) => getInt(state, OnboardingTaskCategory, OnboardingTasksName.EXPLORE_OTHER_TOOLS, FINISHED));
const exploreToolsTourTriggered = triggerStep === GenericTaskSteps.STARTED;
const {playbooksPlugin} = useGetPluginsActivationState();
const showPlaybooksTour = enableTutorial && tutorialStep === ExploreOtherToolsTourSteps.PLAYBOOKS_TOUR && exploreToolsTourTriggered && playbooksPlugin;
const handleClick = () => dispatch(setProductMenuSwitcherOpen(!switcherOpen)); const handleClick = () => dispatch(setProductMenuSwitcherOpen(!switcherOpen));
const handleOnBoardingTaskData = useHandleOnBoardingTaskData(); const handleOnBoardingTaskData = useHandleOnBoardingTaskData();
@@ -99,7 +80,7 @@ const ProductMenu = (): JSX.Element => {
}; };
useClickOutsideRef(menuRef, () => { useClickOutsideRef(menuRef, () => {
if (exploreToolsTourTriggered || !switcherOpen) { if (!switcherOpen) {
return; return;
} }
dispatch(setProductMenuSwitcherOpen(false)); dispatch(setProductMenuSwitcherOpen(false));
@@ -108,11 +89,6 @@ const ProductMenu = (): JSX.Element => {
const productItems = products?.map((product) => { const productItems = products?.map((product) => {
let tourTip; let tourTip;
// playbooks
if (product.pluginId === suitePluginIds.playbooks && showPlaybooksTour) {
tourTip = (<PlaybooksTourTip singleTip={true}/>);
}
return ( return (
<ProductMenuItem <ProductMenuItem
key={product.id} key={product.id}

Просмотреть файл

@@ -8,11 +8,9 @@ export const OnboardingTaskCategory = 'onboarding_task_list';
// Whole task list is based on these // Whole task list is based on these
export const OnboardingTasksName = { export const OnboardingTasksName = {
CHANNELS_TOUR: 'channels_tour', CHANNELS_TOUR: 'channels_tour',
PLAYBOOKS_TOUR: 'playbooks_tour',
INVITE_PEOPLE: 'invite_people', INVITE_PEOPLE: 'invite_people',
DOWNLOAD_APP: 'download_app', DOWNLOAD_APP: 'download_app',
COMPLETE_YOUR_PROFILE: 'complete_your_profile', COMPLETE_YOUR_PROFILE: 'complete_your_profile',
EXPLORE_OTHER_TOOLS: 'explore_other_tools',
VISIT_SYSTEM_CONSOLE: 'visit_system_console', VISIT_SYSTEM_CONSOLE: 'visit_system_console',
START_TRIAL: 'start_trial', START_TRIAL: 'start_trial',
}; };
@@ -33,9 +31,7 @@ export const GenericTaskSteps = {
export const TaskNameMapToSteps = { export const TaskNameMapToSteps = {
[OnboardingTasksName.CHANNELS_TOUR]: GenericTaskSteps, [OnboardingTasksName.CHANNELS_TOUR]: GenericTaskSteps,
[OnboardingTasksName.PLAYBOOKS_TOUR]: GenericTaskSteps,
[OnboardingTasksName.COMPLETE_YOUR_PROFILE]: GenericTaskSteps, [OnboardingTasksName.COMPLETE_YOUR_PROFILE]: GenericTaskSteps,
[OnboardingTasksName.EXPLORE_OTHER_TOOLS]: GenericTaskSteps,
[OnboardingTasksName.DOWNLOAD_APP]: GenericTaskSteps, [OnboardingTasksName.DOWNLOAD_APP]: GenericTaskSteps,
[OnboardingTasksName.VISIT_SYSTEM_CONSOLE]: GenericTaskSteps, [OnboardingTasksName.VISIT_SYSTEM_CONSOLE]: GenericTaskSteps,
[OnboardingTasksName.INVITE_PEOPLE]: GenericTaskSteps, [OnboardingTasksName.INVITE_PEOPLE]: GenericTaskSteps,

Просмотреть файл

@@ -4,7 +4,7 @@
import React, {useCallback, useMemo} from 'react'; import React, {useCallback, useMemo} from 'react';
import {useIntl} from 'react-intl'; import {useIntl} from 'react-intl';
import {useDispatch, useSelector} from 'react-redux'; import {useDispatch, useSelector} from 'react-redux';
import {matchPath, useHistory, useLocation} from 'react-router-dom'; import {matchPath, useLocation} from 'react-router-dom';
import {savePreferences} from 'mattermost-redux/actions/preferences'; import {savePreferences} from 'mattermost-redux/actions/preferences';
import {getCurrentUserId} from 'mattermost-redux/selectors/entities/common'; import {getCurrentUserId} from 'mattermost-redux/selectors/entities/common';
@@ -24,13 +24,11 @@ import {setProductMenuSwitcherOpen} from 'actions/views/product_menu';
import {setStatusDropdown} from 'actions/views/status_dropdown'; import {setStatusDropdown} from 'actions/views/status_dropdown';
import Channels from 'components/common/svg_images_components/channels_svg'; import Channels from 'components/common/svg_images_components/channels_svg';
import Clipboard from 'components/common/svg_images_components/clipboard_svg';
import Gears from 'components/common/svg_images_components/gears_svg'; import Gears from 'components/common/svg_images_components/gears_svg';
import Handshake from 'components/common/svg_images_components/handshake_svg'; import Handshake from 'components/common/svg_images_components/handshake_svg';
import Phone from 'components/common/svg_images_components/phone_svg'; import Phone from 'components/common/svg_images_components/phone_svg';
import Security from 'components/common/svg_images_components/security_svg'; import Security from 'components/common/svg_images_components/security_svg';
import Sunglasses from 'components/common/svg_images_components/sunglasses_svg'; import Sunglasses from 'components/common/svg_images_components/sunglasses_svg';
import Wrench from 'components/common/svg_images_components/wrench_svg';
import LearnMoreTrialModal from 'components/learn_more_trial_modal/learn_more_trial_modal'; import LearnMoreTrialModal from 'components/learn_more_trial_modal/learn_more_trial_modal';
import { import {
AutoTourStatus, AutoTourStatus,
@@ -41,7 +39,7 @@ import {
TutorialTourName, TutorialTourName,
} from 'components/tours'; } from 'components/tours';
import {ModalIdentifiers, TELEMETRY_CATEGORIES, ExploreOtherToolsTourSteps} from 'utils/constants'; import {ModalIdentifiers, TELEMETRY_CATEGORIES} from 'utils/constants';
import type {GlobalState} from 'types/store'; import type {GlobalState} from 'types/store';
@@ -61,14 +59,6 @@ const useGetTaskDetails = () => {
defaultMessage: 'Take a tour of Channels.', defaultMessage: 'Take a tour of Channels.',
}), }),
}, },
[OnboardingTasksName.PLAYBOOKS_TOUR]: {
id: 'task_resolve_incidents_faster_with_playbooks',
svg: Clipboard,
message: formatMessage({
id: 'onboardingTask.checklist.task_resolve_incidents_faster_with_playbooks',
defaultMessage: 'Explore workflows with your first playbook.',
}),
},
[OnboardingTasksName.INVITE_PEOPLE]: { [OnboardingTasksName.INVITE_PEOPLE]: {
id: 'task_invite_team_members', id: 'task_invite_team_members',
svg: Handshake, svg: Handshake,
@@ -86,15 +76,6 @@ const useGetTaskDetails = () => {
}), }),
}, },
[OnboardingTasksName.EXPLORE_OTHER_TOOLS]: {
id: 'task_explore_other_tools_in_platform',
svg: Wrench,
message: formatMessage({
id: 'onboardingTask.checklist.task_explore_other_tools_in_platform',
defaultMessage: 'Explore other tools in the platform.',
}),
},
[OnboardingTasksName.DOWNLOAD_APP]: { [OnboardingTasksName.DOWNLOAD_APP]: {
id: 'task_download_mm_apps', id: 'task_download_mm_apps',
svg: Phone, svg: Phone,
@@ -124,7 +105,6 @@ const useGetTaskDetails = () => {
}; };
export const useTasksList = () => { export const useTasksList = () => {
const pluginsList = useSelector((state: GlobalState) => state.plugins.plugins);
const prevTrialLicense = useSelector((state: GlobalState) => state.entities.admin.prevTrialLicense); const prevTrialLicense = useSelector((state: GlobalState) => state.entities.admin.prevTrialLicense);
const license = useSelector(getLicense); const license = useSelector(getLicense);
const isPrevLicensed = prevTrialLicense?.IsLicensed; const isPrevLicensed = prevTrialLicense?.IsLicensed;
@@ -147,9 +127,6 @@ export const useTasksList = () => {
const showStartTrialTask = selfHostedTrialCondition || cloudTrialCondition; const showStartTrialTask = selfHostedTrialCondition || cloudTrialCondition;
const list: Record<string, string> = {...OnboardingTasksName}; const list: Record<string, string> = {...OnboardingTasksName};
if (!pluginsList.playbooks || !isUserFirstAdmin) {
delete list.PLAYBOOKS_TOUR;
}
if (!showStartTrialTask) { if (!showStartTrialTask) {
delete list.START_TRIAL; delete list.START_TRIAL;
} }
@@ -159,11 +136,6 @@ export const useTasksList = () => {
delete list.START_TRIAL; delete list.START_TRIAL;
} }
// explore other tools tour is only shown to subsequent admins and end users
if (isUserFirstAdmin || (!pluginsList.playbooks && !pluginsList.focalboard)) {
delete list.EXPLORE_OTHER_TOOLS;
}
// invite other users is hidden for guest users // invite other users is hidden for guest users
if (isGuestUser) { if (isGuestUser) {
delete list.INVITE_PEOPLE; delete list.INVITE_PEOPLE;
@@ -233,7 +205,6 @@ export const useHandleOnBoardingTaskData = () => {
export const useHandleOnBoardingTaskTrigger = () => { export const useHandleOnBoardingTaskTrigger = () => {
const dispatch = useDispatch(); const dispatch = useDispatch();
const history = useHistory();
const {pathname} = useLocation(); const {pathname} = useLocation();
const handleSaveData = useHandleOnBoardingTaskData(); const handleSaveData = useHandleOnBoardingTaskData();
@@ -269,12 +240,6 @@ export const useHandleOnBoardingTaskTrigger = () => {
} }
break; break;
} }
case OnboardingTasksName.PLAYBOOKS_TOUR: {
history.push('/playbooks/start');
localStorage.setItem(OnboardingTaskCategory, 'true');
handleSaveData(taskName, TaskNameMapToSteps[taskName].FINISHED, true);
break;
}
case OnboardingTasksName.COMPLETE_YOUR_PROFILE: { case OnboardingTasksName.COMPLETE_YOUR_PROFILE: {
dispatch(setStatusDropdown(true)); dispatch(setStatusDropdown(true));
dispatch(setShowOnboardingCompleteProfileTour(true)); dispatch(setShowOnboardingCompleteProfileTour(true));
@@ -284,30 +249,6 @@ export const useHandleOnBoardingTaskTrigger = () => {
} }
break; break;
} }
case OnboardingTasksName.EXPLORE_OTHER_TOOLS: {
dispatch(setProductMenuSwitcherOpen(true));
handleSaveData(taskName, TaskNameMapToSteps[taskName].STARTED, true);
const tourCategory = TutorialTourName.EXPLORE_OTHER_TOOLS;
const preferences = [
{
user_id: currentUserId,
category: tourCategory,
name: currentUserId,
value: ExploreOtherToolsTourSteps.PLAYBOOKS_TOUR.toString(),
},
{
user_id: currentUserId,
category: tourCategory,
name: TTNameMapToATStatusKey[tourCategory],
value: AutoTourStatus.ENABLED.toString(),
},
];
dispatch(savePreferences(currentUserId, preferences));
if (!inChannels) {
dispatch(switchToChannels());
}
break;
}
case OnboardingTasksName.VISIT_SYSTEM_CONSOLE: { case OnboardingTasksName.VISIT_SYSTEM_CONSOLE: {
dispatch(setProductMenuSwitcherOpen(true)); dispatch(setProductMenuSwitcherOpen(true));
dispatch(setShowOnboardingVisitConsoleTour(true)); dispatch(setShowOnboardingVisitConsoleTour(true));

Просмотреть файл

@@ -23,7 +23,6 @@ export const TutorialTourName = {
CRT_TUTORIAL_STEP: 'crt_tutorial_step', CRT_TUTORIAL_STEP: 'crt_tutorial_step',
CRT_THREAD_PANE_STEP: 'crt_thread_pane_step', CRT_THREAD_PANE_STEP: 'crt_thread_pane_step',
AUTO_TOUR_STATUS: 'auto_tour_status', AUTO_TOUR_STATUS: 'auto_tour_status',
EXPLORE_OTHER_TOOLS: 'explore_tools',
}; };
export const OnboardingTourSteps = { export const OnboardingTourSteps = {
@@ -41,11 +40,6 @@ export const OnboardingTourStepsForGuestUsers = {
FINISHED, FINISHED,
}; };
export const ExploreOtherToolsTourSteps = {
PLAYBOOKS_TOUR: 1,
FINISHED,
};
export const CrtTutorialSteps = { export const CrtTutorialSteps = {
WELCOME_POPOVER: 0, WELCOME_POPOVER: 0,
LIST_POPOVER: 1, LIST_POPOVER: 1,
@@ -63,12 +57,10 @@ export const TTNameMapToATStatusKey = {
[TutorialTourName.ONBOARDING_TUTORIAL_STEP]: TutorialTourName.ONBOARDING_TUTORIAL_STEP + AutoStatusSuffix, [TutorialTourName.ONBOARDING_TUTORIAL_STEP]: TutorialTourName.ONBOARDING_TUTORIAL_STEP + AutoStatusSuffix,
[TutorialTourName.CRT_TUTORIAL_STEP]: 'crt_tutorial_auto_tour_status', [TutorialTourName.CRT_TUTORIAL_STEP]: 'crt_tutorial_auto_tour_status',
[TutorialTourName.CRT_THREAD_PANE_STEP]: TutorialTourName.CRT_THREAD_PANE_STEP + AutoStatusSuffix, [TutorialTourName.CRT_THREAD_PANE_STEP]: TutorialTourName.CRT_THREAD_PANE_STEP + AutoStatusSuffix,
[TutorialTourName.EXPLORE_OTHER_TOOLS]: TutorialTourName.EXPLORE_OTHER_TOOLS + AutoStatusSuffix,
}; };
export const TTNameMapToTourSteps = { export const TTNameMapToTourSteps = {
[TutorialTourName.ONBOARDING_TUTORIAL_STEP]: OnboardingTourSteps, [TutorialTourName.ONBOARDING_TUTORIAL_STEP]: OnboardingTourSteps,
[TutorialTourName.ONBOARDING_TUTORIAL_STEP_FOR_GUESTS]: OnboardingTourStepsForGuestUsers, [TutorialTourName.ONBOARDING_TUTORIAL_STEP_FOR_GUESTS]: OnboardingTourStepsForGuestUsers,
[TutorialTourName.CRT_TUTORIAL_STEP]: CrtTutorialSteps, [TutorialTourName.CRT_TUTORIAL_STEP]: CrtTutorialSteps,
[TutorialTourName.EXPLORE_OTHER_TOOLS]: ExploreOtherToolsTourSteps,
}; };

Просмотреть файл

@@ -11,18 +11,15 @@ import {getCurrentUserId, isCurrentUserGuestUser} from 'mattermost-redux/selecto
import {setAddChannelDropdown} from 'actions/views/add_channel_dropdown'; import {setAddChannelDropdown} from 'actions/views/add_channel_dropdown';
import {close as closeLhs, open as openLhs} from 'actions/views/lhs'; import {close as closeLhs, open as openLhs} from 'actions/views/lhs';
import {switchToChannels} from 'actions/views/onboarding_tasks'; import {switchToChannels} from 'actions/views/onboarding_tasks';
import {setProductMenuSwitcherOpen} from 'actions/views/product_menu';
import {OnboardingTaskCategory, OnboardingTaskList, OnboardingTasksName} from 'components/onboarding_tasks'; import {OnboardingTaskCategory, OnboardingTaskList, OnboardingTasksName} from 'components/onboarding_tasks';
import {useGetPluginsActivationState} from 'plugins/useGetPluginsActivationState';
import {getHistory} from 'utils/browser_history'; import {getHistory} from 'utils/browser_history';
import type {GlobalState} from 'types/store'; import type {GlobalState} from 'types/store';
import { import {
CrtTutorialSteps, CrtTutorialSteps,
ExploreOtherToolsTourSteps,
FINISHED, FINISHED,
OnboardingTourSteps, OnboardingTourSteps,
TTNameMapToTourSteps, TTNameMapToTourSteps,
@@ -34,16 +31,7 @@ export const useGetTourSteps = (tourCategory: string) => {
let tourSteps: Record<string, number> = TTNameMapToTourSteps[tourCategory]; let tourSteps: Record<string, number> = TTNameMapToTourSteps[tourCategory];
const {playbooksPlugin, playbooksProductEnabled} = useGetPluginsActivationState(); if (tourCategory === TutorialTourName.ONBOARDING_TUTORIAL_STEP && isGuestUser) {
if (tourCategory === TutorialTourName.EXPLORE_OTHER_TOOLS) {
const steps: Record<string, number> = tourSteps as typeof ExploreOtherToolsTourSteps;
if (!playbooksPlugin && !playbooksProductEnabled) {
delete steps.PLAYBOOKS_TOUR;
}
tourSteps = steps;
} else if (tourCategory === TutorialTourName.ONBOARDING_TUTORIAL_STEP && isGuestUser) {
// restrict the 'learn more about messaging' tour when user is guest (townSquare, channel creation and user invite are restricted to guests) // restrict the 'learn more about messaging' tour when user is guest (townSquare, channel creation and user invite are restricted to guests)
tourSteps = TTNameMapToTourSteps[TutorialTourName.ONBOARDING_TUTORIAL_STEP_FOR_GUESTS]; tourSteps = TTNameMapToTourSteps[TutorialTourName.ONBOARDING_TUTORIAL_STEP_FOR_GUESTS];
} }
@@ -112,31 +100,6 @@ export const useHandleNavigationAndExtraActions = (tourCategory: string) => {
} }
default: default:
} }
} else if (tourCategory === TutorialTourName.EXPLORE_OTHER_TOOLS) {
switch (step) {
case ExploreOtherToolsTourSteps.FINISHED : {
dispatch(setProductMenuSwitcherOpen(false));
let preferences = [
{
user_id: currentUserId,
category: OnboardingTaskCategory,
name: OnboardingTasksName.EXPLORE_OTHER_TOOLS,
value: FINISHED.toString(),
},
];
preferences = [...preferences,
{
user_id: currentUserId,
category: OnboardingTaskCategory,
name: OnboardingTaskList.ONBOARDING_TASK_LIST_OPEN,
value: 'true',
},
];
dispatch(savePreferences(currentUserId, preferences));
break;
}
default:
}
} }
}, [currentUserId, teamUrl, tourCategory]); }, [currentUserId, teamUrl, tourCategory]);

Просмотреть файл

@@ -1,4 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
export * from './playbooks_tour_tip';

Просмотреть файл

@@ -1,18 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react';
import {ChannelsTourTip, TutorialTourName} from 'components/tours';
import type {ChannelsTourTipProps} from 'components/tours';
const OnboardingExploreToolsTourTip = (props: Omit<ChannelsTourTipProps, 'tourCategory'>) => {
return (
<ChannelsTourTip
{...props}
tourCategory={TutorialTourName.EXPLORE_OTHER_TOOLS}
/>
);
};
export default OnboardingExploreToolsTourTip;

Просмотреть файл

@@ -1,47 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react';
import {FormattedMessage} from 'react-intl';
import {useMeasurePunchouts} from '@mattermost/components';
import PlaybooksImg from 'images/playbooks_tour_tip.svg';
import OnboardingExploreToolsTourTip from './onboarding_explore_tools_tour_tip';
interface PlaybooksTourTipProps {
singleTip: boolean;
}
export const PlaybooksTourTip = ({singleTip}: PlaybooksTourTipProps) => {
const title = (
<FormattedMessage
id='onboardingTour.Playbooks.title'
defaultMessage={'Build workflows with Playbooks'}
/>
);
const screen = (
<p>
<FormattedMessage
id='onboardingTour.Playbooks.Description'
defaultMessage={'With checklists, automations and integrations, you can define processes that ensure best practices are followed every time.'}
/>
</p>
);
const overlayPunchOut = useMeasurePunchouts(['product-menu-item-playbooks'], []);
return (
<OnboardingExploreToolsTourTip
title={title}
screen={screen}
overlayPunchOut={overlayPunchOut}
singleTip={singleTip}
imageURL={PlaybooksImg}
placement='right-start'
pulsatingDotPlacement='right'
/>
);
};

Просмотреть файл

@@ -4388,10 +4388,8 @@
"onboardingTask.checklist.start_enterprise_now": "Start your free Enterprise trial now!", "onboardingTask.checklist.start_enterprise_now": "Start your free Enterprise trial now!",
"onboardingTask.checklist.task_complete_your_profile": "Complete your profile.", "onboardingTask.checklist.task_complete_your_profile": "Complete your profile.",
"onboardingTask.checklist.task_download_mm_apps": "Download the Desktop and Mobile Apps.", "onboardingTask.checklist.task_download_mm_apps": "Download the Desktop and Mobile Apps.",
"onboardingTask.checklist.task_explore_other_tools_in_platform": "Explore other tools in the platform.",
"onboardingTask.checklist.task_invite_team_members": "Invite team members to the workspace.", "onboardingTask.checklist.task_invite_team_members": "Invite team members to the workspace.",
"onboardingTask.checklist.task_learn_more_about_messaging": "Take a tour of Channels.", "onboardingTask.checklist.task_learn_more_about_messaging": "Take a tour of Channels.",
"onboardingTask.checklist.task_resolve_incidents_faster_with_playbooks": "Explore workflows with your first playbook.",
"onboardingTask.checklist.task_start_enterprise_trial": "Learn more about Enterprise-level high-security features.", "onboardingTask.checklist.task_start_enterprise_trial": "Learn more about Enterprise-level high-security features.",
"onboardingTask.checklist.task_visit_system_console": "Visit the System Console to configure your workspace.", "onboardingTask.checklist.task_visit_system_console": "Visit the System Console to configure your workspace.",
"onboardingTask.checklist.video_title": "Watch overview", "onboardingTask.checklist.video_title": "Watch overview",
@@ -4410,8 +4408,6 @@
"onboardingTour.customizeYourExperience.title": "Customize your experience", "onboardingTour.customizeYourExperience.title": "Customize your experience",
"onboardingTour.invitePeople.Description": "Invite members of your organization or external guests to the team and start collaborating with them.", "onboardingTour.invitePeople.Description": "Invite members of your organization or external guests to the team and start collaborating with them.",
"onboardingTour.invitePeople.title": "Invite people to the team", "onboardingTour.invitePeople.title": "Invite people to the team",
"onboardingTour.Playbooks.Description": "With checklists, automations and integrations, you can define processes that ensure best practices are followed every time.",
"onboardingTour.Playbooks.title": "Build workflows with Playbooks",
"onboardingTour.sendMessage.Description": "Start collaborating with others by typing or selecting one of the messages below. You can also drag and drop attachments into the text field or upload them using the paperclip icon.", "onboardingTour.sendMessage.Description": "Start collaborating with others by typing or selecting one of the messages below. You can also drag and drop attachments into the text field or upload them using the paperclip icon.",
"onboardingTour.sendMessage.title": "Send messages", "onboardingTour.sendMessage.title": "Send messages",
"ONE_HUNDRED_TO_500": "101-500", "ONE_HUNDRED_TO_500": "101-500",

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

До

Ширина:  |  Высота:  |  Размер: 120 KiB

Просмотреть файл

@@ -680,11 +680,6 @@ export const CrtTutorialSteps = {
FINISHED: 999, FINISHED: 999,
}; };
export const ExploreOtherToolsTourSteps = {
PLAYBOOKS_TOUR: 1,
FINISHED: 999,
};
export const CrtTutorialTriggerSteps = { export const CrtTutorialTriggerSteps = {
START: 0, START: 0,
STARTED: 1, STARTED: 1,
@@ -1440,7 +1435,6 @@ export const Constants = {
AdminTutorialSteps, AdminTutorialSteps,
CrtTutorialSteps, CrtTutorialSteps,
CrtTutorialTriggerSteps, CrtTutorialTriggerSteps,
ExploreOtherToolsTourSteps,
CrtThreadPaneSteps, CrtThreadPaneSteps,
PostTypes, PostTypes,
ErrorPageTypes, ErrorPageTypes,