[feature] Add first iteration of a user panel at /user (#736)

* start work on user panel

* parse source first before checking if empty form

* newline

* set avi + header nicely

* add posts settings

* render signin a bit nicer on mobile

* return OK json on successful change

* return unauthorized on bad password

* clarify message on insecure password

* make login a bit prettier

* add alt text + border round image previews

* add logout button

* add password change

* styling updates

* redirect /auth/edit to /user

* update tests

* fix validation tests

* better labels, link to more info

* make submit button generic component

* move submit button inside forms

* add autocomplete labels to password fields

* fix indentation (thx eslint)

* update eslintrc

* eslint: no-unescaped-entities

* initial deduplication between user and admin panel

* add default status/post format setting

* user panel styling for inputs

* update user panel styling, include normalize css

* add placeholder text

* input padding

Co-authored-by: f0x <f0x@cthu.lu>
This commit is contained in:
tobi 2022-08-08 10:40:51 +02:00 committed by GitHub
commit 117888cf59
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
29 changed files with 931 additions and 202 deletions

View file

@ -22,10 +22,41 @@ const Promise = require("bluebird");
const React = require("react");
const ReactDom = require("react-dom");
// require("./style.css");
const createPanel = require("../lib/panel");
function App() {
return "hello world - user panel";
const Basic = require("./basic");
const Posts = require("./posts");
const Security = require("./security");
require("../base.css");
require("./style.css");
function UserPanel({oauth}) {
const [account, setAccount] = React.useState({});
const [errorMsg, setError] = React.useState("");
const [statusMsg, setStatus] = React.useState("Fetching user info");
React.useEffect(() => {
Promise.try(() => {
return oauth.apiRequest("/api/v1/accounts/verify_credentials", "GET");
}).then((json) => {
setAccount(json);
}).catch((e) => {
setError(e.message);
setStatus("");
});
}, [oauth, setAccount, setError, setStatus]);
return (
<React.Fragment>
<div>
<button className="logout" onClick={oauth.logout}>Log out of settings panel</button>
</div>
<Basic oauth={oauth} account={account}/>
<Posts oauth={oauth} account={account}/>
<Security oauth={oauth}/>
</React.Fragment>
);
}
ReactDom.render(<App/>, document.getElementById("root"));
createPanel("GoToSocial User Panel", ["read write"], UserPanel);