Skip to content

Commit

Permalink
Merge pull request #131 from cpinitiative/vjudge
Browse files Browse the repository at this point in the history
use usaco-problems rather than vjudge-usaco for "open in ide" functionality
  • Loading branch information
xyzqm authored Feb 10, 2024
2 parents 94d3d21 + 249ce3f commit dc5a97a
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 14 deletions.
21 changes: 19 additions & 2 deletions pages/api/createUSACOFile.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { getDatabase, ServerValue } from 'firebase-admin/database';
import type { NextApiRequest, NextApiResponse } from 'next';
import { fetchProblemData } from '../../src/components/Workspace/Workspace';
import firebaseApp from '../../src/firebaseAdmin';
import colorFromUserId from '../../src/scripts/colorFromUserId';
import { ProblemData } from '../../src/components/Workspace/Workspace';

type RequestData = {
usacoID: string;
Expand All @@ -18,7 +18,24 @@ type ResponseData =
| {
message: string; // error
};

export async function fetchProblemData(
problemID: string
): Promise<ProblemData | null> {
const response = await fetch(
'https://raw.githubusercontent.com/cpinitiative/usaco-problems/main/problems.json'
);
const data = await response.json();
if (!data[problemID]) {
return null;
}
const problem = data[problemID];
const problemData = {
...problem,
source: problem.source.sourceString,
title: problem.title.titleString,
};
return problemData;
}
export default async (
req: NextApiRequest,
res: NextApiResponse<ResponseData>
Expand Down
14 changes: 2 additions & 12 deletions src/components/Workspace/Workspace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,12 @@ import { LazyRealtimeEditor } from '../RealtimeEditor/LazyRealtimeEditor';
import { Output } from '../Output';
import { TabBar } from '../TabBar';
import { UserList } from '../UserList/UserList';
import Samples, { Sample } from '../JudgeInterface/Samples';
import { judgePrefix } from '../JudgeInterface/JudgeInterface';
import Samples from '../JudgeInterface/Samples';
import useJudgeResults from '../../hooks/useJudgeResults';
import { useEditorContext } from '../../context/EditorContext';
import useUserPermission from '../../hooks/useUserPermission';
import { useUserContext } from '../../context/UserContext';

import { Sample } from '../JudgeInterface/Samples';
export type ProblemData = {
id: number;
submittable: boolean;
Expand Down Expand Up @@ -60,15 +59,6 @@ export interface StatusData {
output?: string;
}

export async function fetchProblemData(
problemID: string
): Promise<ProblemData | null> {
const url = `${judgePrefix}/problem/${problemID}`;
const response = await fetch(url);
if (response.status !== 200) return null;
return await response.json();
}

export default function Workspace({
handleRunCode,
tabsList,
Expand Down

0 comments on commit dc5a97a

Please sign in to comment.