From 09bd5aa15679eff965ae597a0d3b646decccc36d Mon Sep 17 00:00:00 2001 From: Claire Date: Tue, 14 Jan 2025 14:10:48 +0100 Subject: [PATCH] [Glitch] Redirect new users to onboarding Port e9462960a7cf416b9e459d599a0f2cc8c5b070f0 to glitch-soc Signed-off-by: Claire --- .../flavours/glitch/api_types/accounts.ts | 2 +- .../flavours/glitch/features/onboarding/profile.tsx | 6 +++++- .../flavours/glitch/features/ui/index.jsx | 13 +++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/javascript/flavours/glitch/api_types/accounts.ts b/app/javascript/flavours/glitch/api_types/accounts.ts index fdbd7523fc..3f8b27497f 100644 --- a/app/javascript/flavours/glitch/api_types/accounts.ts +++ b/app/javascript/flavours/glitch/api_types/accounts.ts @@ -19,7 +19,7 @@ export interface BaseApiAccountJSON { avatar_static: string; bot: boolean; created_at: string; - discoverable: boolean; + discoverable?: boolean; indexable: boolean; display_name: string; emojis: ApiCustomEmojiJSON[]; diff --git a/app/javascript/flavours/glitch/features/onboarding/profile.tsx b/app/javascript/flavours/glitch/features/onboarding/profile.tsx index 41fbdea1ab..d5d35368f0 100644 --- a/app/javascript/flavours/glitch/features/onboarding/profile.tsx +++ b/app/javascript/flavours/glitch/features/onboarding/profile.tsx @@ -12,6 +12,7 @@ import AddPhotoAlternateIcon from '@/material-icons/400-24px/add_photo_alternate import EditIcon from '@/material-icons/400-24px/edit.svg?react'; import PersonIcon from '@/material-icons/400-24px/person.svg?react'; import { updateAccount } from 'flavours/glitch/actions/accounts'; +import { closeOnboarding } from 'flavours/glitch/actions/onboarding'; import { Button } from 'flavours/glitch/components/button'; import { Column } from 'flavours/glitch/components/column'; import { ColumnHeader } from 'flavours/glitch/components/column_header'; @@ -58,7 +59,9 @@ export const Profile: React.FC<{ ); const [avatar, setAvatar] = useState(); const [header, setHeader] = useState(); - const [discoverable, setDiscoverable] = useState(true); + const [discoverable, setDiscoverable] = useState( + account?.discoverable ?? true, + ); const [isSaving, setIsSaving] = useState(false); const [errors, setErrors] = useState(); const avatarFileRef = createRef(); @@ -132,6 +135,7 @@ export const Profile: React.FC<{ ) .then(() => { history.push('/start/follows'); + dispatch(closeOnboarding()); return ''; }) // eslint-disable-next-line @typescript-eslint/use-unknown-in-catch-callback-variable diff --git a/app/javascript/flavours/glitch/features/ui/index.jsx b/app/javascript/flavours/glitch/features/ui/index.jsx index db6d6a1fca..2a67355a51 100644 --- a/app/javascript/flavours/glitch/features/ui/index.jsx +++ b/app/javascript/flavours/glitch/features/ui/index.jsx @@ -100,6 +100,7 @@ const mapStateToProps = state => ({ hicolorPrivacyIcons: state.getIn(['local_settings', 'hicolor_privacy_icons']), moved: state.getIn(['accounts', me, 'moved']) && state.getIn(['accounts', state.getIn(['accounts', me, 'moved'])]), firstLaunch: state.getIn(['settings', 'introductionVersion'], 0) < INTRODUCTION_VERSION, + newAccount: !state.getIn(['accounts', me, 'note']) && !state.getIn(['accounts', me, 'bot']) && state.getIn(['accounts', me, 'following_count'], 0) === 0 && state.getIn(['accounts', me, 'statuses_count'], 0) === 0, username: state.getIn(['accounts', me, 'username']), }); @@ -144,6 +145,7 @@ class SwitchingColumnsArea extends PureComponent { children: PropTypes.node, location: PropTypes.object, singleColumn: PropTypes.bool, + forceOnboarding: PropTypes.bool, }; UNSAFE_componentWillMount () { @@ -174,14 +176,16 @@ class SwitchingColumnsArea extends PureComponent { }; render () { - const { children, singleColumn } = this.props; + const { children, singleColumn, forceOnboarding } = this.props; const { signedIn } = this.props.identity; const pathName = this.props.location.pathname; let redirect; if (signedIn) { - if (singleColumn) { + if (forceOnboarding) { + redirect = ; + } else if (singleColumn) { redirect = ; } else { redirect = ; @@ -292,6 +296,7 @@ class UI extends PureComponent { moved: PropTypes.map, layout: PropTypes.string.isRequired, firstLaunch: PropTypes.bool, + newAccount: PropTypes.bool, username: PropTypes.string, ...WithRouterPropTypes, }; @@ -615,7 +620,7 @@ class UI extends PureComponent { render () { const { draggingOver } = this.state; - const { children, isWide, location, layout, moved } = this.props; + const { children, isWide, location, layout, moved, firstLaunch, newAccount } = this.props; const className = classNames('ui', { 'wide': isWide, @@ -662,7 +667,7 @@ class UI extends PureComponent {
- + {children}