MatchMaster/assets/seven_day_gift/SevenDayGiftApi.ts

98 lines
2.8 KiB
TypeScript

import Utils from "../Script/module/Pay/Utils";
export interface SevenDayRewardItem {
type: "coin" | "hammer" | "freeze" | "magic_wand" | "infinite_health" | "cat_skin";
amount?: number;
count?: number;
itemId?: number;
}
export interface SevenDayReward {
day: number;
items: SevenDayRewardItem[];
claimed: boolean;
}
export interface SevenDayActivityInfo {
serverNow: string | number;
activityId: string;
status: string;
triggerLevel: number;
triggerReached: boolean;
startAt: string | number;
endAt: string | number;
claimedCount: number;
todayClaimed: boolean;
canClaim: boolean;
nextRewardDay: number;
rewards: SevenDayReward[];
}
export interface SevenDayClaimResult {
claimId: string;
rewardDay: number;
rewards: SevenDayRewardItem[];
claimedCount: number;
todayClaimed: boolean;
completed: boolean;
}
export interface SevenDayResponse<T> {
code: number;
data: T;
msg?: string;
}
export default class SevenDayGiftApi {
public static getInfo(callback: (response: SevenDayResponse<SevenDayActivityInfo>) => void) {
this.post("signInActivityInfo", { uid: this.getUid() }, callback);
}
public static claim(callback: (response: SevenDayResponse<SevenDayClaimResult>) => void) {
this.post("signInClaim", { uid: this.getUid() }, callback);
}
public static saveCat(catNum: number, callback: (response: SevenDayResponse<{ catArr: number[] }>) => void) {
this.post("setCatArr", {
uid: this.getUid(),
action: "save",
catNum,
}, callback);
}
public static saveProps(propData: object, callback: (response: SevenDayResponse<any>) => void) {
this.post("userProp", {
uid: this.getUid(),
action: "save",
propType: 0,
propData: JSON.stringify(propData),
}, callback);
}
public static getUid(): string {
const storedUid = cc.fx.StorageMessage.getStorage("uid");
if (storedUid !== undefined && storedUid !== null && storedUid !== "") {
cc.fx.GameConfig.GM_INFO.uid = storedUid;
}
return cc.fx.GameConfig.GM_INFO.uid || "";
}
private static post<T>(endpoint: string, params: object, callback: (response: SevenDayResponse<T>) => void) {
let completed = false;
const timeoutHandle = setTimeout(() => {
if (completed) return;
completed = true;
cc.warn("[SevenDayGiftApi] 请求超时:" + endpoint);
callback({ code: 0, data: null, msg: "请求超时,请稍后重试" });
}, 5500);
Utils.POST(endpoint, params, response => {
if (completed) return;
completed = true;
clearTimeout(timeoutHandle);
callback(response);
});
}
}