Skip to content

Commit 952bb0f

Browse files
authored
Merge pull request #47 from MathisBurger/feature/runner-cmd
All features required for v0.1.0.4
2 parents 3b9f842 + 4b9a4b3 commit 952bb0f

File tree

4 files changed

+29
-4
lines changed

4 files changed

+29
-4
lines changed

executor/internal/services/TaskBuilder.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func BuildTask(er ExecRequest) (input.Task, error) {
2020
case LanguageGo:
2121
image = "golang:1.19"
2222
case LanguageJava:
23-
image = "maven:3.9.9-amazoncorretto-21"
23+
image = "ghcr.io/mathisburger/cc-images-java:latest"
2424
default:
2525
return input.Task{}, errors.New("invalid language")
2626
}

web/app/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ export default function RootLayout({
5858
<Navbar />
5959
</AppShell.Navbar>
6060
)}
61-
<AppShell.Main>{children}</AppShell.Main>
61+
<AppShell.Main mb={100}>{children}</AppShell.Main>
6262
<AppShell.Footer><Footer /></AppShell.Footer>
6363
</AppShell>
6464
<SpotlightWrapper />

web/app/my-groups/page.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,22 @@ import useApiServiceClient from "@/hooks/useApiServiceClient";
66
import useClientQuery from "@/hooks/useClientQuery";
77
import {useState} from "react";
88
import CreateGroupModal from "@/components/group/CreateGroupModal";
9+
import useCurrentUser from "@/hooks/useCurrentUser";
10+
import { isGranted } from "@/service/auth";
11+
import { UserRoles } from "@/service/types/usernator";
912

1013
const GroupsPage = () => {
1114
const api = useApiServiceClient();
1215
const [groups] = useClientQuery<GroupsResponse>(() => api.getMyGroups());
1316
const [createModalOpen, setCreateModalOpen] = useState(false);
17+
const {user} = useCurrentUser();
1418

1519
return (
1620
<Container fluid>
1721
<Title>My Groups</Title>
18-
<Button onClick={() => setCreateModalOpen(true)}>Create group</Button>
22+
{isGranted(user, [UserRoles.Tutor, UserRoles.Admin]) && (
23+
<Button onClick={() => setCreateModalOpen(true)}>Create group</Button>
24+
)}
1925
<GroupsDisplayComponent groups={groups?.groups ?? []} page="my-groups" />
2026
{createModalOpen && (
2127
<CreateGroupModal onClose={() => setCreateModalOpen(false)} />

web/app/solutions/[id]/page.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { AssignmentLanguage, Solution } from "@/service/types/tasky";
66
import CentralLoading from "@/components/CentralLoading";
77
import JobResultDisplay from "@/components/JobResultDisplay";
88
import useCurrentUser from "@/hooks/useCurrentUser";
9-
import { useState } from "react";
9+
import {useEffect, useState} from "react";
1010
import { isGranted } from "@/service/auth";
1111
import { UserRoles } from "@/service/types/usernator";
1212
import ExecutorUIDisplay from "@/components/solution/ExecutorUIDisplay";
@@ -15,6 +15,9 @@ import NavigateBack from "@/components/NavigateBack";
1515
import FileStructureDisplay from "@/components/FileStructureDisplay";
1616
import QuestionAnswersDisplay from "@/components/solution/questions/QuestionAnswersDisplay";
1717

18+
// Every 30s
19+
const REFETCH_INTERVAL = 1000 * 30;
20+
1821
const SolutionDetailsPage = ({ params }: { params: { id: string } }) => {
1922
const id = parseInt(`${params.id}`, 10);
2023
const api = useApiServiceClient();
@@ -23,6 +26,22 @@ const SolutionDetailsPage = ({ params }: { params: { id: string } }) => {
2326
const [solution, refetch] = useClientQuery<Solution>(() =>
2427
api.getSolution(id),
2528
);
29+
30+
useEffect(() => {
31+
const fetcher = async () => {
32+
if (solution?.job && solution.job.execution.length > 0) {
33+
const exec = solution.job.execution[0];
34+
if (exec.error === null && exec.result === null && exec.state === "RUNNING") {
35+
setTimeout(() => {
36+
refetch();
37+
fetcher();
38+
}, REFETCH_INTERVAL);
39+
}
40+
}
41+
};
42+
fetcher();
43+
}, [solution]);
44+
2645
console.log(solution);
2746
const approve = async () => {
2847
await api.approveSolution(id);

0 commit comments

Comments
 (0)