UNPKG

poi-plugin-senka-calc

Version:
105 lines (79 loc) 2.57 kB
"use strict"; exports.__esModule = true; exports.reducerFactory = void 0; var _util = require("../lib/util"); var _magic = require("../lib/magic"); var _momentTimezone = _interopRequireDefault(require("moment-timezone")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getUpdatedSenkaHistory(state, user) { const rankNo = user.api_mxltvkpyuklh; const encryptedSenka = user.api_wuhnhojjxmke; const senka = _magic.magicManager.decryptSenka(rankNo, encryptedSenka); const timeNo = (0, _util.getRankDateNo)(); const lastState = (0, _util.removeKeysGreaterThan)(state, timeNo); return { ...lastState, [timeNo]: senka }; } const reducerFactory = anchor => { return (state = {}, payload) => { const { type } = payload; switch (type) { case '@@poi-plugin-senka-calc/initialize': { const { archive } = payload; switch (anchor) { case 5: return archive.rank5; case 20: return archive.rank20; case 100: return archive.rank100; case 501: return archive.rank501; default: return archive.rankUser; } } case '@@Response/kcsapi/api_req_ranking/mxltvkpyuklh': { const startOfRecord = _momentTimezone.default.tz('Asia/Tokyo').startOf('month').add(3, 'hours'); const now = _momentTimezone.default.tz('Asia/Tokyo'); // the ranking api still returns data of former month, skip recording if (now.isBefore(startOfRecord)) { return state; } const { body } = payload; const userList = body.api_list; const page = body.api_disp_page; _magic.magicManager.updateMagicNum(userList); const { nickname } = _magic.magicManager; for (const user of userList) { if (anchor === 'user') { if (user.api_mtjmdcwtvhdr === nickname) { return getUpdatedSenkaHistory(state, user); } } else { if (page === Math.ceil(anchor / 10)) { const user = userList[(anchor - 1) % 10]; return getUpdatedSenkaHistory(state, user); } } } return state; } default: { return state; } } }; }; exports.reducerFactory = reducerFactory;