feat: sync time with dailylogin server
This commit is contained in:
@@ -608,15 +608,27 @@ function rpcClaimDailyReward(ctx, logger, nk, payload) {
|
||||
var now = new Date();
|
||||
var currentMonth = now.toISOString().substring(5, 7); // e.g. "05"
|
||||
var todayStr = now.toISOString().substring(0, 10);
|
||||
var todayIndex = now.getUTCDate() - 1; // 0 to 30
|
||||
|
||||
var stateObjs = nk.storageRead([{ collection: "daily_rewards", key: "state", userId: ctx.userId }]);
|
||||
var state = { claimed_days: 0, last_claim_date: "", month: "" };
|
||||
var state = { claimed_days: [], last_claim_date: "", month: "" };
|
||||
if (stateObjs && stateObjs.length > 0) {
|
||||
state = stateObjs[0].value;
|
||||
var val = stateObjs[0].value;
|
||||
state.last_claim_date = val.last_claim_date || "";
|
||||
state.month = val.month || "";
|
||||
if (typeof val.claimed_days === 'number') {
|
||||
var arr = [];
|
||||
for (var i=0; i<val.claimed_days; i++) arr.push(i);
|
||||
state.claimed_days = arr;
|
||||
} else if (Array.isArray(val.claimed_days)) {
|
||||
state.claimed_days = val.claimed_days;
|
||||
} else {
|
||||
state.claimed_days = [];
|
||||
}
|
||||
}
|
||||
|
||||
if (state.month !== currentMonth) {
|
||||
state.claimed_days = 0;
|
||||
state.claimed_days = [];
|
||||
state.month = currentMonth;
|
||||
}
|
||||
|
||||
@@ -638,10 +650,13 @@ function rpcClaimDailyReward(ctx, logger, nk, payload) {
|
||||
}
|
||||
}
|
||||
|
||||
var dayIndex = state.claimed_days;
|
||||
var dayIndex = todayIndex;
|
||||
if (dayIndex >= monthRewards.length) {
|
||||
throw new Error("Already claimed all rewards for this month");
|
||||
}
|
||||
if (state.claimed_days.indexOf(dayIndex) !== -1) {
|
||||
throw new Error("Already claimed today's reward");
|
||||
}
|
||||
|
||||
var rewardData = monthRewards[dayIndex];
|
||||
if (typeof rewardData === "number") {
|
||||
@@ -672,7 +687,7 @@ function rpcClaimDailyReward(ctx, logger, nk, payload) {
|
||||
}]);
|
||||
}
|
||||
|
||||
state.claimed_days++;
|
||||
state.claimed_days.push(dayIndex);
|
||||
state.last_claim_date = todayStr;
|
||||
|
||||
nk.storageWrite([{
|
||||
@@ -684,7 +699,7 @@ function rpcClaimDailyReward(ctx, logger, nk, payload) {
|
||||
permissionWrite: 0
|
||||
}]);
|
||||
|
||||
return JSON.stringify({ success: true, reward_type: rewardType, reward_amount: rewardAmount, day: state.claimed_days });
|
||||
return JSON.stringify({ success: true, reward_type: rewardType, reward_amount: rewardAmount, day: dayIndex + 1 });
|
||||
}
|
||||
|
||||
function rpcGetDailyRewardState(ctx, logger, nk, payload) {
|
||||
@@ -692,14 +707,26 @@ function rpcGetDailyRewardState(ctx, logger, nk, payload) {
|
||||
var now = new Date();
|
||||
var currentMonth = now.toISOString().substring(5, 7); // e.g. "05"
|
||||
var todayStr = now.toISOString().substring(0, 10);
|
||||
var todayIndex = now.getUTCDate() - 1;
|
||||
|
||||
var stateObjs = nk.storageRead([{ collection: "daily_rewards", key: "state", userId: ctx.userId }]);
|
||||
var state = { claimed_days: 0, last_claim_date: "", month: "" };
|
||||
var state = { claimed_days: [], last_claim_date: "", month: "" };
|
||||
if (stateObjs && stateObjs.length > 0) {
|
||||
state = stateObjs[0].value;
|
||||
var val = stateObjs[0].value;
|
||||
state.last_claim_date = val.last_claim_date || "";
|
||||
state.month = val.month || "";
|
||||
if (typeof val.claimed_days === 'number') {
|
||||
var arr = [];
|
||||
for (var i=0; i<val.claimed_days; i++) arr.push(i);
|
||||
state.claimed_days = arr;
|
||||
} else if (Array.isArray(val.claimed_days)) {
|
||||
state.claimed_days = val.claimed_days;
|
||||
} else {
|
||||
state.claimed_days = [];
|
||||
}
|
||||
}
|
||||
if (state.month !== currentMonth) {
|
||||
state.claimed_days = 0;
|
||||
state.claimed_days = [];
|
||||
state.month = currentMonth;
|
||||
}
|
||||
|
||||
@@ -719,8 +746,10 @@ function rpcGetDailyRewardState(ctx, logger, nk, payload) {
|
||||
return JSON.stringify({
|
||||
state: state,
|
||||
month_rewards: monthRewards,
|
||||
can_claim_today: state.last_claim_date !== todayStr && state.claimed_days < monthRewards.length,
|
||||
today_date: todayStr
|
||||
can_claim_today: state.last_claim_date !== todayStr && state.claimed_days.indexOf(todayIndex) === -1 && todayIndex < monthRewards.length,
|
||||
today_date: todayStr,
|
||||
today_index: todayIndex,
|
||||
server_month: now.getUTCMonth() + 1
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user