UNPKG

poi-plugin-senka-calc

Version:
67 lines (49 loc) 1.73 kB
"use strict"; exports.__esModule = true; exports.reducer = void 0; var _util = require("../lib/util"); var _const = require("../lib/const"); var _momentTimezone = _interopRequireDefault(require("moment-timezone")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const reducer = (state = {}, payload) => { const { type } = payload; switch (type) { case '@@poi-plugin-senka-calc/initialize': { const { archive } = payload; return archive.questHistory; } case '@@Request/kcsapi/api_req_quest/clearitemget': { const current = _momentTimezone.default.tz('Asia/Tokyo'); const lastOfSenkaCycle = _momentTimezone.default.tz('Asia/Tokyo').endOf('month').subtract(10, 'hours'); const monthlyTaskRefresh = _momentTimezone.default.tz('Asia/Tokyo').startOf('month').add(5, 'hours'); // The task is from last quarterly cycle. Senka goes to blackhole. if (_const.QUARTERLY_QUEST_REFRESH_MONTH.includes(current.month()) && current.isBefore(monthlyTaskRefresh)) { return state; } const { body } = payload; const id = parseInt(body.api_quest_id); const quest = _const.SENKA_QUESTS.find(quest => quest.id === id); if (quest) { // 1000: will move to next month const rankNo = current.isAfter(lastOfSenkaCycle) ? 1000 : (0, _util.getDateNo)(); const list = [...(state[rankNo] || []), id]; return { ...state, [rankNo]: list }; } return state; } default: { return state; } } }; exports.reducer = reducer;