feat: 添加挑战详情页面预制体,优化分享功能与数据展示
This commit is contained in:
@@ -37,6 +37,10 @@ export function getShareJoinUrl(code: string): string {
|
||||
return `${API_BASE}/share/${code}/join`;
|
||||
}
|
||||
|
||||
export function getShareDetailUrl(code: string): string {
|
||||
return `${API_BASE}/share/${code}`;
|
||||
}
|
||||
|
||||
export function getShareSubmitUrl(code: string): string {
|
||||
return `${API_BASE}/share/${code}/submit`;
|
||||
}
|
||||
|
||||
@@ -165,6 +165,7 @@ export interface SubmitShareData {
|
||||
/** 分享挑战参与者排行摘要 */
|
||||
export interface ShareParticipantRankSummary {
|
||||
userId?: string | null;
|
||||
participantId?: string | null;
|
||||
nickname?: string | null;
|
||||
nickName?: string | null;
|
||||
avatarUrl?: string | null;
|
||||
@@ -193,6 +194,18 @@ export interface CreatedShareListData {
|
||||
items: CreatedShareItem[];
|
||||
}
|
||||
|
||||
/** 分享挑战详情响应 */
|
||||
export interface ShareDetailData {
|
||||
id: string;
|
||||
shareCode: string;
|
||||
title: string;
|
||||
levelCount: number;
|
||||
participantCount: number;
|
||||
userRank: number | null;
|
||||
createdAt: string;
|
||||
rankings: ShareParticipantRankSummary[];
|
||||
}
|
||||
|
||||
/** 已通关关卡数据(成就墙 / 关卡回看场景) */
|
||||
export interface CompletedLevel {
|
||||
/** 关卡 ID */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { SpriteFrame, Texture2D, ImageAsset, assetManager } from 'cc';
|
||||
import { HttpUtil } from './HttpUtil';
|
||||
import { WxSDK } from './WxSDK';
|
||||
import { API_ENDPOINTS, getShareJoinUrl, getShareSubmitUrl, API_TIMEOUT } from '../config/ApiConfig';
|
||||
import { API_ENDPOINTS, getShareDetailUrl, getShareJoinUrl, getShareSubmitUrl, API_TIMEOUT } from '../config/ApiConfig';
|
||||
import {
|
||||
ApiEnvelope,
|
||||
CreateShareData,
|
||||
@@ -9,6 +9,7 @@ import {
|
||||
ShareLevelData,
|
||||
CreatedShareItem,
|
||||
CreatedShareListData,
|
||||
ShareDetailData,
|
||||
SubmitShareData,
|
||||
SubmitShareLevel,
|
||||
} from '../types/ApiTypes';
|
||||
@@ -157,6 +158,26 @@ export class ShareManager {
|
||||
}
|
||||
}
|
||||
|
||||
async fetchShareDetail(code: string): Promise<ShareDetailData | null> {
|
||||
try {
|
||||
const response = await HttpUtil.get<ApiEnvelope<ShareDetailData>>(
|
||||
getShareDetailUrl(code),
|
||||
API_TIMEOUT.DEFAULT,
|
||||
);
|
||||
|
||||
if (!response.success || !response.data) {
|
||||
console.error('[ShareManager] 获取分享挑战详情失败:', response.message);
|
||||
return null;
|
||||
}
|
||||
|
||||
console.log(`[ShareManager] 获取分享挑战详情成功: ${response.data.title}, ${response.data.rankings?.length ?? 0} 条排行`);
|
||||
return response.data;
|
||||
} catch (err) {
|
||||
console.error('[ShareManager] 获取分享挑战详情异常:', err);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
async ensureShareLevelReady(index: number): Promise<RuntimeLevelConfig | null> {
|
||||
if (!this._shareLevels || index < 0 || index >= this._shareLevels.length) {
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user