From 5f4ddc8fd7d84500457bb08b0981a84a2d1594b1 Mon Sep 17 00:00:00 2001
From: Hassan Abouelela <hassan@hassanamr.com>
Date: Sat, 18 Jun 2022 23:59:14 +0400
Subject: Bump React To 18.2.0

Bump react to v18, and handle all the breaking changes. This includes
bumping a lot of other dependencies to versions which support react 18,
and handling the breaking changes for those.

Refer to the following documents for migration guides:
React: https://reactjs.org/blog/2022/03/08/react-18-upgrade-guide.html
Router: https://reactrouter.com/docs/en/v6/upgrading/v5

Signed-off-by: Hassan Abouelela <hassan@hassanamr.com>
---
 src/components/Question.tsx | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

(limited to 'src/components/Question.tsx')

diff --git a/src/components/Question.tsx b/src/components/Question.tsx
index ebacb4a..61e66e0 100644
--- a/src/components/Question.tsx
+++ b/src/components/Question.tsx
@@ -35,14 +35,22 @@ class RenderedQuestion extends React.Component<QuestionProp> {
         }
         this.blurHandler = this.blurHandler.bind(this);
 
-        this.setPublicState("valid", true);
-        this.setPublicState("error", "");
+        const _state: {[key: string]: string | boolean | null} = {
+            "valid": true,
+            "error": "",
+        };
+
         if (props.question.type === QuestionType.Code) {
-            this.setPublicState("unittestsFailed", false);
+            _state["unittestsFailed"] = false;
         }
 
         if (!skip_normal_state.includes(props.question.type)) {
-            this.setPublicState("value", "");
+            _state["value"] = "";
+        }
+
+        this.state = _state;
+        for (const [key, value] of Object.entries(_state)) {
+            this.props.public_state.set(key, value);
         }
     }
 
-- 
cgit v1.2.3

