Merge upstream/main into public-achivements-ui

This commit is contained in:
Aotumuri
2026-04-03 14:42:57 +09:00
47 changed files with 1234 additions and 655 deletions
+34 -1
View File
@@ -1,6 +1,7 @@
import { html, TemplateResult } from "lit";
import { customElement, state } from "lit/decorators.js";
import {
AchievementsResponse,
PlayerGame,
PlayerStatsTree,
UserMeResponse,
@@ -29,6 +30,7 @@ export class AccountModal extends BaseModal {
private userMeResponse: UserMeResponse | null = null;
private statsTree: PlayerStatsTree | null = null;
private recentGames: PlayerGame[] = [];
private achievementGroups: AchievementsResponse = [];
constructor() {
super();
@@ -40,15 +42,39 @@ export class AccountModal extends BaseModal {
if (this.userMeResponse?.player?.publicId === undefined) {
this.statsTree = null;
this.recentGames = [];
this.achievementGroups = [];
} else {
this.achievementGroups = this.getUserMeAchievementGroups(
this.userMeResponse,
);
}
} else {
this.statsTree = null;
this.recentGames = [];
this.achievementGroups = [];
this.requestUpdate();
}
});
}
private getUserMeAchievementGroups(
userMeResponse: UserMeResponse | null,
): AchievementsResponse {
const achievements = userMeResponse?.player?.achievements;
if (!achievements) return [];
return [
{
type: "singleplayer-map",
data: achievements.singleplayerMap,
},
{
type: "player",
data: achievements.player ?? [],
},
];
}
private hasAnyStats(): boolean {
if (!this.statsTree) return false;
// Check if statsTree has any data
@@ -133,7 +159,10 @@ export class AccountModal extends BaseModal {
private renderAccountInfo() {
const me = this.userMeResponse?.user;
const isLinked = me?.discord ?? me?.email;
const achievements = this.userMeResponse?.player?.achievements ?? [];
const achievements =
this.achievementGroups.length > 0
? this.achievementGroups
: this.getUserMeAchievementGroups(this.userMeResponse);
if (!isLinked) {
return this.renderLoginOptions();
@@ -379,6 +408,7 @@ export class AccountModal extends BaseModal {
.then((userMe) => {
if (userMe) {
this.userMeResponse = userMe;
this.achievementGroups = this.getUserMeAchievementGroups(userMe);
if (this.userMeResponse?.player?.publicId) {
this.loadPlayerProfile(this.userMeResponse.player.publicId);
}
@@ -417,6 +447,9 @@ export class AccountModal extends BaseModal {
this.recentGames = data.games;
this.statsTree = data.stats;
this.achievementGroups =
data.achievements ??
this.getUserMeAchievementGroups(this.userMeResponse);
this.requestUpdate();
} catch (err) {