diff --git a/src/app/pages/challenges/challenges.component.html b/src/app/pages/challenges/challenges.component.html
index 165ce70..7351234 100644
--- a/src/app/pages/challenges/challenges.component.html
+++ b/src/app/pages/challenges/challenges.component.html
@@ -46,6 +46,12 @@
Accept
+
+
+
+
@@ -83,6 +89,12 @@
Cancel
+
+
+
+
diff --git a/src/app/pages/challenges/challenges.component.ts b/src/app/pages/challenges/challenges.component.ts
index 4db5b13..1044dd2 100644
--- a/src/app/pages/challenges/challenges.component.ts
+++ b/src/app/pages/challenges/challenges.component.ts
@@ -88,10 +88,14 @@ export class ChallengesComponent implements OnInit, OnDestroy {
this.challengeService.acceptChallenge(challenge.id)
.pipe(takeUntilDestroyed(this.destroyRef))
.subscribe({
- next: () => {
- this.challengeEventService.onChallengeAccepted(challenge);
+ next: (acceptedChallenge) => {
+ this.challengeEventService.onChallengeAccepted(acceptedChallenge);
this.loadChallenges();
- // Navigate to game (if backend creates game automatically)
+ if (acceptedChallenge.gameId) {
+ void this.router.navigate(['/game', acceptedChallenge.gameId]);
+ } else {
+ this.errorMessage = 'Challenge accepted, but no game was created.';
+ }
},
error: (error) => {
this.errorMessage = getErrorMessage(error, 'Failed to accept challenge');
@@ -130,6 +134,14 @@ export class ChallengesComponent implements OnInit, OnDestroy {
void this.router.navigate(['/']);
}
+ openGame(challenge: Challenge): void {
+ if (!challenge.gameId) {
+ this.errorMessage = 'Missing game id for this challenge.';
+ return;
+ }
+ void this.router.navigate(['/game', challenge.gameId]);
+ }
+
getTimeControlDisplay(challenge: Challenge): string {
const { limit, increment } = challenge.timeControl;
if (!limit || !increment) {
diff --git a/src/app/services/challenge.service.ts b/src/app/services/challenge.service.ts
index 5f7b809..7859923 100644
--- a/src/app/services/challenge.service.ts
+++ b/src/app/services/challenge.service.ts
@@ -27,8 +27,8 @@ export class ChallengeService {
);
}
- acceptChallenge(challengeId: string): Observable {
- return this.http.post(
+ acceptChallenge(challengeId: string): Observable {
+ return this.http.post(
`${this.challengeBaseUrl}/${challengeId}/accept`,
{}
);