feat: add user balance updates during lootbox opening
Some checks failed
CI / Get Changed Files (pull_request) Successful in 9s
CI / Checkstyle Main (pull_request) Has been skipped
CI / Docker backend validation (pull_request) Successful in 10s
CI / Docker frontend validation (pull_request) Successful in 34s
CI / oxlint (pull_request) Successful in 22s
CI / prettier (pull_request) Failing after 26s
CI / eslint (pull_request) Successful in 34s
CI / test-build (pull_request) Successful in 43s

This commit is contained in:
Jan-Marlon Leibl 2025-05-07 15:22:37 +02:00
commit 513ff7886b
Signed by: jleibl
GPG key ID: 300B2F906DC6F1D5
5 changed files with 43 additions and 2 deletions

View file

@ -4,6 +4,7 @@ import { ActivatedRoute, Router } from '@angular/router';
import { LootboxService } from '../services/lootbox.service';
import { LootBox, Reward } from 'app/model/LootBox';
import { NavbarComponent } from '@shared/components/navbar/navbar.component';
import { UserService } from '@service/user.service';
@Component({
selector: 'app-lootbox-opening',
@ -26,6 +27,7 @@ export default class LootboxOpeningComponent {
private route: ActivatedRoute,
private router: Router,
private lootboxService: LootboxService,
private userService: UserService,
private cdr: ChangeDetectorRef
) {
this.loadLootbox();
@ -58,6 +60,10 @@ export default class LootboxOpeningComponent {
if (!this.lootbox || this.isOpening) return;
this.resetState(true);
if (this.lootbox.price) {
this.userService.updateLocalBalance(-this.lootbox.price);
}
setTimeout(() => {
this.lootboxService.purchaseLootBox(this.lootbox!.id).subscribe({
@ -72,6 +78,7 @@ export default class LootboxOpeningComponent {
this.generateCasePrizes(reward);
this.isOpening = false;
this.isOpen = true;
this.cdr.detectChanges();
}
@ -80,7 +87,12 @@ export default class LootboxOpeningComponent {
const rewards = this.lootbox.rewards;
const fallback = rewards[Math.floor(Math.random() * rewards.length)];
this.handleRewardSuccess(fallback);
this.wonReward = fallback;
this.generateCasePrizes(fallback);
this.isOpening = false;
this.isOpen = true;
this.cdr.detectChanges();
}
private resetState(isOpening = false): void {
@ -112,6 +124,12 @@ export default class LootboxOpeningComponent {
setTimeout(() => {
this.animationCompleted = true;
if (this.wonReward) {
this.userService.updateLocalBalance(this.wonReward.value);
}
this.userService.refreshCurrentUser();
this.cdr.detectChanges();
}, 10000);
}