Dismiss tour from overlay (#2525)
* Shows "(Deleted User)" instead of UUID when user not found (#2354) (#2465) * Shows "(Deleted User)" instead of long, unreadable UUID in case the user is not found In case a user is not found, at present unreadable and long UUIDs are shown which kill the look and feel of the application. This patch replaces the UUID with a more explanatory string. * Update server/services/store/mattermostauthlayer/mattermostauthlayer.go Co-authored-by: Doug Lauder <wiggin77@warpmail.net> (cherry picked from commit68819185a4
) Co-authored-by: Akshay Vasudeva Rao <51395864+akkivasu@users.noreply.github.com> * Update CHANGELOG.md for v0.15 Added one more merged PR to the list * Added ability to dismiss tour from overlay * GH-2212 - Update global link on board (#2492) (#2495) (cherry picked from commit49df41f9b2
) Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com> * GH-2387 - Fixing link in comments (#2480) (#2498) (cherry picked from commit5e2cf0b386
) Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com> * Addead feature to start product tour on using the welcome template (#2468) * Fixed a bug where images of the welcome board were not copied over. (#2453) * Fixed a buig where images of welcome board were not copied over * Lint fixes * Fixed test * Fixed test * Fixed intended behavio * lint fixes * Fixed tests * Fixed tests Co-authored-by: Mattermost Build <build@mattermost.com> Co-authored-by: Akshay Vasudeva Rao <51395864+akkivasu@users.noreply.github.com> Co-authored-by: Winson Wu <93531870+wuwinson@users.noreply.github.com> Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com> Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
This commit is contained in:
parent
2cead9a444
commit
a53e947489
4 changed files with 65 additions and 6 deletions
|
@ -55,6 +55,7 @@ describe('components/cardDialog', () => {
|
||||||
cards: {
|
cards: {
|
||||||
[card.id]: card,
|
[card.id]: card,
|
||||||
},
|
},
|
||||||
|
current: card.id,
|
||||||
},
|
},
|
||||||
boards: {
|
boards: {
|
||||||
boards: {
|
boards: {
|
||||||
|
|
|
@ -98,6 +98,7 @@ describe('components/centerPanel', () => {
|
||||||
cards: {
|
cards: {
|
||||||
templates: [card1, card2],
|
templates: [card1, card2],
|
||||||
cards: [card1, card2],
|
cards: [card1, card2],
|
||||||
|
current: card1.id,
|
||||||
},
|
},
|
||||||
views: {
|
views: {
|
||||||
views: {
|
views: {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||||
// See LICENSE.txt for license information.
|
// See LICENSE.txt for license information.
|
||||||
import React from 'react'
|
import React, {useEffect} from 'react'
|
||||||
|
|
||||||
import {FormattedMessage} from 'react-intl'
|
import {FormattedMessage} from 'react-intl'
|
||||||
|
|
||||||
|
@ -10,8 +10,21 @@ import './add_properties.scss'
|
||||||
import {Utils} from '../../../utils'
|
import {Utils} from '../../../utils'
|
||||||
import addProperty from '../../../../static/addProperty.gif'
|
import addProperty from '../../../../static/addProperty.gif'
|
||||||
|
|
||||||
import {CardTourSteps, TOUR_CARD} from '../index'
|
import {BaseTourSteps, CardTourSteps, TOUR_BASE, TOUR_CARD} from '../index'
|
||||||
import TourTipRenderer from '../tourTipRenderer/tourTipRenderer'
|
import TourTipRenderer from '../tourTipRenderer/tourTipRenderer'
|
||||||
|
import {OnboardingBoardTitle, OnboardingCardTitle} from '../../cardDetail/cardDetail'
|
||||||
|
import {useAppDispatch, useAppSelector} from '../../../store/hooks'
|
||||||
|
import {
|
||||||
|
getMe,
|
||||||
|
getOnboardingTourCategory,
|
||||||
|
getOnboardingTourStarted,
|
||||||
|
getOnboardingTourStep,
|
||||||
|
patchProps,
|
||||||
|
} from '../../../store/users'
|
||||||
|
import {IUser, UserConfigPatch, UserPropPrefix} from '../../../user'
|
||||||
|
import mutator from '../../../mutator'
|
||||||
|
import {getCurrentBoard} from '../../../store/boards'
|
||||||
|
import {getCurrentCard} from '../../../store/cards'
|
||||||
|
|
||||||
const AddPropertiesTourStep = (): JSX.Element | null => {
|
const AddPropertiesTourStep = (): JSX.Element | null => {
|
||||||
const title = (
|
const title = (
|
||||||
|
@ -29,6 +42,53 @@ const AddPropertiesTourStep = (): JSX.Element | null => {
|
||||||
|
|
||||||
const punchout = useMeasurePunchouts(['.octo-propertyname.add-property'], [])
|
const punchout = useMeasurePunchouts(['.octo-propertyname.add-property'], [])
|
||||||
|
|
||||||
|
const me = useAppSelector<IUser|null>(getMe)
|
||||||
|
const dispatch = useAppDispatch()
|
||||||
|
|
||||||
|
const board = useAppSelector(getCurrentBoard)
|
||||||
|
const isOnboardingBoard = board ? board.title === OnboardingBoardTitle : false
|
||||||
|
|
||||||
|
const card = useAppSelector(getCurrentCard)
|
||||||
|
const isOnboardingCard = card ? card.title === OnboardingCardTitle : false
|
||||||
|
|
||||||
|
const onboardingTourStarted = useAppSelector(getOnboardingTourStarted)
|
||||||
|
const onboardingTourCategory = useAppSelector(getOnboardingTourCategory)
|
||||||
|
const onboardingTourStep = useAppSelector(getOnboardingTourStep)
|
||||||
|
|
||||||
|
// start the card tour if onboarding card is opened up
|
||||||
|
// and the user is still on the base tour
|
||||||
|
useEffect(() => {
|
||||||
|
async function task() {
|
||||||
|
if (!me || !card) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const should = card.id &&
|
||||||
|
isOnboardingBoard &&
|
||||||
|
isOnboardingCard &&
|
||||||
|
onboardingTourStarted &&
|
||||||
|
onboardingTourCategory === TOUR_BASE &&
|
||||||
|
onboardingTourStep === BaseTourSteps.OPEN_A_CARD.toString()
|
||||||
|
|
||||||
|
if (!should) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const patch: UserConfigPatch = {}
|
||||||
|
patch.updatedFields = {}
|
||||||
|
patch.updatedFields[UserPropPrefix + 'tourCategory'] = TOUR_CARD
|
||||||
|
patch.updatedFields[UserPropPrefix + 'onboardingTourStep'] = CardTourSteps.ADD_PROPERTIES.toString()
|
||||||
|
|
||||||
|
const updatedProps = await mutator.patchUserConfig(me.id, patch)
|
||||||
|
if (updatedProps) {
|
||||||
|
dispatch(patchProps(updatedProps))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// this hack is needed to allow performing async task in useEffect
|
||||||
|
task()
|
||||||
|
}, [card])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<TourTipRenderer
|
<TourTipRenderer
|
||||||
key='AddPropertiesTourStep'
|
key='AddPropertiesTourStep'
|
||||||
|
|
|
@ -4,10 +4,7 @@
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
|
|
||||||
&-clickable {
|
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
|
||||||
|
|
||||||
&,
|
&,
|
||||||
&::before,
|
&::before,
|
||||||
|
|
Loading…
Reference in a new issue