UNPKG

poi-plugin-senka-calc

Version:
126 lines (89 loc) 4.44 kB
"use strict"; exports.__esModule = true; exports.switchPluginPath = exports.reducer = exports.reactClass = exports.pluginWillUnload = exports.pluginDidLoad = void 0; var _react = _interopRequireDefault(require("react")); var _styledComponents = _interopRequireDefault(require("styled-components")); var _selectors = require("views/utils/selectors"); var _magic = require("./lib/magic"); var _util = require("./lib/util"); var _info = require("./views/info"); var _createStore = require("views/create-store"); var _reduxObservers = require("redux-observers"); var _lodash = require("lodash"); var _momentTimezone = _interopRequireDefault(require("moment-timezone")); var _selectors2 = require("./selectors"); var _calculator = require("./views/calculator"); var _calendar = require("./views/calendar"); var _reducers = require("./reducers"); exports.reducer = _reducers.reducer; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const Row = _styledComponents.default.div.withConfig({ displayName: "plugin-senka-calc__Row", componentId: "sc-fob428-0" })(["display:flex;"]); const Col = _styledComponents.default.div.withConfig({ displayName: "plugin-senka-calc__Col", componentId: "sc-fob428-1" })(["flex:1;"]); const basicObserverCallback = async (dispatch, current, previous) => { if (current.api_member_id !== (previous === null || previous === void 0 ? void 0 : previous.api_member_id)) { const memberId = parseInt(current.api_member_id); const archive = await (0, _util.getAchieveData)(memberId); _magic.magicManager.initialize(archive.magic, current.api_nickname, memberId); dispatch({ type: '@@poi-plugin-senka-calc/initialize', archive }); } }; const pluginDataObserverCallback = async (dispatch, current) => { if (_magic.magicManager.isInitialized() && Object.keys(current.experienceHistory || {}).length > 0) { const archiveData = { ...(0, _lodash.pick)(current, 'experienceHistory', 'rank5', 'rank20', 'rank100', 'rank501', 'rankUser', 'exHistory', 'questHistory', 'currentRank', 'targetSenka', 'excludedQuests'), magic: _magic.magicManager.magic, date: _momentTimezone.default.tz('Asia/Tokyo').format() }; const memberId = _magic.magicManager.memberId; await (0, _util.saveArchiveData)(memberId, archiveData); } }; const basicObserver = (0, _reduxObservers.observer)(_selectors.basicSelector, basicObserverCallback); const pluginDataObserver = (0, _reduxObservers.observer)(_selectors2.pluginDataSelector, pluginDataObserverCallback); let unsuscribeObserver = () => undefined; let timer; let endOfMonth = _momentTimezone.default.tz('Asia/Tokyo').endOf('month'); const pluginDidLoad = () => { unsuscribeObserver = (0, _reduxObservers.observe)(_createStore.store, [basicObserver, pluginDataObserver], { skipInitialCall: false }); timer = setInterval(async () => { if (_momentTimezone.default.tz('Asia/Tokyo').isAfter(endOfMonth)) { endOfMonth = _momentTimezone.default.tz('Asia/Tokyo').endOf('month'); const archive = await (0, _util.getAchieveData)(_magic.magicManager.memberId); _createStore.store.dispatch({ type: '@@poi-plugin-senka-calc/initialize', archive }); } }, 1000); }; exports.pluginDidLoad = pluginDidLoad; const pluginWillUnload = () => { unsuscribeObserver(); unsuscribeObserver = () => undefined; if (timer) { clearInterval(timer); } timer = null; }; exports.pluginWillUnload = pluginWillUnload; const requiredCSS = ['@blueprintjs/select/lib/css/blueprint-select.css', '@blueprintjs/popover2/lib/css/blueprint-popover2.css', '@blueprintjs/datetime/lib/css/blueprint-datetime.css']; const reactClass = () => { return /*#__PURE__*/_react.default.createElement(Row, null, requiredCSS.map(css => /*#__PURE__*/_react.default.createElement("link", { key: css, href: require.resolve(css), rel: "stylesheet" })), /*#__PURE__*/_react.default.createElement(Col, null, /*#__PURE__*/_react.default.createElement(_info.Info, null), /*#__PURE__*/_react.default.createElement(_calendar.Calender, null)), /*#__PURE__*/_react.default.createElement(Col, null, /*#__PURE__*/_react.default.createElement(_calculator.Calculator, null))); }; exports.reactClass = reactClass; const switchPluginPath = ['/kcsapi/api_req_ranking/mxltvkpyuklh']; exports.switchPluginPath = switchPluginPath;