Add default post text to onboarding flow in web UI (#24705)

This commit is contained in:
Eugen Rochko 2023-04-28 10:05:34 +02:00 committed by GitHub
parent 1c61869eed
commit 8979b70975
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 16 additions and 6 deletions

View file

@ -126,9 +126,10 @@ export function resetCompose() {
}; };
} }
export const focusCompose = routerHistory => dispatch => { export const focusCompose = (routerHistory, defaultText) => dispatch => {
dispatch({ dispatch({
type: COMPOSE_FOCUS, type: COMPOSE_FOCUS,
defaultText,
}); });
ensureComposeIsVisible(routerHistory); ensureComposeIsVisible(routerHistory);

View file

@ -16,9 +16,13 @@ import Follows from './follows';
import Share from './share'; import Share from './share';
import Step from './components/step'; import Step from './components/step';
import ArrowSmallRight from './components/arrow_small_right'; import ArrowSmallRight from './components/arrow_small_right';
import { FormattedMessage } from 'react-intl'; import { FormattedMessage, injectIntl, defineMessages } from 'react-intl';
import { debounce } from 'lodash'; import { debounce } from 'lodash';
const messages = defineMessages({
template: { id: 'onboarding.compose.template', defaultMessage: 'Hello #Mastodon!' },
});
const mapStateToProps = () => { const mapStateToProps = () => {
const getAccount = makeGetAccount(); const getAccount = makeGetAccount();
@ -61,10 +65,10 @@ class Onboarding extends ImmutablePureComponent {
}; };
handleComposeClick = () => { handleComposeClick = () => {
const { dispatch } = this.props; const { dispatch, intl } = this.props;
const { router } = this.context; const { router } = this.context;
dispatch(focusCompose(router.history)); dispatch(focusCompose(router.history, intl.formatMessage(messages.template)));
}; };
handleShareClick = () => { handleShareClick = () => {
@ -138,4 +142,4 @@ class Onboarding extends ImmutablePureComponent {
} }
export default connect(mapStateToProps)(Onboarding); export default connect(mapStateToProps)(injectIntl(Onboarding));

View file

@ -3211,6 +3211,10 @@
}, },
{ {
"descriptors": [ "descriptors": [
{
"defaultMessage": "Hello #Mastodon!",
"id": "onboarding.compose.template"
},
{ {
"defaultMessage": "You've made it!", "defaultMessage": "You've made it!",
"id": "onboarding.start.title" "id": "onboarding.start.title"

View file

@ -445,6 +445,7 @@
"onboarding.actions.close": "Don't show this screen again", "onboarding.actions.close": "Don't show this screen again",
"onboarding.actions.go_to_explore": "See what's trending", "onboarding.actions.go_to_explore": "See what's trending",
"onboarding.actions.go_to_home": "Go to your home feed", "onboarding.actions.go_to_home": "Go to your home feed",
"onboarding.compose.template": "Hello #Mastodon!",
"onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.", "onboarding.follows.empty": "Unfortunately, no results can be shown right now. You can try using search or browsing the explore page to find people to follow, or try again later.",
"onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!", "onboarding.follows.lead": "You curate your own home feed. The more people you follow, the more active and interesting it will be. These profiles may be a good starting point—you can always unfollow them later!",
"onboarding.follows.title": "Popular on Mastodon", "onboarding.follows.title": "Popular on Mastodon",

View file

@ -528,7 +528,7 @@ export default function compose(state = initialState, action) {
case COMPOSE_LANGUAGE_CHANGE: case COMPOSE_LANGUAGE_CHANGE:
return state.set('language', action.language); return state.set('language', action.language);
case COMPOSE_FOCUS: case COMPOSE_FOCUS:
return state.set('focusDate', new Date()); return state.set('focusDate', new Date()).update('text', text => text.length > 0 ? text : action.defaultText);
default: default:
return state; return state;
} }