Change onboarding by replacing tutorial with follow recommendations in web UI (#16060)
This commit is contained in:
		
							parent
							
								
									ca3bc1b09f
								
							
						
					
					
						commit
						bf903dc510
					
				
					 10 changed files with 287 additions and 51 deletions
				
			
		| 
						 | 
				
			
			@ -51,10 +51,12 @@ import {
 | 
			
		|||
  Lists,
 | 
			
		||||
  Search,
 | 
			
		||||
  Directory,
 | 
			
		||||
  FollowRecommendations,
 | 
			
		||||
} from './util/async-components';
 | 
			
		||||
import { me } from '../../initial_state';
 | 
			
		||||
import { previewState as previewMediaState } from './components/media_modal';
 | 
			
		||||
import { previewState as previewVideoState } from './components/video_modal';
 | 
			
		||||
import { closeOnboarding, INTRODUCTION_VERSION } from 'mastodon/actions/onboarding';
 | 
			
		||||
 | 
			
		||||
// Dummy import, to make sure that <Status /> ends up in the application bundle.
 | 
			
		||||
// Without this it ends up in ~8 very commonly used bundles.
 | 
			
		||||
| 
						 | 
				
			
			@ -71,6 +73,7 @@ const mapStateToProps = state => ({
 | 
			
		|||
  hasMediaAttachments: state.getIn(['compose', 'media_attachments']).size > 0,
 | 
			
		||||
  canUploadMore: !state.getIn(['compose', 'media_attachments']).some(x => ['audio', 'video'].includes(x.get('type'))) && state.getIn(['compose', 'media_attachments']).size < 4,
 | 
			
		||||
  dropdownMenuIsOpen: state.getIn(['dropdown_menu', 'openId']) !== null,
 | 
			
		||||
  firstLaunch: state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION,
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const keyMap = {
 | 
			
		||||
| 
						 | 
				
			
			@ -167,6 +170,7 @@ class SwitchingColumnsArea extends React.PureComponent {
 | 
			
		|||
          <WrappedRoute path='/bookmarks' component={BookmarkedStatuses} content={children} />
 | 
			
		||||
          <WrappedRoute path='/pinned' component={PinnedStatuses} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} />
 | 
			
		||||
 | 
			
		||||
          <WrappedRoute path='/start' component={FollowRecommendations} content={children} />
 | 
			
		||||
          <WrappedRoute path='/search' component={Search} content={children} />
 | 
			
		||||
          <WrappedRoute path='/directory' component={Directory} content={children} componentParams={{ shouldUpdateScroll: this.shouldUpdateScroll }} />
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -215,6 +219,7 @@ class UI extends React.PureComponent {
 | 
			
		|||
    intl: PropTypes.object.isRequired,
 | 
			
		||||
    dropdownMenuIsOpen: PropTypes.bool,
 | 
			
		||||
    layout: PropTypes.string.isRequired,
 | 
			
		||||
    firstLaunch: PropTypes.bool,
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  state = {
 | 
			
		||||
| 
						 | 
				
			
			@ -350,6 +355,12 @@ class UI extends React.PureComponent {
 | 
			
		|||
      navigator.serviceWorker.addEventListener('message', this.handleServiceWorkerPostMessage);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // On first launch, redirect to the follow recommendations page
 | 
			
		||||
    if (this.props.firstLaunch) {
 | 
			
		||||
      this.context.router.history.replace('/start');
 | 
			
		||||
      this.props.dispatch(closeOnboarding());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    this.props.dispatch(fetchMarkers());
 | 
			
		||||
    this.props.dispatch(expandHomeTimeline());
 | 
			
		||||
    this.props.dispatch(expandNotifications());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue