Skip to content

Commit 3c9c51a

Browse files
authored
Merge pull request #102 from CS3219-AY2425S1/feat/82-reconnection-ui
Feat/82 reconnection UI
2 parents 735fe93 + cf8dc13 commit 3c9c51a

File tree

23 files changed

+1285
-416
lines changed

23 files changed

+1285
-416
lines changed

docker-compose.prod.yml

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ services:
1414
context: ./peerprep-fe
1515
dockerfile: Dockerfile
1616
target: production
17+
volumes:
18+
- /app/node_modules
1719
ports:
1820
- "3000:3000"
1921
networks:
@@ -28,6 +30,8 @@ services:
2830
context: ./question-service
2931
dockerfile: Dockerfile
3032
target: production
33+
volumes:
34+
- /app/node_modules
3135
ports:
3236
- "4001:4001"
3337
networks:
@@ -42,6 +46,8 @@ services:
4246
context: ./user-service
4347
dockerfile: Dockerfile
4448
target: production
49+
volumes:
50+
- /usr/src/app/node_modules
4551
ports:
4652
- "3001:3001"
4753
networks:
@@ -56,8 +62,7 @@ services:
5662
dockerfile: Dockerfile
5763
target: production
5864
volumes:
59-
- ./matching-service:/app
60-
- ./matching-service/node_modules:/app/node_modules
65+
- /app/node_modules
6166
ports:
6267
- "5001:5001"
6368
networks:
@@ -81,6 +86,21 @@ services:
8186
env_file:
8287
- ./api-gateway/.env.production
8388

89+
session-service:
90+
image: asia-southeast1-docker.pkg.dev/cs3219-g11-peerprep/cs3219-g11-repo/session-svc:latest
91+
build:
92+
context: ./session-service
93+
dockerfile: Dockerfile
94+
target: production
95+
volumes:
96+
- /app/node_modules
97+
ports:
98+
- "4444:4444"
99+
networks:
100+
- peerprep-network
101+
env_file:
102+
- ./session-service/.env.dev
103+
84104
networks:
85105
peerprep-network:
86106
driver: bridge

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ services:
1515
target: development
1616
volumes:
1717
- ./peerprep-fe:/app
18-
- ./peerprep-fe/node_modules:/app/node_modules
18+
- /app/node_modules
1919
ports:
2020
- "3000:3000"
2121
networks:
@@ -79,7 +79,7 @@ services:
7979
target: development
8080
volumes:
8181
- ./session-service:/app
82-
- ./session-service/node_modules:/app/node_modules
82+
- /app/node_modules
8383
ports:
8484
- "4444:4444"
8585
networks:

peerprep-fe/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
},
1313
"dependencies": {
1414
"@monaco-editor/react": "^4.6.0",
15+
"@radix-ui/react-alert-dialog": "^1.1.2",
1516
"@radix-ui/react-checkbox": "^1.1.1",
1617
"@radix-ui/react-dialog": "^1.1.1",
1718
"@radix-ui/react-dropdown-menu": "^2.1.2",
@@ -21,6 +22,7 @@
2122
"@radix-ui/react-scroll-area": "^1.2.0",
2223
"@radix-ui/react-select": "^2.1.1",
2324
"@radix-ui/react-slot": "^1.1.0",
25+
"@radix-ui/react-toast": "^1.2.2",
2426
"@stomp/stompjs": "^7.0.0",
2527
"@types/js-cookie": "^3.0.6",
2628
"amqplib": "^0.10.4",

peerprep-fe/pnpm-lock.yaml

Lines changed: 293 additions & 262 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

peerprep-fe/src/app/(main)/components/Main.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import { useFilteredProblems } from '@/hooks/useFilteredProblems';
33
import FilterBar from './filter/FilterBar';
44
import ProblemTable from '../../../components/problems/ProblemTable';
5+
import RejoinSession from './RejoinSession';
56

67
export default function MainComponent() {
78
const { problems, filters, updateFilter, removeFilter, isLoading } =
@@ -10,6 +11,7 @@ export default function MainComponent() {
1011
return (
1112
<div className="min-h-screen bg-gray-900 p-6 pt-24 text-gray-100">
1213
<div className="mx-auto max-w-7xl">
14+
<RejoinSession />
1315
<FilterBar
1416
filters={filters}
1517
updateFilter={updateFilter}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
'use client';
2+
import { useRouter } from 'next/navigation';
3+
import { Button } from '@/components/ui/button';
4+
import { ArrowRight } from 'lucide-react';
5+
import { useCollaborationStore } from '@/state/useCollaborationStore';
6+
7+
const RejoinSession = () => {
8+
const { lastMatchId, clearLastMatchId } = useCollaborationStore();
9+
const router = useRouter();
10+
11+
const handleRejoinSession = () => {
12+
if (lastMatchId) {
13+
router.push(`/collaboration?matchId=${lastMatchId}`);
14+
}
15+
};
16+
17+
if (!lastMatchId) return null;
18+
19+
return (
20+
<div className="mb-6 flex items-center justify-between rounded-lg border border-amber-500/20 bg-amber-500/10 p-4">
21+
<div className="flex items-center gap-3">
22+
<div className="text-amber-300">
23+
You have an active collaboration session
24+
</div>
25+
</div>
26+
<div className="flex gap-2">
27+
<Button
28+
variant="outline"
29+
className="border-amber-500/50 text-amber-300 hover:bg-amber-500/20"
30+
onClick={handleRejoinSession}
31+
>
32+
Rejoin Session
33+
<ArrowRight className="ml-2 h-4 w-4" />
34+
</Button>
35+
<Button
36+
variant="ghost"
37+
className="text-amber-300 hover:bg-amber-500/20"
38+
onClick={clearLastMatchId}
39+
>
40+
Leave
41+
</Button>
42+
</div>
43+
</div>
44+
);
45+
};
46+
47+
export default RejoinSession;

peerprep-fe/src/components/problems/ProblemCodeEditor.tsx renamed to peerprep-fe/src/app/collaboration/components/CodeEditor.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import React from 'react';
2-
import Editor from '@monaco-editor/react';
2+
import Editor, { OnMount } from '@monaco-editor/react';
33

4-
interface ProblemCodeEditorProps {
5-
onMount: (editor: any, monaco: any) => void;
4+
interface CodeEditorProps {
5+
onMount: OnMount;
6+
language: string;
67
}
78

8-
const ProblemCodeEditor: React.FC<ProblemCodeEditorProps> = ({ onMount }) => {
9+
const CodeEditor: React.FC<CodeEditorProps> = ({ onMount, language }) => {
910
return (
1011
<div
1112
style={{
@@ -18,7 +19,7 @@ const ProblemCodeEditor: React.FC<ProblemCodeEditorProps> = ({ onMount }) => {
1819
<Editor
1920
height="100%"
2021
width="100%"
21-
language="python"
22+
language={language}
2223
theme="vs-dark"
2324
onMount={onMount}
2425
options={{
@@ -32,4 +33,4 @@ const ProblemCodeEditor: React.FC<ProblemCodeEditorProps> = ({ onMount }) => {
3233
);
3334
};
3435

35-
export default ProblemCodeEditor;
36+
export default CodeEditor;

0 commit comments

Comments
 (0)