Skip to content

Commit

Permalink
Merge pull request #86 from CS3219-AY2425S1/solomon/save-submission-s…
Browse files Browse the repository at this point in the history
…tatus-in-local-storage

fix: store session info in localstorage
  • Loading branch information
solomonng2001 authored Nov 13, 2024
2 parents bd95eb0 + 8f08639 commit e5642a7
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions apps/frontend/src/app/collaboration/[id]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -217,15 +217,19 @@ export default function CollaborationPage(props: CollaborationProps) {
};

const updateSubmissionResults = (data: SubmissionResults) => {
setSubmissionHiddenTestResultsAndStatus({
const submissionHiddenTestResultsAndStatus: SubmissionHiddenTestResultsAndStatus = {
hiddenTestResults: data.hiddenTestResults,
status: data.status,
});
}
setSubmissionHiddenTestResultsAndStatus(submissionHiddenTestResultsAndStatus);
localStorage.setItem("submissionHiddenTestResultsAndStatus", JSON.stringify(submissionHiddenTestResultsAndStatus));
setVisibleTestCases(data.visibleTestResults);
localStorage.setItem("visibleTestResults", JSON.stringify(data.visibleTestResults));
};

const updateExecutionResults = (data: ExecutionResults) => {
setVisibleTestCases(data.visibleTestResults);
localStorage.setItem("visibleTestResults", JSON.stringify(data.visibleTestResults));
};

const handleRunTestCases = async () => {
Expand All @@ -239,7 +243,7 @@ export default function CollaborationPage(props: CollaborationProps) {
language: selectedLanguage,
customTestCases: "",
});
setVisibleTestCases(data.visibleTestResults);
updateExecutionResults(data);
infoMessage("Test cases executed. Review the results below.");
sendExecutionResultsToMatchedUser(data);
setIsLoadingTestCase(false);
Expand All @@ -262,11 +266,11 @@ export default function CollaborationPage(props: CollaborationProps) {
questionDifficulty: complexity ?? "",
questionTopics: categories,
});
setVisibleTestCases(data.visibleTestResults);
setSubmissionHiddenTestResultsAndStatus({
hiddenTestResults: data.hiddenTestResults,
status: data.status,
updateExecutionResults({
visibleTestResults: data.visibleTestResults,
customTestResults: [],
});
updateSubmissionResults(data);
sendSubmissionResultsToMatchedUser(data);
successMessage("Code saved successfully!");
setIsLoadingSubmission(false);
Expand All @@ -291,13 +295,20 @@ export default function CollaborationPage(props: CollaborationProps) {
const currentUser: string = localStorage.getItem("user") ?? "";
const matchedTopics: string[] =
localStorage.getItem("matchedTopics")?.split(",") ?? [];
const submissionHiddenTestResultsAndStatus: SubmissionHiddenTestResultsAndStatus | undefined =
localStorage.getItem("submissionHiddenTestResultsAndStatus")
? JSON.parse(localStorage.getItem("submissionHiddenTestResultsAndStatus") as string)
: undefined;
const visibleTestCases: Test[] = JSON.parse(localStorage.getItem("visibleTestResults") ?? "[]") ?? [];

// Set states from localstorage
setCollaborationId(collabId);
setMatchedUser(matchedUser);
setCurrentUser(currentUser);
setMatchedTopics(matchedTopics);
setQuestionDocRefId(questionDocRefId);
setSubmissionHiddenTestResultsAndStatus(submissionHiddenTestResultsAndStatus);
setVisibleTestCases(visibleTestCases);

GetSingleQuestion(questionDocRefId).then((data: Question) => {
setQuestionTitle(`${data.id}. ${data.title}`);
Expand All @@ -306,13 +317,13 @@ export default function CollaborationPage(props: CollaborationProps) {
setDescription(data.description);
});

GetVisibleTests(questionDocRefId)
.then((data: Test[]) => {
if (visibleTestCases.length == 0) {
GetVisibleTests(questionDocRefId).then((data: Test[]) => {
setVisibleTestCases(data);
})
.catch((e) => {
}).catch((e) => {
errorMessage(e.message);
});
}

// Start stopwatch
startStopwatch();
Expand Down Expand Up @@ -396,6 +407,8 @@ export default function CollaborationPage(props: CollaborationProps) {
localStorage.removeItem("collabId");
localStorage.removeItem("questionDocRefId");
localStorage.removeItem("matchedTopics");
localStorage.removeItem("submissionHiddenTestResultsAndStatus");
localStorage.removeItem("visibleTestResults");
localStorage.removeItem("editor-language"); // Remove editor language type when session closed
};

Expand Down

0 comments on commit e5642a7

Please sign in to comment.