poi-plugin-senka-calc
Version:
Ranking point calculator for poi
126 lines (89 loc) • 4.44 kB
JavaScript
;
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;