feat: challange request, accept, decline, page, added (not complete, polling issues, and not stable, and too much code for nothing)

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
Lala, Shahd
2026-05-05 22:14:20 +00:00
parent 82bf006f18
commit 6a79be45bf
20 changed files with 1955 additions and 5 deletions
+7 -2
View File
@@ -94,8 +94,8 @@
<div class="bb-tag">WELCOME</div>
<div class="bb-title" style="font-size:clamp(16px,1.8vw,26px);">WELCOME TO<br />NOWCHESS</div>
<div class="bb-subtitle">Play your next move from the skyline.</div>
<button type="button" class="app-btn" (click)="startOneVsOne()" [disabled]="creating">
{{ creating ? 'CREATING...' : 'START NOW →' }}
<button type="button" class="app-btn" (click)="openChallengeDialog()" [disabled]="creating">
{{ creating ? 'CREATING...' : 'CREATE GAME →' }}
</button>
</div>
</div>
@@ -204,6 +204,7 @@
<div class="dialog-card" (click)="$event.stopPropagation()">
<div class="dialog-title">MORE OPTIONS</div>
<div class="dialog-actions">
<button type="button" class="app-btn" (click)="openChallengeDialog()">START GAME</button>
<button type="button" class="app-btn" (click)="openImportDialog()">IMPORT GAME</button>
</div>
</div>
@@ -256,6 +257,10 @@
</div>
}
@if (showChallengeDialog) {
<app-challenge-create-dialog (closeChallengeDialog)="closeChallengeDialog()"></app-challenge-create-dialog>
}
@if (errorMessage) {
<p class="error-banner">{{ errorMessage }}</p>
}
+18 -1
View File
@@ -10,6 +10,7 @@ import { AuthDialogService } from '../../services/auth-dialog.service';
import { AuthService } from '../../services/auth.service';
import { GameApiService } from '../../services/game-api.service';
import { ThemeService } from '../../services/theme.service';
import { ChallengeCreateDialogComponent } from '../../components/challenge-create-dialog/challenge-create-dialog.component';
type Difficulty = 'easy' | 'medium' | 'hard';
type ImportMode = 'fen' | 'pgn';
@@ -32,7 +33,7 @@ interface WindowCell {
@Component({
selector: 'app-welcome',
standalone: true,
imports: [CommonModule, FormsModule],
imports: [CommonModule, FormsModule, ChallengeCreateDialogComponent],
templateUrl: './welcome.component.html',
styleUrls: ['./welcome.component.css']
})
@@ -45,6 +46,7 @@ export class WelcomeComponent implements OnInit, OnDestroy {
creating = false;
joiningGame = false;
importing = false;
showChallengeDialog = false;
errorMessage = '';
showDifficultyDialog = false;
@@ -154,6 +156,20 @@ export class WelcomeComponent implements OnInit, OnDestroy {
this.errorMessage = '';
}
openChallengeDialog(): void {
if (!this.requireAuth(() => this.showChallengeDialog = true)) {
return;
}
this.closeAllDialogs();
this.showChallengeDialog = true;
}
closeChallengeDialog(): void {
this.showChallengeDialog = false;
this.errorMessage = '';
}
openOptionsDialog(): void {
this.closeAllDialogs();
this.showOptionsDialog = true;
@@ -439,6 +455,7 @@ export class WelcomeComponent implements OnInit, OnDestroy {
this.showOptionsDialog = false;
this.showJoinDialog = false;
this.showImportDialog = false;
this.showChallengeDialog = false;
this.errorMessage = '';
}