From 6255ba4976519a99bdb5f2939db5969c32448197 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Mon, 14 Jun 2021 22:07:48 -0500 Subject: [PATCH 1/2] Support email list --- app/soapbox/features/edit_profile/index.js | 10 ++++++++++ .../landing_page/components/registration_form.js | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/app/soapbox/features/edit_profile/index.js b/app/soapbox/features/edit_profile/index.js index e73ef1256..e4560d179 100644 --- a/app/soapbox/features/edit_profile/index.js +++ b/app/soapbox/features/edit_profile/index.js @@ -78,11 +78,13 @@ class EditProfile extends ImmutablePureComponent { super(props); const { account } = 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'), props.maxFields)); map.set('stranger_notifications', strangerNotifications); + map.set('accepts_email_list', acceptsEmailList); unescapeParams(map, ['display_name', 'bio']); }); this.state = initialState.toObject(); @@ -117,6 +119,7 @@ class EditProfile extends ImmutablePureComponent { avatar: state.avatar_file, header: state.header_file, locked: state.locked, + accepts_email_list: state.accepts_email_list, }, this.getFieldParams().toJS()); } @@ -246,6 +249,13 @@ class EditProfile extends ImmutablePureComponent { checked={this.state.stranger_notifications} onChange={this.handleCheckboxChange} /> + } + hint={} + name='accepts_email_list' + checked={this.state.accepts_email_list} + onChange={this.handleCheckboxChange} + />
diff --git a/app/soapbox/features/landing_page/components/registration_form.js b/app/soapbox/features/landing_page/components/registration_form.js index 808e9d56f..47856351a 100644 --- a/app/soapbox/features/landing_page/components/registration_form.js +++ b/app/soapbox/features/landing_page/components/registration_form.js @@ -28,6 +28,7 @@ const messages = defineMessages({ agreement: { id: 'registration.agreement', defaultMessage: 'I agree to the {tos}.' }, tos: { id: 'registration.tos', defaultMessage: 'Terms of Service' }, close: { id: 'registration.confirmation_modal.close', defaultMessage: 'Close' }, + newsletter: { id: 'registration.newsletter', defaultMessage: 'Subscribe to newsletter.' }, }); const mapStateToProps = (state, props) => ({ @@ -232,6 +233,11 @@ class RegistrationForm extends ImmutablePureComponent { onChange={this.onCheckboxChange} required /> +
+ {supportsEmailList &&
+

+ +
} ); diff --git a/app/soapbox/features/edit_profile/index.js b/app/soapbox/features/edit_profile/index.js index e4560d179..9b5d179b4 100644 --- a/app/soapbox/features/edit_profile/index.js +++ b/app/soapbox/features/edit_profile/index.js @@ -24,6 +24,7 @@ import { updateNotificationSettings } from 'soapbox/actions/accounts'; import { unescape } from 'lodash'; import { isVerified } from 'soapbox/utils/accounts'; import { getSoapboxConfig } from 'soapbox/actions/soapbox'; +import { getFeatures } from 'soapbox/utils/features'; const messages = defineMessages({ heading: { id: 'column.edit_profile', defaultMessage: 'Edit profile' }, @@ -41,6 +42,7 @@ const mapStateToProps = state => { account, maxFields: state.getIn(['instance', 'pleroma', 'metadata', 'fields_limits', 'max_fields'], 4), verifiedCanEditName: soapbox.get('verifiedCanEditName'), + supportsEmailList: getFeatures(state.get('instance')).emailList, }; }; @@ -182,7 +184,7 @@ class EditProfile extends ImmutablePureComponent { } render() { - const { intl, maxFields, account, verifiedCanEditName } = this.props; + const { intl, maxFields, account, verifiedCanEditName, supportsEmailList } = this.props; const verified = isVerified(account); const canEditName = verifiedCanEditName || !verified; @@ -249,13 +251,13 @@ class EditProfile extends ImmutablePureComponent { checked={this.state.stranger_notifications} onChange={this.handleCheckboxChange} /> - } hint={} name='accepts_email_list' checked={this.state.accepts_email_list} onChange={this.handleCheckboxChange} - /> + />}
diff --git a/app/soapbox/features/landing_page/components/registration_form.js b/app/soapbox/features/landing_page/components/registration_form.js index 47856351a..b0518c704 100644 --- a/app/soapbox/features/landing_page/components/registration_form.js +++ b/app/soapbox/features/landing_page/components/registration_form.js @@ -18,6 +18,7 @@ import { Map as ImmutableMap } from 'immutable'; import { v4 as uuidv4 } from 'uuid'; import { getSettings } from 'soapbox/actions/settings'; import { openModal } from 'soapbox/actions/modal'; +import { getFeatures } from 'soapbox/utils/features'; const messages = defineMessages({ username: { id: 'registration.fields.username_placeholder', defaultMessage: 'Username' }, @@ -36,6 +37,7 @@ const mapStateToProps = (state, props) => ({ locale: getSettings(state).get('locale'), needsConfirmation: state.getIn(['instance', 'pleroma', 'metadata', 'account_activation_required']), needsApproval: state.getIn(['instance', 'approval_required']), + supportsEmailList: getFeatures(state.get('instance')).emailList, }); export default @connect(mapStateToProps) @@ -136,7 +138,7 @@ class RegistrationForm extends ImmutablePureComponent { } render() { - const { instance, intl } = this.props; + const { instance, intl, supportsEmailList } = this.props; const { params } = this.state; const isOpen = instance.get('registrations'); const isLoading = this.state.captchaLoading || this.state.submissionLoading; @@ -233,11 +235,11 @@ class RegistrationForm extends ImmutablePureComponent { onChange={this.onCheckboxChange} required /> - + />}