diff --git a/app/soapbox/features/edit_profile/index.js b/app/soapbox/features/edit_profile/index.js index 5704652d0..00c04aa3c 100644 --- a/app/soapbox/features/edit_profile/index.js +++ b/app/soapbox/features/edit_profile/index.js @@ -41,15 +41,22 @@ const messages = defineMessages({ metaFieldContent: { id: 'edit_profile.fields.meta_fields.content_placeholder', defaultMessage: 'Content' }, verified: { id: 'edit_profile.fields.verified_display_name', defaultMessage: 'Verified users may not update their display name' }, success: { id: 'edit_profile.success', defaultMessage: 'Profile saved!' }, + bioPlaceholder: { id: 'edit_profile.fields.bio_placeholder', defaultMessage: 'Tell us about yourself.' }, + displayNamePlaceholder: { id: 'edit_profile.fields.display_name_placeholder', defaultMessage: 'Name' }, }); const mapStateToProps = state => { const me = state.get('me'); + const account = state.getIn(['accounts', me]); const soapbox = getSoapboxConfig(state); - const meta = state.getIn(['meta', 'pleroma']); - const account = state.getIn(['accounts', me]).set('pleroma', meta); + + const baseProfile = ImmutableMap({ + pleroma: state.getIn(['meta', 'pleroma', me]), + source: state.getIn(['meta', 'source', me]), + }); + return { - account, + account: baseProfile.merge(account), maxFields: state.getIn(['instance', 'pleroma', 'metadata', 'fields_limits', 'max_fields'], 4), verifiedCanEditName: soapbox.get('verifiedCanEditName'), supportsEmailList: getFeatures(state.get('instance')).emailList, @@ -88,18 +95,21 @@ class EditProfile extends ImmutablePureComponent { constructor(props) { super(props); - const { account } = this.props; + const { account, maxFields } = this.props; + const strangerNotifications = account.getIn(['pleroma', 'notification_settings', 'block_from_strangers']); const acceptsEmailList = account.getIn(['pleroma', 'accepts_email_list']); + const initialState = account.withMutations(map => { map.merge(map.get('source')); map.delete('source'); - map.set('fields', normalizeFields(map.get('fields'), Math.min(props.maxFields, 4))); + map.set('fields', normalizeFields(map.get('fields'), Math.min(maxFields, 4))); map.set('stranger_notifications', strangerNotifications); map.set('accepts_email_list', acceptsEmailList); map.set('hide_network', hidesNetwork(account)); unescapeParams(map, ['display_name', 'bio']); }); + this.state = initialState.toObject(); } @@ -108,7 +118,7 @@ class EditProfile extends ImmutablePureComponent { return account.merge(ImmutableMap({ header: this.state.header, avatar: this.state.avatar, - display_name: this.state.display_name, + display_name: this.state.display_name || account.get('username'), })); } @@ -225,6 +235,7 @@ class EditProfile extends ImmutablePureComponent { } + placeholder={intl.formatMessage(messages.displayNamePlaceholder)} name='display_name' value={this.state.display_name} onChange={this.handleTextChange} @@ -233,6 +244,7 @@ class EditProfile extends ImmutablePureComponent { /> } + placeholder={intl.formatMessage(messages.bioPlaceholder)} name='note' autoComplete='off' value={this.state.note} diff --git a/app/soapbox/reducers/meta.js b/app/soapbox/reducers/meta.js index eac95187d..4de0119a7 100644 --- a/app/soapbox/reducers/meta.js +++ b/app/soapbox/reducers/meta.js @@ -8,9 +8,15 @@ const initialState = ImmutableMap(); const importAccount = (state, account) => { return state.withMutations(state => { + const accountId = account.get('id'); + if (account.has('pleroma')) { const pleroPrefs = account.get('pleroma').delete('settings_store'); - state.mergeIn(['pleroma'], pleroPrefs); + state.setIn(['pleroma', accountId], pleroPrefs); + } + + if (account.has('source')) { + state.setIn(['source', accountId], account.get('source')); } }); };