feat(team): 展会战报支持关联活动实时排行榜加载

这个提交包含在:
wikiboss
2026-09-21 11:16:22 +08:00
父节点 c58a99d602
当前提交 fa1c1bbe7d

查看文件

@@ -60,6 +60,7 @@ export type LoadOverviewApi = {
export type LoadOverviewResult = {
leads: LeadEntity[];
tracks: RadarTrack[];
ranks: TeamRankItem[];
summary: OverviewSummary;
empty: boolean;
errorMessage: string;
@@ -68,6 +69,7 @@ export type LoadOverviewResult = {
export type OverviewState = {
leads: LeadEntity[];
tracks: RadarTrack[];
ranks: TeamRankItem[];
summary: OverviewSummary;
loading: boolean;
empty: boolean;
@@ -124,6 +126,9 @@ export function resolveOverviewText(key: OverviewCopyKey): string {
if (key === 'unknownCountry') {
return zh ? '未标注' : 'Unspecified';
}
if (key === 'rankTitle') {
return zh ? '现场排行' : 'Floor ranking';
}
return '';
}
@@ -257,9 +262,11 @@ export async function loadOverview(
const leads = parseList(pages[0]);
const tracks = parseList(pages[1]);
const summary = summarize(leads, tracks);
const ranks = await loadEventRanks(api);
return {
leads,
tracks,
ranks,
summary,
empty: leads.length === 0 && tracks.length === 0,
errorMessage: '',
@@ -268,6 +275,7 @@ export async function loadOverview(
return {
leads: [],
tracks: [],
ranks: [],
summary: emptySummary(),
empty: false,
errorMessage: readErrorMessage(err),
@@ -275,10 +283,42 @@ export async function loadOverview(
}
}
async function loadEventRanks(api?: LoadOverviewApi): Promise<TeamRankItem[]> {
const fetchRank =
api != null && api.fetchTeamLiveRank != null
? api.fetchTeamLiveRank
: api == null
? fetchTeamLiveRank
: null;
if (fetchRank == null) {
return [];
}
try {
let eventId = '';
const fetchEvent =
api != null && api.fetchCurrentEvent != null
? api.fetchCurrentEvent
: api == null
? fetchCurrentEvent
: null;
if (fetchEvent != null) {
const current = await fetchEvent();
if (current != null && current.code != null) {
eventId = current.code;
}
}
const list = await fetchRank(eventId);
return list != null ? list : [];
} catch (_err) {
return [];
}
}
export function createOverviewState(): OverviewState {
return {
leads: [],
tracks: [],
ranks: [],
summary: emptySummary(),
loading: false,
empty: true,
@@ -292,6 +332,7 @@ export function applyOverviewResult(
): void {
state.leads = result.leads;
state.tracks = result.tracks;
state.ranks = result.ranks;
state.summary = result.summary;
state.empty = result.empty;
state.errorMessage = result.errorMessage;
@@ -315,6 +356,7 @@ export async function refreshOverview(
return {
leads: state.leads,
tracks: state.tracks,
ranks: state.ranks,
summary: state.summary,
empty: state.empty,
errorMessage: state.errorMessage,