[frogend] Emoji copy "Steal this look" (#1222)

* split emoji into local and remote, allow looking up remote emoji by toot url

* optimize some/all filtering

* fix local emoji routes

* implement copy action

* shortcode validation, don't wipe form on error

* copy & disable PATCH

* remove local toot acceptance for testing

* unused import

* parse emoji from account and status, get web_url from status uri

* fix url parse

* submit button loading info

* actually send category

* code cleanup, distinguish between account and status responses

* use loading icons

* fix loading icon on federation page

* require Loading element

* remove unused require

* query explanation, small accessibility tweaks
This commit is contained in:
f0x52
2022-12-11 16:00:23 +01:00
committed by GitHub
parent ce615b5d59
commit 4b8d7bd952
13 changed files with 623 additions and 33 deletions

View File

@@ -20,17 +20,14 @@
const React = require("react");
module.exports = function useTextInput({name, Name}, {validator} = {}) {
const [text, setText] = React.useState("");
module.exports = function useTextInput({name, Name}, {validator, defaultValue=""} = {}) {
const [text, setText] = React.useState(defaultValue);
const [valid, setValid] = React.useState(true);
const textRef = React.useRef(null);
function onChange(e) {
let input = e.target.value;
setText(input);
if (validator) {
validator(input);
}
}
function reset() {
@@ -39,7 +36,9 @@ module.exports = function useTextInput({name, Name}, {validator} = {}) {
React.useEffect(() => {
if (validator) {
textRef.current.setCustomValidity(validator(text));
let res = validator(text);
setValid(res == "");
textRef.current.setCustomValidity(res);
textRef.current.reportValidity();
}
}, [text, textRef, validator]);
@@ -50,7 +49,8 @@ module.exports = function useTextInput({name, Name}, {validator} = {}) {
{
[name]: text,
[`${name}Ref`]: textRef,
[`set${Name}`]: setText
[`set${Name}`]: setText,
[`${name}Valid`]: valid
}
];
};