mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-08-18 09:14:09 +00:00
Merge upstream/main into public-achivements-ui
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user