Hello! I'm really struggling with Promises... I've got a situation where I want a form to update a database then based on the update it will run some Javascript to decide what the status of an application should be. For some reason I can't make it happen. I'll make a change to the database, hit Run and it will show a prior result, waiting for me to hit Run again to get the most recent data. getReviewStatusData.trigger is a Retool database SELECT query. I've tried it with a .next after instead of onSuccess and get the same result where getReviewStatus will run successfully (0.004s) and getReviewStatusData will run successfully (0.516s) afterwards.
Any brilliant ideas? Thanks in advance.
function determineReviewStatus(decisions) {
let {
review_text_1_decision, review_text_2_decision, review_video_1_decision,
review_video_2_decision, review_text_decision, review_video_decision,
review_final_decision
} = decisions;
// Additional checks for text decisions
if (review_text_1_decision === review_text_2_decision) {
review_text_decision = review_text_1_decision;
} else if (review_text_1_decision && review_text_2_decision) {
review_text_decision = 'Maybe';
}
// Additional checks for video decisions
if (review_video_1_decision === review_video_2_decision) {
review_video_decision = review_video_1_decision;
} else if (review_video_1_decision && review_video_2_decision) {
review_video_decision = 'Maybe';
}
// Existing status determination logic
if (!review_text_1_decision && !review_text_2_decision && !review_video_1_decision &&
!review_video_2_decision && !review_text_decision && !review_video_decision &&
!review_final_decision) {
return 'not_started';
}
if ((!review_text_1_decision || !review_text_2_decision) &&
!review_text_decision && !review_final_decision) {
return 'text';
}
if (review_text_decision === 'Yes' &&
(!review_video_1_decision || !review_video_2_decision) &&
!review_video_decision && !review_final_decision) {
return 'video';
}
if (review_text_decision === 'Yes' && review_video_decision === 'Yes') {
return 'final';
}
if (review_text_decision === 'Maybe' || review_video_decision === 'Maybe') {
return 'wait_list';
}
// Add a default case if no other conditions are met
return 'review_in_progress';
}
//getReviewStatusData.reset();
getReviewStatusData.trigger( { onSuccess: () => {
// })
//.then(() => {
// console.log("Trigger resolved, data:", getReviewStatusData.data); // Check if data is as expected
const decisions = {
review_text_1_decision: getReviewStatusData.data.review_text_1_decision[0],
review_text_2_decision: getReviewStatusData.data.review_text_2_decision[0],
review_video_1_decision: getReviewStatusData.data.review_video_1_decision[0],
review_video_2_decision: getReviewStatusData.data.review_video_2_decision[0],
review_text_decision: getReviewStatusData.data.review_text_decision[0],
review_video_decision: getReviewStatusData.data.review_video_decision[0],
review_final_decision: getReviewStatusData.data.review_final_decision[0]
};
const review_status = determineReviewStatus(decisions);
console.log(review_status); // Output will be one of the review statuses based on the conditions
return review_status;
}
})