@@ -19,7 +19,7 @@ export default function ProblemsPage({
1919} ) {
2020 const [ problems , setProblems ] = useState < Problem [ ] > ( [ ] ) ;
2121 const [ selectedProblem , setSelectedProblem ] = useState < Problem | null > ( null ) ;
22- // const [isEditorOpen, setIsEditorOpen] = useState(false);
22+ const [ isEditorOpen , setIsEditorOpen ] = useState ( false ) ;
2323
2424 const { toast } = useToast ( ) ;
2525
@@ -29,7 +29,7 @@ export default function ProblemsPage({
2929 const response = await fetch ( `/api/orgs/${ params . orgId } /problems` ) ;
3030 if ( ! response . ok ) throw new Error ( "Failed to fetch problems" ) ;
3131 const data = await response . json ( ) ;
32- setProblems ( data ) ;
32+ setProblems ( data && data . length ? data : mockProblems ) ;
3333 } catch ( error ) {
3434 console . error ( "Error fetching problems:" , error ) ;
3535 setProblems ( mockProblems ) ;
@@ -38,10 +38,10 @@ export default function ProblemsPage({
3838 fetchProblems ( ) ;
3939 } , [ params . orgId ] ) ;
4040
41- // const handleAdd = () => {
42- // setSelectedProblem(null);
43- // setIsEditorOpen(true);
44- // };
41+ const handleAdd = ( ) => {
42+ setSelectedProblem ( null ) ;
43+ setIsEditorOpen ( true ) ;
44+ } ;
4545
4646 // const handleEdit = (problem: Problem) => {
4747 // setSelectedProblem(problem);
@@ -63,33 +63,35 @@ export default function ProblemsPage({
6363 }
6464 } ;
6565
66- // const handleSave = async (problem: Problem) => {
67- // try {
68- // const url = selectedProblem
69- // ? `/api/orgs/${params.orgId}/problems/${selectedProblem.id}`
70- // : `/api/orgs/${params.orgId}/problems`;
66+ /*
67+ const handleSave = async (problem: Problem) => {
68+ try {
69+ const url = selectedProblem
70+ ? `/api/orgs/${params.orgId}/problems/${selectedProblem.id}`
71+ : `/api/orgs/${params.orgId}/problems`;
7172
72- // const response = await fetch(url, {
73- // method: selectedProblem ? "PATCH" : "POST",
74- // headers: { "Content-Type": "application/json" },
75- // body: JSON.stringify({ ...problem, orgId: parseInt(params.orgId) }),
76- // });
73+ const response = await fetch(url, {
74+ method: selectedProblem ? "PATCH" : "POST",
75+ headers: { "Content-Type": "application/json" },
76+ body: JSON.stringify({ ...problem, orgId: parseInt(params.orgId) }),
77+ });
7778
78- // if (!response.ok) throw new Error("Failed to save problem");
79- // const savedProblem = await response.json();
79+ if (!response.ok) throw new Error("Failed to save problem");
80+ const savedProblem = await response.json();
8081
81- // setProblems((prev) => {
82- // if (selectedProblem) {
83- // return prev.map((p) =>
84- // p.id === selectedProblem.id ? savedProblem : p,
85- // );
86- // }
87- // return [...prev, savedProblem];
88- // });
89- // } catch (error) {
90- // console.error("Error saving problem:", error);
91- // }
92- // };
82+ setProblems((prev) => {
83+ if (selectedProblem) {
84+ return prev.map((p) =>
85+ p.id === selectedProblem.id ? savedProblem : p,
86+ );
87+ }
88+ return [...prev, savedProblem];
89+ });
90+ } catch (error) {
91+ console.error("Error saving problem:", error);
92+ }
93+ };
94+ */
9395
9496 // const handleSavelocal = (updatedProblem: Problem) => {
9597 // setProblems(
@@ -109,7 +111,7 @@ export default function ProblemsPage({
109111 columns = { columns }
110112 title = "Problems"
111113 searchableFields = { [ "nameId" , "title" ] }
112- // onAdd={handleAdd}
114+ onAdd = { handleAdd }
113115 // onEdit={null}
114116 onDelete = { handleDelete }
115117 allowDownload = { true }
0 commit comments