diff --git a/src/app/components/modules/Settings.jsx b/src/app/components/modules/Settings.jsx index 98ef357bfb..38d8d70725 100644 --- a/src/app/components/modules/Settings.jsx +++ b/src/app/components/modules/Settings.jsx @@ -49,40 +49,55 @@ class Settings extends React.Component { 'about', 'location', 'website', + 'witness_owner', + 'witness_description', + 'account_is_witness', ], initialValues: props.profile, - validation: values => ({ - profile_image: - values.profile_image && - !/^https?:\/\//.test(values.profile_image) - ? tt('settings_jsx.invalid_url') - : null, - cover_image: - values.cover_image && - !/^https?:\/\//.test(values.cover_image) - ? tt('settings_jsx.invalid_url') - : null, - name: - values.name && values.name.length > 20 - ? tt('settings_jsx.name_is_too_long') - : values.name && /^\s*@/.test(values.name) - ? tt('settings_jsx.name_must_not_begin_with') - : null, - about: - values.about && values.about.length > 160 - ? tt('settings_jsx.about_is_too_long') - : null, - location: - values.location && values.location.length > 30 - ? tt('settings_jsx.location_is_too_long') - : null, - website: - values.website && values.website.length > 100 - ? tt('settings_jsx.website_url_is_too_long') - : values.website && !/^https?:\/\//.test(values.website) - ? tt('settings_jsx.invalid_url') - : null, - }), + validation: values => { + return { + profile_image: + values.profile_image && + !/^https?:\/\//.test(values.profile_image) + ? tt('settings_jsx.invalid_url') + : null, + cover_image: + values.cover_image && + !/^https?:\/\//.test(values.cover_image) + ? tt('settings_jsx.invalid_url') + : null, + name: + values.name && values.name.length > 20 + ? tt('settings_jsx.name_is_too_long') + : values.name && /^\s*@/.test(values.name) + ? tt('settings_jsx.name_must_not_begin_with') + : null, + about: + values.about && values.about.length > 160 + ? tt('settings_jsx.about_is_too_long') + : null, + location: + values.location && values.location.length > 30 + ? tt('settings_jsx.location_is_too_long') + : null, + website: + values.website && values.website.length > 100 + ? tt('settings_jsx.website_url_is_too_long') + : values.website && + !/^https?:\/\//.test(values.website) + ? tt('settings_jsx.invalid_url') + : null, + witness_owner: + values.witness_owner && values.witness_owner.length > 30 + ? tt('settings_jsx.witness_owner_is_too_long') + : null, + witness_description: + values.witness_description && + values.witness_description.length > 512 + ? tt('settings_jsx.witness_description_is_too_long') + : null, + }; + }, }); this.handleSubmitForm = this.state.accountSettings.handleSubmit(args => this.handleSubmit(args) @@ -151,6 +166,8 @@ class Settings extends React.Component { about, location, website, + witness_owner, + witness_description, } = this.state; // Update relevant fields @@ -160,6 +177,8 @@ class Settings extends React.Component { metaData.profile.about = about.value; metaData.profile.location = location.value; metaData.profile.website = website.value; + metaData.profile.witness_owner = witness_owner.value; + metaData.profile.witness_description = witness_description.value; metaData.profile.version = 2; // signal upgrade to posting_json_metadata // Remove empty keys @@ -170,6 +189,10 @@ class Settings extends React.Component { if (!metaData.profile.about) delete metaData.profile.about; if (!metaData.profile.location) delete metaData.profile.location; if (!metaData.profile.website) delete metaData.profile.website; + if (!metaData.profile.witness_owner) + delete metaData.profile.witness_owner; + if (!metaData.profile.witness_description) + delete metaData.profile.witness_description; const { account, updateAccount } = this.props; this.setState({ loading: true }); @@ -305,7 +328,10 @@ class Settings extends React.Component { about, location, website, + witness_owner, + witness_description, progress, + account_is_witness, } = this.state; const preferred_api_endpoint = this.getPreferredApiEndpoint(); @@ -317,7 +343,7 @@ class Settings extends React.Component { isOwnAccount && (

{tt('settings_jsx.public_profile_settings')} @@ -334,107 +360,173 @@ class Settings extends React.Component { {progress.error} )} - -
- {profile_image.blur && - profile_image.touched && - profile_image.error} -
- -
- {cover_image.blur && - cover_image.touched && - cover_image.error} -
- -
- {name.touched && name.error} -
- -
- {about.touched && about.error} -
- -
- {location.touched && location.error} -
- -
- {website.blur && - website.touched && - website.error} +
+
+ +
+ {profile_image.blur && + profile_image.touched && + profile_image.error} +
+
+
+ +
+ {cover_image.blur && + cover_image.touched && + cover_image.error} +
+
+
+ +
+ {name.touched && name.error} +
+
+
+ +
+ {about.touched && about.error} +
+
+
+ +
+ {location.touched && location.error} +
+
+
+ +
+ {website.blur && + website.touched && + website.error} +
+
+ {account_is_witness.value && ( +
+ +
+ {witness_description.touched && + witness_description.error} +
+
+ )} + {account_is_witness.value && ( +
+ +
+ {witness_owner.touched && + witness_owner.error} +
+
+ )}
{state.loading && ( @@ -466,126 +558,165 @@ class Settings extends React.Component { {isOwnAccount && (
-
+


{tt('settings_jsx.preferences')}

- - -
- - - -
-
- - -
- - - - -
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
)} {ignores && ignores.size > 0 && (
-
+

Muted Users