jadami10 commented on code in PR #14736:
URL: https://github.com/apache/pinot/pull/14736#discussion_r1902008220


##########
pinot-controller/src/main/resources/app/pages/TenantDetails.tsx:
##########
@@ -152,6 +152,18 @@ const TenantPageDetails = ({ match }: 
RouteComponentProps<Props>) => {
   const [showRebalanceServerModal, setShowRebalanceServerModal] = 
useState(false);
   const [schemaJSONFormat, setSchemaJSONFormat] = useState(false);
 
+  // This is quite hacky, but it's the only way to get this to work with the 
dialog.
+  // The useState variables are simply for the dialog box to know what to 
render in
+  // the checkbox fields. The actual state of the checkboxes is stored in the 
refs.
+  // The refs are then used to determine how we delete the table. If you try 
to use
+  // the state variables in this class, you will not be able to get their 
latest values.
+  const [dialogCheckboxes, setDialogCheckboxes] = useState({
+    deleteImmediately: false,
+    deleteSchema: false
+  });
+  const deleteImmediatelyRef = useRef(false);
+  const deleteSchemaRef = useRef(false);
+

Review Comment:
   I don't know react well enough, but I spent days on this with a coworker as 
well as multiple LLM tools, and this is the only thing that reliably worked. I 
think the issue is the very strange lifecycle of state variables and functions.
   
   - "show dialog" state variable is in TenantDetails
   - checkbox definition is in TenantDetails
   - checkbox state is in TenantDetails
   - the actual modal is in Confirm
   - the children are rendered in Confirm
   - the callbacks are defined in TenantDetails but activated in Confirm
   
   Reusing the state variables from TenantDetails and rendering them in 
Confirm, I only got 2 bad things working
   - the checkbox updates, but the callback doesn't see the latest value until 
the second time it's called
   - the callback sees the latest value, but the checkbox doesn't actually 
visually update
   
   This leads me to believe that the way we're creating + rendering the modal 
does not allow for a single state variable to work since there's no possible 
update order for every component to do the right thing.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to