+
+
WARNUNG!
+
+ Du hast nicht genug Geld für den Double Down. Du bist jetzt im Minus und schuldest uns
+ {{ amount | currency: 'EUR' }}.
+
+
+ Liefer das Geld sofort an den Dead Drop oder es wird unangenehme Konsequenzen geben!
+
+
+
+
Schulden:
+
{{ amount | currency: 'EUR' }}
+
+
+
+
+ {{ timeLeft() }}
+
+
Sekunden verbleibend
+
+ @if (timeLeft() === 0) {
+
+
+
+
+
+
+
+ ZEIT ABGELAUFEN
+
+
+
+
+ KONSEQUENZEN FOLGEN
+
+
+
+
+ }
+
+
+
+ `,
+ changeDetection: ChangeDetectionStrategy.OnPush,
+ animations: [
+ trigger('fadeInOut', [
+ transition(':enter', [
+ style({ opacity: 0 }),
+ animate('150ms ease-out', style({ opacity: 1 })),
+ ]),
+ transition(':leave', [animate('150ms ease-in', style({ opacity: 0 }))]),
+ ]),
+ trigger('cardAnimation', [
+ transition(':enter', [
+ style({ opacity: 0, transform: 'scale(0.95)' }),
+ animate('200ms ease-out', style({ opacity: 1, transform: 'scale(1)' })),
+ ]),
+ ]),
+ trigger('countdown', [
+ transition('* => *', [
+ style({ transform: 'scale(1.2)' }),
+ animate('100ms ease-out', style({ transform: 'scale(1)' })),
+ ]),
+ ]),
+ ],
+})
+export class DebtDialogComponent implements OnInit, OnDestroy {
+ @Input() amount = 0;
+ @Input() set show(value: boolean) {
+ this.visible = value;
+ if (value) {
+ this.startTimer();
+ }
+ }
+
+ @Output() dialogClosed = new EventEmitter
();
+
+ visible = false;
+ timeLeft = signal(30);
+ private timerSubscription: Subscription | undefined;
+ private warningSound = new Audio('assets/sounds/warning.mp3');
+
+ ngOnInit() {
+ if (this.visible) {
+ this.startTimer();
+ }
+ }
+
+ ngOnDestroy() {
+ this.stopTimer();
+ }
+
+ private startTimer() {
+ this.timeLeft.set(30);
+ this.timerSubscription = interval(1000)
+ .pipe(takeWhile(() => this.timeLeft() > 0))
+ .subscribe(() => {
+ this.timeLeft.update((value) => value - 1);
+ if (this.timeLeft() <= 5) {
+ this.warningSound.play();
+ }
+ if (this.timeLeft() === 0) {
+ setTimeout(() => this.closeDialog(), 5000);
+ }
+ });
+ }
+
+ private stopTimer() {
+ if (this.timerSubscription) {
+ this.timerSubscription.unsubscribe();
+ }
+ }
+
+ closeDialog(): void {
+ this.stopTimer();
+ this.visible = false;
+ this.dialogClosed.emit();
+ }
+}
diff --git a/frontend/src/app/shared/components/navbar/navbar.component.html b/frontend/src/app/shared/components/navbar/navbar.component.html
index 040e7cf..b34aea5 100644
--- a/frontend/src/app/shared/components/navbar/navbar.component.html
+++ b/frontend/src/app/shared/components/navbar/navbar.component.html
@@ -17,8 +17,11 @@
@if (isLoggedIn) {
- {{ balance() | currency: 'EUR' : 'symbol' : '1.2-2' }}
+ {{
+ balance() | currency: 'EUR' : 'symbol' : '1.2-2'
+ }}
}