From 4b8d7bd952dd97091d1baddeab10213e9c38cef3 Mon Sep 17 00:00:00 2001
From: f0x52 <f0x@cthu.lu>
Date: Sun, 11 Dec 2022 16:00:23 +0100
Subject: [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
---
 web/source/settings/components/form/text.jsx | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

(limited to 'web/source/settings/components/form/text.jsx')

diff --git a/web/source/settings/components/form/text.jsx b/web/source/settings/components/form/text.jsx
index a392239dc..c24628dd7 100644
--- a/web/source/settings/components/form/text.jsx
+++ b/web/source/settings/components/form/text.jsx
@@ -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
 		}
 	];
 };
\ No newline at end of file
-- 
cgit v1.2.3

