From 3d05bed7e00428e9e12917035236f6a212c6e751 Mon Sep 17 00:00:00 2001 From: dat Date: Fri, 11 Oct 2019 11:45:11 +0700 Subject: [PATCH] remove get member profile for registrants tab remove get member profile for registrants tab --- dist/dev/index.js | 114 ++++++++++++++++++------------------- docs/services.members.md | 14 ----- src/services/challenges.js | 11 ---- src/services/members.js | 19 ------- 4 files changed, 57 insertions(+), 101 deletions(-) diff --git a/dist/dev/index.js b/dist/dev/index.js index fa7abe3a..08576b15 100644 --- a/dist/dev/index.js +++ b/dist/dev/index.js @@ -412,7 +412,7 @@ eval("var Keys = __webpack_require__(/*! object-keys */ \"./node_modules/object- /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _tcAccounts = __webpack_require__(/*! tc-accounts */ \"tc-accounts\");\n\nvar _api = __webpack_require__(/*! ../services/api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.auth\"\n * @desc Actions related to Topcoder authentication system.\n */\n\n/**\n * @static\n * @desc Creates an action that loads Topcoder user profile from v3 API.\n * @param {String} userTokenV3 v3 authentication token.\n * @return {Action}\n */\nfunction loadProfileDone(userTokenV3) {\n if (!userTokenV3) return _promise2.default.resolve(null);\n var user = (0, _tcAccounts.decodeToken)(userTokenV3);\n var api = (0, _api.getApi)('V3', userTokenV3);\n return _promise2.default.all([api.get('/members/' + user.handle).then(function (res) {\n return res.json();\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : {};\n }), api.get('/groups?memberId=' + user.userId + '&membershipType=user').then(function (res) {\n return res.json();\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : [];\n })]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n profile = _ref2[0],\n groups = _ref2[1];\n\n return (0, _extends3.default)({}, profile, { groups: groups });\n });\n}\n\n/**\n * @static\n * @desc Creates an action that sets Topcoder v2 authentication token.\n * @param {String} tokenV2 Topcoder v2 authentication token.\n * @return {Action}\n */\nfunction setTcTokenV2(tokenV2) {\n return tokenV2;\n}\n\n/**\n * @static\n * @desc Creates an action that decodes Topcoder v3 authentication token,\n * to get user object, and then writes both the token and the user object into\n * Redux store.\n * @param {String} tokenV3 Topcoder v3 authentication token.\n * @return {Action}\n */\nfunction setTcTokenV3(tokenV3) {\n return tokenV3;\n}\n\nvar _default = (0, _reduxActions.createActions)({\n AUTH: {\n LOAD_PROFILE: loadProfileDone,\n SET_TC_TOKEN_V2: setTcTokenV2,\n SET_TC_TOKEN_V3: setTcTokenV3\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(loadProfileDone, 'loadProfileDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/auth.js');\n reactHotLoader.register(setTcTokenV2, 'setTcTokenV2', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/auth.js');\n reactHotLoader.register(setTcTokenV3, 'setTcTokenV3', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/auth.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/auth.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/auth.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _tcAccounts = __webpack_require__(/*! tc-accounts */ \"tc-accounts\");\n\nvar _api = __webpack_require__(/*! ../services/api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.auth\"\n * @desc Actions related to Topcoder authentication system.\n */\n\n/**\n * @static\n * @desc Creates an action that loads Topcoder user profile from v3 API.\n * @param {String} userTokenV3 v3 authentication token.\n * @return {Action}\n */\nfunction loadProfileDone(userTokenV3) {\n if (!userTokenV3) return _promise2.default.resolve(null);\n var user = (0, _tcAccounts.decodeToken)(userTokenV3);\n var api = (0, _api.getApi)('V3', userTokenV3);\n return _promise2.default.all([api.get('/members/' + user.handle).then(function (res) {\n return res.json();\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : {};\n }), api.get('/groups?memberId=' + user.userId + '&membershipType=user').then(function (res) {\n return res.json();\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : [];\n })]).then(function (_ref) {\n var _ref2 = (0, _slicedToArray3.default)(_ref, 2),\n profile = _ref2[0],\n groups = _ref2[1];\n\n return (0, _extends3.default)({}, profile, { groups: groups });\n });\n}\n\n/**\n * @static\n * @desc Creates an action that sets Topcoder v2 authentication token.\n * @param {String} tokenV2 Topcoder v2 authentication token.\n * @return {Action}\n */\nfunction setTcTokenV2(tokenV2) {\n return tokenV2;\n}\n\n/**\n * @static\n * @desc Creates an action that decodes Topcoder v3 authentication token,\n * to get user object, and then writes both the token and the user object into\n * Redux store.\n * @param {String} tokenV3 Topcoder v3 authentication token.\n * @return {Action}\n */\nfunction setTcTokenV3(tokenV3) {\n return tokenV3;\n}\n\nvar _default = (0, _reduxActions.createActions)({\n AUTH: {\n LOAD_PROFILE: loadProfileDone,\n SET_TC_TOKEN_V2: setTcTokenV2,\n SET_TC_TOKEN_V3: setTcTokenV3\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(loadProfileDone, 'loadProfileDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/auth.js');\n reactHotLoader.register(setTcTokenV2, 'setTcTokenV2', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/auth.js');\n reactHotLoader.register(setTcTokenV3, 'setTcTokenV3', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/auth.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/auth.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/auth.js?"); /***/ }), @@ -424,7 +424,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _challenges = __webpack_require__(/*! ../services/challenges */ \"./src/services/challenges.js\");\n\nvar _submissions = __webpack_require__(/*! ../services/submissions */ \"./src/services/submissions.js\");\n\nvar _members = __webpack_require__(/*! ../services/members */ \"./src/services/members.js\");\n\nvar _api = __webpack_require__(/*! ../services/api */ \"./src/services/api.js\");\n\nvar _submission = __webpack_require__(/*! ../utils/submission */ \"./src/utils/submission.js\");\n\nvar submissionUtil = _interopRequireWildcard(_submission);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.challenge\"\n * @desc Actions related to Topcoder challenges APIs.\n */\n\n/* global CONFIG */\n\n\nvar _CONFIG = {\"AV_SCAN_SCORER_REVIEW_TYPE_ID\":\"68c5a381-c8ab-48af-92a7-7a869a4ee6c3\",\"PAGE_SIZE\":50,\"REVIEW_OPPORTUNITY_PAGE_SIZE\":1000},\n PAGE_SIZE = _CONFIG.PAGE_SIZE;\n\n/**\n * Private. Loads from the backend all data matching some conditions.\n * @param {Function} getter Given params object of shape { limit, offset }\n * loads from the backend at most \"limit\" data, skipping the first\n * \"offset\" ones. Returns loaded data as an array.\n * @param {Number} page Optional. Next page of data to load.\n * @param {Number} perPage Optional. The size of the page content to load.\n * @param {Array} prev Optional. data loaded so far.\n */\n\nfunction getAll(getter) {\n var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var perPage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PAGE_SIZE;\n var prev = arguments[3];\n\n /* Amount of submissions to fetch in one API call. 50 is the current maximum\n * amount of submissions the backend returns, event when the larger limit is\n * explicitely required. */\n return getter({\n page: page,\n perPage: perPage\n }).then(function (res) {\n if (res.length === 0) {\n return prev || res;\n }\n // parse submissions\n var current = [];\n if (prev) {\n current = prev.concat(res);\n } else {\n current = res;\n }\n return getAll(getter, 1 + page, perPage, current);\n });\n}\n\n/**\n * @static\n * @desc Creates an action that drops from Redux store all checkpoints loaded\n * before.\n * @return {Action}\n */\nfunction dropCheckpoints() {}\n\n/**\n * @static\n * @desc Creates an action that drops from Redux store all challenge results\n * loaded before.\n * @return {Action}\n */\nfunction dropResults() {}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of challenge details loading.\n * @param {Number|String} challengeId Challenge ID\n * @return {Action}\n */\nfunction getDetailsInit(challengeId) {\n return _lodash2.default.toString(challengeId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads challenge details.\n * @param {Number|String} challengeId Challenge ID.\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @param {String} tokenV2 Topcoder v2 auth token.\n * @return {Action}\n */\nfunction getDetailsDone(challengeId, tokenV3, tokenV2) {\n var service = (0, _challenges.getService)(tokenV3, tokenV2);\n var v3Promise = service.getChallengeDetails(challengeId);\n return v3Promise;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of user submissions loading.\n * @param {String} challengeId Challenge ID.\n * @return {Action}\n */\nfunction getSubmissionsInit(challengeId) {\n /* As a safeguard, we enforce challengeId to be string (in case somebody\n * passes in a number, by mistake). */\n return _lodash2.default.toString(challengeId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads user's submissions to the specified\n * challenge.\n * @param {String} challengeId Challenge ID.\n * @param {String} tokenV2 Topcoder auth token v2.\n * @return {Action}\n */\nfunction getSubmissionsDone(challengeId, tokenV2) {\n return (0, _api.getApi)('V2', tokenV2).fetch('/challenges/submissions/' + challengeId + '/mySubmissions').then(function (response) {\n return response.json();\n }).then(function (response) {\n return {\n challengeId: _lodash2.default.toString(challengeId),\n submissions: response.submissions\n };\n }).catch(function (error) {\n var err = { challengeId: _lodash2.default.toString(challengeId), error: error };\n throw err;\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of Marathon Match submissions loading.\n * @param {String} challengeId Challenge ID.\n * @return {Action}\n */\nfunction getMMSubmissionsInit(challengeId) {\n /* As a safeguard, we enforce challengeId to be string (in case somebody\n * passes in a number, by mistake). */\n return _lodash2.default.toString(challengeId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads Marathon Match submissions to the specified\n * challenge.\n * @param {String} challengeId Challenge ID.\n * @param {Array} registrants The array of register.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getMMSubmissionsDone(challengeId, registrants, tokenV3) {\n var filter = { challengeId: challengeId };\n var memberService = (0, _members.getService)(tokenV3);\n var submissionsService = (0, _submissions.getService)(tokenV3);\n\n // TODO: Move those numbers to configs\n return getAll(function (params) {\n return submissionsService.getSubmissions(filter, params);\n }, 1, 500).then(function (submissions) {\n var userIds = _lodash2.default.uniq(_lodash2.default.map(submissions, function (sub) {\n return sub.memberId;\n }));\n return memberService.getMembersInformation(userIds).then(function (resources) {\n var finalSubmissions = submissionUtil.processMMSubmissions(submissions, resources, registrants);\n return {\n challengeId: challengeId,\n submissions: finalSubmissions,\n tokenV3: tokenV3\n };\n });\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of registration for a\n * challenge.\n * @return {Action}\n */\nfunction registerInit() {}\n\n/**\n * @static\n * @desc Creates an action that registers user for a challenge.\n * @param {Object} auth An object that holds auth tokens. You can directly pass\n * here the `auth` segment of Redux store.\n * @param [auth.tokenV2]{String} Topcoder auth token v2.\n * @param [auth.tokenV3]{String} Topcoder auth token v3.\n * @param {String} challengeId Challenge ID.\n * @return {Action}\n */\nfunction registerDone(auth, challengeId) {\n return (0, _challenges.getService)(auth.tokenV3).register(challengeId)\n /* As a part of registration flow we silently update challenge details,\n * reusing for this purpose the corresponding action handler. */\n // Uses a delay to allow API time to update\n .then(function () {\n return new _promise2.default(function (resolve) {\n return setTimeout(function () {\n return resolve(getDetailsDone(challengeId, auth.tokenV3, auth.tokenV2));\n }, _topcoderReactUtils.config.CHALLENGE_DETAILS_REFRESH_DELAY);\n });\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of user unregistration from a\n * challenge.\n * @return {Action}\n */\nfunction unregisterInit() {}\n\n/**\n * @static\n * @desc Creates an action that unregisters user from a challenge.\n * @param {Object} auth Object that holds Topcoder auth tokens.\n * @param {String} [auth.tokenV2] v2 token.\n * @param {String} [auth.tokenV3] v3 token.\n * @param {String} challengeId Challenge ID.\n * @return {Action}\n */\nfunction unregisterDone(auth, challengeId) {\n return (0, _challenges.getService)(auth.tokenV3).unregister(challengeId)\n /* As a part of unregistration flow we silently update challenge details,\n * reusing for this purpose the corresponding action handler. */\n // Uses a delay to allow API time to update\n .then(function () {\n return new _promise2.default(function (resolve) {\n return setTimeout(function () {\n return resolve(getDetailsDone(challengeId, auth.tokenV3, auth.tokenV2));\n }, _topcoderReactUtils.config.CHALLENGE_DETAILS_REFRESH_DELAY);\n });\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of challenge results loading.\n * @param {Number|String} challengeId Challenge ID\n * @return {Action}\n */\nfunction loadResultsInit(challengeId) {\n return _lodash2.default.toString(challengeId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads challenge results.\n * @param {Object} auth Object that holds Topcoder auth tokens.\n * @param {String} [auth.tokenV2] v2 token.\n * @param {String} [auth.tokenV3] v3 token.\n * @param {Number|String} challengeId Challenge ID. Should match the one passed\n * in the previous {@link module:actions.challenge.loadResultsInit} call.\n * @param {String} type Challenge type.\n * @return {Action}\n */\nfunction loadResultsDone(auth, challengeId, type) {\n return (0, _api.getApi)('V2', auth.tokenV2).fetch('/' + type + '/challenges/result/' + challengeId).then(function (response) {\n return response.json();\n }).then(function (response) {\n return {\n challengeId: _lodash2.default.toString(challengeId),\n results: response.results\n };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of challenge checkpoints data\n * loading.\n * @return {Action}\n */\nfunction fetchCheckpointsInit() {}\n\n/**\n * @static\n * @desc Creates an action that loads challenge checkpoints data.\n * @param {String} tokenV2 Topcoder v2 auth token.\n * @param {String} challengeId Challenge ID.\n */\nfunction fetchCheckpointsDone(tokenV2, challengeId) {\n var endpoint = '/design/challenges/checkpoint/' + challengeId;\n return (0, _api.getApi)('V2', tokenV2).fetch(endpoint).then(function (response) {\n if (response.status !== 200) {\n throw response.status;\n } else {\n return response.json();\n }\n }).then(function (response) {\n // Expanded key is used for UI expand/collapse.\n response.checkpointResults.forEach(function (checkpoint, index) {\n response.checkpointResults[index].expanded = false;\n });\n return {\n challengeId: Number(challengeId),\n checkpoints: response\n };\n }).catch(function (error) {\n return {\n error: error,\n challengeId: Number(challengeId)\n };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that Toggles checkpoint details panel in the Topcoder\n * Submission Management Page.\n * @todo This is UI action relevant to a specific page in specific app. Must be\n * moved back to Community App.\n * @param {Number} id Checkpoint ID.\n * @param {Boolean} open Target state: `true` to expand, `false` to collapse the\n * details.\n * @return {Action}\n */\nfunction toggleCheckpointFeedback(id, open) {\n return { id: id, open: open };\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of challenge details update.\n * @todo No idea, why we have this action. This functionality should be covered\n * by {@link module:actions.challenge.getDetailsInit} and\n * {@link module:actions.challenge.getDetailsDone}. We need to refactor this.\n * @param {String} uuid UUID of the operation (the same should be passed into\n * the corresponding {@link module:actions.challenge.updateChallengeDone}).\n * @return {Action}\n */\nfunction updateChallengeInit(uuid) {\n return uuid;\n}\n\n/**\n * @static\n * @desc Creates an action that updates challenge details.\n * @todo No idea, why we have this action. This functionality should be covered\n * by {@link module:actions.challenge.getDetailsInit} and\n * {@link module:actions.challenge.getDetailsDone}. We need to refactor this.\n * @param {String} uuid Operation UUID. Should match the one passed into the\n * previous {@link module:actions.challenge.updateChallengeInit} call.\n * @param {Object} challenge Challenge data.\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @return {Action}\n */\nfunction updateChallengeDone(uuid, challenge, tokenV3) {\n return (0, _challenges.getService)(tokenV3).updateChallenge(challenge).then(function (res) {\n return { uuid: uuid, res: res };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting count of user's active challenges.\n * @return {Action}\n */\nfunction getActiveChallengesCountInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets count of user's active challenges from the backend.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Optional. Topcoder auth token v3. Without token only\n * public challenges will be counted. With the token provided, the action will\n * also count private challenges related to this user.\n * @return {Action}\n */\nfunction getActiveChallengesCountDone(handle, tokenV3) {\n return (0, _challenges.getService)(tokenV3).getActiveChallengesCount(handle);\n}\n\n/**\n * @static\n * @desc Creates an action that gets submission information by submission id\n * @param {String} submissionId The submission id\n * @return {Action}\n */\nfunction getSubmissionInformationInit(submissionId) {\n return _lodash2.default.toString(submissionId);\n}\n\n/**\n * @static\n * @desc Creates an action that gets submission information from the backend.\n * @param {String} submissionId The submission id\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getSubmissionInformationDone(submissionId, tokenV3) {\n return (0, _submissions.getService)(tokenV3).getSubmissionInformation(submissionId).then(function (response) {\n return {\n submissionId: submissionId, submission: response\n };\n });\n}\n\nvar _default = (0, _reduxActions.createActions)({\n CHALLENGE: {\n DROP_CHECKPOINTS: dropCheckpoints,\n DROP_RESULTS: dropResults,\n FETCH_CHECKPOINTS_INIT: fetchCheckpointsInit,\n FETCH_CHECKPOINTS_DONE: fetchCheckpointsDone,\n GET_DETAILS_INIT: getDetailsInit,\n GET_DETAILS_DONE: getDetailsDone,\n GET_SUBMISSIONS_INIT: getSubmissionsInit,\n GET_SUBMISSIONS_DONE: getSubmissionsDone,\n LOAD_RESULTS_INIT: loadResultsInit,\n LOAD_RESULTS_DONE: loadResultsDone,\n REGISTER_INIT: registerInit,\n REGISTER_DONE: registerDone,\n TOGGLE_CHECKPOINT_FEEDBACK: toggleCheckpointFeedback,\n UNREGISTER_INIT: unregisterInit,\n UNREGISTER_DONE: unregisterDone,\n UPDATE_CHALLENGE_INIT: updateChallengeInit,\n UPDATE_CHALLENGE_DONE: updateChallengeDone,\n GET_ACTIVE_CHALLENGES_COUNT_INIT: getActiveChallengesCountInit,\n GET_ACTIVE_CHALLENGES_COUNT_DONE: getActiveChallengesCountDone,\n GET_MM_SUBMISSIONS_INIT: getMMSubmissionsInit,\n GET_MM_SUBMISSIONS_DONE: getMMSubmissionsDone,\n GET_SUBMISSION_INFORMATION_INIT: getSubmissionInformationInit,\n GET_SUBMISSION_INFORMATION_DONE: getSubmissionInformationDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(PAGE_SIZE, 'PAGE_SIZE', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getAll, 'getAll', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(dropCheckpoints, 'dropCheckpoints', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(dropResults, 'dropResults', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getDetailsInit, 'getDetailsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getDetailsDone, 'getDetailsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getSubmissionsInit, 'getSubmissionsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getSubmissionsDone, 'getSubmissionsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getMMSubmissionsInit, 'getMMSubmissionsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getMMSubmissionsDone, 'getMMSubmissionsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(registerInit, 'registerInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(registerDone, 'registerDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(unregisterInit, 'unregisterInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(unregisterDone, 'unregisterDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(loadResultsInit, 'loadResultsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(loadResultsDone, 'loadResultsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(fetchCheckpointsInit, 'fetchCheckpointsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(fetchCheckpointsDone, 'fetchCheckpointsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(toggleCheckpointFeedback, 'toggleCheckpointFeedback', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(updateChallengeInit, 'updateChallengeInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(updateChallengeDone, 'updateChallengeDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getActiveChallengesCountInit, 'getActiveChallengesCountInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getActiveChallengesCountDone, 'getActiveChallengesCountDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getSubmissionInformationInit, 'getSubmissionInformationInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getSubmissionInformationDone, 'getSubmissionInformationDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/challenge.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/challenge.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _challenges = __webpack_require__(/*! ../services/challenges */ \"./src/services/challenges.js\");\n\nvar _submissions = __webpack_require__(/*! ../services/submissions */ \"./src/services/submissions.js\");\n\nvar _members = __webpack_require__(/*! ../services/members */ \"./src/services/members.js\");\n\nvar _api = __webpack_require__(/*! ../services/api */ \"./src/services/api.js\");\n\nvar _submission = __webpack_require__(/*! ../utils/submission */ \"./src/utils/submission.js\");\n\nvar submissionUtil = _interopRequireWildcard(_submission);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.challenge\"\n * @desc Actions related to Topcoder challenges APIs.\n */\n\n/* global CONFIG */\n\n\nvar _CONFIG = {\"AV_SCAN_SCORER_REVIEW_TYPE_ID\":\"68c5a381-c8ab-48af-92a7-7a869a4ee6c3\",\"PAGE_SIZE\":50,\"REVIEW_OPPORTUNITY_PAGE_SIZE\":1000},\n PAGE_SIZE = _CONFIG.PAGE_SIZE;\n\n/**\n * Private. Loads from the backend all data matching some conditions.\n * @param {Function} getter Given params object of shape { limit, offset }\n * loads from the backend at most \"limit\" data, skipping the first\n * \"offset\" ones. Returns loaded data as an array.\n * @param {Number} page Optional. Next page of data to load.\n * @param {Number} perPage Optional. The size of the page content to load.\n * @param {Array} prev Optional. data loaded so far.\n */\n\nfunction getAll(getter) {\n var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var perPage = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : PAGE_SIZE;\n var prev = arguments[3];\n\n /* Amount of submissions to fetch in one API call. 50 is the current maximum\n * amount of submissions the backend returns, event when the larger limit is\n * explicitely required. */\n return getter({\n page: page,\n perPage: perPage\n }).then(function (res) {\n if (res.length === 0) {\n return prev || res;\n }\n // parse submissions\n var current = [];\n if (prev) {\n current = prev.concat(res);\n } else {\n current = res;\n }\n return getAll(getter, 1 + page, perPage, current);\n });\n}\n\n/**\n * @static\n * @desc Creates an action that drops from Redux store all checkpoints loaded\n * before.\n * @return {Action}\n */\nfunction dropCheckpoints() {}\n\n/**\n * @static\n * @desc Creates an action that drops from Redux store all challenge results\n * loaded before.\n * @return {Action}\n */\nfunction dropResults() {}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of challenge details loading.\n * @param {Number|String} challengeId Challenge ID\n * @return {Action}\n */\nfunction getDetailsInit(challengeId) {\n return _lodash2.default.toString(challengeId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads challenge details.\n * @param {Number|String} challengeId Challenge ID.\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @param {String} tokenV2 Topcoder v2 auth token.\n * @return {Action}\n */\nfunction getDetailsDone(challengeId, tokenV3, tokenV2) {\n var service = (0, _challenges.getService)(tokenV3, tokenV2);\n var v3Promise = service.getChallengeDetails(challengeId);\n return v3Promise;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of user submissions loading.\n * @param {String} challengeId Challenge ID.\n * @return {Action}\n */\nfunction getSubmissionsInit(challengeId) {\n /* As a safeguard, we enforce challengeId to be string (in case somebody\n * passes in a number, by mistake). */\n return _lodash2.default.toString(challengeId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads user's submissions to the specified\n * challenge.\n * @param {String} challengeId Challenge ID.\n * @param {String} tokenV2 Topcoder auth token v2.\n * @return {Action}\n */\nfunction getSubmissionsDone(challengeId, tokenV2) {\n return (0, _api.getApi)('V2', tokenV2).fetch('/challenges/submissions/' + challengeId + '/mySubmissions').then(function (response) {\n return response.json();\n }).then(function (response) {\n return {\n challengeId: _lodash2.default.toString(challengeId),\n submissions: response.submissions\n };\n }).catch(function (error) {\n var err = { challengeId: _lodash2.default.toString(challengeId), error: error };\n throw err;\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of Marathon Match submissions loading.\n * @param {String} challengeId Challenge ID.\n * @return {Action}\n */\nfunction getMMSubmissionsInit(challengeId) {\n /* As a safeguard, we enforce challengeId to be string (in case somebody\n * passes in a number, by mistake). */\n return _lodash2.default.toString(challengeId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads Marathon Match submissions to the specified\n * challenge.\n * @param {String} challengeId Challenge ID.\n * @param {Array} registrants The array of register.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getMMSubmissionsDone(challengeId, registrants, tokenV3) {\n var filter = { challengeId: challengeId };\n var memberService = (0, _members.getService)(tokenV3);\n var submissionsService = (0, _submissions.getService)(tokenV3);\n\n // TODO: Move those numbers to configs\n return getAll(function (params) {\n return submissionsService.getSubmissions(filter, params);\n }, 1, 500).then(function (submissions) {\n var userIds = _lodash2.default.uniq(_lodash2.default.map(submissions, function (sub) {\n return sub.memberId;\n }));\n return memberService.getMembersInformation(userIds).then(function (resources) {\n var finalSubmissions = submissionUtil.processMMSubmissions(submissions, resources, registrants);\n return {\n challengeId: challengeId,\n submissions: finalSubmissions,\n tokenV3: tokenV3\n };\n });\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of registration for a\n * challenge.\n * @return {Action}\n */\nfunction registerInit() {}\n\n/**\n * @static\n * @desc Creates an action that registers user for a challenge.\n * @param {Object} auth An object that holds auth tokens. You can directly pass\n * here the `auth` segment of Redux store.\n * @param [auth.tokenV2]{String} Topcoder auth token v2.\n * @param [auth.tokenV3]{String} Topcoder auth token v3.\n * @param {String} challengeId Challenge ID.\n * @return {Action}\n */\nfunction registerDone(auth, challengeId) {\n return (0, _challenges.getService)(auth.tokenV3).register(challengeId)\n /* As a part of registration flow we silently update challenge details,\n * reusing for this purpose the corresponding action handler. */\n // Uses a delay to allow API time to update\n .then(function () {\n return new _promise2.default(function (resolve) {\n return setTimeout(function () {\n return resolve(getDetailsDone(challengeId, auth.tokenV3, auth.tokenV2));\n }, _topcoderReactUtils.config.CHALLENGE_DETAILS_REFRESH_DELAY);\n });\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of user unregistration from a\n * challenge.\n * @return {Action}\n */\nfunction unregisterInit() {}\n\n/**\n * @static\n * @desc Creates an action that unregisters user from a challenge.\n * @param {Object} auth Object that holds Topcoder auth tokens.\n * @param {String} [auth.tokenV2] v2 token.\n * @param {String} [auth.tokenV3] v3 token.\n * @param {String} challengeId Challenge ID.\n * @return {Action}\n */\nfunction unregisterDone(auth, challengeId) {\n return (0, _challenges.getService)(auth.tokenV3).unregister(challengeId)\n /* As a part of unregistration flow we silently update challenge details,\n * reusing for this purpose the corresponding action handler. */\n // Uses a delay to allow API time to update\n .then(function () {\n return new _promise2.default(function (resolve) {\n return setTimeout(function () {\n return resolve(getDetailsDone(challengeId, auth.tokenV3, auth.tokenV2));\n }, _topcoderReactUtils.config.CHALLENGE_DETAILS_REFRESH_DELAY);\n });\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of challenge results loading.\n * @param {Number|String} challengeId Challenge ID\n * @return {Action}\n */\nfunction loadResultsInit(challengeId) {\n return _lodash2.default.toString(challengeId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads challenge results.\n * @param {Object} auth Object that holds Topcoder auth tokens.\n * @param {String} [auth.tokenV2] v2 token.\n * @param {String} [auth.tokenV3] v3 token.\n * @param {Number|String} challengeId Challenge ID. Should match the one passed\n * in the previous {@link module:actions.challenge.loadResultsInit} call.\n * @param {String} type Challenge type.\n * @return {Action}\n */\nfunction loadResultsDone(auth, challengeId, type) {\n return (0, _api.getApi)('V2', auth.tokenV2).fetch('/' + type + '/challenges/result/' + challengeId).then(function (response) {\n return response.json();\n }).then(function (response) {\n return {\n challengeId: _lodash2.default.toString(challengeId),\n results: response.results\n };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of challenge checkpoints data\n * loading.\n * @return {Action}\n */\nfunction fetchCheckpointsInit() {}\n\n/**\n * @static\n * @desc Creates an action that loads challenge checkpoints data.\n * @param {String} tokenV2 Topcoder v2 auth token.\n * @param {String} challengeId Challenge ID.\n */\nfunction fetchCheckpointsDone(tokenV2, challengeId) {\n var endpoint = '/design/challenges/checkpoint/' + challengeId;\n return (0, _api.getApi)('V2', tokenV2).fetch(endpoint).then(function (response) {\n if (response.status !== 200) {\n throw response.status;\n } else {\n return response.json();\n }\n }).then(function (response) {\n // Expanded key is used for UI expand/collapse.\n response.checkpointResults.forEach(function (checkpoint, index) {\n response.checkpointResults[index].expanded = false;\n });\n return {\n challengeId: Number(challengeId),\n checkpoints: response\n };\n }).catch(function (error) {\n return {\n error: error,\n challengeId: Number(challengeId)\n };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that Toggles checkpoint details panel in the Topcoder\n * Submission Management Page.\n * @todo This is UI action relevant to a specific page in specific app. Must be\n * moved back to Community App.\n * @param {Number} id Checkpoint ID.\n * @param {Boolean} open Target state: `true` to expand, `false` to collapse the\n * details.\n * @return {Action}\n */\nfunction toggleCheckpointFeedback(id, open) {\n return { id: id, open: open };\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of challenge details update.\n * @todo No idea, why we have this action. This functionality should be covered\n * by {@link module:actions.challenge.getDetailsInit} and\n * {@link module:actions.challenge.getDetailsDone}. We need to refactor this.\n * @param {String} uuid UUID of the operation (the same should be passed into\n * the corresponding {@link module:actions.challenge.updateChallengeDone}).\n * @return {Action}\n */\nfunction updateChallengeInit(uuid) {\n return uuid;\n}\n\n/**\n * @static\n * @desc Creates an action that updates challenge details.\n * @todo No idea, why we have this action. This functionality should be covered\n * by {@link module:actions.challenge.getDetailsInit} and\n * {@link module:actions.challenge.getDetailsDone}. We need to refactor this.\n * @param {String} uuid Operation UUID. Should match the one passed into the\n * previous {@link module:actions.challenge.updateChallengeInit} call.\n * @param {Object} challenge Challenge data.\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @return {Action}\n */\nfunction updateChallengeDone(uuid, challenge, tokenV3) {\n return (0, _challenges.getService)(tokenV3).updateChallenge(challenge).then(function (res) {\n return { uuid: uuid, res: res };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting count of user's active challenges.\n * @return {Action}\n */\nfunction getActiveChallengesCountInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets count of user's active challenges from the backend.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Optional. Topcoder auth token v3. Without token only\n * public challenges will be counted. With the token provided, the action will\n * also count private challenges related to this user.\n * @return {Action}\n */\nfunction getActiveChallengesCountDone(handle, tokenV3) {\n return (0, _challenges.getService)(tokenV3).getActiveChallengesCount(handle);\n}\n\n/**\n * @static\n * @desc Creates an action that gets submission information by submission id\n * @param {String} submissionId The submission id\n * @return {Action}\n */\nfunction getSubmissionInformationInit(submissionId) {\n return _lodash2.default.toString(submissionId);\n}\n\n/**\n * @static\n * @desc Creates an action that gets submission information from the backend.\n * @param {String} submissionId The submission id\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getSubmissionInformationDone(submissionId, tokenV3) {\n return (0, _submissions.getService)(tokenV3).getSubmissionInformation(submissionId).then(function (response) {\n return {\n submissionId: submissionId, submission: response\n };\n });\n}\n\nvar _default = (0, _reduxActions.createActions)({\n CHALLENGE: {\n DROP_CHECKPOINTS: dropCheckpoints,\n DROP_RESULTS: dropResults,\n FETCH_CHECKPOINTS_INIT: fetchCheckpointsInit,\n FETCH_CHECKPOINTS_DONE: fetchCheckpointsDone,\n GET_DETAILS_INIT: getDetailsInit,\n GET_DETAILS_DONE: getDetailsDone,\n GET_SUBMISSIONS_INIT: getSubmissionsInit,\n GET_SUBMISSIONS_DONE: getSubmissionsDone,\n LOAD_RESULTS_INIT: loadResultsInit,\n LOAD_RESULTS_DONE: loadResultsDone,\n REGISTER_INIT: registerInit,\n REGISTER_DONE: registerDone,\n TOGGLE_CHECKPOINT_FEEDBACK: toggleCheckpointFeedback,\n UNREGISTER_INIT: unregisterInit,\n UNREGISTER_DONE: unregisterDone,\n UPDATE_CHALLENGE_INIT: updateChallengeInit,\n UPDATE_CHALLENGE_DONE: updateChallengeDone,\n GET_ACTIVE_CHALLENGES_COUNT_INIT: getActiveChallengesCountInit,\n GET_ACTIVE_CHALLENGES_COUNT_DONE: getActiveChallengesCountDone,\n GET_MM_SUBMISSIONS_INIT: getMMSubmissionsInit,\n GET_MM_SUBMISSIONS_DONE: getMMSubmissionsDone,\n GET_SUBMISSION_INFORMATION_INIT: getSubmissionInformationInit,\n GET_SUBMISSION_INFORMATION_DONE: getSubmissionInformationDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(PAGE_SIZE, 'PAGE_SIZE', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getAll, 'getAll', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(dropCheckpoints, 'dropCheckpoints', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(dropResults, 'dropResults', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getDetailsInit, 'getDetailsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getDetailsDone, 'getDetailsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getSubmissionsInit, 'getSubmissionsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getSubmissionsDone, 'getSubmissionsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getMMSubmissionsInit, 'getMMSubmissionsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getMMSubmissionsDone, 'getMMSubmissionsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(registerInit, 'registerInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(registerDone, 'registerDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(unregisterInit, 'unregisterInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(unregisterDone, 'unregisterDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(loadResultsInit, 'loadResultsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(loadResultsDone, 'loadResultsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(fetchCheckpointsInit, 'fetchCheckpointsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(fetchCheckpointsDone, 'fetchCheckpointsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(toggleCheckpointFeedback, 'toggleCheckpointFeedback', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(updateChallengeInit, 'updateChallengeInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(updateChallengeDone, 'updateChallengeDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getActiveChallengesCountInit, 'getActiveChallengesCountInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getActiveChallengesCountDone, 'getActiveChallengesCountDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getSubmissionInformationInit, 'getSubmissionInformationInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(getSubmissionInformationDone, 'getSubmissionInformationDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/challenge.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/challenge.js?"); /***/ }), @@ -436,7 +436,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Creates an action that loads projects related to a user.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {Boolean} hasActiveBillingAccount Optional. Defaults to false.\n * Whether only projects with active billing accounts should be included\n * into the results.\n * @return {Action}\n */\nvar getUserProjectsDone = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(tokenV3, hasActiveBillingAccount) {\n var params, projects;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n params = {};\n\n if (hasActiveBillingAccount) params.hasActiveBillingAccount = true;\n _context.next = 4;\n return (0, _direct.getService)(tokenV3).getUserProjects(params);\n\n case 4:\n projects = _context.sent;\n return _context.abrupt('return', { tokenV3: tokenV3, projects: projects });\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getUserProjectsDone(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _direct = __webpack_require__(/*! ../services/direct */ \"./src/services/direct.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.direct\"\n * @desc Actions related to Direct API: access to projects, billing accounts,\n * copilot operations, and other similar stuff is handled by them.\n */\n\n/**\n * @static\n * @desc Creates an action that drops out of Redux store all Direct-related\n * data, loaded by other actions from this module, and also cancels any pending\n * loading operations.\n * @return {Action}\n */\nfunction dropAll() {\n return null;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of project details loading.\n * @param {Number} projectId Project ID.\n * @return {Action}\n */\nfunction getProjectDetailsInit(projectId) {\n return projectId;\n}\n\n/**\n * @static\n * @desc Creates an action that loads project details.\n * @param {Number} projectId Project ID.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getProjectDetailsDone(projectId, tokenV3) {\n return (0, _direct.getService)(tokenV3).getProjectDetails(projectId);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of project permissions\n * loading.\n * @param {Number|String} projectId Project ID.\n * @return {Action}\n */\nfunction getProjectPermissionsInit(projectId) {\n return _lodash2.default.toNumber(projectId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads project permissions.\n * @param {Number|String} projectId Project ID.\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @return {Action}\n */\nfunction getProjectPermissionsDone(projectId, tokenV3) {\n return (0, _direct.getService)(tokenV3).getProjectPermissions(projectId).then(function (permissions) {\n return { permissions: permissions, projectId: projectId };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading the projects\n * related with a user.\n * @param {String} tokenV3 Topcoder v3 auth token of the user for who we load\n * the projects.\n * @return {Action}\n */\nfunction getUserProjectsInit(tokenV3) {\n return tokenV3;\n}\nvar _default = (0, _reduxActions.createActions)({\n DIRECT: {\n DROP_ALL: dropAll,\n GET_PROJECT_DETAILS_INIT: getProjectDetailsInit,\n GET_PROJECT_DETAILS_DONE: getProjectDetailsDone,\n GET_PROJECT_PERMISSIONS_INIT: getProjectPermissionsInit,\n GET_PROJECT_PERMISSIONS_DONE: getProjectPermissionsDone,\n GET_USER_PROJECTS_INIT: getUserProjectsInit,\n GET_USER_PROJECTS_DONE: getUserProjectsDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(dropAll, 'dropAll', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getProjectDetailsInit, 'getProjectDetailsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getProjectDetailsDone, 'getProjectDetailsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getProjectPermissionsInit, 'getProjectPermissionsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getProjectPermissionsDone, 'getProjectPermissionsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getUserProjectsInit, 'getUserProjectsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getUserProjectsDone, 'getUserProjectsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/direct.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/direct.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Creates an action that loads projects related to a user.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {Boolean} hasActiveBillingAccount Optional. Defaults to false.\n * Whether only projects with active billing accounts should be included\n * into the results.\n * @return {Action}\n */\nvar getUserProjectsDone = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(tokenV3, hasActiveBillingAccount) {\n var params, projects;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n params = {};\n\n if (hasActiveBillingAccount) params.hasActiveBillingAccount = true;\n _context.next = 4;\n return (0, _direct.getService)(tokenV3).getUserProjects(params);\n\n case 4:\n projects = _context.sent;\n return _context.abrupt('return', { tokenV3: tokenV3, projects: projects });\n\n case 6:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getUserProjectsDone(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _direct = __webpack_require__(/*! ../services/direct */ \"./src/services/direct.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.direct\"\n * @desc Actions related to Direct API: access to projects, billing accounts,\n * copilot operations, and other similar stuff is handled by them.\n */\n\n/**\n * @static\n * @desc Creates an action that drops out of Redux store all Direct-related\n * data, loaded by other actions from this module, and also cancels any pending\n * loading operations.\n * @return {Action}\n */\nfunction dropAll() {\n return null;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of project details loading.\n * @param {Number} projectId Project ID.\n * @return {Action}\n */\nfunction getProjectDetailsInit(projectId) {\n return projectId;\n}\n\n/**\n * @static\n * @desc Creates an action that loads project details.\n * @param {Number} projectId Project ID.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getProjectDetailsDone(projectId, tokenV3) {\n return (0, _direct.getService)(tokenV3).getProjectDetails(projectId);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of project permissions\n * loading.\n * @param {Number|String} projectId Project ID.\n * @return {Action}\n */\nfunction getProjectPermissionsInit(projectId) {\n return _lodash2.default.toNumber(projectId);\n}\n\n/**\n * @static\n * @desc Creates an action that loads project permissions.\n * @param {Number|String} projectId Project ID.\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @return {Action}\n */\nfunction getProjectPermissionsDone(projectId, tokenV3) {\n return (0, _direct.getService)(tokenV3).getProjectPermissions(projectId).then(function (permissions) {\n return { permissions: permissions, projectId: projectId };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading the projects\n * related with a user.\n * @param {String} tokenV3 Topcoder v3 auth token of the user for who we load\n * the projects.\n * @return {Action}\n */\nfunction getUserProjectsInit(tokenV3) {\n return tokenV3;\n}\nvar _default = (0, _reduxActions.createActions)({\n DIRECT: {\n DROP_ALL: dropAll,\n GET_PROJECT_DETAILS_INIT: getProjectDetailsInit,\n GET_PROJECT_DETAILS_DONE: getProjectDetailsDone,\n GET_PROJECT_PERMISSIONS_INIT: getProjectPermissionsInit,\n GET_PROJECT_PERMISSIONS_DONE: getProjectPermissionsDone,\n GET_USER_PROJECTS_INIT: getUserProjectsInit,\n GET_USER_PROJECTS_DONE: getUserProjectsDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(dropAll, 'dropAll', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getProjectDetailsInit, 'getProjectDetailsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getProjectDetailsDone, 'getProjectDetailsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getProjectPermissionsInit, 'getProjectPermissionsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getProjectPermissionsDone, 'getProjectPermissionsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getUserProjectsInit, 'getUserProjectsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(getUserProjectsDone, 'getUserProjectsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/direct.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/direct.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/direct.js?"); /***/ }), @@ -448,7 +448,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.errors\"\n * @desc Actions related to the standard application-wide error handling and\n * messaging.\n *\n * Pending to be documented. You are not supposed to use them directly anyway.\n *\n * @todo This module does not belong to `topcoder-react-lib`, it will be moved\n * to `topcoder-react-utils` soon.\n */\n\n\nvar _default = (0, _reduxActions.createActions)({\n ERRORS: {\n CLEAR_ERROR: _lodash2.default.noop,\n NEW_ERROR: function NEW_ERROR(title, details) {\n return { title: title, details: details };\n },\n CLEAR_ALL_ERROR_ICONS: _lodash2.default.noop,\n SET_ERROR_ICON: function SET_ERROR_ICON(id, title, message) {\n return { id: id, title: title, message: message };\n },\n CLEAR_ERROR_ICON: function CLEAR_ERROR_ICON(id) {\n return { id: id };\n }\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/errors.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/errors.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.errors\"\n * @desc Actions related to the standard application-wide error handling and\n * messaging.\n *\n * Pending to be documented. You are not supposed to use them directly anyway.\n *\n * @todo This module does not belong to `topcoder-react-lib`, it will be moved\n * to `topcoder-react-utils` soon.\n */\n\n\nvar _default = (0, _reduxActions.createActions)({\n ERRORS: {\n CLEAR_ERROR: _lodash2.default.noop,\n NEW_ERROR: function NEW_ERROR(title, details) {\n return { title: title, details: details };\n },\n CLEAR_ALL_ERROR_ICONS: _lodash2.default.noop,\n SET_ERROR_ICON: function SET_ERROR_ICON(id, title, message) {\n return { id: id, title: title, message: message };\n },\n CLEAR_ERROR_ICON: function CLEAR_ERROR_ICON(id) {\n return { id: id };\n }\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/errors.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/errors.js?"); /***/ }), @@ -460,7 +460,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _groups = __webpack_require__(/*! ../services/groups */ \"./src/services/groups.js\");\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.groups\"\n * @desc Actions related to user groups.\n * @todo Some group-related actions can be found elsewhere (e.g. addition of\n * members to group is located inside tc-communities actions, because joining\n * a community is equivalent to adding user to a group). It will be great to\n * move such actions in here.\n */\n\n/**\n * @static\n * @desc Creates an action that removes from Redux store all group data loaded\n * before by other actions in this module, and also cancels any on-going\n * loading operations.\n * @return {Action}\n */\nfunction dropGroups() {\n return undefined;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of group data loading.\n * @param {String|String[]} groupIds ID, or an array of IDs, for groups to load.\n * @return {Action}\n */\nfunction getGroupsInit(groupIds) {\n return groupIds;\n}\n\n/**\n * @static\n * @desc Creates an action that loads group data.\n * @param {String|String[]} groupIds ID, or an array of IDs, of groups to load.\n * @param {String} tokenV3 Optional. Topcoder v3 auth token.\n * @return {Action}\n */\nfunction getGroupsDone(groupIds, tokenV3) {\n return (0, _groups.getService)(tokenV3).getGroupMap(groupIds);\n}\n\nvar _default = (0, _reduxActions.createActions)({\n GROUPS: {\n DROP_GROUPS: dropGroups,\n GET_GROUPS_INIT: getGroupsInit,\n GET_GROUPS_DONE: getGroupsDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(dropGroups, 'dropGroups', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/groups.js');\n reactHotLoader.register(getGroupsInit, 'getGroupsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/groups.js');\n reactHotLoader.register(getGroupsDone, 'getGroupsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/groups.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/groups.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/groups.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _groups = __webpack_require__(/*! ../services/groups */ \"./src/services/groups.js\");\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.groups\"\n * @desc Actions related to user groups.\n * @todo Some group-related actions can be found elsewhere (e.g. addition of\n * members to group is located inside tc-communities actions, because joining\n * a community is equivalent to adding user to a group). It will be great to\n * move such actions in here.\n */\n\n/**\n * @static\n * @desc Creates an action that removes from Redux store all group data loaded\n * before by other actions in this module, and also cancels any on-going\n * loading operations.\n * @return {Action}\n */\nfunction dropGroups() {\n return undefined;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of group data loading.\n * @param {String|String[]} groupIds ID, or an array of IDs, for groups to load.\n * @return {Action}\n */\nfunction getGroupsInit(groupIds) {\n return groupIds;\n}\n\n/**\n * @static\n * @desc Creates an action that loads group data.\n * @param {String|String[]} groupIds ID, or an array of IDs, of groups to load.\n * @param {String} tokenV3 Optional. Topcoder v3 auth token.\n * @return {Action}\n */\nfunction getGroupsDone(groupIds, tokenV3) {\n return (0, _groups.getService)(tokenV3).getGroupMap(groupIds);\n}\n\nvar _default = (0, _reduxActions.createActions)({\n GROUPS: {\n DROP_GROUPS: dropGroups,\n GET_GROUPS_INIT: getGroupsInit,\n GET_GROUPS_DONE: getGroupsDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(dropGroups, 'dropGroups', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/groups.js');\n reactHotLoader.register(getGroupsInit, 'getGroupsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/groups.js');\n reactHotLoader.register(getGroupsDone, 'getGroupsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/groups.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/groups.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/groups.js?"); /***/ }), @@ -472,7 +472,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.actions = undefined;\n\nvar _auth = __webpack_require__(/*! ./auth */ \"./src/actions/auth.js\");\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _smp = __webpack_require__(/*! ./smp */ \"./src/actions/smp.js\");\n\nvar _smp2 = _interopRequireDefault(_smp);\n\nvar _stats = __webpack_require__(/*! ./stats */ \"./src/actions/stats.js\");\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nvar _terms = __webpack_require__(/*! ./terms */ \"./src/actions/terms.js\");\n\nvar _terms2 = _interopRequireDefault(_terms);\n\nvar _direct = __webpack_require__(/*! ./direct */ \"./src/actions/direct.js\");\n\nvar _direct2 = _interopRequireDefault(_direct);\n\nvar _groups = __webpack_require__(/*! ./groups */ \"./src/actions/groups.js\");\n\nvar _groups2 = _interopRequireDefault(_groups);\n\nvar _errors = __webpack_require__(/*! ./errors */ \"./src/actions/errors.js\");\n\nvar _errors2 = _interopRequireDefault(_errors);\n\nvar _challenge = __webpack_require__(/*! ./challenge */ \"./src/actions/challenge.js\");\n\nvar _challenge2 = _interopRequireDefault(_challenge);\n\nvar _profile = __webpack_require__(/*! ./profile */ \"./src/actions/profile.js\");\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nvar _members = __webpack_require__(/*! ./members */ \"./src/actions/members.js\");\n\nvar _members2 = _interopRequireDefault(_members);\n\nvar _memberTasks = __webpack_require__(/*! ./member-tasks */ \"./src/actions/member-tasks.js\");\n\nvar _memberTasks2 = _interopRequireDefault(_memberTasks);\n\nvar _reviewOpportunity = __webpack_require__(/*! ./reviewOpportunity */ \"./src/actions/reviewOpportunity.js\");\n\nvar _reviewOpportunity2 = _interopRequireDefault(_reviewOpportunity);\n\nvar _lookup = __webpack_require__(/*! ./lookup */ \"./src/actions/lookup.js\");\n\nvar _lookup2 = _interopRequireDefault(_lookup);\n\nvar _settings = __webpack_require__(/*! ./settings */ \"./src/actions/settings.js\");\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nvar _looker = __webpack_require__(/*! ./looker */ \"./src/actions/looker.js\");\n\nvar _looker2 = _interopRequireDefault(_looker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n};\n\nvar actions = exports.actions = {\n auth: _auth2.default.auth,\n smp: _smp2.default.smp,\n challenge: _challenge2.default.challenge,\n terms: _terms2.default.terms,\n stats: _stats2.default.stats,\n direct: _direct2.default.direct,\n groups: _groups2.default.groups,\n errors: _errors2.default.errors,\n profile: _profile2.default.profile,\n members: _members2.default.members,\n memberTasks: _memberTasks2.default.memberTasks,\n reviewOpportunity: _reviewOpportunity2.default.reviewOpportunity,\n lookup: _lookup2.default.lookup,\n settings: _settings2.default.settings,\n looker: _looker2.default.looker\n};\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(actions, 'actions', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/index.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/index.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/index.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.actions = undefined;\n\nvar _auth = __webpack_require__(/*! ./auth */ \"./src/actions/auth.js\");\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _smp = __webpack_require__(/*! ./smp */ \"./src/actions/smp.js\");\n\nvar _smp2 = _interopRequireDefault(_smp);\n\nvar _stats = __webpack_require__(/*! ./stats */ \"./src/actions/stats.js\");\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nvar _terms = __webpack_require__(/*! ./terms */ \"./src/actions/terms.js\");\n\nvar _terms2 = _interopRequireDefault(_terms);\n\nvar _direct = __webpack_require__(/*! ./direct */ \"./src/actions/direct.js\");\n\nvar _direct2 = _interopRequireDefault(_direct);\n\nvar _groups = __webpack_require__(/*! ./groups */ \"./src/actions/groups.js\");\n\nvar _groups2 = _interopRequireDefault(_groups);\n\nvar _errors = __webpack_require__(/*! ./errors */ \"./src/actions/errors.js\");\n\nvar _errors2 = _interopRequireDefault(_errors);\n\nvar _challenge = __webpack_require__(/*! ./challenge */ \"./src/actions/challenge.js\");\n\nvar _challenge2 = _interopRequireDefault(_challenge);\n\nvar _profile = __webpack_require__(/*! ./profile */ \"./src/actions/profile.js\");\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nvar _members = __webpack_require__(/*! ./members */ \"./src/actions/members.js\");\n\nvar _members2 = _interopRequireDefault(_members);\n\nvar _memberTasks = __webpack_require__(/*! ./member-tasks */ \"./src/actions/member-tasks.js\");\n\nvar _memberTasks2 = _interopRequireDefault(_memberTasks);\n\nvar _reviewOpportunity = __webpack_require__(/*! ./reviewOpportunity */ \"./src/actions/reviewOpportunity.js\");\n\nvar _reviewOpportunity2 = _interopRequireDefault(_reviewOpportunity);\n\nvar _lookup = __webpack_require__(/*! ./lookup */ \"./src/actions/lookup.js\");\n\nvar _lookup2 = _interopRequireDefault(_lookup);\n\nvar _settings = __webpack_require__(/*! ./settings */ \"./src/actions/settings.js\");\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nvar _looker = __webpack_require__(/*! ./looker */ \"./src/actions/looker.js\");\n\nvar _looker2 = _interopRequireDefault(_looker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n};\n\nvar actions = exports.actions = {\n auth: _auth2.default.auth,\n smp: _smp2.default.smp,\n challenge: _challenge2.default.challenge,\n terms: _terms2.default.terms,\n stats: _stats2.default.stats,\n direct: _direct2.default.direct,\n groups: _groups2.default.groups,\n errors: _errors2.default.errors,\n profile: _profile2.default.profile,\n members: _members2.default.members,\n memberTasks: _memberTasks2.default.memberTasks,\n reviewOpportunity: _reviewOpportunity2.default.reviewOpportunity,\n lookup: _lookup2.default.lookup,\n settings: _settings2.default.settings,\n looker: _looker2.default.looker\n};\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(actions, 'actions', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/index.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/index.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/index.js?"); /***/ }), @@ -484,7 +484,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Creates an action that gets look data by id.\n * @return {Action}\n */\nvar getLookerDone = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(lookerId) {\n var data;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _looker.getService)().getLooker(lookerId);\n\n case 2:\n data = _context.sent;\n return _context.abrupt('return', { data: data, lookerId: lookerId });\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getLookerDone(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _looker = __webpack_require__(/*! ../services/looker */ \"./src/services/looker.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.looker\"\n * @desc Actions related to looker data.\n */\n\nvar _default = (0, _reduxActions.createActions)({\n LOOKER: {\n GET_LOOKER_DONE: getLookerDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getLookerDone, 'getLookerDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/looker.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/looker.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/looker.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Creates an action that gets look data by id.\n * @return {Action}\n */\nvar getLookerDone = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(lookerId) {\n var data;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _looker.getService)().getLooker(lookerId);\n\n case 2:\n data = _context.sent;\n return _context.abrupt('return', { data: data, lookerId: lookerId });\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getLookerDone(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _looker = __webpack_require__(/*! ../services/looker */ \"./src/services/looker.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.looker\"\n * @desc Actions related to looker data.\n */\n\nvar _default = (0, _reduxActions.createActions)({\n LOOKER: {\n GET_LOOKER_DONE: getLookerDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getLookerDone, 'getLookerDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/looker.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/looker.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/looker.js?"); /***/ }), @@ -496,7 +496,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _lookup = __webpack_require__(/*! ../services/lookup */ \"./src/services/lookup.js\");\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.lookup\"\n * @desc Actions related to lookup data.\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting all skill tags.\n * @return {Action}\n */\nfunction getSkillTagsInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets all skill tags.\n * @return {Action}\n */\nfunction getSkillTagsDone() {\n var params = {\n domain: 'SKILLS',\n status: 'APPROVED'\n };\n return (0, _lookup.getService)().getTags(params);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting all countries.\n * @return {Action}\n */\nfunction getCountriesInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets all countries.\n * @return {Action}\n */\nfunction getCountriesDone() {\n return (0, _lookup.getService)().getCountries();\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting all countries api version 5.\n * @return {Action}\n */\nfunction getAllCountriesInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets all countries api version 5.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {Action}\n */\nfunction getAllCountriesDone(tokenV3) {\n return (0, _lookup.getService)(tokenV3).getAllCountries();\n}\n\nvar _default = (0, _reduxActions.createActions)({\n LOOKUP: {\n GET_SKILL_TAGS_INIT: getSkillTagsInit,\n GET_SKILL_TAGS_DONE: getSkillTagsDone,\n GET_COUNTRIES_INIT: getCountriesInit,\n GET_COUNTRIES_DONE: getCountriesDone,\n GET_ALL_COUNTRIES_INIT: getAllCountriesInit,\n GET_ALL_COUNTRIES_DONE: getAllCountriesDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getSkillTagsInit, 'getSkillTagsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getSkillTagsDone, 'getSkillTagsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getCountriesInit, 'getCountriesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getCountriesDone, 'getCountriesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getAllCountriesInit, 'getAllCountriesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getAllCountriesDone, 'getAllCountriesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/lookup.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/lookup.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _lookup = __webpack_require__(/*! ../services/lookup */ \"./src/services/lookup.js\");\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.lookup\"\n * @desc Actions related to lookup data.\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting all skill tags.\n * @return {Action}\n */\nfunction getSkillTagsInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets all skill tags.\n * @return {Action}\n */\nfunction getSkillTagsDone() {\n var params = {\n domain: 'SKILLS',\n status: 'APPROVED'\n };\n return (0, _lookup.getService)().getTags(params);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting all countries.\n * @return {Action}\n */\nfunction getCountriesInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets all countries.\n * @return {Action}\n */\nfunction getCountriesDone() {\n return (0, _lookup.getService)().getCountries();\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting all countries api version 5.\n * @return {Action}\n */\nfunction getAllCountriesInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets all countries api version 5.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {Action}\n */\nfunction getAllCountriesDone(tokenV3) {\n return (0, _lookup.getService)(tokenV3).getAllCountries();\n}\n\nvar _default = (0, _reduxActions.createActions)({\n LOOKUP: {\n GET_SKILL_TAGS_INIT: getSkillTagsInit,\n GET_SKILL_TAGS_DONE: getSkillTagsDone,\n GET_COUNTRIES_INIT: getCountriesInit,\n GET_COUNTRIES_DONE: getCountriesDone,\n GET_ALL_COUNTRIES_INIT: getAllCountriesInit,\n GET_ALL_COUNTRIES_DONE: getAllCountriesDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getSkillTagsInit, 'getSkillTagsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getSkillTagsDone, 'getSkillTagsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getCountriesInit, 'getCountriesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getCountriesDone, 'getCountriesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getAllCountriesInit, 'getAllCountriesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(getAllCountriesDone, 'getAllCountriesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/lookup.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/lookup.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/lookup.js?"); /***/ }), @@ -508,7 +508,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PAGE_SIZE = undefined;\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _challenges = __webpack_require__(/*! ../services/challenges */ \"./src/services/challenges.js\");\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.member-tasks\"\n * @desc Actions for management of member tasks and payments. Under the hood it\n * is very similar to the challenge listing management, as these tasks are in\n * fact just challenges of a special kind); however, due to differences in the\n * use cases, we can implement task management more efficient with dedicated\n * actions and reducer; thus, this module.\n */\n\n/**\n * Holds the size of member tasks page for the MEMBER_TASK/GET_DONE\n * action. Mind that current version of TC API v3 restricts the possible page\n * size by 50 tasks anyway, thus setting this to a larger value will result in\n * problems.\n */\nvar PAGE_SIZE = exports.PAGE_SIZE = 50;\n\n/**\n * @static\n * @desc Creates an action that removes all loaded member tasks from Redux\n * store, and cancels any on-going loading operations.\n * @return {Action}\n */\nfunction dropAll() {\n return null;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of member tasks page loading.\n * Note that dispatching this action before a previous loading operation has\n * been completed will cancel the previous loading operation.\n * @param {String} uuid UUID of the loading operation.\n * @param {Number} pageNum 0-based index of the page to load (PAGE_SIZE constant\n * holds the page size).\n * @return {Action}\n */\nfunction getInit(uuid, pageNum) {\n return { pageNum: pageNum, uuid: uuid };\n}\n\n/**\n * @static\n * @desc Creates an action that loads a page of member tasks.\n * Prior to this action always dispatch\n * {@link module:actions.member-tasks.getInit} action with\n * the same arguments. The result of this action will be silently\n * discarted if its uuid is not stored in the Redux list of pending requests\n * to load tasks.\n * @param {String} uuid UUID of the loading operation.\n * @param {String} projectId Project filter for tasks.\n * @param {Number} pageNum 0-based index of the page to load (PAGE_SIZE constant\n * holds the page size).\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @return {Action}\n */\nfunction getDone(uuid, projectId, pageNum, tokenV3) {\n return (0, _challenges.getService)(tokenV3).getChallenges({\n isTask: 1,\n projectId: projectId\n }, {\n limit: PAGE_SIZE,\n offset: pageNum * PAGE_SIZE\n }).then(function (_ref) {\n var challenges = _ref.challenges,\n totalCount = _ref.totalCount;\n return {\n projectId: projectId,\n tasks: challenges,\n totalCount: totalCount,\n uuid: uuid\n };\n });\n}\n\nvar _default = (0, _reduxActions.createActions)({\n MEMBER_TASKS: {\n DROP_ALL: dropAll,\n GET_INIT: getInit,\n GET_DONE: getDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(PAGE_SIZE, 'PAGE_SIZE', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/member-tasks.js');\n reactHotLoader.register(dropAll, 'dropAll', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/member-tasks.js');\n reactHotLoader.register(getInit, 'getInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/member-tasks.js');\n reactHotLoader.register(getDone, 'getDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/member-tasks.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/member-tasks.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/member-tasks.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.PAGE_SIZE = undefined;\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _challenges = __webpack_require__(/*! ../services/challenges */ \"./src/services/challenges.js\");\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.member-tasks\"\n * @desc Actions for management of member tasks and payments. Under the hood it\n * is very similar to the challenge listing management, as these tasks are in\n * fact just challenges of a special kind); however, due to differences in the\n * use cases, we can implement task management more efficient with dedicated\n * actions and reducer; thus, this module.\n */\n\n/**\n * Holds the size of member tasks page for the MEMBER_TASK/GET_DONE\n * action. Mind that current version of TC API v3 restricts the possible page\n * size by 50 tasks anyway, thus setting this to a larger value will result in\n * problems.\n */\nvar PAGE_SIZE = exports.PAGE_SIZE = 50;\n\n/**\n * @static\n * @desc Creates an action that removes all loaded member tasks from Redux\n * store, and cancels any on-going loading operations.\n * @return {Action}\n */\nfunction dropAll() {\n return null;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of member tasks page loading.\n * Note that dispatching this action before a previous loading operation has\n * been completed will cancel the previous loading operation.\n * @param {String} uuid UUID of the loading operation.\n * @param {Number} pageNum 0-based index of the page to load (PAGE_SIZE constant\n * holds the page size).\n * @return {Action}\n */\nfunction getInit(uuid, pageNum) {\n return { pageNum: pageNum, uuid: uuid };\n}\n\n/**\n * @static\n * @desc Creates an action that loads a page of member tasks.\n * Prior to this action always dispatch\n * {@link module:actions.member-tasks.getInit} action with\n * the same arguments. The result of this action will be silently\n * discarted if its uuid is not stored in the Redux list of pending requests\n * to load tasks.\n * @param {String} uuid UUID of the loading operation.\n * @param {String} projectId Project filter for tasks.\n * @param {Number} pageNum 0-based index of the page to load (PAGE_SIZE constant\n * holds the page size).\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @return {Action}\n */\nfunction getDone(uuid, projectId, pageNum, tokenV3) {\n return (0, _challenges.getService)(tokenV3).getChallenges({\n isTask: 1,\n projectId: projectId\n }, {\n limit: PAGE_SIZE,\n offset: pageNum * PAGE_SIZE\n }).then(function (_ref) {\n var challenges = _ref.challenges,\n totalCount = _ref.totalCount;\n return {\n projectId: projectId,\n tasks: challenges,\n totalCount: totalCount,\n uuid: uuid\n };\n });\n}\n\nvar _default = (0, _reduxActions.createActions)({\n MEMBER_TASKS: {\n DROP_ALL: dropAll,\n GET_INIT: getInit,\n GET_DONE: getDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(PAGE_SIZE, 'PAGE_SIZE', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/member-tasks.js');\n reactHotLoader.register(dropAll, 'dropAll', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/member-tasks.js');\n reactHotLoader.register(getInit, 'getInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/member-tasks.js');\n reactHotLoader.register(getDone, 'getDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/member-tasks.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/member-tasks.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/member-tasks.js?"); /***/ }), @@ -520,7 +520,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Creates an action that loads member achievements.\n * @param {String} handle Member handle.\n * @param {String} uuid Loading operation\n * @return {Action}\n */\nvar getAchievementsDone = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(handle, uuid) {\n var data;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n data = void 0;\n _context.prev = 1;\n _context.next = 4;\n return (0, _user.getService)().getAchievements(handle);\n\n case 4:\n data = _context.sent;\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](1);\n\n data = [];\n\n case 10:\n return _context.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 7]]);\n }));\n\n return function getAchievementsDone(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that loads member achievements from v3 API.\n * @param {String} handle Member handle.\n * @param {String} uuid Loading operation\n * @return {Action}\n */\n\n\nvar getAchievementsV3Done = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(handle, uuid) {\n var data;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n data = void 0;\n _context2.prev = 1;\n _context2.next = 4;\n return (0, _user.getService)().getAchievementsV3(handle);\n\n case 4:\n data = _context2.sent;\n _context2.next = 10;\n break;\n\n case 7:\n _context2.prev = 7;\n _context2.t0 = _context2['catch'](1);\n\n data = [];\n\n case 10:\n return _context2.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 11:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 7]]);\n }));\n\n return function getAchievementsV3Done(_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading the member's\n * financial information.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\n/**\n * @static\n * @desc Creates an action that loads member's financial information.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\nvar getFinancesDone = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(handle, uuid, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _members.getService)(tokenV3).getMemberFinances(handle);\n\n case 2:\n data = _context3.sent;\n return _context3.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function getFinancesDone(_x5, _x6, _x7) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that signals beginning of member stats loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getStatsInit = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(handle, uuid) {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function getStatsInit(_x8, _x9) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads member statistics.\n * @param {String} handle Member handle.\n * @param {String} groupIds Group ids.\n * @param {String} uuid Operation UUID.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar getStatsDone = function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(handle, groupIds, uuid, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return (0, _members.getService)(tokenV3).getStats(handle, groupIds);\n\n case 2:\n data = _context5.sent;\n return _context5.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function getStatsDone(_x10, _x11, _x12, _x13) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Payload creator for the action that inits the loading of member active challenges.\n * @param {String} handle\n * @param {String} uuid\n * @returns {Object} Payload\n */\n\n\nvar getActiveChallengesInit = function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(handle, uuid) {\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function getActiveChallengesInit(_x14, _x15) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Payload creator for the action that loads the member active challenges.\n * @param {String} handle\n * @param {String} uuid\n * @param {String} tokenV3\n * @returns {Object} Payload\n */\n\n\nvar getActiveChallengesDone = function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(handle, uuid, tokenV3) {\n var filter, service, getAll, calls, _ref9, _ref10, challenges;\n\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n getAll = function getAll(getter) {\n var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var prev = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var PAGE_SIZE = 50;\n return getter({\n limit: PAGE_SIZE,\n offset: page * PAGE_SIZE\n }).then(function (_ref8) {\n var chunk = _ref8.challenges;\n\n if (!chunk.length) return prev || [];\n return getAll(getter, 1 + page, prev ? prev.concat(chunk) : chunk);\n });\n };\n\n filter = { status: 'ACTIVE' };\n service = (0, _challenges.getService)(tokenV3);\n /* TODO: Reuse `getAll` from `actions/challenge-listing`\n /* after it moved from `community-app` to here.\n */\n\n calls = [getAll(function (params) {\n return service.getUserChallenges(handle, filter, params);\n })];\n _context7.next = 6;\n return _promise2.default.all(calls);\n\n case 6:\n _ref9 = _context7.sent;\n _ref10 = (0, _slicedToArray3.default)(_ref9, 1);\n challenges = _ref10[0];\n return _context7.abrupt('return', { handle: handle, challenges: challenges, uuid: uuid });\n\n case 10:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function getActiveChallengesDone(_x16, _x17, _x18) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of member stats distribution history.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getStatsHistoryInit = function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(handle, uuid) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n return _context8.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function getStatsHistoryInit(_x21, _x22) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member stats history.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar getStatsHistoryDone = function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(handle, uuid, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return (0, _members.getService)(tokenV3).getStatsHistory(handle);\n\n case 2:\n data = _context9.sent;\n return _context9.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function getStatsHistoryDone(_x23, _x24, _x25) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of member stats distribution loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getStatsDistributionInit = function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(handle, uuid) {\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n return _context10.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function getStatsDistributionInit(_x26, _x27) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member stats distribution.\n * @param {String} handle Member handle.\n * @param {String} track Main track name.\n * @param {String} subTrack Subtrack name.\n * @param {String} uuid Operation UUID.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar getStatsDistributionDone = function () {\n var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(handle, track, subTrack, uuid, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return (0, _members.getService)(tokenV3).getStatsDistribution(handle, track, subTrack);\n\n case 2:\n data = _context11.sent;\n return _context11.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 4:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n return function getStatsDistributionDone(_x28, _x29, _x30, _x31, _x32) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of subtrack challenges loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getSubtrackChallengesInit = function () {\n var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(handle, uuid) {\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n return _context12.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n return function getSubtrackChallengesInit(_x33, _x34) {\n return _ref15.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member subtrack challenges.\n * @param {String} uuid Operation UUID.\n * @param {String} handle Member handle.\n * @param {String} tokenV3 v3 auth token.\n * @param {String} track Main track name.\n * @param {String} subTrack Subtrack name.\n * @param {Number} start page.\n * @param {Number} page size.\n * @param {Boolean} whether to refresh.\n * @return {Action}\n */\n\n\nvar getSubtrackChallengesDone = function () {\n var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(uuid, handle, tokenV3, track, subTrack, pageNum, pageSize, refresh) {\n var filter, params, service;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n filter = {\n status: 'completed',\n hasUserSubmittedForReview: 'true',\n track: track,\n subTrack: subTrack\n };\n params = {};\n\n params.orderBy = 'submissionEndDate desc';\n params.limit = pageSize;\n params.offset = pageNum * pageSize;\n\n service = (0, _challenges.getService)(tokenV3);\n return _context13.abrupt('return', service.getUserChallenges(handle, filter, params).then(function (res) {\n return {\n uuid: uuid,\n challenges: res.challenges,\n refresh: refresh,\n handle: handle\n };\n }));\n\n case 7:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function getSubtrackChallengesDone(_x35, _x36, _x37, _x38, _x39, _x40, _x41, _x42) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of member SRM loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getUserSRMInit = function () {\n var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(handle, uuid) {\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n return _context14.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function getUserSRMInit(_x43, _x44) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member SRM.\n * @param {String} uuid Operation UUID.\n * @param {String} handle Member handle.\n * @param {String} tokenV3 v3 auth token.\n * @param {Number} start page.\n * @param {Number} page size.\n * @param {Boolean} whether to refresh.\n * @return {Action}\n */\n\n\nvar getUserSRMDone = function () {\n var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(uuid, handle, tokenV3, pageNum, pageSize, refresh) {\n var filter, params, service;\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n filter = {\n status: 'past',\n isRatedForSRM: 'true'\n };\n params = {\n filter: _qs2.default.stringify(filter, { encode: false }),\n limit: pageSize,\n offset: pageNum * pageSize\n };\n service = (0, _challenges.getService)(tokenV3);\n return _context15.abrupt('return', service.getUserSrms(handle, params).then(function (res) {\n return {\n uuid: uuid,\n srms: res,\n refresh: refresh,\n handle: handle\n };\n }));\n\n case 4:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n return function getUserSRMDone(_x45, _x46, _x47, _x48, _x49, _x50) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of member marathon loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getUserMarathonInit = function () {\n var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(handle, uuid) {\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n return _context16.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n return function getUserMarathonInit(_x51, _x52) {\n return _ref19.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member marathon.\n * @param {String} uuid Operation UUID.\n * @param {String} handle Member handle.\n * @param {String} tokenV3 v3 auth token.\n * @param {Number} start page.\n * @param {Number} page size.\n * @param {Boolean} whether to refresh.\n * @return {Action}\n */\n\n\nvar getUserMarathonDone = function () {\n var _ref20 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(uuid, handle, tokenV3, pageNum, pageSize, refresh) {\n var filter, params, service;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n filter = { status: 'PAST', isRatedForMM: 'true' };\n params = {};\n\n params.orderBy = 'endDate desc';\n params.limit = pageSize;\n params.offset = pageNum * pageSize;\n\n service = (0, _challenges.getService)(tokenV3);\n return _context17.abrupt('return', service.getUserMarathonMatches(handle, filter, params).then(function (res) {\n return {\n uuid: uuid,\n marathons: res,\n refresh: refresh,\n handle: handle\n };\n }));\n\n case 7:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n return function getUserMarathonDone(_x53, _x54, _x55, _x56, _x57, _x58) {\n return _ref20.apply(this, arguments);\n };\n}();\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _members = __webpack_require__(/*! ../services/members */ \"./src/services/members.js\");\n\nvar _user = __webpack_require__(/*! ../services/user */ \"./src/services/user.js\");\n\nvar _challenges = __webpack_require__(/*! ../services/challenges */ \"./src/services/challenges.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.members\"\n * @desc Actions related to members data.\n */\n\n/**\n * @static\n * @desc Creates an action that drops all information related to the specfied\n * member.\n * @param {String} handle Topcoder user handle.\n * @return {Action}\n */\nfunction drop(handle) {\n return handle;\n}\n\n/**\n * @static\n * @desc Creates an action that drops all member information loaded by\n * actions from this module.\n * @return {Action}\n */\nfunction dropAll() {}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of member achievements\n * loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Loading operation UUID.\n * @return {Action}\n */\nfunction getAchievementsInit(handle, uuid) {\n return { handle: handle, uuid: uuid };\n}function getFinancesInit(handle, uuid) {\n return { handle: handle, uuid: uuid };\n}\nvar _default = (0, _reduxActions.createActions)({\n MEMBERS: {\n DROP: drop,\n DROP_ALL: dropAll,\n GET_ACHIEVEMENTS_INIT: getAchievementsInit,\n GET_ACHIEVEMENTS_DONE: getAchievementsDone,\n GET_ACHIEVEMENTS_V3_DONE: getAchievementsV3Done,\n GET_FINANCES_INIT: getFinancesInit,\n GET_FINANCES_DONE: getFinancesDone,\n GET_STATS_INIT: getStatsInit,\n GET_STATS_DONE: getStatsDone,\n GET_STATS_HISTORY_INIT: getStatsHistoryInit,\n GET_STATS_HISTORY_DONE: getStatsHistoryDone,\n GET_STATS_DISTRIBUTION_INIT: getStatsDistributionInit,\n GET_STATS_DISTRIBUTION_DONE: getStatsDistributionDone,\n GET_ACTIVE_CHALLENGES_INIT: getActiveChallengesInit,\n GET_ACTIVE_CHALLENGES_DONE: getActiveChallengesDone,\n GET_SUBTRACK_CHALLENGES_INIT: getSubtrackChallengesInit,\n GET_SUBTRACK_CHALLENGES_DONE: getSubtrackChallengesDone,\n GET_USER_SRM_INIT: getUserSRMInit,\n GET_USER_SRM_DONE: getUserSRMDone,\n GET_USER_MARATHON_INIT: getUserMarathonInit,\n GET_USER_MARATHON_DONE: getUserMarathonDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(drop, 'drop', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(dropAll, 'dropAll', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getAchievementsInit, 'getAchievementsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getAchievementsDone, 'getAchievementsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getAchievementsV3Done, 'getAchievementsV3Done', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getFinancesInit, 'getFinancesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getFinancesDone, 'getFinancesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsInit, 'getStatsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsDone, 'getStatsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getActiveChallengesInit, 'getActiveChallengesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getActiveChallengesDone, 'getActiveChallengesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsHistoryInit, 'getStatsHistoryInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsHistoryDone, 'getStatsHistoryDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsDistributionInit, 'getStatsDistributionInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsDistributionDone, 'getStatsDistributionDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getSubtrackChallengesInit, 'getSubtrackChallengesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getSubtrackChallengesDone, 'getSubtrackChallengesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getUserSRMInit, 'getUserSRMInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getUserSRMDone, 'getUserSRMDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getUserMarathonInit, 'getUserMarathonInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getUserMarathonDone, 'getUserMarathonDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/members.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/members.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Creates an action that loads member achievements.\n * @param {String} handle Member handle.\n * @param {String} uuid Loading operation\n * @return {Action}\n */\nvar getAchievementsDone = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(handle, uuid) {\n var data;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n data = void 0;\n _context.prev = 1;\n _context.next = 4;\n return (0, _user.getService)().getAchievements(handle);\n\n case 4:\n data = _context.sent;\n _context.next = 10;\n break;\n\n case 7:\n _context.prev = 7;\n _context.t0 = _context['catch'](1);\n\n data = [];\n\n case 10:\n return _context.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[1, 7]]);\n }));\n\n return function getAchievementsDone(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that loads member achievements from v3 API.\n * @param {String} handle Member handle.\n * @param {String} uuid Loading operation\n * @return {Action}\n */\n\n\nvar getAchievementsV3Done = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(handle, uuid) {\n var data;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n data = void 0;\n _context2.prev = 1;\n _context2.next = 4;\n return (0, _user.getService)().getAchievementsV3(handle);\n\n case 4:\n data = _context2.sent;\n _context2.next = 10;\n break;\n\n case 7:\n _context2.prev = 7;\n _context2.t0 = _context2['catch'](1);\n\n data = [];\n\n case 10:\n return _context2.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 11:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this, [[1, 7]]);\n }));\n\n return function getAchievementsV3Done(_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading the member's\n * financial information.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\n/**\n * @static\n * @desc Creates an action that loads member's financial information.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\nvar getFinancesDone = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(handle, uuid, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _members.getService)(tokenV3).getMemberFinances(handle);\n\n case 2:\n data = _context3.sent;\n return _context3.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function getFinancesDone(_x5, _x6, _x7) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that signals beginning of member stats loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getStatsInit = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(handle, uuid) {\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n return _context4.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function getStatsInit(_x8, _x9) {\n return _ref4.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads member statistics.\n * @param {String} handle Member handle.\n * @param {String} groupIds Group ids.\n * @param {String} uuid Operation UUID.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar getStatsDone = function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(handle, groupIds, uuid, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return (0, _members.getService)(tokenV3).getStats(handle, groupIds);\n\n case 2:\n data = _context5.sent;\n return _context5.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n return function getStatsDone(_x10, _x11, _x12, _x13) {\n return _ref5.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Payload creator for the action that inits the loading of member active challenges.\n * @param {String} handle\n * @param {String} uuid\n * @returns {Object} Payload\n */\n\n\nvar getActiveChallengesInit = function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(handle, uuid) {\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n return _context6.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n return function getActiveChallengesInit(_x14, _x15) {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Payload creator for the action that loads the member active challenges.\n * @param {String} handle\n * @param {String} uuid\n * @param {String} tokenV3\n * @returns {Object} Payload\n */\n\n\nvar getActiveChallengesDone = function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(handle, uuid, tokenV3) {\n var filter, service, getAll, calls, _ref9, _ref10, challenges;\n\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n getAll = function getAll(getter) {\n var page = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var prev = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n var PAGE_SIZE = 50;\n return getter({\n limit: PAGE_SIZE,\n offset: page * PAGE_SIZE\n }).then(function (_ref8) {\n var chunk = _ref8.challenges;\n\n if (!chunk.length) return prev || [];\n return getAll(getter, 1 + page, prev ? prev.concat(chunk) : chunk);\n });\n };\n\n filter = { status: 'ACTIVE' };\n service = (0, _challenges.getService)(tokenV3);\n /* TODO: Reuse `getAll` from `actions/challenge-listing`\n /* after it moved from `community-app` to here.\n */\n\n calls = [getAll(function (params) {\n return service.getUserChallenges(handle, filter, params);\n })];\n _context7.next = 6;\n return _promise2.default.all(calls);\n\n case 6:\n _ref9 = _context7.sent;\n _ref10 = (0, _slicedToArray3.default)(_ref9, 1);\n challenges = _ref10[0];\n return _context7.abrupt('return', { handle: handle, challenges: challenges, uuid: uuid });\n\n case 10:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n return function getActiveChallengesDone(_x16, _x17, _x18) {\n return _ref7.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of member stats distribution history.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getStatsHistoryInit = function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(handle, uuid) {\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n return _context8.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n return function getStatsHistoryInit(_x21, _x22) {\n return _ref11.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member stats history.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar getStatsHistoryDone = function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(handle, uuid, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return (0, _members.getService)(tokenV3).getStatsHistory(handle);\n\n case 2:\n data = _context9.sent;\n return _context9.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n return function getStatsHistoryDone(_x23, _x24, _x25) {\n return _ref12.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of member stats distribution loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getStatsDistributionInit = function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(handle, uuid) {\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n return _context10.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n return function getStatsDistributionInit(_x26, _x27) {\n return _ref13.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member stats distribution.\n * @param {String} handle Member handle.\n * @param {String} track Main track name.\n * @param {String} subTrack Subtrack name.\n * @param {String} uuid Operation UUID.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar getStatsDistributionDone = function () {\n var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(handle, track, subTrack, uuid, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return (0, _members.getService)(tokenV3).getStatsDistribution(handle, track, subTrack);\n\n case 2:\n data = _context11.sent;\n return _context11.abrupt('return', { data: data, handle: handle, uuid: uuid });\n\n case 4:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n return function getStatsDistributionDone(_x28, _x29, _x30, _x31, _x32) {\n return _ref14.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of subtrack challenges loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getSubtrackChallengesInit = function () {\n var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(handle, uuid) {\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n return _context12.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n return function getSubtrackChallengesInit(_x33, _x34) {\n return _ref15.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member subtrack challenges.\n * @param {String} uuid Operation UUID.\n * @param {String} handle Member handle.\n * @param {String} tokenV3 v3 auth token.\n * @param {String} track Main track name.\n * @param {String} subTrack Subtrack name.\n * @param {Number} start page.\n * @param {Number} page size.\n * @param {Boolean} whether to refresh.\n * @return {Action}\n */\n\n\nvar getSubtrackChallengesDone = function () {\n var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(uuid, handle, tokenV3, track, subTrack, pageNum, pageSize, refresh) {\n var filter, params, service;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n filter = {\n status: 'completed',\n hasUserSubmittedForReview: 'true',\n track: track,\n subTrack: subTrack\n };\n params = {};\n\n params.orderBy = 'submissionEndDate desc';\n params.limit = pageSize;\n params.offset = pageNum * pageSize;\n\n service = (0, _challenges.getService)(tokenV3);\n return _context13.abrupt('return', service.getUserChallenges(handle, filter, params).then(function (res) {\n return {\n uuid: uuid,\n challenges: res.challenges,\n refresh: refresh,\n handle: handle\n };\n }));\n\n case 7:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n return function getSubtrackChallengesDone(_x35, _x36, _x37, _x38, _x39, _x40, _x41, _x42) {\n return _ref16.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of member SRM loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getUserSRMInit = function () {\n var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(handle, uuid) {\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n return _context14.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n return function getUserSRMInit(_x43, _x44) {\n return _ref17.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member SRM.\n * @param {String} uuid Operation UUID.\n * @param {String} handle Member handle.\n * @param {String} tokenV3 v3 auth token.\n * @param {Number} start page.\n * @param {Number} page size.\n * @param {Boolean} whether to refresh.\n * @return {Action}\n */\n\n\nvar getUserSRMDone = function () {\n var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(uuid, handle, tokenV3, pageNum, pageSize, refresh) {\n var filter, params, service;\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n filter = {\n status: 'past',\n isRatedForSRM: 'true'\n };\n params = {\n filter: _qs2.default.stringify(filter, { encode: false }),\n limit: pageSize,\n offset: pageNum * pageSize\n };\n service = (0, _challenges.getService)(tokenV3);\n return _context15.abrupt('return', service.getUserSrms(handle, params).then(function (res) {\n return {\n uuid: uuid,\n srms: res,\n refresh: refresh,\n handle: handle\n };\n }));\n\n case 4:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n return function getUserSRMDone(_x45, _x46, _x47, _x48, _x49, _x50) {\n return _ref18.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that signals beginning of member marathon loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\n\n\nvar getUserMarathonInit = function () {\n var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(handle, uuid) {\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n return _context16.abrupt('return', { handle: handle, uuid: uuid });\n\n case 1:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n return function getUserMarathonInit(_x51, _x52) {\n return _ref19.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Create an action that loads the member marathon.\n * @param {String} uuid Operation UUID.\n * @param {String} handle Member handle.\n * @param {String} tokenV3 v3 auth token.\n * @param {Number} start page.\n * @param {Number} page size.\n * @param {Boolean} whether to refresh.\n * @return {Action}\n */\n\n\nvar getUserMarathonDone = function () {\n var _ref20 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(uuid, handle, tokenV3, pageNum, pageSize, refresh) {\n var filter, params, service;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n filter = { status: 'PAST', isRatedForMM: 'true' };\n params = {};\n\n params.orderBy = 'endDate desc';\n params.limit = pageSize;\n params.offset = pageNum * pageSize;\n\n service = (0, _challenges.getService)(tokenV3);\n return _context17.abrupt('return', service.getUserMarathonMatches(handle, filter, params).then(function (res) {\n return {\n uuid: uuid,\n marathons: res,\n refresh: refresh,\n handle: handle\n };\n }));\n\n case 7:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n return function getUserMarathonDone(_x53, _x54, _x55, _x56, _x57, _x58) {\n return _ref20.apply(this, arguments);\n };\n}();\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _members = __webpack_require__(/*! ../services/members */ \"./src/services/members.js\");\n\nvar _user = __webpack_require__(/*! ../services/user */ \"./src/services/user.js\");\n\nvar _challenges = __webpack_require__(/*! ../services/challenges */ \"./src/services/challenges.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.members\"\n * @desc Actions related to members data.\n */\n\n/**\n * @static\n * @desc Creates an action that drops all information related to the specfied\n * member.\n * @param {String} handle Topcoder user handle.\n * @return {Action}\n */\nfunction drop(handle) {\n return handle;\n}\n\n/**\n * @static\n * @desc Creates an action that drops all member information loaded by\n * actions from this module.\n * @return {Action}\n */\nfunction dropAll() {}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of member achievements\n * loading.\n * @param {String} handle Member handle.\n * @param {String} uuid Loading operation UUID.\n * @return {Action}\n */\nfunction getAchievementsInit(handle, uuid) {\n return { handle: handle, uuid: uuid };\n}function getFinancesInit(handle, uuid) {\n return { handle: handle, uuid: uuid };\n}\nvar _default = (0, _reduxActions.createActions)({\n MEMBERS: {\n DROP: drop,\n DROP_ALL: dropAll,\n GET_ACHIEVEMENTS_INIT: getAchievementsInit,\n GET_ACHIEVEMENTS_DONE: getAchievementsDone,\n GET_ACHIEVEMENTS_V3_DONE: getAchievementsV3Done,\n GET_FINANCES_INIT: getFinancesInit,\n GET_FINANCES_DONE: getFinancesDone,\n GET_STATS_INIT: getStatsInit,\n GET_STATS_DONE: getStatsDone,\n GET_STATS_HISTORY_INIT: getStatsHistoryInit,\n GET_STATS_HISTORY_DONE: getStatsHistoryDone,\n GET_STATS_DISTRIBUTION_INIT: getStatsDistributionInit,\n GET_STATS_DISTRIBUTION_DONE: getStatsDistributionDone,\n GET_ACTIVE_CHALLENGES_INIT: getActiveChallengesInit,\n GET_ACTIVE_CHALLENGES_DONE: getActiveChallengesDone,\n GET_SUBTRACK_CHALLENGES_INIT: getSubtrackChallengesInit,\n GET_SUBTRACK_CHALLENGES_DONE: getSubtrackChallengesDone,\n GET_USER_SRM_INIT: getUserSRMInit,\n GET_USER_SRM_DONE: getUserSRMDone,\n GET_USER_MARATHON_INIT: getUserMarathonInit,\n GET_USER_MARATHON_DONE: getUserMarathonDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(drop, 'drop', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(dropAll, 'dropAll', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getAchievementsInit, 'getAchievementsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getAchievementsDone, 'getAchievementsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getAchievementsV3Done, 'getAchievementsV3Done', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getFinancesInit, 'getFinancesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getFinancesDone, 'getFinancesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsInit, 'getStatsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsDone, 'getStatsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getActiveChallengesInit, 'getActiveChallengesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getActiveChallengesDone, 'getActiveChallengesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsHistoryInit, 'getStatsHistoryInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsHistoryDone, 'getStatsHistoryDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsDistributionInit, 'getStatsDistributionInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getStatsDistributionDone, 'getStatsDistributionDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getSubtrackChallengesInit, 'getSubtrackChallengesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getSubtrackChallengesDone, 'getSubtrackChallengesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getUserSRMInit, 'getUserSRMInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getUserSRMDone, 'getUserSRMDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getUserMarathonInit, 'getUserMarathonInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(getUserMarathonDone, 'getUserMarathonDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/members.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/members.js?"); /***/ }), @@ -532,7 +532,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _user = __webpack_require__(/*! ../services/user */ \"./src/services/user.js\");\n\nvar _members = __webpack_require__(/*! ../services/members */ \"./src/services/members.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.profile\"\n * @desc Actions for interactions with profile details API.\n * @todo Some of them repeat actions in {@link actions.members.md}. The code\n * should be refactored to avoid redundancy.\n */\n\n\n/**\n * @static\n * @desc Creates and action that loads user profile.\n * @todo This action does not follow the pattern with init/done pairs of\n * actions. Should be improved.\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction loadProfile(handle) {\n return handle;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of user achievements loading.\n * @todo This duplicates similar action in {@link actions.members.md}!\n * @return {Action}\n */\nfunction getAchievementsInit() {}\n\n/**\n * @static\n * @desc Creates an action that loads user achievements from API v2.\n * @todo This duplicates similar action in {@link actions.members.md}!\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getAchievementsDone(handle) {\n return (0, _user.getService)().getUserPublic(handle);\n}\n\n/**\n * @static\n * @desc Creates an action that loads user achievements from API v3.\n * @todo This duplicates similar action in {@link actions.members.md}!\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getAchievementsV3Done(handle) {\n return (0, _user.getService)().getUserPublicV3(handle);\n}\n\n/**\n * @static\n * @todo To be documented.\n * @return {Action}\n */\nfunction getExternalAccountsInit() {}\n\n/**\n * @static\n * @todo To be documented.\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getExternalAccountsDone(handle) {\n return (0, _members.getService)().getExternalAccounts(handle);\n}\n\n/**\n * @static\n * @todo Figure out what does this action do.\n * @return {Action}\n */\nfunction getExternalLinksInit() {}\n\n/**\n * @static\n * @todo Figure out the purpose of this action\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getExternalLinksDone(handle) {\n return (0, _members.getService)().getExternalLinks(handle);\n}\n\n/**\n * @static\n * @todo Figure out the purpose of this action.\n * @return {Action}\n */\nfunction getInfoInit() {}\n\n/**\n * @static\n * @todo Figure out the purpose of this action.\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getInfoDone(handle) {\n return (0, _members.getService)().getMemberInfo(handle);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading the member's\n * skills info.\n * @return {Action}\n */\nfunction getSkillsInit() {}\n\n/**\n * @static\n * @desc Creates an action that loads member's skills info.\n * @param {String} handle Member handle.\n * @return {Action}\n */\nfunction getSkillsDone(handle) {\n return (0, _members.getService)().getSkills(handle);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading member's stats.\n * @todo This is similar to {@link actions.members.md#module_actions.members.getStatsInit}!\n * @return {Action}\n */\nfunction getStatsInit() {}\n\n/**\n * @static\n * @desc Creates an action that loads member's stats.\n * @param {String} handle Member handle.\n * @param {String} groupIds Group ids.\n * @return {Action}\n */\nfunction getStatsDone(handle, groupIds) {\n return (0, _members.getService)().getStats(handle, groupIds);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting linked accounts.\n * @return {Action}\n */\nfunction getLinkedAccountsInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets linked accounts.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getLinkedAccountsDone(profile, tokenV3) {\n var service = (0, _user.getService)(tokenV3);\n return service.getLinkedAccounts(profile.userId);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting credential.\n * @return {Action}\n */\nfunction getCredentialInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets credential.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getCredentialDone(profile, tokenV3) {\n var service = (0, _user.getService)(tokenV3);\n return service.getCredential(profile.userId);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting email preferences.\n * @return {Action}\n */\nfunction getEmailPreferencesInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets email preferences.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getEmailPreferencesDone(profile, tokenV3) {\n var service = (0, _user.getService)(tokenV3);\n return service.getEmailPreferences(profile.userId);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of uploading user's photo.\n * @return {Action}\n */\nfunction uploadPhotoInit() {}\n\n/**\n * @static\n * @desc Creates an action that uploads user's photo.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} file The photo file.\n * @return {Action}\n */\nfunction uploadPhotoDone(handle, tokenV3, file) {\n var service = (0, _members.getService)(tokenV3);\n return service.getPresignedUrl(handle, file).then(function (res) {\n return service.uploadFileToS3(res);\n }).then(function (res) {\n return service.updateMemberPhoto(res);\n }).then(function (photoURL) {\n return { handle: handle, photoURL: photoURL };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of deleting user's photo.\n * @return {Action}\n */\nfunction deletePhotoInit() {}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of updating user's profile.\n * @return {Action}\n */\nfunction updateProfileInit() {}\n\n/**\n * @static\n * @desc Creates an action that updates user's profile.\n * @param {String} profile Topcoder user profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction updateProfileDone(profile, tokenV3) {\n var service = (0, _members.getService)(tokenV3);\n return service.updateMemberProfile(profile);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of adding user's skill.\n * @return {Action}\n */\nfunction addSkillInit() {}\n\n/**\n * @static\n * @desc Creates an action that adds user's skill.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {Object} skill Skill to add.\n * @return {Action}\n */\nfunction addSkillDone(handle, tokenV3, skill) {\n var service = (0, _members.getService)(tokenV3);\n return service.addSkill(handle, skill.tagId).then(function (res) {\n return { skills: res.skills, handle: handle, skill: skill };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of hiding user's skill.\n * @return {Action}\n */\nfunction hideSkillInit() {}\n\n/**\n * @static\n * @desc Creates an action that hides user's skill.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {Object} skill Skill to hide.\n * @return {Action}\n */\nfunction hideSkillDone(handle, tokenV3, skill) {\n var service = (0, _members.getService)(tokenV3);\n return service.hideSkill(handle, skill.tagId).then(function (res) {\n return { skills: res.skills, handle: handle, skill: skill };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of adding user's web link.\n * @return {Action}\n */\nfunction addWebLinkInit() {}\n\n/**\n * @static\n * @desc Creates an action that adds user's web link.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} webLink Web link to add.\n * @return {Action}\n */\nfunction addWebLinkDone(handle, tokenV3, webLink) {\n var service = (0, _members.getService)(tokenV3);\n return service.addWebLink(handle, webLink).then(function (res) {\n return { data: res, handle: handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of deleting user's web link.\n * @param {Object} key Web link key to delete.\n * @return {Action}\n */\nfunction deleteWebLinkInit(_ref) {\n var key = _ref.key;\n\n return { key: key };\n}\n\n/**\n * @static\n * @desc Creates an action that deletes user's web link.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} webLink Web link to delete.\n * @return {Action}\n */\nfunction deleteWebLinkDone(handle, tokenV3, webLink) {\n var service = (0, _members.getService)(tokenV3);\n return service.deleteWebLink(handle, webLink.key).then(function (res) {\n return { data: res, handle: handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of linking external account.\n * @return {Action}\n */\nfunction linkExternalAccountInit() {}\n\n/**\n * @static\n * @desc Creates an action that links external account.\n * @param {Object} profile Topcoder member handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} providerType The external account service provider\n * @param {String} callbackUrl Optional. The callback url\n * @return {Action}\n */\nfunction linkExternalAccountDone(profile, tokenV3, providerType, callbackUrl) {\n var service = (0, _user.getService)(tokenV3);\n return service.linkExternalAccount(profile.userId, providerType, callbackUrl).then(function (res) {\n return { data: res, handle: profile.handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of unlinking external account.\n * @param {Object} providerType External account provider type to delete.\n * @return {Action}\n */\nfunction unlinkExternalAccountInit(_ref2) {\n var providerType = _ref2.providerType;\n\n return { providerType: providerType };\n}\n\n/**\n * @static\n * @desc Creates an action that unlinks external account.\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} providerType The external account service provider\n * @return {Action}\n */\nfunction unlinkExternalAccountDone(profile, tokenV3, providerType) {\n var service = (0, _user.getService)(tokenV3);\n return service.unlinkExternalAccount(profile.userId, providerType).then(function () {\n return { providerType: providerType, handle: profile.handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of saving email preferences.\n * @return {Action}\n */\nfunction saveEmailPreferencesInit() {}\n\n/**\n * @static\n * @desc Creates an action that saves email preferences.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {Object} preferences The email preferences\n * @return {Action}\n */\nfunction saveEmailPreferencesDone(profile, tokenV3, preferences) {\n var service = (0, _user.getService)(tokenV3);\n return service.saveEmailPreferences(profile, preferences).then(function (res) {\n return { data: res, handle: profile.handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of updating user password.\n * @return {Action}\n */\nfunction updatePasswordInit() {}\n\n/**\n * @static\n * @desc Creates an action that updates user password.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} newPassword The new password\n * @param {String} oldPassword The old password\n * @return {Action}\n */\nfunction updatePasswordDone(profile, tokenV3, newPassword, oldPassword) {\n var service = (0, _user.getService)(tokenV3);\n return service.updatePassword(profile.userId, newPassword, oldPassword).then(function (res) {\n return { data: res, handle: profile.handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of verify member new email.\n * @return {Action}\n */\nfunction verifyMemberNewEmailInit() {}\n\n/**\n * @static\n * @desc Creates an action that verify member new email.\n *\n * @param {Object} handle Topcoder member handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} emailVerifyToken The verify token of new email.\n * @return {Action}\n */\nfunction verifyMemberNewEmailDone(handle, tokenV3, emailVerifyToken) {\n var service = (0, _members.getService)(tokenV3);\n return service.verifyMemberNewEmail(handle, emailVerifyToken).then(function (res) {\n return { data: res };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that toggles isEmailConflict state\n * @param {boolean} state\n * @return {Action}\n */\nfunction updateEmailConflict() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return state;\n}\n\nvar _default = (0, _reduxActions.createActions)({\n PROFILE: {\n LOAD_PROFILE: loadProfile,\n CLEAR_PROFILE: _lodash2.default.noop,\n GET_ACHIEVEMENTS_INIT: getAchievementsInit,\n GET_ACHIEVEMENTS_DONE: getAchievementsDone,\n GET_ACHIEVEMENTS_V3_DONE: getAchievementsV3Done,\n GET_EXTERNAL_ACCOUNTS_INIT: getExternalAccountsInit,\n GET_EXTERNAL_ACCOUNTS_DONE: getExternalAccountsDone,\n GET_EXTERNAL_LINKS_INIT: getExternalLinksInit,\n GET_EXTERNAL_LINKS_DONE: getExternalLinksDone,\n GET_INFO_INIT: getInfoInit,\n GET_INFO_DONE: getInfoDone,\n GET_SKILLS_INIT: getSkillsInit,\n GET_SKILLS_DONE: getSkillsDone,\n GET_STATS_INIT: getStatsInit,\n GET_STATS_DONE: getStatsDone,\n GET_LINKED_ACCOUNTS_INIT: getLinkedAccountsInit,\n GET_LINKED_ACCOUNTS_DONE: getLinkedAccountsDone,\n GET_EMAIL_PREFERENCES_INIT: getEmailPreferencesInit,\n GET_EMAIL_PREFERENCES_DONE: getEmailPreferencesDone,\n GET_CREDENTIAL_INIT: getCredentialInit,\n GET_CREDENTIAL_DONE: getCredentialDone,\n UPLOAD_PHOTO_INIT: uploadPhotoInit,\n UPLOAD_PHOTO_DONE: uploadPhotoDone,\n DELETE_PHOTO_INIT: deletePhotoInit,\n DELETE_PHOTO_DONE: updateProfileDone,\n UPDATE_PROFILE_INIT: updateProfileInit,\n UPDATE_PROFILE_DONE: updateProfileDone,\n ADD_SKILL_INIT: addSkillInit,\n ADD_SKILL_DONE: addSkillDone,\n HIDE_SKILL_INIT: hideSkillInit,\n HIDE_SKILL_DONE: hideSkillDone,\n ADD_WEB_LINK_INIT: addWebLinkInit,\n ADD_WEB_LINK_DONE: addWebLinkDone,\n DELETE_WEB_LINK_INIT: deleteWebLinkInit,\n DELETE_WEB_LINK_DONE: deleteWebLinkDone,\n LINK_EXTERNAL_ACCOUNT_INIT: linkExternalAccountInit,\n LINK_EXTERNAL_ACCOUNT_DONE: linkExternalAccountDone,\n UNLINK_EXTERNAL_ACCOUNT_INIT: unlinkExternalAccountInit,\n UNLINK_EXTERNAL_ACCOUNT_DONE: unlinkExternalAccountDone,\n SAVE_EMAIL_PREFERENCES_INIT: saveEmailPreferencesInit,\n SAVE_EMAIL_PREFERENCES_DONE: saveEmailPreferencesDone,\n UPDATE_PASSWORD_INIT: updatePasswordInit,\n UPDATE_PASSWORD_DONE: updatePasswordDone,\n VERIFY_MEMBER_NEW_EMAIL_INIT: verifyMemberNewEmailInit,\n VERIFY_MEMBER_NEW_EMAIL_DONE: verifyMemberNewEmailDone,\n UPDATE_EMAIL_CONFLICT: updateEmailConflict\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(loadProfile, 'loadProfile', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getAchievementsInit, 'getAchievementsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getAchievementsDone, 'getAchievementsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getAchievementsV3Done, 'getAchievementsV3Done', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getExternalAccountsInit, 'getExternalAccountsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getExternalAccountsDone, 'getExternalAccountsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getExternalLinksInit, 'getExternalLinksInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getExternalLinksDone, 'getExternalLinksDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getInfoInit, 'getInfoInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getInfoDone, 'getInfoDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getSkillsInit, 'getSkillsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getSkillsDone, 'getSkillsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getStatsInit, 'getStatsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getStatsDone, 'getStatsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getLinkedAccountsInit, 'getLinkedAccountsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getLinkedAccountsDone, 'getLinkedAccountsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getCredentialInit, 'getCredentialInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getCredentialDone, 'getCredentialDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getEmailPreferencesInit, 'getEmailPreferencesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getEmailPreferencesDone, 'getEmailPreferencesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(uploadPhotoInit, 'uploadPhotoInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(uploadPhotoDone, 'uploadPhotoDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(deletePhotoInit, 'deletePhotoInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updateProfileInit, 'updateProfileInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updateProfileDone, 'updateProfileDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(addSkillInit, 'addSkillInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(addSkillDone, 'addSkillDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(hideSkillInit, 'hideSkillInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(hideSkillDone, 'hideSkillDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(addWebLinkInit, 'addWebLinkInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(addWebLinkDone, 'addWebLinkDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(deleteWebLinkInit, 'deleteWebLinkInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(deleteWebLinkDone, 'deleteWebLinkDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(linkExternalAccountInit, 'linkExternalAccountInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(linkExternalAccountDone, 'linkExternalAccountDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(unlinkExternalAccountInit, 'unlinkExternalAccountInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(unlinkExternalAccountDone, 'unlinkExternalAccountDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(saveEmailPreferencesInit, 'saveEmailPreferencesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(saveEmailPreferencesDone, 'saveEmailPreferencesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updatePasswordInit, 'updatePasswordInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updatePasswordDone, 'updatePasswordDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(verifyMemberNewEmailInit, 'verifyMemberNewEmailInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(verifyMemberNewEmailDone, 'verifyMemberNewEmailDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updateEmailConflict, 'updateEmailConflict', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/profile.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/profile.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _user = __webpack_require__(/*! ../services/user */ \"./src/services/user.js\");\n\nvar _members = __webpack_require__(/*! ../services/members */ \"./src/services/members.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.profile\"\n * @desc Actions for interactions with profile details API.\n * @todo Some of them repeat actions in {@link actions.members.md}. The code\n * should be refactored to avoid redundancy.\n */\n\n\n/**\n * @static\n * @desc Creates and action that loads user profile.\n * @todo This action does not follow the pattern with init/done pairs of\n * actions. Should be improved.\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction loadProfile(handle) {\n return handle;\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of user achievements loading.\n * @todo This duplicates similar action in {@link actions.members.md}!\n * @return {Action}\n */\nfunction getAchievementsInit() {}\n\n/**\n * @static\n * @desc Creates an action that loads user achievements from API v2.\n * @todo This duplicates similar action in {@link actions.members.md}!\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getAchievementsDone(handle) {\n return (0, _user.getService)().getUserPublic(handle);\n}\n\n/**\n * @static\n * @desc Creates an action that loads user achievements from API v3.\n * @todo This duplicates similar action in {@link actions.members.md}!\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getAchievementsV3Done(handle) {\n return (0, _user.getService)().getUserPublicV3(handle);\n}\n\n/**\n * @static\n * @todo To be documented.\n * @return {Action}\n */\nfunction getExternalAccountsInit() {}\n\n/**\n * @static\n * @todo To be documented.\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getExternalAccountsDone(handle) {\n return (0, _members.getService)().getExternalAccounts(handle);\n}\n\n/**\n * @static\n * @todo Figure out what does this action do.\n * @return {Action}\n */\nfunction getExternalLinksInit() {}\n\n/**\n * @static\n * @todo Figure out the purpose of this action\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getExternalLinksDone(handle) {\n return (0, _members.getService)().getExternalLinks(handle);\n}\n\n/**\n * @static\n * @todo Figure out the purpose of this action.\n * @return {Action}\n */\nfunction getInfoInit() {}\n\n/**\n * @static\n * @todo Figure out the purpose of this action.\n * @param {String} handle User handle.\n * @return {Action}\n */\nfunction getInfoDone(handle) {\n return (0, _members.getService)().getMemberInfo(handle);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading the member's\n * skills info.\n * @return {Action}\n */\nfunction getSkillsInit() {}\n\n/**\n * @static\n * @desc Creates an action that loads member's skills info.\n * @param {String} handle Member handle.\n * @return {Action}\n */\nfunction getSkillsDone(handle) {\n return (0, _members.getService)().getSkills(handle);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading member's stats.\n * @todo This is similar to {@link actions.members.md#module_actions.members.getStatsInit}!\n * @return {Action}\n */\nfunction getStatsInit() {}\n\n/**\n * @static\n * @desc Creates an action that loads member's stats.\n * @param {String} handle Member handle.\n * @param {String} groupIds Group ids.\n * @return {Action}\n */\nfunction getStatsDone(handle, groupIds) {\n return (0, _members.getService)().getStats(handle, groupIds);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting linked accounts.\n * @return {Action}\n */\nfunction getLinkedAccountsInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets linked accounts.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getLinkedAccountsDone(profile, tokenV3) {\n var service = (0, _user.getService)(tokenV3);\n return service.getLinkedAccounts(profile.userId);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting credential.\n * @return {Action}\n */\nfunction getCredentialInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets credential.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getCredentialDone(profile, tokenV3) {\n var service = (0, _user.getService)(tokenV3);\n return service.getCredential(profile.userId);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting email preferences.\n * @return {Action}\n */\nfunction getEmailPreferencesInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets email preferences.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction getEmailPreferencesDone(profile, tokenV3) {\n var service = (0, _user.getService)(tokenV3);\n return service.getEmailPreferences(profile.userId);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of uploading user's photo.\n * @return {Action}\n */\nfunction uploadPhotoInit() {}\n\n/**\n * @static\n * @desc Creates an action that uploads user's photo.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} file The photo file.\n * @return {Action}\n */\nfunction uploadPhotoDone(handle, tokenV3, file) {\n var service = (0, _members.getService)(tokenV3);\n return service.getPresignedUrl(handle, file).then(function (res) {\n return service.uploadFileToS3(res);\n }).then(function (res) {\n return service.updateMemberPhoto(res);\n }).then(function (photoURL) {\n return { handle: handle, photoURL: photoURL };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of deleting user's photo.\n * @return {Action}\n */\nfunction deletePhotoInit() {}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of updating user's profile.\n * @return {Action}\n */\nfunction updateProfileInit() {}\n\n/**\n * @static\n * @desc Creates an action that updates user's profile.\n * @param {String} profile Topcoder user profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Action}\n */\nfunction updateProfileDone(profile, tokenV3) {\n var service = (0, _members.getService)(tokenV3);\n return service.updateMemberProfile(profile);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of adding user's skill.\n * @return {Action}\n */\nfunction addSkillInit() {}\n\n/**\n * @static\n * @desc Creates an action that adds user's skill.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {Object} skill Skill to add.\n * @return {Action}\n */\nfunction addSkillDone(handle, tokenV3, skill) {\n var service = (0, _members.getService)(tokenV3);\n return service.addSkill(handle, skill.tagId).then(function (res) {\n return { skills: res.skills, handle: handle, skill: skill };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of hiding user's skill.\n * @return {Action}\n */\nfunction hideSkillInit() {}\n\n/**\n * @static\n * @desc Creates an action that hides user's skill.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {Object} skill Skill to hide.\n * @return {Action}\n */\nfunction hideSkillDone(handle, tokenV3, skill) {\n var service = (0, _members.getService)(tokenV3);\n return service.hideSkill(handle, skill.tagId).then(function (res) {\n return { skills: res.skills, handle: handle, skill: skill };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of adding user's web link.\n * @return {Action}\n */\nfunction addWebLinkInit() {}\n\n/**\n * @static\n * @desc Creates an action that adds user's web link.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} webLink Web link to add.\n * @return {Action}\n */\nfunction addWebLinkDone(handle, tokenV3, webLink) {\n var service = (0, _members.getService)(tokenV3);\n return service.addWebLink(handle, webLink).then(function (res) {\n return { data: res, handle: handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of deleting user's web link.\n * @param {Object} key Web link key to delete.\n * @return {Action}\n */\nfunction deleteWebLinkInit(_ref) {\n var key = _ref.key;\n\n return { key: key };\n}\n\n/**\n * @static\n * @desc Creates an action that deletes user's web link.\n * @param {String} handle Topcoder user handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} webLink Web link to delete.\n * @return {Action}\n */\nfunction deleteWebLinkDone(handle, tokenV3, webLink) {\n var service = (0, _members.getService)(tokenV3);\n return service.deleteWebLink(handle, webLink.key).then(function (res) {\n return { data: res, handle: handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of linking external account.\n * @return {Action}\n */\nfunction linkExternalAccountInit() {}\n\n/**\n * @static\n * @desc Creates an action that links external account.\n * @param {Object} profile Topcoder member handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} providerType The external account service provider\n * @param {String} callbackUrl Optional. The callback url\n * @return {Action}\n */\nfunction linkExternalAccountDone(profile, tokenV3, providerType, callbackUrl) {\n var service = (0, _user.getService)(tokenV3);\n return service.linkExternalAccount(profile.userId, providerType, callbackUrl).then(function (res) {\n return { data: res, handle: profile.handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of unlinking external account.\n * @param {Object} providerType External account provider type to delete.\n * @return {Action}\n */\nfunction unlinkExternalAccountInit(_ref2) {\n var providerType = _ref2.providerType;\n\n return { providerType: providerType };\n}\n\n/**\n * @static\n * @desc Creates an action that unlinks external account.\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} providerType The external account service provider\n * @return {Action}\n */\nfunction unlinkExternalAccountDone(profile, tokenV3, providerType) {\n var service = (0, _user.getService)(tokenV3);\n return service.unlinkExternalAccount(profile.userId, providerType).then(function () {\n return { providerType: providerType, handle: profile.handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of saving email preferences.\n * @return {Action}\n */\nfunction saveEmailPreferencesInit() {}\n\n/**\n * @static\n * @desc Creates an action that saves email preferences.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {Object} preferences The email preferences\n * @return {Action}\n */\nfunction saveEmailPreferencesDone(profile, tokenV3, preferences) {\n var service = (0, _user.getService)(tokenV3);\n return service.saveEmailPreferences(profile, preferences).then(function (res) {\n return { data: res, handle: profile.handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of updating user password.\n * @return {Action}\n */\nfunction updatePasswordInit() {}\n\n/**\n * @static\n * @desc Creates an action that updates user password.\n *\n * @param {Object} profile Topcoder member profile.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} newPassword The new password\n * @param {String} oldPassword The old password\n * @return {Action}\n */\nfunction updatePasswordDone(profile, tokenV3, newPassword, oldPassword) {\n var service = (0, _user.getService)(tokenV3);\n return service.updatePassword(profile.userId, newPassword, oldPassword).then(function (res) {\n return { data: res, handle: profile.handle };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of verify member new email.\n * @return {Action}\n */\nfunction verifyMemberNewEmailInit() {}\n\n/**\n * @static\n * @desc Creates an action that verify member new email.\n *\n * @param {Object} handle Topcoder member handle.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @param {String} emailVerifyToken The verify token of new email.\n * @return {Action}\n */\nfunction verifyMemberNewEmailDone(handle, tokenV3, emailVerifyToken) {\n var service = (0, _members.getService)(tokenV3);\n return service.verifyMemberNewEmail(handle, emailVerifyToken).then(function (res) {\n return { data: res };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that toggles isEmailConflict state\n * @param {boolean} state\n * @return {Action}\n */\nfunction updateEmailConflict() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n return state;\n}\n\nvar _default = (0, _reduxActions.createActions)({\n PROFILE: {\n LOAD_PROFILE: loadProfile,\n CLEAR_PROFILE: _lodash2.default.noop,\n GET_ACHIEVEMENTS_INIT: getAchievementsInit,\n GET_ACHIEVEMENTS_DONE: getAchievementsDone,\n GET_ACHIEVEMENTS_V3_DONE: getAchievementsV3Done,\n GET_EXTERNAL_ACCOUNTS_INIT: getExternalAccountsInit,\n GET_EXTERNAL_ACCOUNTS_DONE: getExternalAccountsDone,\n GET_EXTERNAL_LINKS_INIT: getExternalLinksInit,\n GET_EXTERNAL_LINKS_DONE: getExternalLinksDone,\n GET_INFO_INIT: getInfoInit,\n GET_INFO_DONE: getInfoDone,\n GET_SKILLS_INIT: getSkillsInit,\n GET_SKILLS_DONE: getSkillsDone,\n GET_STATS_INIT: getStatsInit,\n GET_STATS_DONE: getStatsDone,\n GET_LINKED_ACCOUNTS_INIT: getLinkedAccountsInit,\n GET_LINKED_ACCOUNTS_DONE: getLinkedAccountsDone,\n GET_EMAIL_PREFERENCES_INIT: getEmailPreferencesInit,\n GET_EMAIL_PREFERENCES_DONE: getEmailPreferencesDone,\n GET_CREDENTIAL_INIT: getCredentialInit,\n GET_CREDENTIAL_DONE: getCredentialDone,\n UPLOAD_PHOTO_INIT: uploadPhotoInit,\n UPLOAD_PHOTO_DONE: uploadPhotoDone,\n DELETE_PHOTO_INIT: deletePhotoInit,\n DELETE_PHOTO_DONE: updateProfileDone,\n UPDATE_PROFILE_INIT: updateProfileInit,\n UPDATE_PROFILE_DONE: updateProfileDone,\n ADD_SKILL_INIT: addSkillInit,\n ADD_SKILL_DONE: addSkillDone,\n HIDE_SKILL_INIT: hideSkillInit,\n HIDE_SKILL_DONE: hideSkillDone,\n ADD_WEB_LINK_INIT: addWebLinkInit,\n ADD_WEB_LINK_DONE: addWebLinkDone,\n DELETE_WEB_LINK_INIT: deleteWebLinkInit,\n DELETE_WEB_LINK_DONE: deleteWebLinkDone,\n LINK_EXTERNAL_ACCOUNT_INIT: linkExternalAccountInit,\n LINK_EXTERNAL_ACCOUNT_DONE: linkExternalAccountDone,\n UNLINK_EXTERNAL_ACCOUNT_INIT: unlinkExternalAccountInit,\n UNLINK_EXTERNAL_ACCOUNT_DONE: unlinkExternalAccountDone,\n SAVE_EMAIL_PREFERENCES_INIT: saveEmailPreferencesInit,\n SAVE_EMAIL_PREFERENCES_DONE: saveEmailPreferencesDone,\n UPDATE_PASSWORD_INIT: updatePasswordInit,\n UPDATE_PASSWORD_DONE: updatePasswordDone,\n VERIFY_MEMBER_NEW_EMAIL_INIT: verifyMemberNewEmailInit,\n VERIFY_MEMBER_NEW_EMAIL_DONE: verifyMemberNewEmailDone,\n UPDATE_EMAIL_CONFLICT: updateEmailConflict\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(loadProfile, 'loadProfile', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getAchievementsInit, 'getAchievementsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getAchievementsDone, 'getAchievementsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getAchievementsV3Done, 'getAchievementsV3Done', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getExternalAccountsInit, 'getExternalAccountsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getExternalAccountsDone, 'getExternalAccountsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getExternalLinksInit, 'getExternalLinksInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getExternalLinksDone, 'getExternalLinksDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getInfoInit, 'getInfoInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getInfoDone, 'getInfoDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getSkillsInit, 'getSkillsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getSkillsDone, 'getSkillsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getStatsInit, 'getStatsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getStatsDone, 'getStatsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getLinkedAccountsInit, 'getLinkedAccountsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getLinkedAccountsDone, 'getLinkedAccountsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getCredentialInit, 'getCredentialInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getCredentialDone, 'getCredentialDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getEmailPreferencesInit, 'getEmailPreferencesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(getEmailPreferencesDone, 'getEmailPreferencesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(uploadPhotoInit, 'uploadPhotoInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(uploadPhotoDone, 'uploadPhotoDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(deletePhotoInit, 'deletePhotoInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updateProfileInit, 'updateProfileInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updateProfileDone, 'updateProfileDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(addSkillInit, 'addSkillInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(addSkillDone, 'addSkillDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(hideSkillInit, 'hideSkillInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(hideSkillDone, 'hideSkillDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(addWebLinkInit, 'addWebLinkInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(addWebLinkDone, 'addWebLinkDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(deleteWebLinkInit, 'deleteWebLinkInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(deleteWebLinkDone, 'deleteWebLinkDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(linkExternalAccountInit, 'linkExternalAccountInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(linkExternalAccountDone, 'linkExternalAccountDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(unlinkExternalAccountInit, 'unlinkExternalAccountInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(unlinkExternalAccountDone, 'unlinkExternalAccountDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(saveEmailPreferencesInit, 'saveEmailPreferencesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(saveEmailPreferencesDone, 'saveEmailPreferencesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updatePasswordInit, 'updatePasswordInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updatePasswordDone, 'updatePasswordDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(verifyMemberNewEmailInit, 'verifyMemberNewEmailInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(verifyMemberNewEmailDone, 'verifyMemberNewEmailDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(updateEmailConflict, 'updateEmailConflict', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/profile.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/profile.js?"); /***/ }), @@ -544,7 +544,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _reviewOpportunities = __webpack_require__(/*! ../services/reviewOpportunities */ \"./src/services/reviewOpportunities.js\");\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.reviewOpportunity\"\n * @desc Actions for review opportunity details API.\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of review application\n * cancelation.\n * @return {Action}\n */\nfunction cancelApplicationsInit() {}\n\n/**\n * @static\n * @desc Creates an action that cancels existing applications\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {Array} roleIds Array of roleId Numbers to cancel applications for\n * @param {String} tokenV3 Required. Topcoder auth token v3.\n * @return {Action}\n */\nfunction cancelApplicationsDone(challengeId, roleIds, tokenV3) {\n return (0, _reviewOpportunities.getReviewOpportunitiesService)(tokenV3).cancelApplications(challengeId, roleIds);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading the review\n * opportunity details.\n * @return {Action}\n */\nfunction getDetailsInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets details of a review opportunity for\n * the specified challenge.\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {String} tokenV3=null Optional. Topcoder auth token v3.\n * @default test\n * @return {Action}\n */\nfunction getDetailsDone(challengeId, tokenV3) {\n return (0, _reviewOpportunities.getReviewOpportunitiesService)(tokenV3).getDetails(challengeId).catch(function (error) {\n if (error.status !== 401) {\n (0, _errors.fireErrorMessage)('Error Getting Review Opportunity Details', error.content || error);\n }\n return _promise2.default.reject(error.status);\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of review application process.\n * @return {Action}\n */\nfunction submitAppliationInit() {}\n\n/**\n * @static\n * @desc Creates an action that submits application for a review opportunity.\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {Array} roleIds Array of roleId Numbers to cancel applications for\n * @param {String} tokenV3 Required. Topcoder auth token v3.\n * @return {Action}\n */\nfunction submitApplicationsDone(challengeId, roleIds, tokenV3) {\n return (0, _reviewOpportunities.getReviewOpportunitiesService)(tokenV3).submitApplications(challengeId, roleIds);\n}\n\nvar _default = (0, _reduxActions.createActions)({\n REVIEW_OPPORTUNITY: {\n CANCEL_APPLICATIONS_INIT: cancelApplicationsInit,\n CANCEL_APPLICATIONS_DONE: cancelApplicationsDone,\n GET_DETAILS_INIT: getDetailsInit,\n GET_DETAILS_DONE: getDetailsDone,\n SUBMIT_APPLICATIONS_INIT: submitAppliationInit,\n SUBMIT_APPLICATIONS_DONE: submitApplicationsDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(cancelApplicationsInit, 'cancelApplicationsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(cancelApplicationsDone, 'cancelApplicationsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(getDetailsInit, 'getDetailsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(getDetailsDone, 'getDetailsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(submitAppliationInit, 'submitAppliationInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(submitApplicationsDone, 'submitApplicationsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/reviewOpportunity.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/reviewOpportunity.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _reviewOpportunities = __webpack_require__(/*! ../services/reviewOpportunities */ \"./src/services/reviewOpportunities.js\");\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.reviewOpportunity\"\n * @desc Actions for review opportunity details API.\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of review application\n * cancelation.\n * @return {Action}\n */\nfunction cancelApplicationsInit() {}\n\n/**\n * @static\n * @desc Creates an action that cancels existing applications\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {Array} roleIds Array of roleId Numbers to cancel applications for\n * @param {String} tokenV3 Required. Topcoder auth token v3.\n * @return {Action}\n */\nfunction cancelApplicationsDone(challengeId, roleIds, tokenV3) {\n return (0, _reviewOpportunities.getReviewOpportunitiesService)(tokenV3).cancelApplications(challengeId, roleIds);\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of loading the review\n * opportunity details.\n * @return {Action}\n */\nfunction getDetailsInit() {}\n\n/**\n * @static\n * @desc Creates an action that gets details of a review opportunity for\n * the specified challenge.\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {String} tokenV3=null Optional. Topcoder auth token v3.\n * @default test\n * @return {Action}\n */\nfunction getDetailsDone(challengeId, tokenV3) {\n return (0, _reviewOpportunities.getReviewOpportunitiesService)(tokenV3).getDetails(challengeId).catch(function (error) {\n if (error.status !== 401) {\n (0, _errors.fireErrorMessage)('Error Getting Review Opportunity Details', error.content || error);\n }\n return _promise2.default.reject(error.status);\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of review application process.\n * @return {Action}\n */\nfunction submitAppliationInit() {}\n\n/**\n * @static\n * @desc Creates an action that submits application for a review opportunity.\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {Array} roleIds Array of roleId Numbers to cancel applications for\n * @param {String} tokenV3 Required. Topcoder auth token v3.\n * @return {Action}\n */\nfunction submitApplicationsDone(challengeId, roleIds, tokenV3) {\n return (0, _reviewOpportunities.getReviewOpportunitiesService)(tokenV3).submitApplications(challengeId, roleIds);\n}\n\nvar _default = (0, _reduxActions.createActions)({\n REVIEW_OPPORTUNITY: {\n CANCEL_APPLICATIONS_INIT: cancelApplicationsInit,\n CANCEL_APPLICATIONS_DONE: cancelApplicationsDone,\n GET_DETAILS_INIT: getDetailsInit,\n GET_DETAILS_DONE: getDetailsDone,\n SUBMIT_APPLICATIONS_INIT: submitAppliationInit,\n SUBMIT_APPLICATIONS_DONE: submitApplicationsDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(cancelApplicationsInit, 'cancelApplicationsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(cancelApplicationsDone, 'cancelApplicationsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(getDetailsInit, 'getDetailsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(getDetailsDone, 'getDetailsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(submitAppliationInit, 'submitAppliationInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(submitApplicationsDone, 'submitApplicationsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/reviewOpportunity.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/reviewOpportunity.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/reviewOpportunity.js?"); /***/ }), @@ -556,7 +556,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Creates an action that loads user's all traits.\n * @param {String} handle the topcoder member handle\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\nvar getAllUserTraits = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(handle, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _userTraits.getService)(tokenV3).getAllUserTraits(handle);\n\n case 2:\n data = _context.sent;\n return _context.abrupt('return', { data: data, handle: handle });\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getAllUserTraits(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that add trait by trait id.\n * @param {String} handle member's handle.\n * @param {String} traitId trait id.\n * @param {Array} data trait data array.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar addUserTrait = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(handle, traitId, data, tokenV3) {\n var result;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _userTraits.getService)(tokenV3).addUserTrait(handle, traitId, data);\n\n case 2:\n result = _context2.sent;\n return _context2.abrupt('return', { result: result, handle: handle, traitId: traitId });\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function addUserTrait(_x3, _x4, _x5, _x6) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that update trait by trait id.\n * @param {String} handle member's handle.\n * @param {String} traitId trait id.\n * @param {Array} data trait data array.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar updateUserTrait = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(handle, traitId, data, tokenV3) {\n var result;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _userTraits.getService)(tokenV3).updateUserTrait(handle, traitId, data);\n\n case 2:\n result = _context3.sent;\n return _context3.abrupt('return', { result: result, handle: handle, traitId: traitId });\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function updateUserTrait(_x7, _x8, _x9, _x10) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that delete trait by trait id.\n * @param {String} handle member's handle.\n * @param {String} traitId trait id.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar deleteUserTrait = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(handle, traitId, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return (0, _userTraits.getService)(tokenV3).deleteUserTrait(handle, traitId);\n\n case 2:\n data = _context4.sent;\n return _context4.abrupt('return', { data: data, handle: handle, traitId: traitId });\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function deleteUserTrait(_x11, _x12, _x13) {\n return _ref4.apply(this, arguments);\n };\n}();\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _userTraits = __webpack_require__(/*! ../services/user-traits */ \"./src/services/user-traits.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.settings\"\n * @desc Actions related to settings page.\n */\n\nvar _default = (0, _reduxActions.createActions)({\n SETTINGS: {\n GET_ALL_USER_TRAITS: getAllUserTraits,\n ADD_USER_TRAIT: addUserTrait,\n DELETE_USER_TRAIT: deleteUserTrait,\n UPDATE_USER_TRAIT: updateUserTrait,\n MODIFY_USER_TRAIT_INIT: _lodash2.default.noop\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getAllUserTraits, 'getAllUserTraits', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/settings.js');\n reactHotLoader.register(addUserTrait, 'addUserTrait', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/settings.js');\n reactHotLoader.register(updateUserTrait, 'updateUserTrait', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/settings.js');\n reactHotLoader.register(deleteUserTrait, 'deleteUserTrait', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/settings.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/settings.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/settings.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Creates an action that loads user's all traits.\n * @param {String} handle the topcoder member handle\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\nvar getAllUserTraits = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(handle, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return (0, _userTraits.getService)(tokenV3).getAllUserTraits(handle);\n\n case 2:\n data = _context.sent;\n return _context.abrupt('return', { data: data, handle: handle });\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getAllUserTraits(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that add trait by trait id.\n * @param {String} handle member's handle.\n * @param {String} traitId trait id.\n * @param {Array} data trait data array.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar addUserTrait = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(handle, traitId, data, tokenV3) {\n var result;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return (0, _userTraits.getService)(tokenV3).addUserTrait(handle, traitId, data);\n\n case 2:\n result = _context2.sent;\n return _context2.abrupt('return', { result: result, handle: handle, traitId: traitId });\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function addUserTrait(_x3, _x4, _x5, _x6) {\n return _ref2.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that update trait by trait id.\n * @param {String} handle member's handle.\n * @param {String} traitId trait id.\n * @param {Array} data trait data array.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar updateUserTrait = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(handle, traitId, data, tokenV3) {\n var result;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return (0, _userTraits.getService)(tokenV3).updateUserTrait(handle, traitId, data);\n\n case 2:\n result = _context3.sent;\n return _context3.abrupt('return', { result: result, handle: handle, traitId: traitId });\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n return function updateUserTrait(_x7, _x8, _x9, _x10) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @desc Creates an action that delete trait by trait id.\n * @param {String} handle member's handle.\n * @param {String} traitId trait id.\n * @param {String} tokenV3 v3 auth token.\n * @return {Action}\n */\n\n\nvar deleteUserTrait = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(handle, traitId, tokenV3) {\n var data;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return (0, _userTraits.getService)(tokenV3).deleteUserTrait(handle, traitId);\n\n case 2:\n data = _context4.sent;\n return _context4.abrupt('return', { data: data, handle: handle, traitId: traitId });\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n return function deleteUserTrait(_x11, _x12, _x13) {\n return _ref4.apply(this, arguments);\n };\n}();\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _userTraits = __webpack_require__(/*! ../services/user-traits */ \"./src/services/user-traits.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.settings\"\n * @desc Actions related to settings page.\n */\n\nvar _default = (0, _reduxActions.createActions)({\n SETTINGS: {\n GET_ALL_USER_TRAITS: getAllUserTraits,\n ADD_USER_TRAIT: addUserTrait,\n DELETE_USER_TRAIT: deleteUserTrait,\n UPDATE_USER_TRAIT: updateUserTrait,\n MODIFY_USER_TRAIT_INIT: _lodash2.default.noop\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getAllUserTraits, 'getAllUserTraits', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/settings.js');\n reactHotLoader.register(addUserTrait, 'addUserTrait', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/settings.js');\n reactHotLoader.register(updateUserTrait, 'updateUserTrait', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/settings.js');\n reactHotLoader.register(deleteUserTrait, 'deleteUserTrait', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/settings.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/settings.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/settings.js?"); /***/ }), @@ -568,7 +568,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _api = __webpack_require__(/*! ../services/api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.smp\"\n * @desc Actions related to *My Submissions Management* page.\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of submission download.\n * @return {Action}\n */\nfunction deleteSubmissionInit() {}\n\n/**\n * @static\n * @desc Creates an action that deletes user's submission to a challenge.\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @param {Number|String} submissionId Submission ID.\n * @return {Action}\n */\nfunction deleteSubmissionDone(tokenV3, submissionId) {\n return (0, _api.getApi)('V3', tokenV3).delete('/submissions/' + submissionId).then(function () {\n return submissionId;\n });\n}\n\n/**\n * @static\n * @todo At this moment we don't need any special JS code to download\n * submissions: we get them from legacy Topcoder Studio API, which is\n * authenticated by cookies, and can be done with a simple link in\n * the component. Soon we'll migrate to use the new TC API instead, and\n * then we'll decide, whether we need operate downloads in JS, or can we\n * just remove this action.\n * @return {Action}\n */\nfunction downloadSubmission(tokens, type, submissionId) {\n _lodash2.default.noop(tokens, type, submissionId);\n}\n\nvar _default = (0, _reduxActions.createActions)({\n SMP: {\n DELETE_SUBMISSION_DONE: deleteSubmissionDone,\n DELETE_SUBMISSION_INIT: deleteSubmissionInit,\n DOWNLOAD_SUBMISSION: downloadSubmission\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(deleteSubmissionInit, 'deleteSubmissionInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/smp.js');\n reactHotLoader.register(deleteSubmissionDone, 'deleteSubmissionDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/smp.js');\n reactHotLoader.register(downloadSubmission, 'downloadSubmission', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/smp.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/smp.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/smp.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _api = __webpack_require__(/*! ../services/api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.smp\"\n * @desc Actions related to *My Submissions Management* page.\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of submission download.\n * @return {Action}\n */\nfunction deleteSubmissionInit() {}\n\n/**\n * @static\n * @desc Creates an action that deletes user's submission to a challenge.\n * @param {String} tokenV3 Topcoder v3 auth token.\n * @param {Number|String} submissionId Submission ID.\n * @return {Action}\n */\nfunction deleteSubmissionDone(tokenV3, submissionId) {\n return (0, _api.getApi)('V3', tokenV3).delete('/submissions/' + submissionId).then(function () {\n return submissionId;\n });\n}\n\n/**\n * @static\n * @todo At this moment we don't need any special JS code to download\n * submissions: we get them from legacy Topcoder Studio API, which is\n * authenticated by cookies, and can be done with a simple link in\n * the component. Soon we'll migrate to use the new TC API instead, and\n * then we'll decide, whether we need operate downloads in JS, or can we\n * just remove this action.\n * @return {Action}\n */\nfunction downloadSubmission(tokens, type, submissionId) {\n _lodash2.default.noop(tokens, type, submissionId);\n}\n\nvar _default = (0, _reduxActions.createActions)({\n SMP: {\n DELETE_SUBMISSION_DONE: deleteSubmissionDone,\n DELETE_SUBMISSION_INIT: deleteSubmissionInit,\n DOWNLOAD_SUBMISSION: downloadSubmission\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(deleteSubmissionInit, 'deleteSubmissionInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/smp.js');\n reactHotLoader.register(deleteSubmissionDone, 'deleteSubmissionDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/smp.js');\n reactHotLoader.register(downloadSubmission, 'downloadSubmission', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/smp.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/smp.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/smp.js?"); /***/ }), @@ -580,7 +580,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Create an action that gets statistics related to the specified\n * community. Data will be loaded into `stats.communities[communityId]` path of\n * the Redux store.\n * @todo The action should be refactored, see comments in the code.\n * @param {Object} community details of the community.\n * @param {String} uuid Operation UUID\n * @param {Array} challenges challenges from challengeListing to filter and do statistics\n * @param {String} token V3 Topcoder auth token. It is necessary to get data\n * related to private groups.\n * @return {Action}\n */\n/* TODO: This code should be moved to a dedicated service. */\nvar getCommunityStatsDone = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(community, uuid, challenges, token) {\n var filtered, filterFunction, totalPrize, groupService, result, groupId;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n\n /* TODO: At the moment, this component loads challenge objects to calculate\n * the number of challenges and the total prize. Probably in future, we'll\n * have a special API to get these data. */\n filtered = challenges.filter(function (x) {\n return x.status === 'ACTIVE';\n });\n\n if (community.challengeFilter) {\n filterFunction = Filter.getFilterFunction(community.challengeFilter);\n\n filtered = filtered.filter(filterFunction);\n }\n totalPrize = Math.round(filtered.reduce(function (total, challenge) {\n return total + (challenge.totalPrize || 0);\n }, 0));\n groupService = (0, _groups.getService)(token);\n result = {\n community: community.communityId,\n stats: {},\n uuid: uuid\n };\n\n if (filtered.length) result.stats.numChallenges = filtered.length;\n if (totalPrize) result.stats.openPrizes = '$' + totalPrize.toLocaleString();\n\n groupId = _lodash2.default.get(community, 'groupIds[0]');\n\n if (!groupId) {\n _context.next = 13;\n break;\n }\n\n _context.next = 12;\n return groupService.getMembersCount(groupId, true);\n\n case 12:\n result.stats.numMembers = _context.sent;\n\n case 13:\n return _context.abrupt('return', result);\n\n case 16:\n _context.prev = 16;\n _context.t0 = _context['catch'](0);\n return _context.abrupt('return', {\n community: community.communityId,\n stats: {},\n uuid: uuid\n });\n\n case 19:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 16]]);\n }));\n\n return function getCommunityStatsDone(_x, _x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _filter = __webpack_require__(/*! ../utils/challenge/filter */ \"./src/utils/challenge/filter.js\");\n\nvar Filter = _interopRequireWildcard(_filter);\n\nvar _groups = __webpack_require__(/*! ../services/groups */ \"./src/services/groups.js\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.stats\"\n * @desc Actions related to Topcoder statistics (at the moment, only community\n * statistics).\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of the loading community\n * stats.\n * @param {Object} community Community meta-data object.\n * @param {String} [community.communityId] Community ID.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\nfunction getCommunityStatsInit(community, uuid) {\n return { community: community.communityId, uuid: uuid };\n}\nvar _default = (0, _reduxActions.createActions)({\n STATS: {\n GET_COMMUNITY_STATS_INIT: getCommunityStatsInit,\n GET_COMMUNITY_STATS_DONE: getCommunityStatsDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getCommunityStatsInit, 'getCommunityStatsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/stats.js');\n reactHotLoader.register(getCommunityStatsDone, 'getCommunityStatsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/stats.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/stats.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/stats.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * @static\n * @desc Create an action that gets statistics related to the specified\n * community. Data will be loaded into `stats.communities[communityId]` path of\n * the Redux store.\n * @todo The action should be refactored, see comments in the code.\n * @param {Object} community details of the community.\n * @param {String} uuid Operation UUID\n * @param {Array} challenges challenges from challengeListing to filter and do statistics\n * @param {String} token V3 Topcoder auth token. It is necessary to get data\n * related to private groups.\n * @return {Action}\n */\n/* TODO: This code should be moved to a dedicated service. */\nvar getCommunityStatsDone = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(community, uuid, challenges, token) {\n var filtered, filterFunction, totalPrize, groupService, result, groupId;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n\n /* TODO: At the moment, this component loads challenge objects to calculate\n * the number of challenges and the total prize. Probably in future, we'll\n * have a special API to get these data. */\n filtered = challenges.filter(function (x) {\n return x.status === 'ACTIVE';\n });\n\n if (community.challengeFilter) {\n filterFunction = Filter.getFilterFunction(community.challengeFilter);\n\n filtered = filtered.filter(filterFunction);\n }\n totalPrize = Math.round(filtered.reduce(function (total, challenge) {\n return total + (challenge.totalPrize || 0);\n }, 0));\n groupService = (0, _groups.getService)(token);\n result = {\n community: community.communityId,\n stats: {},\n uuid: uuid\n };\n\n if (filtered.length) result.stats.numChallenges = filtered.length;\n if (totalPrize) result.stats.openPrizes = '$' + totalPrize.toLocaleString();\n\n groupId = _lodash2.default.get(community, 'groupIds[0]');\n\n if (!groupId) {\n _context.next = 13;\n break;\n }\n\n _context.next = 12;\n return groupService.getMembersCount(groupId, true);\n\n case 12:\n result.stats.numMembers = _context.sent;\n\n case 13:\n return _context.abrupt('return', result);\n\n case 16:\n _context.prev = 16;\n _context.t0 = _context['catch'](0);\n return _context.abrupt('return', {\n community: community.communityId,\n stats: {},\n uuid: uuid\n });\n\n case 19:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this, [[0, 16]]);\n }));\n\n return function getCommunityStatsDone(_x, _x2, _x3, _x4) {\n return _ref.apply(this, arguments);\n };\n}();\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _filter = __webpack_require__(/*! ../utils/challenge/filter */ \"./src/utils/challenge/filter.js\");\n\nvar Filter = _interopRequireWildcard(_filter);\n\nvar _groups = __webpack_require__(/*! ../services/groups */ \"./src/services/groups.js\");\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.stats\"\n * @desc Actions related to Topcoder statistics (at the moment, only community\n * statistics).\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of the loading community\n * stats.\n * @param {Object} community Community meta-data object.\n * @param {String} [community.communityId] Community ID.\n * @param {String} uuid Operation UUID.\n * @return {Action}\n */\nfunction getCommunityStatsInit(community, uuid) {\n return { community: community.communityId, uuid: uuid };\n}\nvar _default = (0, _reduxActions.createActions)({\n STATS: {\n GET_COMMUNITY_STATS_INIT: getCommunityStatsInit,\n GET_COMMUNITY_STATS_DONE: getCommunityStatsDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getCommunityStatsInit, 'getCommunityStatsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/stats.js');\n reactHotLoader.register(getCommunityStatsDone, 'getCommunityStatsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/stats.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/stats.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/stats.js?"); /***/ }), @@ -592,7 +592,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _terms = __webpack_require__(/*! ../services/terms */ \"./src/services/terms.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.terms\"\n * @desc Actions related to Topcoder terms of use.\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of fetching terms data.\n * @todo Figure out the exact meaning of the argument.\n * @param {String} arg An argument. The exact meaning to be figured out.\n * @return {Action}\n */\nfunction getTermsInit(arg) {\n return arg;\n}\n\n/**\n * @static\n * @desc Creates an action that fetches terms of the specified entity.\n * @param {Object} entity entity object\n * @param {String} [entity.type] entity type: `challenge` or `community`\n * @param {String} [entity.id] entity id\n * @param {Object} tokens object with tokenV2 and tokenV3 properties\n * @param {Boolean} mockAgreed if true, then all terms will be mocked as\n * agreed this only makes effect if MOCK_TERMS_SERVICE is `true` and the only\n * purpose of this param is testing terms\n * @return {Action}\n */\nfunction getTermsDone(entity, tokens, mockAgreed) {\n var service = (0, _terms.getService)(tokens.tokenV2);\n var termsPromise = void 0;\n\n // if mockAgreed=true passed, then we create an array of 10 true which we pass to the\n // terms service methods.\n // when terms service is mocked by setting MOCK_TERMS_SERVICE=true\n // it will make all terms to have agreed status (actually only first 10 will be agreed,\n // but we will hardly have even more then 3 terms per entity)\n var mockAgreedArray = mockAgreed ? Array(10 + 1).join('1').split('').map(function () {\n return true;\n }) : [];\n\n switch (entity.type) {\n case 'challenge':\n {\n termsPromise = service.getChallengeTerms(entity.id, mockAgreedArray);\n break;\n }\n case 'community':\n {\n termsPromise = service.getCommunityTerms(entity.id, tokens.tokenV3, mockAgreedArray);\n break;\n }\n case 'reviewOpportunity':\n {\n termsPromise = service.getReviewOpportunityTerms(entity.reviewOpportunityTerms);\n break;\n }\n default:\n throw new Error('Entity type \\'' + entity.type + '\\' is not supported by getTermsDone.');\n }\n\n return termsPromise.then(function (res) {\n return { entity: entity, terms: res.terms };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of terms status check\n * operation.\n * @return {Action}\n */\nfunction checkStatusInit() {}\n\n/**\n * @static\n * @desc Creates an action thatwill check if all terms of specified entity have been agreed,\n *\n * @todo As in some reason backend does not saves immediately that DocuSign term has been agreed\n * In case not all terms were agreed we try again after some delay.\n * Maximum quantity attempts and delay between attempts are configured in\n * MAX_ATTEMPTS and TIME_OUT\n *\n * @todo: Looks like the bug described above was caused by server caching responses\n * at least for getTermDetails which is used by getCommunityTerms.\n * To fix it I've added nocache random value param in the terms service\n * for getTermDetails and it looks like works so we get results immediately.\n * This still have to be tested for challenges as they use another endpoint\n * in method getChallengeTerms.\n * Also terms which use third part service DocuSign has to be also tested prior\n * to removing multiple checks.\n * In case their agreed status is updated immediately, this code\n * has to simplified and don't make several attempts, only one.\n *\n * @param {Object} entity entity object\n * @param {String} [entity.type] entity type `challenge` or `community`.\n * @param {String} [entity.id] entity id\n * @param {Object} tokens object with tokenV2 and tokenV3 properties\n *\n * @return {Acion}\n */\nfunction checkStatusDone(entity, tokens) {\n // timeout between checking status attempts\n var TIME_OUT = 5000;\n\n // maximum attempts to check status\n var MAX_ATTEMPTS = 5;\n\n // we set this flag for getTermsDone when MOCK_TERMS_SERVICE is true\n // so that checkStatusDone resolves to all terms agreed when mocking\n var mockAgreed = _topcoderReactUtils.config.MOCK_TERMS_SERVICE;\n\n /*\n * Promisified setTimeout\n * @param {Number} timeout timeout in milliseconds\n * @return {Promise} resolves after timeout\n */\n var delay = function delay(timeout) {\n return new _promise2.default(function (resolve) {\n setTimeout(resolve, timeout);\n });\n };\n\n /*\n * Makes attempt to check status\n * @param {Number} maxAttempts maximum number of attempts to perform\n * @return {Promise} resolves to the list of term objects\n */\n var checkStatus = function checkStatus(maxAttempts) {\n return getTermsDone(entity, tokens, mockAgreed).then(function (res) {\n var allAgreed = _lodash2.default.every(res.terms, 'agreed');\n\n // if not all terms are agreed and we still have some attempts to try\n if (!allAgreed && maxAttempts > 1) {\n return delay(TIME_OUT).then(function () {\n return checkStatus(maxAttempts - 1);\n });\n }\n\n return res.terms;\n });\n };\n\n return checkStatus(MAX_ATTEMPTS);\n}\n\n/**\n * @static\n * @desc Creates an action that marks that we are about to fetch details of the\n * specified term. If any details for another term are currently being fetched,\n * they will be silently discarded.\n * @param {Number|String} termId\n * @return {Action}\n */\nfunction getTermDetailsInit(termId) {\n return _lodash2.default.toString(termId);\n}\n\n/**\n * @static\n * @desc Creates an action that fetches details of the specified term.\n * @param {Number|String} termId\n * @param {String} tokenV2\n * @return {Action}\n */\nfunction getTermDetailsDone(termId, tokenV2) {\n var service = (0, _terms.getService)(tokenV2);\n return service.getTermDetails(termId).then(function (details) {\n return { termId: termId, details: details };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting a DocuSign URL.\n * @param {Number|String} templateId id of document template to sign\n * @return {Action}\n */\nfunction getDocuSignUrlInit(templateId) {\n return _lodash2.default.toString(templateId);\n}\n\n/**\n * @static\n * @desc Creates an action that generates the url of DoduSign term\n * @param {Number|String} templateId id of document template to sign\n * @param {String} returnUrl callback url after finishing singing\n * @param {String} tokenV2 auth token\n * @return {Action}\n */\nfunction getDocuSignUrlDone(templateId, returnUrl, tokenV2) {\n var service = (0, _terms.getService)(tokenV2);\n return service.getDocuSignUrl(templateId, returnUrl).then(function (resp) {\n return { templateId: templateId, docuSignUrl: resp.recipientViewUrl };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of terms agreement operation.\n * @param {Number|String} termId id of term\n * @return {Action}\n */\nfunction agreeTermInit(termId) {\n return _lodash2.default.toString(termId);\n}\n\n/**\n * @static\n * @desc Creates an action that agrees to a term.\n * @param {Number|String} termId id of term\n * @param {String} tokenV2 auth token\n * @return {Action}\n */\nfunction agreeTermDone(termId, tokenV2) {\n var service = (0, _terms.getService)(tokenV2);\n return service.agreeTerm(termId).then(function (resp) {\n return { termId: termId, success: resp.success };\n });\n}\n\nvar _default = (0, _reduxActions.createActions)({\n TERMS: {\n GET_TERMS_INIT: getTermsInit,\n GET_TERMS_DONE: getTermsDone,\n GET_TERM_DETAILS_INIT: getTermDetailsInit,\n GET_TERM_DETAILS_DONE: getTermDetailsDone,\n GET_DOCU_SIGN_URL_INIT: getDocuSignUrlInit,\n GET_DOCU_SIGN_URL_DONE: getDocuSignUrlDone,\n AGREE_TERM_INIT: agreeTermInit,\n AGREE_TERM_DONE: agreeTermDone,\n CHECK_STATUS_INIT: checkStatusInit,\n CHECK_STATUS_DONE: checkStatusDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getTermsInit, 'getTermsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getTermsDone, 'getTermsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(checkStatusInit, 'checkStatusInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(checkStatusDone, 'checkStatusDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getTermDetailsInit, 'getTermDetailsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getTermDetailsDone, 'getTermDetailsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getDocuSignUrlInit, 'getDocuSignUrlInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getDocuSignUrlDone, 'getDocuSignUrlDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(agreeTermInit, 'agreeTermInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(agreeTermDone, 'agreeTermDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/actions/terms.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/terms.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _terms = __webpack_require__(/*! ../services/terms */ \"./src/services/terms.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"actions.terms\"\n * @desc Actions related to Topcoder terms of use.\n */\n\n/**\n * @static\n * @desc Creates an action that signals beginning of fetching terms data.\n * @todo Figure out the exact meaning of the argument.\n * @param {String} arg An argument. The exact meaning to be figured out.\n * @return {Action}\n */\nfunction getTermsInit(arg) {\n return arg;\n}\n\n/**\n * @static\n * @desc Creates an action that fetches terms of the specified entity.\n * @param {Object} entity entity object\n * @param {String} [entity.type] entity type: `challenge` or `community`\n * @param {String} [entity.id] entity id\n * @param {Object} tokens object with tokenV2 and tokenV3 properties\n * @param {Boolean} mockAgreed if true, then all terms will be mocked as\n * agreed this only makes effect if MOCK_TERMS_SERVICE is `true` and the only\n * purpose of this param is testing terms\n * @return {Action}\n */\nfunction getTermsDone(entity, tokens, mockAgreed) {\n var service = (0, _terms.getService)(tokens.tokenV2);\n var termsPromise = void 0;\n\n // if mockAgreed=true passed, then we create an array of 10 true which we pass to the\n // terms service methods.\n // when terms service is mocked by setting MOCK_TERMS_SERVICE=true\n // it will make all terms to have agreed status (actually only first 10 will be agreed,\n // but we will hardly have even more then 3 terms per entity)\n var mockAgreedArray = mockAgreed ? Array(10 + 1).join('1').split('').map(function () {\n return true;\n }) : [];\n\n switch (entity.type) {\n case 'challenge':\n {\n termsPromise = service.getChallengeTerms(entity.id, mockAgreedArray);\n break;\n }\n case 'community':\n {\n termsPromise = service.getCommunityTerms(entity.id, tokens.tokenV3, mockAgreedArray);\n break;\n }\n case 'reviewOpportunity':\n {\n termsPromise = service.getReviewOpportunityTerms(entity.reviewOpportunityTerms);\n break;\n }\n default:\n throw new Error('Entity type \\'' + entity.type + '\\' is not supported by getTermsDone.');\n }\n\n return termsPromise.then(function (res) {\n return { entity: entity, terms: res.terms };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of terms status check\n * operation.\n * @return {Action}\n */\nfunction checkStatusInit() {}\n\n/**\n * @static\n * @desc Creates an action thatwill check if all terms of specified entity have been agreed,\n *\n * @todo As in some reason backend does not saves immediately that DocuSign term has been agreed\n * In case not all terms were agreed we try again after some delay.\n * Maximum quantity attempts and delay between attempts are configured in\n * MAX_ATTEMPTS and TIME_OUT\n *\n * @todo: Looks like the bug described above was caused by server caching responses\n * at least for getTermDetails which is used by getCommunityTerms.\n * To fix it I've added nocache random value param in the terms service\n * for getTermDetails and it looks like works so we get results immediately.\n * This still have to be tested for challenges as they use another endpoint\n * in method getChallengeTerms.\n * Also terms which use third part service DocuSign has to be also tested prior\n * to removing multiple checks.\n * In case their agreed status is updated immediately, this code\n * has to simplified and don't make several attempts, only one.\n *\n * @param {Object} entity entity object\n * @param {String} [entity.type] entity type `challenge` or `community`.\n * @param {String} [entity.id] entity id\n * @param {Object} tokens object with tokenV2 and tokenV3 properties\n *\n * @return {Acion}\n */\nfunction checkStatusDone(entity, tokens) {\n // timeout between checking status attempts\n var TIME_OUT = 5000;\n\n // maximum attempts to check status\n var MAX_ATTEMPTS = 5;\n\n // we set this flag for getTermsDone when MOCK_TERMS_SERVICE is true\n // so that checkStatusDone resolves to all terms agreed when mocking\n var mockAgreed = _topcoderReactUtils.config.MOCK_TERMS_SERVICE;\n\n /*\n * Promisified setTimeout\n * @param {Number} timeout timeout in milliseconds\n * @return {Promise} resolves after timeout\n */\n var delay = function delay(timeout) {\n return new _promise2.default(function (resolve) {\n setTimeout(resolve, timeout);\n });\n };\n\n /*\n * Makes attempt to check status\n * @param {Number} maxAttempts maximum number of attempts to perform\n * @return {Promise} resolves to the list of term objects\n */\n var checkStatus = function checkStatus(maxAttempts) {\n return getTermsDone(entity, tokens, mockAgreed).then(function (res) {\n var allAgreed = _lodash2.default.every(res.terms, 'agreed');\n\n // if not all terms are agreed and we still have some attempts to try\n if (!allAgreed && maxAttempts > 1) {\n return delay(TIME_OUT).then(function () {\n return checkStatus(maxAttempts - 1);\n });\n }\n\n return res.terms;\n });\n };\n\n return checkStatus(MAX_ATTEMPTS);\n}\n\n/**\n * @static\n * @desc Creates an action that marks that we are about to fetch details of the\n * specified term. If any details for another term are currently being fetched,\n * they will be silently discarded.\n * @param {Number|String} termId\n * @return {Action}\n */\nfunction getTermDetailsInit(termId) {\n return _lodash2.default.toString(termId);\n}\n\n/**\n * @static\n * @desc Creates an action that fetches details of the specified term.\n * @param {Number|String} termId\n * @param {String} tokenV2\n * @return {Action}\n */\nfunction getTermDetailsDone(termId, tokenV2) {\n var service = (0, _terms.getService)(tokenV2);\n return service.getTermDetails(termId).then(function (details) {\n return { termId: termId, details: details };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of getting a DocuSign URL.\n * @param {Number|String} templateId id of document template to sign\n * @return {Action}\n */\nfunction getDocuSignUrlInit(templateId) {\n return _lodash2.default.toString(templateId);\n}\n\n/**\n * @static\n * @desc Creates an action that generates the url of DoduSign term\n * @param {Number|String} templateId id of document template to sign\n * @param {String} returnUrl callback url after finishing singing\n * @param {String} tokenV2 auth token\n * @return {Action}\n */\nfunction getDocuSignUrlDone(templateId, returnUrl, tokenV2) {\n var service = (0, _terms.getService)(tokenV2);\n return service.getDocuSignUrl(templateId, returnUrl).then(function (resp) {\n return { templateId: templateId, docuSignUrl: resp.recipientViewUrl };\n });\n}\n\n/**\n * @static\n * @desc Creates an action that signals beginning of terms agreement operation.\n * @param {Number|String} termId id of term\n * @return {Action}\n */\nfunction agreeTermInit(termId) {\n return _lodash2.default.toString(termId);\n}\n\n/**\n * @static\n * @desc Creates an action that agrees to a term.\n * @param {Number|String} termId id of term\n * @param {String} tokenV2 auth token\n * @return {Action}\n */\nfunction agreeTermDone(termId, tokenV2) {\n var service = (0, _terms.getService)(tokenV2);\n return service.agreeTerm(termId).then(function (resp) {\n return { termId: termId, success: resp.success };\n });\n}\n\nvar _default = (0, _reduxActions.createActions)({\n TERMS: {\n GET_TERMS_INIT: getTermsInit,\n GET_TERMS_DONE: getTermsDone,\n GET_TERM_DETAILS_INIT: getTermDetailsInit,\n GET_TERM_DETAILS_DONE: getTermDetailsDone,\n GET_DOCU_SIGN_URL_INIT: getDocuSignUrlInit,\n GET_DOCU_SIGN_URL_DONE: getDocuSignUrlDone,\n AGREE_TERM_INIT: agreeTermInit,\n AGREE_TERM_DONE: agreeTermDone,\n CHECK_STATUS_INIT: checkStatusInit,\n CHECK_STATUS_DONE: checkStatusDone\n }\n});\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getTermsInit, 'getTermsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getTermsDone, 'getTermsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(checkStatusInit, 'checkStatusInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(checkStatusDone, 'checkStatusDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getTermDetailsInit, 'getTermDetailsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getTermDetailsDone, 'getTermDetailsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getDocuSignUrlInit, 'getDocuSignUrlInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(getDocuSignUrlDone, 'getDocuSignUrlDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(agreeTermInit, 'agreeTermInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(agreeTermDone, 'agreeTermDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/actions/terms.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/actions/terms.js?"); /***/ }), @@ -616,7 +616,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.factory = undefined;\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\n/**\n * Creates a new reducer.\n * @param {Object} options={} Optional. Options for customization of initial\n * state.\n * @param {String} [options.auth.tokenV2=''] Optional. Topcoder v2 auth token.\n * @param {String} [options.auth.tokenV3=''] Optional. Topcoder v3 auth token.\n * @returns {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nvar factory = exports.factory = function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var state, a;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n state = {\n tokenV2: _lodash2.default.get(options.auth, 'tokenV2'),\n tokenV3: _lodash2.default.get(options.auth, 'tokenV3')\n };\n\n if (!state.tokenV3) {\n _context.next = 8;\n break;\n }\n\n state.user = (0, _tcAccounts.decodeToken)(state.tokenV3);\n a = _auth2.default.auth.loadProfile(state.tokenV3);\n _context.next = 6;\n return _topcoderReactUtils.redux.resolveAction(a);\n\n case 6:\n a = _context.sent;\n return _context.abrupt('return', create(onProfileLoaded(state, a)));\n\n case 8:\n return _context.abrupt('return', create(state));\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function factory() {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _tcAccounts = __webpack_require__(/*! tc-accounts */ \"tc-accounts\");\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _auth = __webpack_require__(/*! ../actions/auth */ \"./src/actions/auth.js\");\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _profile = __webpack_require__(/*! ../actions/profile */ \"./src/actions/profile.js\");\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.auth\"\n * @desc Reducer for {@link module:actions.auth} actions.\n *\n * State segment managed by this reducer has the following structure:\n * @param {Boolean} authenticating=true `true` if authentication is still in\n * progress; `false` if it has already completed or failed.\n * @param {Object} profile=null Topcoder user profile.\n * @param {String} tokenV2='' Topcoder v2 auth token.\n * @param {String} tokenV3='' Topcoder v3 auth token.\n * @param {Object} user=null Topcoder user object (user information stored in\n * v3 auth token).\n */\n\n/**\n * Handles actions.auth.loadProfile action.\n * @param {Object} state\n * @param {Object} action\n */\nfunction onProfileLoaded(state, action) {\n return (0, _extends3.default)({}, state, {\n authenticating: false,\n profile: action.payload\n });\n}\n\n/**\n * Creates a new Auth reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @param {Object} mergeReducers Optional. Reducers to merge.\n * @return {Function} Auth reducer.\n */\nfunction create(initialState) {\n var _redux$handleActions;\n\n return _topcoderReactUtils.redux.handleActions((_redux$handleActions = {}, (0, _defineProperty3.default)(_redux$handleActions, _auth2.default.auth.loadProfile, onProfileLoaded), (0, _defineProperty3.default)(_redux$handleActions, _auth2.default.auth.setTcTokenV2, function (state, action) {\n return (0, _extends3.default)({}, state, {\n tokenV2: action.payload\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _auth2.default.auth.setTcTokenV3, function (state, _ref) {\n var payload = _ref.payload;\n return (0, _extends3.default)({}, state, {\n tokenV3: payload,\n user: payload ? (0, _tcAccounts.decodeToken)(payload) : null\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, 'COMMUNITY_ACTIONS/TC_COMMUNITY/JOIN_DONE', function COMMUNITY_ACTIONSTC_COMMUNITYJOIN_DONE(state, _ref2) {\n var payload = _ref2.payload;\n return (0, _extends3.default)({}, state, {\n profile: (0, _extends3.default)({}, state.profile, {\n groups: state.profile.groups.concat({ id: payload.groupId.toString() })\n })\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _profile2.default.profile.uploadPhotoDone, function (state, _ref3) {\n var payload = _ref3.payload,\n error = _ref3.error;\n\n if (error) {\n return state;\n }\n if (!state.profile || state.profile.handle !== payload.handle) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n profile: (0, _extends3.default)({}, state.profile, {\n photoURL: payload.photoURL\n })\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _profile2.default.profile.deletePhotoDone, function (state, _ref4) {\n var payload = _ref4.payload,\n error = _ref4.error;\n\n if (error) {\n return state;\n }\n if (!state.profile || state.profile.handle !== payload.handle) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n profile: (0, _extends3.default)({}, state.profile, {\n photoURL: null\n })\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _profile2.default.profile.updateProfileDone, function (state, _ref5) {\n var payload = _ref5.payload,\n error = _ref5.error;\n\n if (error) {\n return state;\n }\n if (!state.profile || state.profile.handle !== payload.handle) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n profile: (0, _extends3.default)({}, state.profile, payload)\n });\n }), _redux$handleActions), _lodash2.default.defaults(initialState, {\n authenticating: true,\n profile: null,\n tokenV2: '',\n tokenV3: '',\n user: null\n }));\n}\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onProfileLoaded, 'onProfileLoaded', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/auth.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/auth.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/auth.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/auth.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/auth.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.factory = undefined;\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\n/**\n * Creates a new reducer.\n * @param {Object} options={} Optional. Options for customization of initial\n * state.\n * @param {String} [options.auth.tokenV2=''] Optional. Topcoder v2 auth token.\n * @param {String} [options.auth.tokenV3=''] Optional. Topcoder v3 auth token.\n * @returns {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nvar factory = exports.factory = function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var state, a;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n state = {\n tokenV2: _lodash2.default.get(options.auth, 'tokenV2'),\n tokenV3: _lodash2.default.get(options.auth, 'tokenV3')\n };\n\n if (!state.tokenV3) {\n _context.next = 8;\n break;\n }\n\n state.user = (0, _tcAccounts.decodeToken)(state.tokenV3);\n a = _auth2.default.auth.loadProfile(state.tokenV3);\n _context.next = 6;\n return _topcoderReactUtils.redux.resolveAction(a);\n\n case 6:\n a = _context.sent;\n return _context.abrupt('return', create(onProfileLoaded(state, a)));\n\n case 8:\n return _context.abrupt('return', create(state));\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function factory() {\n return _ref6.apply(this, arguments);\n };\n}();\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _tcAccounts = __webpack_require__(/*! tc-accounts */ \"tc-accounts\");\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _auth = __webpack_require__(/*! ../actions/auth */ \"./src/actions/auth.js\");\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _profile = __webpack_require__(/*! ../actions/profile */ \"./src/actions/profile.js\");\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.auth\"\n * @desc Reducer for {@link module:actions.auth} actions.\n *\n * State segment managed by this reducer has the following structure:\n * @param {Boolean} authenticating=true `true` if authentication is still in\n * progress; `false` if it has already completed or failed.\n * @param {Object} profile=null Topcoder user profile.\n * @param {String} tokenV2='' Topcoder v2 auth token.\n * @param {String} tokenV3='' Topcoder v3 auth token.\n * @param {Object} user=null Topcoder user object (user information stored in\n * v3 auth token).\n */\n\n/**\n * Handles actions.auth.loadProfile action.\n * @param {Object} state\n * @param {Object} action\n */\nfunction onProfileLoaded(state, action) {\n return (0, _extends3.default)({}, state, {\n authenticating: false,\n profile: action.payload\n });\n}\n\n/**\n * Creates a new Auth reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @param {Object} mergeReducers Optional. Reducers to merge.\n * @return {Function} Auth reducer.\n */\nfunction create(initialState) {\n var _redux$handleActions;\n\n return _topcoderReactUtils.redux.handleActions((_redux$handleActions = {}, (0, _defineProperty3.default)(_redux$handleActions, _auth2.default.auth.loadProfile, onProfileLoaded), (0, _defineProperty3.default)(_redux$handleActions, _auth2.default.auth.setTcTokenV2, function (state, action) {\n return (0, _extends3.default)({}, state, {\n tokenV2: action.payload\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _auth2.default.auth.setTcTokenV3, function (state, _ref) {\n var payload = _ref.payload;\n return (0, _extends3.default)({}, state, {\n tokenV3: payload,\n user: payload ? (0, _tcAccounts.decodeToken)(payload) : null\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, 'COMMUNITY_ACTIONS/TC_COMMUNITY/JOIN_DONE', function COMMUNITY_ACTIONSTC_COMMUNITYJOIN_DONE(state, _ref2) {\n var payload = _ref2.payload;\n return (0, _extends3.default)({}, state, {\n profile: (0, _extends3.default)({}, state.profile, {\n groups: state.profile.groups.concat({ id: payload.groupId.toString() })\n })\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _profile2.default.profile.uploadPhotoDone, function (state, _ref3) {\n var payload = _ref3.payload,\n error = _ref3.error;\n\n if (error) {\n return state;\n }\n if (!state.profile || state.profile.handle !== payload.handle) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n profile: (0, _extends3.default)({}, state.profile, {\n photoURL: payload.photoURL\n })\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _profile2.default.profile.deletePhotoDone, function (state, _ref4) {\n var payload = _ref4.payload,\n error = _ref4.error;\n\n if (error) {\n return state;\n }\n if (!state.profile || state.profile.handle !== payload.handle) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n profile: (0, _extends3.default)({}, state.profile, {\n photoURL: null\n })\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _profile2.default.profile.updateProfileDone, function (state, _ref5) {\n var payload = _ref5.payload,\n error = _ref5.error;\n\n if (error) {\n return state;\n }\n if (!state.profile || state.profile.handle !== payload.handle) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n profile: (0, _extends3.default)({}, state.profile, payload)\n });\n }), _redux$handleActions), _lodash2.default.defaults(initialState, {\n authenticating: true,\n profile: null,\n tokenV2: '',\n tokenV3: '',\n user: null\n }));\n}\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onProfileLoaded, 'onProfileLoaded', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/auth.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/auth.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/auth.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/auth.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/auth.js?"); /***/ }), @@ -628,7 +628,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _challenge = __webpack_require__(/*! ../actions/challenge */ \"./src/actions/challenge.js\");\n\nvar _challenge2 = _interopRequireDefault(_challenge);\n\nvar _smp = __webpack_require__(/*! ../actions/smp */ \"./src/actions/smp.js\");\n\nvar _smp2 = _interopRequireDefault(_smp);\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nvar _mySubmissionsManagement = __webpack_require__(/*! ./my-submissions-management */ \"./src/reducers/my-submissions-management.js\");\n\nvar _mySubmissionsManagement2 = _interopRequireDefault(_mySubmissionsManagement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.challenge\"\n * @desc Reducer for {@link module:actions.challenge} actions.\n *\n * State segment managed by this reducer has the following strcuture:\n * @todo Document the structure.\n */\n\n/**\n * Handles CHALLENGE/GET_DETAILS_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state\n */\nfunction onGetDetailsInit(state, action) {\n var challengeId = action.payload;\n return state.details && _lodash2.default.toString(state.details.id) !== challengeId ? (0, _extends3.default)({}, state, {\n fetchChallengeFailure: false,\n loadingDetailsForChallengeId: challengeId,\n details: null\n }) : (0, _extends3.default)({}, state, {\n fetchChallengeFailure: false,\n loadingDetailsForChallengeId: challengeId\n });\n}\n\n/**\n * Handles CHALLENGE/GET_DETAILS_DONE action.\n * Note, that it silently discards received details if the ID of received\n * challenge mismatches the one stored in loadingDetailsForChallengeId field\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetDetailsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get challenge details!', action.payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to load the challenge', 'Please, try again a bit later');\n return (0, _extends3.default)({}, state, {\n fetchChallengeFailure: action.error,\n loadingDetailsForChallengeId: ''\n });\n }\n\n var details = action.payload;\n if (_lodash2.default.toString(details.id) !== state.loadingDetailsForChallengeId) {\n return state;\n }\n\n return (0, _extends3.default)({}, state, {\n details: details,\n fetchChallengeFailure: false,\n loadingDetailsForChallengeId: ''\n });\n}\n\n/**\n * Handles CHALLENGE/GET_SUBMISSION_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetSubmissionsInit(state, action) {\n return (0, _extends3.default)({}, state, {\n loadingSubmissionsForChallengeId: action.payload,\n mySubmissions: { challengeId: '', v2: null }\n });\n}\n\n/**\n * Handles challengeActions.fetchSubmissionsDone action.\n * @param {Object} state Previous state.\n * @param {Object} action Action.\n */\nfunction onGetSubmissionsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get user\\'s submissions for the challenge', action.payload);\n return (0, _extends3.default)({}, state, {\n loadingSubmissionsForChallengeId: '',\n mySubmissions: { challengeId: '', v2: null }\n });\n }\n\n var _action$payload = action.payload,\n challengeId = _action$payload.challengeId,\n submissions = _action$payload.submissions;\n\n if (challengeId !== state.loadingSubmissionsForChallengeId) return state;\n\n return (0, _extends3.default)({}, state, {\n loadingSubmissionsForChallengeId: '',\n mySubmissions: { challengeId: challengeId, v2: submissions }\n });\n}\n\n/**\n * Handles CHALLENGE/GET_MM_SUBMISSION_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetMMSubmissionsInit(state, action) {\n return (0, _extends3.default)({}, state, {\n loadingMMSubmissionsForChallengeId: action.payload,\n mmSubmissions: []\n });\n}\n\n/**\n * Handles CHALLENGE/GET_MM_SUBMISSION_DONE action.\n * @param {Object} state Previous state.\n * @param {Object} action Action.\n */\nfunction onGetMMSubmissionsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get Marathon Match submissions for the challenge', action.payload);\n return (0, _extends3.default)({}, state, {\n loadingMMSubmissionsForChallengeId: '',\n mmSubmissions: []\n });\n }\n\n var _action$payload2 = action.payload,\n challengeId = _action$payload2.challengeId,\n submissions = _action$payload2.submissions;\n\n if (challengeId.toString() !== state.loadingMMSubmissionsForChallengeId) return state;\n return (0, _extends3.default)({}, state, {\n loadingMMSubmissionsForChallengeId: '',\n mmSubmissions: submissions\n });\n}\n\n/**\n * Handles challengeActions.fetchCheckpointsDone action.\n * @param {Object} state Previous state.\n * @param {Object} action Action.\n */\nfunction onFetchCheckpointsDone(state, action) {\n if (action.error) {\n return (0, _extends3.default)({}, state, {\n loadingCheckpoints: false\n });\n }\n if (state.details && state.details.id === action.payload.challengeId) {\n return (0, _extends3.default)({}, state, {\n checkpoints: action.payload.checkpoints,\n loadingCheckpoints: false\n });\n }\n return state;\n}\n\n/**\n * Handles CHALLENGE/LOAD_RESULTS_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object}\n */\nfunction onLoadResultsInit(state, _ref) {\n var payload = _ref.payload;\n\n return (0, _extends3.default)({}, state, { loadingResultsForChallengeId: payload });\n}\n\n/**\n * Handles CHALLENGE/LOAD_RESULTS_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object}\n */\nfunction onLoadResultsDone(state, action) {\n if (action.payload.challengeId !== state.loadingResultsForChallengeId) {\n return state;\n }\n if (action.error) {\n _logger2.default.error(action.payload);\n return (0, _extends3.default)({}, state, {\n loadingResultsForChallengeId: '',\n results: null,\n resultsLoadedForChallengeId: ''\n });\n }\n return (0, _extends3.default)({}, state, {\n loadingResultsForChallengeId: '',\n results: action.payload.results,\n resultsLoadedForChallengeId: action.payload.challengeId\n });\n}\n\n/**\n * Handles CHALLENGE/REGISTER_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object}\n */\nfunction onRegisterDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to register for the challenge!', action.payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to register for the challenge!');\n return (0, _extends3.default)({}, state, { registering: false });\n }\n /* As a part of registration flow we silently update challenge details,\n * reusing for this purpose the corresponding action handler. Thus, we\n * should also reuse corresponding reducer to generate proper state. */\n return onGetDetailsDone((0, _extends3.default)({}, state, {\n registering: false,\n loadingDetailsForChallengeId: _lodash2.default.toString(state.details.id)\n }), action);\n}\n\n/**\n * Handles CHALLENGE/UNREGISTER_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object}\n */\nfunction onUnregisterDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to register for the challenge!', action.payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to unregister for the challenge!');\n return (0, _extends3.default)({}, state, { unregistering: false });\n }\n /* As a part of unregistration flow we silently update challenge details,\n * reusing for this purpose the corresponding action handler. Thus, we\n * should also reuse corresponding reducer to generate proper state. */\n return onGetDetailsDone((0, _extends3.default)({}, state, {\n unregistering: false,\n loadingDetailsForChallengeId: _lodash2.default.toString(state.details.id)\n }), action);\n}\n\n/**\n * Handles CHALLENGE/UPDATE_CHALLENGE_INIT.\n * @param {Object} state Old state.\n * @param {Object} actions Action.\n * @return {Object} New state.\n */\nfunction onUpdateChallengeInit(state, _ref2) {\n var payload = _ref2.payload;\n\n return (0, _extends3.default)({}, state, { updatingChallengeUuid: payload });\n}\n\n/**\n * Handles CHALLENGE/UPDATE_CHALLENGE_DONE.\n * @param {Object} state Old state.\n * @param {Object} actions Action.\n * @return {Object} New state.\n */\nfunction onUpdateChallengeDone(state, _ref3) {\n var error = _ref3.error,\n payload = _ref3.payload;\n\n if (error) {\n (0, _errors.fireErrorMessage)('Failed to save the challenge!', '');\n _logger2.default.error('Failed to save the challenge', payload);\n return state;\n }\n if (payload.uuid !== state.updatingChallengeUuid) return state;\n\n /* Due to the normalization of challenge APIs responses done when a challenge\n * is loaded, many pieces of our code expect different information in a format\n * different from API v3 response, thus if we just save entire payload.res\n * into the Redux state segment, it will break our app. As a rapid fix, let's\n * just save only the data which are really supposed to be updated in the\n * current use case (editing of challenge specs). */\n var res = _lodash2.default.pick(payload.res, ['detailedRequirements', 'introduction', 'round1Introduction', 'round2Introduction', 'submissionGuidelines']);\n\n return (0, _extends3.default)({}, state, {\n details: (0, _extends3.default)({}, state.details, res),\n updatingChallengeUuid: ''\n });\n}\n\n/**\n * Handles CHALLENGE/GET_ACTIVE_CHALLENGES_COUNT_DONE action.\n * @param {Object} state Old state.\n * @param {Object} action Action payload/error\n * @return {Object} New state\n */\nfunction onGetActiveChallengesCountDone(state, _ref4) {\n var payload = _ref4.payload,\n error = _ref4.error;\n\n if (error) {\n (0, _errors.fireErrorMessage)('Failed to get active challenges count!', '');\n _logger2.default.error('Failed to get active challenges count', payload);\n return state;\n }\n\n return (0, _extends3.default)({}, state, { activeChallengesCount: payload });\n}\n\n/**\n * Handles CHALLENGE/GET_SUBMISSION_INFORMATION_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetSubmissionInformationInit(state, action) {\n return (0, _extends3.default)({}, state, {\n loadingSubmissionInformationForSubmissionId: action.payload,\n submissionInformation: null\n });\n}\n\n/**\n * Handles CHALLENGE/GET_SUBMISSION_INFORMATION_DONE action.\n * @param {Object} state Previous state.\n * @param {Object} action Action.\n */\nfunction onGetSubmissionInformationDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get submission information', action.payload);\n return (0, _extends3.default)({}, state, {\n loadingSubmissionInformationForSubmissionId: '',\n submissionInformation: null\n });\n }\n\n var _action$payload3 = action.payload,\n submissionId = _action$payload3.submissionId,\n submission = _action$payload3.submission;\n\n if (submissionId !== state.loadingSubmissionInformationForSubmissionId) return state;\n\n return (0, _extends3.default)({}, state, {\n loadingSubmissionInformationForSubmissionId: '',\n submissionInformation: submission\n });\n}\n\n/**\n * Creates a new Challenge reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Challenge reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n var a = _challenge2.default.challenge;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.dropCheckpoints, function (state) {\n return (0, _extends3.default)({}, state, { checkpoints: null });\n }), (0, _defineProperty3.default)(_handleActions, a.dropResults, function (state) {\n return (0, _extends3.default)({}, state, { results: null });\n }), (0, _defineProperty3.default)(_handleActions, a.getDetailsInit, onGetDetailsInit), (0, _defineProperty3.default)(_handleActions, a.getDetailsDone, onGetDetailsDone), (0, _defineProperty3.default)(_handleActions, a.getSubmissionsInit, onGetSubmissionsInit), (0, _defineProperty3.default)(_handleActions, a.getSubmissionsDone, onGetSubmissionsDone), (0, _defineProperty3.default)(_handleActions, a.getMmSubmissionsInit, onGetMMSubmissionsInit), (0, _defineProperty3.default)(_handleActions, a.getMmSubmissionsDone, onGetMMSubmissionsDone), (0, _defineProperty3.default)(_handleActions, _smp2.default.smp.deleteSubmissionDone, function (state, _ref5) {\n var payload = _ref5.payload;\n return (0, _extends3.default)({}, state, {\n mySubmissions: (0, _extends3.default)({}, state.mySubmissions, {\n v2: state.mySubmissions.v2.filter(function (subm) {\n return subm.submissionId !== payload;\n })\n })\n });\n }), (0, _defineProperty3.default)(_handleActions, a.registerInit, function (state) {\n return (0, _extends3.default)({}, state, { registering: true });\n }), (0, _defineProperty3.default)(_handleActions, a.registerDone, onRegisterDone), (0, _defineProperty3.default)(_handleActions, a.unregisterInit, function (state) {\n return (0, _extends3.default)({}, state, { unregistering: true });\n }), (0, _defineProperty3.default)(_handleActions, a.unregisterDone, onUnregisterDone), (0, _defineProperty3.default)(_handleActions, a.loadResultsInit, onLoadResultsInit), (0, _defineProperty3.default)(_handleActions, a.loadResultsDone, onLoadResultsDone), (0, _defineProperty3.default)(_handleActions, a.fetchCheckpointsInit, function (state) {\n return (0, _extends3.default)({}, state, {\n checkpoints: null,\n loadingCheckpoints: true\n });\n }), (0, _defineProperty3.default)(_handleActions, a.fetchCheckpointsDone, onFetchCheckpointsDone), (0, _defineProperty3.default)(_handleActions, a.updateChallengeInit, onUpdateChallengeInit), (0, _defineProperty3.default)(_handleActions, a.updateChallengeDone, onUpdateChallengeDone), (0, _defineProperty3.default)(_handleActions, a.getActiveChallengesCountInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getActiveChallengesCountDone, onGetActiveChallengesCountDone), (0, _defineProperty3.default)(_handleActions, a.getSubmissionInformationInit, onGetSubmissionInformationInit), (0, _defineProperty3.default)(_handleActions, a.getSubmissionInformationDone, onGetSubmissionInformationDone), _handleActions), _lodash2.default.defaults(initialState, {\n details: null,\n loadingCheckpoints: false,\n loadingDetailsForChallengeId: '',\n loadingResultsForChallengeId: '',\n loadingMMSubmissionsForChallengeId: '',\n loadingSubmissionInformationForSubmissionId: '',\n mySubmissions: {},\n checkpoints: null,\n registering: false,\n results: null,\n resultsLoadedForChallengeId: '',\n unregistering: false,\n updatingChallengeUuid: '',\n mmSubmissions: [],\n submissionInformation: null\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n *\n * @param {Object} options={} Optional. Factory options.\n * @param {String} [options.auth.tokenV2=''] Optional. Topcoder v2 auth token.\n * @param {String} [options.auth.tokenV3=''] Optional. Topcoder v3 auth token.\n * @param {String} [options.challenge.challengeDetails.id=''] Optional. ID of\n * the challenge to load details for.\n * @param {Boolean} [options.challenge.challengeDetails.mySubmission=false]\n * Optional. The flag indicates whether load my submission.\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n /* Server-side rendering of Submission Management Page. */\n\n /* TODO: This shares some common logic with the next \"if\" block, which\n * should be re-used there. */\n /* TODO: For completely server-side rendering it is also necessary to load\n * terms, etc. */\n\n var tokens = {\n tokenV2: _lodash2.default.get(options.auth, 'tokenV2'),\n tokenV3: _lodash2.default.get(options.auth, 'tokenV3')\n };\n\n var state = {};\n var challengeId = _lodash2.default.get(options, 'challenge.challengeDetails.id');\n var mySubmission = _lodash2.default.get(options, 'challenge.challengeDetails.mySubmission');\n\n if (challengeId && !mySubmission) {\n return _topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.getDetailsDone(challengeId, tokens.tokenV3, tokens.tokenV2)).then(function (details) {\n var track = _lodash2.default.get(details, 'payload.track', '').toLowerCase();\n var checkpointsPromise = track === 'design' ? _topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.fetchCheckpointsDone(tokens.tokenV2, challengeId)) : null;\n var resultsPromise = _lodash2.default.get(details, 'payload.status', '') === 'COMPLETED' ? _topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.loadResultsDone(tokens, challengeId, track)) : null;\n return _promise2.default.all([details, checkpointsPromise, resultsPromise]);\n }).then(function (_ref6) {\n var _ref7 = (0, _slicedToArray3.default)(_ref6, 3),\n details = _ref7[0],\n checkpoints = _ref7[1],\n results = _ref7[2];\n\n state = (0, _extends3.default)({}, state, {\n loadingCheckpoints: true,\n loadingDetailsForChallengeId: challengeId,\n loadingResultsForChallengeId: challengeId\n });\n state = onGetDetailsDone(state, details);\n if (checkpoints) state = onFetchCheckpointsDone(state, checkpoints);\n if (results) state = onLoadResultsDone(state, results);\n return state;\n }).then(function (res) {\n return _topcoderReactUtils.redux.combineReducers(create(res), { mySubmissionsManagement: _mySubmissionsManagement2.default });\n });\n }\n\n if (challengeId && mySubmission) {\n return _promise2.default.all([_topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.getDetailsDone(challengeId, tokens.tokenV3, tokens.tokenV2)), _topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.getSubmissionsDone(challengeId, tokens.tokenV2))]).then(function (_ref8) {\n var _ref9 = (0, _slicedToArray3.default)(_ref8, 2),\n challenge = _ref9[0],\n submissions = _ref9[1];\n\n state = (0, _extends3.default)({}, state, {\n loadingSubmissionsForChallengeId: challengeId,\n loadingDetailsForChallengeId: challengeId\n });\n state = onGetDetailsDone(state, challenge);\n return onGetSubmissionsDone(state, submissions);\n }).then(function (res) {\n return _topcoderReactUtils.redux.combineReducers(create(res), { mySubmissionsManagement: _mySubmissionsManagement2.default });\n });\n }\n\n /* Otherwise this part of Redux state is initialized empty. */\n return _promise2.default.resolve(_topcoderReactUtils.redux.combineReducers(create(state), { mySubmissionsManagement: _mySubmissionsManagement2.default }));\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default intial state.\n */\n\nvar _default = _topcoderReactUtils.redux.combineReducers(create(), { mySubmissionsManagement: _mySubmissionsManagement2.default });\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetDetailsInit, 'onGetDetailsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetDetailsDone, 'onGetDetailsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetSubmissionsInit, 'onGetSubmissionsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetSubmissionsDone, 'onGetSubmissionsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetMMSubmissionsInit, 'onGetMMSubmissionsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetMMSubmissionsDone, 'onGetMMSubmissionsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onFetchCheckpointsDone, 'onFetchCheckpointsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onLoadResultsInit, 'onLoadResultsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onLoadResultsDone, 'onLoadResultsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onRegisterDone, 'onRegisterDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onUnregisterDone, 'onUnregisterDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onUpdateChallengeInit, 'onUpdateChallengeInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onUpdateChallengeDone, 'onUpdateChallengeDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetActiveChallengesCountDone, 'onGetActiveChallengesCountDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetSubmissionInformationInit, 'onGetSubmissionInformationInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetSubmissionInformationDone, 'onGetSubmissionInformationDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/challenge.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/challenge.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _challenge = __webpack_require__(/*! ../actions/challenge */ \"./src/actions/challenge.js\");\n\nvar _challenge2 = _interopRequireDefault(_challenge);\n\nvar _smp = __webpack_require__(/*! ../actions/smp */ \"./src/actions/smp.js\");\n\nvar _smp2 = _interopRequireDefault(_smp);\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nvar _mySubmissionsManagement = __webpack_require__(/*! ./my-submissions-management */ \"./src/reducers/my-submissions-management.js\");\n\nvar _mySubmissionsManagement2 = _interopRequireDefault(_mySubmissionsManagement);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.challenge\"\n * @desc Reducer for {@link module:actions.challenge} actions.\n *\n * State segment managed by this reducer has the following strcuture:\n * @todo Document the structure.\n */\n\n/**\n * Handles CHALLENGE/GET_DETAILS_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state\n */\nfunction onGetDetailsInit(state, action) {\n var challengeId = action.payload;\n return state.details && _lodash2.default.toString(state.details.id) !== challengeId ? (0, _extends3.default)({}, state, {\n fetchChallengeFailure: false,\n loadingDetailsForChallengeId: challengeId,\n details: null\n }) : (0, _extends3.default)({}, state, {\n fetchChallengeFailure: false,\n loadingDetailsForChallengeId: challengeId\n });\n}\n\n/**\n * Handles CHALLENGE/GET_DETAILS_DONE action.\n * Note, that it silently discards received details if the ID of received\n * challenge mismatches the one stored in loadingDetailsForChallengeId field\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetDetailsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get challenge details!', action.payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to load the challenge', 'Please, try again a bit later');\n return (0, _extends3.default)({}, state, {\n fetchChallengeFailure: action.error,\n loadingDetailsForChallengeId: ''\n });\n }\n\n var details = action.payload;\n if (_lodash2.default.toString(details.id) !== state.loadingDetailsForChallengeId) {\n return state;\n }\n\n return (0, _extends3.default)({}, state, {\n details: details,\n fetchChallengeFailure: false,\n loadingDetailsForChallengeId: ''\n });\n}\n\n/**\n * Handles CHALLENGE/GET_SUBMISSION_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetSubmissionsInit(state, action) {\n return (0, _extends3.default)({}, state, {\n loadingSubmissionsForChallengeId: action.payload,\n mySubmissions: { challengeId: '', v2: null }\n });\n}\n\n/**\n * Handles challengeActions.fetchSubmissionsDone action.\n * @param {Object} state Previous state.\n * @param {Object} action Action.\n */\nfunction onGetSubmissionsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get user\\'s submissions for the challenge', action.payload);\n return (0, _extends3.default)({}, state, {\n loadingSubmissionsForChallengeId: '',\n mySubmissions: { challengeId: '', v2: null }\n });\n }\n\n var _action$payload = action.payload,\n challengeId = _action$payload.challengeId,\n submissions = _action$payload.submissions;\n\n if (challengeId !== state.loadingSubmissionsForChallengeId) return state;\n\n return (0, _extends3.default)({}, state, {\n loadingSubmissionsForChallengeId: '',\n mySubmissions: { challengeId: challengeId, v2: submissions }\n });\n}\n\n/**\n * Handles CHALLENGE/GET_MM_SUBMISSION_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetMMSubmissionsInit(state, action) {\n return (0, _extends3.default)({}, state, {\n loadingMMSubmissionsForChallengeId: action.payload,\n mmSubmissions: []\n });\n}\n\n/**\n * Handles CHALLENGE/GET_MM_SUBMISSION_DONE action.\n * @param {Object} state Previous state.\n * @param {Object} action Action.\n */\nfunction onGetMMSubmissionsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get Marathon Match submissions for the challenge', action.payload);\n return (0, _extends3.default)({}, state, {\n loadingMMSubmissionsForChallengeId: '',\n mmSubmissions: []\n });\n }\n\n var _action$payload2 = action.payload,\n challengeId = _action$payload2.challengeId,\n submissions = _action$payload2.submissions;\n\n if (challengeId.toString() !== state.loadingMMSubmissionsForChallengeId) return state;\n return (0, _extends3.default)({}, state, {\n loadingMMSubmissionsForChallengeId: '',\n mmSubmissions: submissions\n });\n}\n\n/**\n * Handles challengeActions.fetchCheckpointsDone action.\n * @param {Object} state Previous state.\n * @param {Object} action Action.\n */\nfunction onFetchCheckpointsDone(state, action) {\n if (action.error) {\n return (0, _extends3.default)({}, state, {\n loadingCheckpoints: false\n });\n }\n if (state.details && state.details.id === action.payload.challengeId) {\n return (0, _extends3.default)({}, state, {\n checkpoints: action.payload.checkpoints,\n loadingCheckpoints: false\n });\n }\n return state;\n}\n\n/**\n * Handles CHALLENGE/LOAD_RESULTS_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object}\n */\nfunction onLoadResultsInit(state, _ref) {\n var payload = _ref.payload;\n\n return (0, _extends3.default)({}, state, { loadingResultsForChallengeId: payload });\n}\n\n/**\n * Handles CHALLENGE/LOAD_RESULTS_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object}\n */\nfunction onLoadResultsDone(state, action) {\n if (action.payload.challengeId !== state.loadingResultsForChallengeId) {\n return state;\n }\n if (action.error) {\n _logger2.default.error(action.payload);\n return (0, _extends3.default)({}, state, {\n loadingResultsForChallengeId: '',\n results: null,\n resultsLoadedForChallengeId: ''\n });\n }\n return (0, _extends3.default)({}, state, {\n loadingResultsForChallengeId: '',\n results: action.payload.results,\n resultsLoadedForChallengeId: action.payload.challengeId\n });\n}\n\n/**\n * Handles CHALLENGE/REGISTER_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object}\n */\nfunction onRegisterDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to register for the challenge!', action.payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to register for the challenge!');\n return (0, _extends3.default)({}, state, { registering: false });\n }\n /* As a part of registration flow we silently update challenge details,\n * reusing for this purpose the corresponding action handler. Thus, we\n * should also reuse corresponding reducer to generate proper state. */\n return onGetDetailsDone((0, _extends3.default)({}, state, {\n registering: false,\n loadingDetailsForChallengeId: _lodash2.default.toString(state.details.id)\n }), action);\n}\n\n/**\n * Handles CHALLENGE/UNREGISTER_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object}\n */\nfunction onUnregisterDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to register for the challenge!', action.payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to unregister for the challenge!');\n return (0, _extends3.default)({}, state, { unregistering: false });\n }\n /* As a part of unregistration flow we silently update challenge details,\n * reusing for this purpose the corresponding action handler. Thus, we\n * should also reuse corresponding reducer to generate proper state. */\n return onGetDetailsDone((0, _extends3.default)({}, state, {\n unregistering: false,\n loadingDetailsForChallengeId: _lodash2.default.toString(state.details.id)\n }), action);\n}\n\n/**\n * Handles CHALLENGE/UPDATE_CHALLENGE_INIT.\n * @param {Object} state Old state.\n * @param {Object} actions Action.\n * @return {Object} New state.\n */\nfunction onUpdateChallengeInit(state, _ref2) {\n var payload = _ref2.payload;\n\n return (0, _extends3.default)({}, state, { updatingChallengeUuid: payload });\n}\n\n/**\n * Handles CHALLENGE/UPDATE_CHALLENGE_DONE.\n * @param {Object} state Old state.\n * @param {Object} actions Action.\n * @return {Object} New state.\n */\nfunction onUpdateChallengeDone(state, _ref3) {\n var error = _ref3.error,\n payload = _ref3.payload;\n\n if (error) {\n (0, _errors.fireErrorMessage)('Failed to save the challenge!', '');\n _logger2.default.error('Failed to save the challenge', payload);\n return state;\n }\n if (payload.uuid !== state.updatingChallengeUuid) return state;\n\n /* Due to the normalization of challenge APIs responses done when a challenge\n * is loaded, many pieces of our code expect different information in a format\n * different from API v3 response, thus if we just save entire payload.res\n * into the Redux state segment, it will break our app. As a rapid fix, let's\n * just save only the data which are really supposed to be updated in the\n * current use case (editing of challenge specs). */\n var res = _lodash2.default.pick(payload.res, ['detailedRequirements', 'introduction', 'round1Introduction', 'round2Introduction', 'submissionGuidelines']);\n\n return (0, _extends3.default)({}, state, {\n details: (0, _extends3.default)({}, state.details, res),\n updatingChallengeUuid: ''\n });\n}\n\n/**\n * Handles CHALLENGE/GET_ACTIVE_CHALLENGES_COUNT_DONE action.\n * @param {Object} state Old state.\n * @param {Object} action Action payload/error\n * @return {Object} New state\n */\nfunction onGetActiveChallengesCountDone(state, _ref4) {\n var payload = _ref4.payload,\n error = _ref4.error;\n\n if (error) {\n (0, _errors.fireErrorMessage)('Failed to get active challenges count!', '');\n _logger2.default.error('Failed to get active challenges count', payload);\n return state;\n }\n\n return (0, _extends3.default)({}, state, { activeChallengesCount: payload });\n}\n\n/**\n * Handles CHALLENGE/GET_SUBMISSION_INFORMATION_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetSubmissionInformationInit(state, action) {\n return (0, _extends3.default)({}, state, {\n loadingSubmissionInformationForSubmissionId: action.payload,\n submissionInformation: null\n });\n}\n\n/**\n * Handles CHALLENGE/GET_SUBMISSION_INFORMATION_DONE action.\n * @param {Object} state Previous state.\n * @param {Object} action Action.\n */\nfunction onGetSubmissionInformationDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get submission information', action.payload);\n return (0, _extends3.default)({}, state, {\n loadingSubmissionInformationForSubmissionId: '',\n submissionInformation: null\n });\n }\n\n var _action$payload3 = action.payload,\n submissionId = _action$payload3.submissionId,\n submission = _action$payload3.submission;\n\n if (submissionId !== state.loadingSubmissionInformationForSubmissionId) return state;\n\n return (0, _extends3.default)({}, state, {\n loadingSubmissionInformationForSubmissionId: '',\n submissionInformation: submission\n });\n}\n\n/**\n * Creates a new Challenge reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Challenge reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n var a = _challenge2.default.challenge;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.dropCheckpoints, function (state) {\n return (0, _extends3.default)({}, state, { checkpoints: null });\n }), (0, _defineProperty3.default)(_handleActions, a.dropResults, function (state) {\n return (0, _extends3.default)({}, state, { results: null });\n }), (0, _defineProperty3.default)(_handleActions, a.getDetailsInit, onGetDetailsInit), (0, _defineProperty3.default)(_handleActions, a.getDetailsDone, onGetDetailsDone), (0, _defineProperty3.default)(_handleActions, a.getSubmissionsInit, onGetSubmissionsInit), (0, _defineProperty3.default)(_handleActions, a.getSubmissionsDone, onGetSubmissionsDone), (0, _defineProperty3.default)(_handleActions, a.getMmSubmissionsInit, onGetMMSubmissionsInit), (0, _defineProperty3.default)(_handleActions, a.getMmSubmissionsDone, onGetMMSubmissionsDone), (0, _defineProperty3.default)(_handleActions, _smp2.default.smp.deleteSubmissionDone, function (state, _ref5) {\n var payload = _ref5.payload;\n return (0, _extends3.default)({}, state, {\n mySubmissions: (0, _extends3.default)({}, state.mySubmissions, {\n v2: state.mySubmissions.v2.filter(function (subm) {\n return subm.submissionId !== payload;\n })\n })\n });\n }), (0, _defineProperty3.default)(_handleActions, a.registerInit, function (state) {\n return (0, _extends3.default)({}, state, { registering: true });\n }), (0, _defineProperty3.default)(_handleActions, a.registerDone, onRegisterDone), (0, _defineProperty3.default)(_handleActions, a.unregisterInit, function (state) {\n return (0, _extends3.default)({}, state, { unregistering: true });\n }), (0, _defineProperty3.default)(_handleActions, a.unregisterDone, onUnregisterDone), (0, _defineProperty3.default)(_handleActions, a.loadResultsInit, onLoadResultsInit), (0, _defineProperty3.default)(_handleActions, a.loadResultsDone, onLoadResultsDone), (0, _defineProperty3.default)(_handleActions, a.fetchCheckpointsInit, function (state) {\n return (0, _extends3.default)({}, state, {\n checkpoints: null,\n loadingCheckpoints: true\n });\n }), (0, _defineProperty3.default)(_handleActions, a.fetchCheckpointsDone, onFetchCheckpointsDone), (0, _defineProperty3.default)(_handleActions, a.updateChallengeInit, onUpdateChallengeInit), (0, _defineProperty3.default)(_handleActions, a.updateChallengeDone, onUpdateChallengeDone), (0, _defineProperty3.default)(_handleActions, a.getActiveChallengesCountInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getActiveChallengesCountDone, onGetActiveChallengesCountDone), (0, _defineProperty3.default)(_handleActions, a.getSubmissionInformationInit, onGetSubmissionInformationInit), (0, _defineProperty3.default)(_handleActions, a.getSubmissionInformationDone, onGetSubmissionInformationDone), _handleActions), _lodash2.default.defaults(initialState, {\n details: null,\n loadingCheckpoints: false,\n loadingDetailsForChallengeId: '',\n loadingResultsForChallengeId: '',\n loadingMMSubmissionsForChallengeId: '',\n loadingSubmissionInformationForSubmissionId: '',\n mySubmissions: {},\n checkpoints: null,\n registering: false,\n results: null,\n resultsLoadedForChallengeId: '',\n unregistering: false,\n updatingChallengeUuid: '',\n mmSubmissions: [],\n submissionInformation: null\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n *\n * @param {Object} options={} Optional. Factory options.\n * @param {String} [options.auth.tokenV2=''] Optional. Topcoder v2 auth token.\n * @param {String} [options.auth.tokenV3=''] Optional. Topcoder v3 auth token.\n * @param {String} [options.challenge.challengeDetails.id=''] Optional. ID of\n * the challenge to load details for.\n * @param {Boolean} [options.challenge.challengeDetails.mySubmission=false]\n * Optional. The flag indicates whether load my submission.\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n /* Server-side rendering of Submission Management Page. */\n\n /* TODO: This shares some common logic with the next \"if\" block, which\n * should be re-used there. */\n /* TODO: For completely server-side rendering it is also necessary to load\n * terms, etc. */\n\n var tokens = {\n tokenV2: _lodash2.default.get(options.auth, 'tokenV2'),\n tokenV3: _lodash2.default.get(options.auth, 'tokenV3')\n };\n\n var state = {};\n var challengeId = _lodash2.default.get(options, 'challenge.challengeDetails.id');\n var mySubmission = _lodash2.default.get(options, 'challenge.challengeDetails.mySubmission');\n\n if (challengeId && !mySubmission) {\n return _topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.getDetailsDone(challengeId, tokens.tokenV3, tokens.tokenV2)).then(function (details) {\n var track = _lodash2.default.get(details, 'payload.track', '').toLowerCase();\n var checkpointsPromise = track === 'design' ? _topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.fetchCheckpointsDone(tokens.tokenV2, challengeId)) : null;\n var resultsPromise = _lodash2.default.get(details, 'payload.status', '') === 'COMPLETED' ? _topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.loadResultsDone(tokens, challengeId, track)) : null;\n return _promise2.default.all([details, checkpointsPromise, resultsPromise]);\n }).then(function (_ref6) {\n var _ref7 = (0, _slicedToArray3.default)(_ref6, 3),\n details = _ref7[0],\n checkpoints = _ref7[1],\n results = _ref7[2];\n\n state = (0, _extends3.default)({}, state, {\n loadingCheckpoints: true,\n loadingDetailsForChallengeId: challengeId,\n loadingResultsForChallengeId: challengeId\n });\n state = onGetDetailsDone(state, details);\n if (checkpoints) state = onFetchCheckpointsDone(state, checkpoints);\n if (results) state = onLoadResultsDone(state, results);\n return state;\n }).then(function (res) {\n return _topcoderReactUtils.redux.combineReducers(create(res), { mySubmissionsManagement: _mySubmissionsManagement2.default });\n });\n }\n\n if (challengeId && mySubmission) {\n return _promise2.default.all([_topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.getDetailsDone(challengeId, tokens.tokenV3, tokens.tokenV2)), _topcoderReactUtils.redux.resolveAction(_challenge2.default.challenge.getSubmissionsDone(challengeId, tokens.tokenV2))]).then(function (_ref8) {\n var _ref9 = (0, _slicedToArray3.default)(_ref8, 2),\n challenge = _ref9[0],\n submissions = _ref9[1];\n\n state = (0, _extends3.default)({}, state, {\n loadingSubmissionsForChallengeId: challengeId,\n loadingDetailsForChallengeId: challengeId\n });\n state = onGetDetailsDone(state, challenge);\n return onGetSubmissionsDone(state, submissions);\n }).then(function (res) {\n return _topcoderReactUtils.redux.combineReducers(create(res), { mySubmissionsManagement: _mySubmissionsManagement2.default });\n });\n }\n\n /* Otherwise this part of Redux state is initialized empty. */\n return _promise2.default.resolve(_topcoderReactUtils.redux.combineReducers(create(state), { mySubmissionsManagement: _mySubmissionsManagement2.default }));\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default intial state.\n */\n\nvar _default = _topcoderReactUtils.redux.combineReducers(create(), { mySubmissionsManagement: _mySubmissionsManagement2.default });\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetDetailsInit, 'onGetDetailsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetDetailsDone, 'onGetDetailsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetSubmissionsInit, 'onGetSubmissionsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetSubmissionsDone, 'onGetSubmissionsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetMMSubmissionsInit, 'onGetMMSubmissionsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetMMSubmissionsDone, 'onGetMMSubmissionsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onFetchCheckpointsDone, 'onFetchCheckpointsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onLoadResultsInit, 'onLoadResultsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onLoadResultsDone, 'onLoadResultsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onRegisterDone, 'onRegisterDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onUnregisterDone, 'onUnregisterDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onUpdateChallengeInit, 'onUpdateChallengeInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onUpdateChallengeDone, 'onUpdateChallengeDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetActiveChallengesCountDone, 'onGetActiveChallengesCountDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetSubmissionInformationInit, 'onGetSubmissionInformationInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(onGetSubmissionInformationDone, 'onGetSubmissionInformationDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/challenge.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/challenge.js?"); /***/ }), @@ -640,7 +640,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _tcAccounts = __webpack_require__(/*! tc-accounts */ \"tc-accounts\");\n\nvar _direct = __webpack_require__(/*! ../actions/direct */ \"./src/actions/direct.js\");\n\nvar _direct2 = _interopRequireDefault(_direct);\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.direct\"\n * @desc Reducer for handling the results of Direct-related actions.\n * @todo Document state segment structure.\n */\n\nvar ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN = 'Cannot get user projects without auth token';\n\n/**\n * Drops out all data and cancels any ongoing data loading related to this\n * reducer.\n * @param {Object} state\n * @return {Object} New state.\n */\nfunction onDropAll(state) {\n return (0, _extends3.default)({}, state, {\n loadingProjectDetailsForId: 0,\n loadingProjectsForUsername: '',\n projectDetails: {},\n projects: []\n });\n}\n\n/**\n * Inits loading of the specified project, cancelling the ongoing loading of\n * project details, if any.\n * @param {Object} state\n * @param {Object} action Its payload is the projectId.\n * @return {Object} New state.\n */\nfunction onGetProjectDetailsInit(state, _ref) {\n var payload = _ref.payload;\n\n return (0, _extends3.default)({}, state, {\n loadingProjectDetailsForId: payload\n });\n}\n\n/**\n * Stores loaded project details to the state.\n * @param {Object} state\n * @param {Object} action Its payload is the project details object.\n * @return {Object} New state.\n */\nfunction onGetProjectDetailsDone(state, _ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n if (error) {\n _logger2.default.error('Failed to load project details', payload);\n throw payload;\n }\n if (payload.project.projectId !== state.loadingProjectDetailsForId) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n loadingProjectDetailsForId: 0,\n projectDetails: payload\n });\n}\n\n/**\n * Handler for the GET_PROJECT_PERMISSIONS_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetProjectPermissionsInit(state, _ref3) {\n var payload = _ref3.payload;\n\n var projectPermissions = (0, _extends3.default)({}, state.projectPermissions, {\n loadingForProjectId: payload\n });\n return (0, _extends3.default)({}, state, { projectPermissions: projectPermissions });\n}\n\n/**\n * Handler for the GET_PROJECT_PERMISSIONS_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetProjectPermissionsDone(state, _ref4) {\n var error = _ref4.error,\n payload = _ref4.payload;\n\n if (error) {\n (0, _errors.fireErrorMessage)('Failed to load project permissions', '');\n _logger2.default.error('Failed to load project permissions', payload);\n }\n var permissions = payload.permissions,\n projectId = payload.projectId;\n\n if (projectId !== state.projectPermissions.loadingForProjectId) return state;\n var projectPermissions = {\n loadingForProjectId: 0,\n permissions: permissions,\n projectId: projectId,\n timestamp: Date.now()\n };\n return (0, _extends3.default)({}, state, { projectPermissions: projectPermissions });\n}\n\n/**\n * Handles initialization of projects loading.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserProjectsInit(state, _ref5) {\n var tokenV3 = _ref5.payload;\n\n if (!tokenV3) {\n _logger2.default.error(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN);\n throw new Error(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN);\n }\n return (0, _extends3.default)({}, state, {\n loadingProjectsForUsername: (0, _tcAccounts.decodeToken)(tokenV3).handle\n });\n}\n\n/**\n * Handles the result of projects loading.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserProjectsDone(state, _ref6) {\n var error = _ref6.error,\n payload = _ref6.payload;\n\n if (error) {\n _logger2.default.error(payload);\n throw payload;\n }\n var projects = payload.projects,\n tokenV3 = payload.tokenV3;\n\n if (!tokenV3) {\n _logger2.default.error(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN);\n throw new Error(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN);\n }\n if ((0, _tcAccounts.decodeToken)(tokenV3).handle !== state.loadingProjectsForUsername) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n loadingProjectsForUsername: '',\n projects: projects.sort(function (a, b) {\n return a.name.localeCompare(b.name);\n })\n });\n}\n\n/**\n * Creates a new Direct reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @param {Object} mergeReducers Optional. Reducers to merge.\n * @return {Function} Direct reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _direct2.default.direct;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.dropAll, onDropAll), (0, _defineProperty3.default)(_handleActions, a.getProjectDetailsInit, onGetProjectDetailsInit), (0, _defineProperty3.default)(_handleActions, a.getProjectDetailsDone, onGetProjectDetailsDone), (0, _defineProperty3.default)(_handleActions, a.getProjectPermissionsInit, onGetProjectPermissionsInit), (0, _defineProperty3.default)(_handleActions, a.getProjectPermissionsDone, onGetProjectPermissionsDone), (0, _defineProperty3.default)(_handleActions, a.getUserProjectsInit, onGetUserProjectsInit), (0, _defineProperty3.default)(_handleActions, a.getUserProjectsDone, onGetUserProjectsDone), _handleActions), _lodash2.default.defaults(initialState, {\n /* If we are loading details of some project, this field holds the project\n * ID; zero otherwise. */\n loadingProjectDetailsForId: 0,\n\n /* Holds username of the user which projects are being loaded; empty\n * string if nothing is being loaded at the moment. */\n loadingProjectsForUsername: '',\n\n /* Holds details of some project, or an empty object. */\n projectDetails: {},\n\n projectPermissions: {\n loadingForProjectId: 0,\n permissions: [],\n projectId: 0,\n timestamp: 0\n },\n\n /* Holds the array of loaded projects. */\n projects: []\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN, 'ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onDropAll, 'onDropAll', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetProjectDetailsInit, 'onGetProjectDetailsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetProjectDetailsDone, 'onGetProjectDetailsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetProjectPermissionsInit, 'onGetProjectPermissionsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetProjectPermissionsDone, 'onGetProjectPermissionsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetUserProjectsInit, 'onGetUserProjectsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetUserProjectsDone, 'onGetUserProjectsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/direct.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/direct.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _tcAccounts = __webpack_require__(/*! tc-accounts */ \"tc-accounts\");\n\nvar _direct = __webpack_require__(/*! ../actions/direct */ \"./src/actions/direct.js\");\n\nvar _direct2 = _interopRequireDefault(_direct);\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.direct\"\n * @desc Reducer for handling the results of Direct-related actions.\n * @todo Document state segment structure.\n */\n\nvar ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN = 'Cannot get user projects without auth token';\n\n/**\n * Drops out all data and cancels any ongoing data loading related to this\n * reducer.\n * @param {Object} state\n * @return {Object} New state.\n */\nfunction onDropAll(state) {\n return (0, _extends3.default)({}, state, {\n loadingProjectDetailsForId: 0,\n loadingProjectsForUsername: '',\n projectDetails: {},\n projects: []\n });\n}\n\n/**\n * Inits loading of the specified project, cancelling the ongoing loading of\n * project details, if any.\n * @param {Object} state\n * @param {Object} action Its payload is the projectId.\n * @return {Object} New state.\n */\nfunction onGetProjectDetailsInit(state, _ref) {\n var payload = _ref.payload;\n\n return (0, _extends3.default)({}, state, {\n loadingProjectDetailsForId: payload\n });\n}\n\n/**\n * Stores loaded project details to the state.\n * @param {Object} state\n * @param {Object} action Its payload is the project details object.\n * @return {Object} New state.\n */\nfunction onGetProjectDetailsDone(state, _ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n if (error) {\n _logger2.default.error('Failed to load project details', payload);\n throw payload;\n }\n if (payload.project.projectId !== state.loadingProjectDetailsForId) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n loadingProjectDetailsForId: 0,\n projectDetails: payload\n });\n}\n\n/**\n * Handler for the GET_PROJECT_PERMISSIONS_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetProjectPermissionsInit(state, _ref3) {\n var payload = _ref3.payload;\n\n var projectPermissions = (0, _extends3.default)({}, state.projectPermissions, {\n loadingForProjectId: payload\n });\n return (0, _extends3.default)({}, state, { projectPermissions: projectPermissions });\n}\n\n/**\n * Handler for the GET_PROJECT_PERMISSIONS_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetProjectPermissionsDone(state, _ref4) {\n var error = _ref4.error,\n payload = _ref4.payload;\n\n if (error) {\n (0, _errors.fireErrorMessage)('Failed to load project permissions', '');\n _logger2.default.error('Failed to load project permissions', payload);\n }\n var permissions = payload.permissions,\n projectId = payload.projectId;\n\n if (projectId !== state.projectPermissions.loadingForProjectId) return state;\n var projectPermissions = {\n loadingForProjectId: 0,\n permissions: permissions,\n projectId: projectId,\n timestamp: Date.now()\n };\n return (0, _extends3.default)({}, state, { projectPermissions: projectPermissions });\n}\n\n/**\n * Handles initialization of projects loading.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserProjectsInit(state, _ref5) {\n var tokenV3 = _ref5.payload;\n\n if (!tokenV3) {\n _logger2.default.error(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN);\n throw new Error(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN);\n }\n return (0, _extends3.default)({}, state, {\n loadingProjectsForUsername: (0, _tcAccounts.decodeToken)(tokenV3).handle\n });\n}\n\n/**\n * Handles the result of projects loading.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserProjectsDone(state, _ref6) {\n var error = _ref6.error,\n payload = _ref6.payload;\n\n if (error) {\n _logger2.default.error(payload);\n throw payload;\n }\n var projects = payload.projects,\n tokenV3 = payload.tokenV3;\n\n if (!tokenV3) {\n _logger2.default.error(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN);\n throw new Error(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN);\n }\n if ((0, _tcAccounts.decodeToken)(tokenV3).handle !== state.loadingProjectsForUsername) {\n return state;\n }\n return (0, _extends3.default)({}, state, {\n loadingProjectsForUsername: '',\n projects: projects.sort(function (a, b) {\n return a.name.localeCompare(b.name);\n })\n });\n}\n\n/**\n * Creates a new Direct reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @param {Object} mergeReducers Optional. Reducers to merge.\n * @return {Function} Direct reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _direct2.default.direct;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.dropAll, onDropAll), (0, _defineProperty3.default)(_handleActions, a.getProjectDetailsInit, onGetProjectDetailsInit), (0, _defineProperty3.default)(_handleActions, a.getProjectDetailsDone, onGetProjectDetailsDone), (0, _defineProperty3.default)(_handleActions, a.getProjectPermissionsInit, onGetProjectPermissionsInit), (0, _defineProperty3.default)(_handleActions, a.getProjectPermissionsDone, onGetProjectPermissionsDone), (0, _defineProperty3.default)(_handleActions, a.getUserProjectsInit, onGetUserProjectsInit), (0, _defineProperty3.default)(_handleActions, a.getUserProjectsDone, onGetUserProjectsDone), _handleActions), _lodash2.default.defaults(initialState, {\n /* If we are loading details of some project, this field holds the project\n * ID; zero otherwise. */\n loadingProjectDetailsForId: 0,\n\n /* Holds username of the user which projects are being loaded; empty\n * string if nothing is being loaded at the moment. */\n loadingProjectsForUsername: '',\n\n /* Holds details of some project, or an empty object. */\n projectDetails: {},\n\n projectPermissions: {\n loadingForProjectId: 0,\n permissions: [],\n projectId: 0,\n timestamp: 0\n },\n\n /* Holds the array of loaded projects. */\n projects: []\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN, 'ERROR_MSG_GET_USER_PROJECTS_WITHOUT_AUTH_TOKEN', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onDropAll, 'onDropAll', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetProjectDetailsInit, 'onGetProjectDetailsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetProjectDetailsDone, 'onGetProjectDetailsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetProjectPermissionsInit, 'onGetProjectPermissionsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetProjectPermissionsDone, 'onGetProjectPermissionsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetUserProjectsInit, 'onGetUserProjectsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(onGetUserProjectsDone, 'onGetUserProjectsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/direct.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/direct.js?"); /***/ }), @@ -652,7 +652,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _extends4 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _initialErrorIconStat;\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _errors = __webpack_require__(/*! ../actions/errors */ \"./src/actions/errors.js\");\n\nvar _errors2 = _interopRequireDefault(_errors);\n\nvar _errors3 = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.errors\"\n * @desc Redux Reducer for application-wide error handling.\n *\n * Description:\n * Implements state reducers for application-wide error handling.\n * @todo Document state segment structure.\n */\n\n\nvar initialErrorIconState = (_initialErrorIconStat = {}, (0, _defineProperty3.default)(_initialErrorIconStat, _errors3.ERROR_ICON_TYPES.NETWORK, []), (0, _defineProperty3.default)(_initialErrorIconStat, _errors3.ERROR_ICON_TYPES.API, []), _initialErrorIconStat);\n\n/**\n * Creates a new Errors reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @param {Object} mergeReducers Optional. Reducers to merge.\n * @return {Function} Errors reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n var a = _errors2.default.errors;\n\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.clearError, function (state) {\n return (0, _extends5.default)({}, state, { alerts: state.alerts.slice(1) });\n }), (0, _defineProperty3.default)(_handleActions, a.newError, function (state, _ref) {\n var payload = _ref.payload;\n return (0, _extends5.default)({}, state, {\n alerts: [].concat((0, _toConsumableArray3.default)(state.alerts), [{ title: payload.title, details: payload.details }])\n });\n }), (0, _defineProperty3.default)(_handleActions, a.clearAllErrorIcons, function (state) {\n return (0, _extends5.default)({}, state, {\n icons: initialErrorIconState\n });\n }), (0, _defineProperty3.default)(_handleActions, a.setErrorIcon, function (state, _ref2) {\n var _ref2$payload = _ref2.payload,\n id = _ref2$payload.id,\n title = _ref2$payload.title,\n message = _ref2$payload.message;\n return (0, _extends5.default)({}, state, {\n icons: (0, _extends5.default)({}, state.icons, (0, _defineProperty3.default)({}, id, [].concat((0, _toConsumableArray3.default)(state.icons[id]), [{ title: title, message: message }])))\n });\n }), (0, _defineProperty3.default)(_handleActions, a.clearErrorIcon, function (state, _ref3) {\n var id = _ref3.payload.id;\n return (0, _extends5.default)({}, state, {\n icons: (0, _extends5.default)({}, state.icons, (0, _defineProperty3.default)({}, id, []))\n });\n }), _handleActions), _lodash2.default.defaults(initialState, { alerts: [], icons: initialErrorIconState }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(initialErrorIconState, 'initialErrorIconState', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/errors.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/errors.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/errors.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/errors.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/errors.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _extends4 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _initialErrorIconStat;\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _errors = __webpack_require__(/*! ../actions/errors */ \"./src/actions/errors.js\");\n\nvar _errors2 = _interopRequireDefault(_errors);\n\nvar _errors3 = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.errors\"\n * @desc Redux Reducer for application-wide error handling.\n *\n * Description:\n * Implements state reducers for application-wide error handling.\n * @todo Document state segment structure.\n */\n\n\nvar initialErrorIconState = (_initialErrorIconStat = {}, (0, _defineProperty3.default)(_initialErrorIconStat, _errors3.ERROR_ICON_TYPES.NETWORK, []), (0, _defineProperty3.default)(_initialErrorIconStat, _errors3.ERROR_ICON_TYPES.API, []), _initialErrorIconStat);\n\n/**\n * Creates a new Errors reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @param {Object} mergeReducers Optional. Reducers to merge.\n * @return {Function} Errors reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n var a = _errors2.default.errors;\n\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.clearError, function (state) {\n return (0, _extends5.default)({}, state, { alerts: state.alerts.slice(1) });\n }), (0, _defineProperty3.default)(_handleActions, a.newError, function (state, _ref) {\n var payload = _ref.payload;\n return (0, _extends5.default)({}, state, {\n alerts: [].concat((0, _toConsumableArray3.default)(state.alerts), [{ title: payload.title, details: payload.details }])\n });\n }), (0, _defineProperty3.default)(_handleActions, a.clearAllErrorIcons, function (state) {\n return (0, _extends5.default)({}, state, {\n icons: initialErrorIconState\n });\n }), (0, _defineProperty3.default)(_handleActions, a.setErrorIcon, function (state, _ref2) {\n var _ref2$payload = _ref2.payload,\n id = _ref2$payload.id,\n title = _ref2$payload.title,\n message = _ref2$payload.message;\n return (0, _extends5.default)({}, state, {\n icons: (0, _extends5.default)({}, state.icons, (0, _defineProperty3.default)({}, id, [].concat((0, _toConsumableArray3.default)(state.icons[id]), [{ title: title, message: message }])))\n });\n }), (0, _defineProperty3.default)(_handleActions, a.clearErrorIcon, function (state, _ref3) {\n var id = _ref3.payload.id;\n return (0, _extends5.default)({}, state, {\n icons: (0, _extends5.default)({}, state.icons, (0, _defineProperty3.default)({}, id, []))\n });\n }), _handleActions), _lodash2.default.defaults(initialState, { alerts: [], icons: initialErrorIconState }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(initialErrorIconState, 'initialErrorIconState', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/errors.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/errors.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/errors.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/errors.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/errors.js?"); /***/ }), @@ -664,7 +664,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _values = __webpack_require__(/*! babel-runtime/core-js/object/values */ \"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _groups = __webpack_require__(/*! ../actions/groups */ \"./src/actions/groups.js\");\n\nvar _groups2 = _interopRequireDefault(_groups);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.groups\"\n * @desc\n * This reducer handles information related to user-groups.\n *\n * Corresponding segment of the Redux state is designed to have the following\n * fields:\n *\n * groups {Object} - Holds loaded information about user groups. Keys of this\n * object are group IDs, and the values are group data object. To keep the state\n * flat, and our code efficient; for any group that has sub-groups, subGroups\n * field is removed, while subGroupsIds {String[]} field is added, and each\n * sub group data object is added to the groups object.\n *\n * loading {Object} - Holds IDs of the groups being loaded. Removing ID from\n * this object will result in silent discard of the data loaded by the\n * corresponding GROUPS/GET_DONE action; though such functionality does\n * not look really necessary at the moment, thus we do not provide an\n * action to really cancel group loading.\n * @todo Document state segment structure better.\n */\n\n/**\n * Private. Given two user group maps, it adds to \"dst\" the root group from\n * \"src\" (specified by \"rootId\"), and all its descendant groups. Any groups\n * in \"src\" not related to the sub-tree of the root group descendants are\n * not added to \"dst\".\n * This function mutates \"dst\"!\n * @param {Object} dst\n * @param {Object} src\n * @param {String} rootId\n */\nfunction mergeGroupTree(dst, src, rootId) {\n var root = src[rootId];\n dst[rootId] = root; // eslint-disable-line no-param-reassign\n if (root.subGroupIds) {\n root.subGroupIds.forEach(function (id) {\n return mergeGroupTree(dst, src, id);\n });\n }\n}\n\n/**\n * Removes from the state all loaded user groups, and cancels any on-going\n * loading of user groups.\n * @param {Object} state\n * @return {Object} New state.\n */\nfunction onDropGroups(state) {\n return (0, _extends3.default)({}, state, { groups: {}, loading: {} });\n}\n\n/**\n * Initiates the loading of data on the specified groups.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetGroupsInit(state, _ref) {\n var payload = _ref.payload;\n\n var groupIds = _lodash2.default.isArray(payload) ? payload : [payload];\n var loading = _lodash2.default.clone(state.loading);\n groupIds.forEach(function (id) {\n loading[id] = true;\n });\n return (0, _extends3.default)({}, state, { loading: loading });\n}\n\n/**\n * Finalizes the loading of data on the specified groups.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetGroupsDone(state, action) {\n var groups = _lodash2.default.clone(state.groups);\n var loading = _lodash2.default.clone(state.loading);\n var loaded = action.payload;\n (0, _values2.default)(loaded).forEach(function (_ref2) {\n var id = _ref2.id;\n\n if (loading[id]) {\n mergeGroupTree(groups, loaded, id);\n delete loading[id];\n }\n });\n return (0, _extends3.default)({}, state, { groups: groups, loading: loading });\n}\n\n/**\n * Creates a new Groups reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Groups reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n var a = _groups2.default.groups;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.dropGroups, onDropGroups), (0, _defineProperty3.default)(_handleActions, a.getGroupsInit, onGetGroupsInit), (0, _defineProperty3.default)(_handleActions, a.getGroupsDone, onGetGroupsDone), _handleActions), _lodash2.default.defaults(initialState ? _lodash2.default.clone(initialState) : {}, {\n groups: {},\n loading: {}\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(mergeGroupTree, 'mergeGroupTree', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(onDropGroups, 'onDropGroups', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(onGetGroupsInit, 'onGetGroupsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(onGetGroupsDone, 'onGetGroupsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/groups.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/groups.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _values = __webpack_require__(/*! babel-runtime/core-js/object/values */ \"babel-runtime/core-js/object/values\");\n\nvar _values2 = _interopRequireDefault(_values);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _groups = __webpack_require__(/*! ../actions/groups */ \"./src/actions/groups.js\");\n\nvar _groups2 = _interopRequireDefault(_groups);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.groups\"\n * @desc\n * This reducer handles information related to user-groups.\n *\n * Corresponding segment of the Redux state is designed to have the following\n * fields:\n *\n * groups {Object} - Holds loaded information about user groups. Keys of this\n * object are group IDs, and the values are group data object. To keep the state\n * flat, and our code efficient; for any group that has sub-groups, subGroups\n * field is removed, while subGroupsIds {String[]} field is added, and each\n * sub group data object is added to the groups object.\n *\n * loading {Object} - Holds IDs of the groups being loaded. Removing ID from\n * this object will result in silent discard of the data loaded by the\n * corresponding GROUPS/GET_DONE action; though such functionality does\n * not look really necessary at the moment, thus we do not provide an\n * action to really cancel group loading.\n * @todo Document state segment structure better.\n */\n\n/**\n * Private. Given two user group maps, it adds to \"dst\" the root group from\n * \"src\" (specified by \"rootId\"), and all its descendant groups. Any groups\n * in \"src\" not related to the sub-tree of the root group descendants are\n * not added to \"dst\".\n * This function mutates \"dst\"!\n * @param {Object} dst\n * @param {Object} src\n * @param {String} rootId\n */\nfunction mergeGroupTree(dst, src, rootId) {\n var root = src[rootId];\n dst[rootId] = root; // eslint-disable-line no-param-reassign\n if (root.subGroupIds) {\n root.subGroupIds.forEach(function (id) {\n return mergeGroupTree(dst, src, id);\n });\n }\n}\n\n/**\n * Removes from the state all loaded user groups, and cancels any on-going\n * loading of user groups.\n * @param {Object} state\n * @return {Object} New state.\n */\nfunction onDropGroups(state) {\n return (0, _extends3.default)({}, state, { groups: {}, loading: {} });\n}\n\n/**\n * Initiates the loading of data on the specified groups.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetGroupsInit(state, _ref) {\n var payload = _ref.payload;\n\n var groupIds = _lodash2.default.isArray(payload) ? payload : [payload];\n var loading = _lodash2.default.clone(state.loading);\n groupIds.forEach(function (id) {\n loading[id] = true;\n });\n return (0, _extends3.default)({}, state, { loading: loading });\n}\n\n/**\n * Finalizes the loading of data on the specified groups.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetGroupsDone(state, action) {\n var groups = _lodash2.default.clone(state.groups);\n var loading = _lodash2.default.clone(state.loading);\n var loaded = action.payload;\n (0, _values2.default)(loaded).forEach(function (_ref2) {\n var id = _ref2.id;\n\n if (loading[id]) {\n mergeGroupTree(groups, loaded, id);\n delete loading[id];\n }\n });\n return (0, _extends3.default)({}, state, { groups: groups, loading: loading });\n}\n\n/**\n * Creates a new Groups reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Groups reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n var a = _groups2.default.groups;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.dropGroups, onDropGroups), (0, _defineProperty3.default)(_handleActions, a.getGroupsInit, onGetGroupsInit), (0, _defineProperty3.default)(_handleActions, a.getGroupsDone, onGetGroupsDone), _handleActions), _lodash2.default.defaults(initialState ? _lodash2.default.clone(initialState) : {}, {\n groups: {},\n loading: {}\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(mergeGroupTree, 'mergeGroupTree', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(onDropGroups, 'onDropGroups', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(onGetGroupsInit, 'onGetGroupsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(onGetGroupsDone, 'onGetGroupsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/groups.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/groups.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/groups.js?"); /***/ }), @@ -676,7 +676,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.factory = factory;\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _auth = __webpack_require__(/*! ./auth */ \"./src/reducers/auth.js\");\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _stats = __webpack_require__(/*! ./stats */ \"./src/reducers/stats.js\");\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nvar _terms = __webpack_require__(/*! ./terms */ \"./src/reducers/terms.js\");\n\nvar _terms2 = _interopRequireDefault(_terms);\n\nvar _direct = __webpack_require__(/*! ./direct */ \"./src/reducers/direct.js\");\n\nvar _direct2 = _interopRequireDefault(_direct);\n\nvar _groups = __webpack_require__(/*! ./groups */ \"./src/reducers/groups.js\");\n\nvar _groups2 = _interopRequireDefault(_groups);\n\nvar _errors = __webpack_require__(/*! ./errors */ \"./src/reducers/errors.js\");\n\nvar _errors2 = _interopRequireDefault(_errors);\n\nvar _challenge = __webpack_require__(/*! ./challenge */ \"./src/reducers/challenge.js\");\n\nvar _challenge2 = _interopRequireDefault(_challenge);\n\nvar _profile = __webpack_require__(/*! ./profile */ \"./src/reducers/profile.js\");\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nvar _members = __webpack_require__(/*! ./members */ \"./src/reducers/members.js\");\n\nvar _members2 = _interopRequireDefault(_members);\n\nvar _lookup = __webpack_require__(/*! ./lookup */ \"./src/reducers/lookup.js\");\n\nvar _lookup2 = _interopRequireDefault(_lookup);\n\nvar _memberTasks = __webpack_require__(/*! ./member-tasks */ \"./src/reducers/member-tasks.js\");\n\nvar _memberTasks2 = _interopRequireDefault(_memberTasks);\n\nvar _reviewOpportunity = __webpack_require__(/*! ./reviewOpportunity */ \"./src/reducers/reviewOpportunity.js\");\n\nvar _reviewOpportunity2 = _interopRequireDefault(_reviewOpportunity);\n\nvar _mySubmissionsManagement = __webpack_require__(/*! ./my-submissions-management */ \"./src/reducers/my-submissions-management.js\");\n\nvar _mySubmissionsManagement2 = _interopRequireDefault(_mySubmissionsManagement);\n\nvar _settings = __webpack_require__(/*! ./settings */ \"./src/reducers/settings.js\");\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nvar _looker = __webpack_require__(/*! ./looker */ \"./src/reducers/looker.js\");\n\nvar _looker2 = _interopRequireDefault(_looker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Export reducers.\n */\n\n\nfunction factory(options) {\n return _topcoderReactUtils.redux.resolveReducers({\n auth: (0, _auth.factory)(options),\n stats: (0, _stats.factory)(options),\n terms: (0, _terms.factory)(options),\n direct: (0, _direct.factory)(options),\n groups: (0, _groups.factory)(options),\n errors: (0, _errors.factory)(options),\n challenge: (0, _challenge.factory)(options),\n profile: (0, _profile.factory)(options),\n lookup: (0, _lookup.factory)(options),\n members: (0, _members.factory)(options),\n memberTasks: (0, _memberTasks.factory)(options),\n reviewOpportunity: (0, _reviewOpportunity.factory)(options),\n mySubmissionsManagement: (0, _mySubmissionsManagement.factory)(options),\n settings: (0, _settings.factory)(options),\n looker: (0, _looker.factory)(options)\n });\n}\n\nvar _default = {\n auth: _auth2.default,\n stats: _stats2.default,\n terms: _terms2.default,\n direct: _direct2.default,\n groups: _groups2.default,\n errors: _errors2.default,\n challenge: _challenge2.default,\n profile: _profile2.default,\n lookup: _lookup2.default,\n members: _members2.default,\n memberTasks: _memberTasks2.default,\n reviewOpportunity: _reviewOpportunity2.default,\n mySubmissionsManagement: _mySubmissionsManagement2.default,\n settings: _settings2.default,\n looker: _looker2.default\n};\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/index.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/index.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/index.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.factory = factory;\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _auth = __webpack_require__(/*! ./auth */ \"./src/reducers/auth.js\");\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _stats = __webpack_require__(/*! ./stats */ \"./src/reducers/stats.js\");\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nvar _terms = __webpack_require__(/*! ./terms */ \"./src/reducers/terms.js\");\n\nvar _terms2 = _interopRequireDefault(_terms);\n\nvar _direct = __webpack_require__(/*! ./direct */ \"./src/reducers/direct.js\");\n\nvar _direct2 = _interopRequireDefault(_direct);\n\nvar _groups = __webpack_require__(/*! ./groups */ \"./src/reducers/groups.js\");\n\nvar _groups2 = _interopRequireDefault(_groups);\n\nvar _errors = __webpack_require__(/*! ./errors */ \"./src/reducers/errors.js\");\n\nvar _errors2 = _interopRequireDefault(_errors);\n\nvar _challenge = __webpack_require__(/*! ./challenge */ \"./src/reducers/challenge.js\");\n\nvar _challenge2 = _interopRequireDefault(_challenge);\n\nvar _profile = __webpack_require__(/*! ./profile */ \"./src/reducers/profile.js\");\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nvar _members = __webpack_require__(/*! ./members */ \"./src/reducers/members.js\");\n\nvar _members2 = _interopRequireDefault(_members);\n\nvar _lookup = __webpack_require__(/*! ./lookup */ \"./src/reducers/lookup.js\");\n\nvar _lookup2 = _interopRequireDefault(_lookup);\n\nvar _memberTasks = __webpack_require__(/*! ./member-tasks */ \"./src/reducers/member-tasks.js\");\n\nvar _memberTasks2 = _interopRequireDefault(_memberTasks);\n\nvar _reviewOpportunity = __webpack_require__(/*! ./reviewOpportunity */ \"./src/reducers/reviewOpportunity.js\");\n\nvar _reviewOpportunity2 = _interopRequireDefault(_reviewOpportunity);\n\nvar _mySubmissionsManagement = __webpack_require__(/*! ./my-submissions-management */ \"./src/reducers/my-submissions-management.js\");\n\nvar _mySubmissionsManagement2 = _interopRequireDefault(_mySubmissionsManagement);\n\nvar _settings = __webpack_require__(/*! ./settings */ \"./src/reducers/settings.js\");\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nvar _looker = __webpack_require__(/*! ./looker */ \"./src/reducers/looker.js\");\n\nvar _looker2 = _interopRequireDefault(_looker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Export reducers.\n */\n\n\nfunction factory(options) {\n return _topcoderReactUtils.redux.resolveReducers({\n auth: (0, _auth.factory)(options),\n stats: (0, _stats.factory)(options),\n terms: (0, _terms.factory)(options),\n direct: (0, _direct.factory)(options),\n groups: (0, _groups.factory)(options),\n errors: (0, _errors.factory)(options),\n challenge: (0, _challenge.factory)(options),\n profile: (0, _profile.factory)(options),\n lookup: (0, _lookup.factory)(options),\n members: (0, _members.factory)(options),\n memberTasks: (0, _memberTasks.factory)(options),\n reviewOpportunity: (0, _reviewOpportunity.factory)(options),\n mySubmissionsManagement: (0, _mySubmissionsManagement.factory)(options),\n settings: (0, _settings.factory)(options),\n looker: (0, _looker.factory)(options)\n });\n}\n\nvar _default = {\n auth: _auth2.default,\n stats: _stats2.default,\n terms: _terms2.default,\n direct: _direct2.default,\n groups: _groups2.default,\n errors: _errors2.default,\n challenge: _challenge2.default,\n profile: _profile2.default,\n lookup: _lookup2.default,\n members: _members2.default,\n memberTasks: _memberTasks2.default,\n reviewOpportunity: _reviewOpportunity2.default,\n mySubmissionsManagement: _mySubmissionsManagement2.default,\n settings: _settings2.default,\n looker: _looker2.default\n};\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/index.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/index.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/index.js?"); /***/ }), @@ -688,7 +688,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _looker = __webpack_require__(/*! ../actions/looker */ \"./src/actions/looker.js\");\n\nvar _looker2 = _interopRequireDefault(_looker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.looker\"\n * @desc Reducer for {@link module:actions.looker} actions.\n *\n * State segment managed by this reducer has the following structure:\n * @param {Object} dataSet={}, index by lookerId.\n */\n\n\n/**\n * Handles LOOKER/GET_LOOKER_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetLookerDone(state, _ref) {\n var payload = _ref.payload;\n var _payload$data = payload.data,\n res = _payload$data.res,\n error = _payload$data.error,\n lookerId = payload.lookerId;\n\n\n var newDataSet = (0, _extends3.default)({}, state.dataSet);\n newDataSet[lookerId] = {\n lookerData: res,\n error: error,\n msg: res.message\n };\n return (0, _extends3.default)({}, state, {\n dataSet: newDataSet\n });\n}\n\n/**\n * Creates a new Looker reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Looker reducer.\n */\nfunction create() {\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _looker2.default.looker;\n return (0, _reduxActions.handleActions)((0, _defineProperty3.default)({}, a.getLookerDone, onGetLookerDone), _lodash2.default.defaults(initialState, {\n dataSet: {}\n }));\n}\n\n/**\n * Factory which creates a new reducer.\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetLookerDone, 'onGetLookerDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/looker.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/looker.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/looker.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/looker.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/looker.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _looker = __webpack_require__(/*! ../actions/looker */ \"./src/actions/looker.js\");\n\nvar _looker2 = _interopRequireDefault(_looker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.looker\"\n * @desc Reducer for {@link module:actions.looker} actions.\n *\n * State segment managed by this reducer has the following structure:\n * @param {Object} dataSet={}, index by lookerId.\n */\n\n\n/**\n * Handles LOOKER/GET_LOOKER_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetLookerDone(state, _ref) {\n var payload = _ref.payload;\n var _payload$data = payload.data,\n res = _payload$data.res,\n error = _payload$data.error,\n lookerId = payload.lookerId;\n\n\n var newDataSet = (0, _extends3.default)({}, state.dataSet);\n newDataSet[lookerId] = {\n lookerData: res,\n error: error,\n msg: res.message\n };\n return (0, _extends3.default)({}, state, {\n dataSet: newDataSet\n });\n}\n\n/**\n * Creates a new Looker reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Looker reducer.\n */\nfunction create() {\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _looker2.default.looker;\n return (0, _reduxActions.handleActions)((0, _defineProperty3.default)({}, a.getLookerDone, onGetLookerDone), _lodash2.default.defaults(initialState, {\n dataSet: {}\n }));\n}\n\n/**\n * Factory which creates a new reducer.\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetLookerDone, 'onGetLookerDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/looker.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/looker.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/looker.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/looker.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/looker.js?"); /***/ }), @@ -700,7 +700,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _lookup = __webpack_require__(/*! ../actions/lookup */ \"./src/actions/lookup.js\");\n\nvar _lookup2 = _interopRequireDefault(_lookup);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.lookup\"\n * @desc Reducer for {@link module:actions.lookup} actions.\n *\n * State segment managed by this reducer has the following structure:\n * @param {Array} skillTags='' skill tags.\n */\n\n\n/**\n * Handles LOOKUP/GET_SKILL_TAGS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetSkillTagsDone(state, _ref) {\n var payload = _ref.payload,\n error = _ref.error;\n\n if (error) {\n _logger2.default.error('Failed to get skill tags', payload);\n return (0, _extends3.default)({}, state, { loadingSkillTagsError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n loadingSkillTagsError: false,\n skillTags: payload\n });\n}\n\n/**\n * Handles LOOKUP/GET_COUNTRIES_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetCountriesDone(state, _ref2) {\n var payload = _ref2.payload,\n error = _ref2.error;\n\n if (error) {\n _logger2.default.error('Failed to get countries', payload);\n return (0, _extends3.default)({}, state, { loadingCountriesError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n loadingCountriesError: false,\n countries: payload\n });\n}\n\n/**\n * Handles LOOKUP/GET_ALL_COUNTRIES_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetAllCountriesDone(state, _ref3) {\n var payload = _ref3.payload,\n error = _ref3.error;\n\n if (error) {\n _logger2.default.error('Failed to get all countries', payload);\n return (0, _extends3.default)({}, state, { loadingAllCountriesError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n loadingAllCountriesError: false,\n allCountries: payload\n });\n}\n\n/**\n * Creates a new Lookup reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Lookup reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _lookup2.default.lookup;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.getSkillTagsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getSkillTagsDone, onGetSkillTagsDone), (0, _defineProperty3.default)(_handleActions, a.getCountriesInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getCountriesDone, onGetCountriesDone), (0, _defineProperty3.default)(_handleActions, a.getAllCountriesInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getAllCountriesDone, onGetAllCountriesDone), _handleActions), _lodash2.default.defaults(initialState, {\n skillTags: [],\n countries: [],\n allCountries: []\n }));\n}\n\n/**\n * Factory which creates a new reducer.\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetSkillTagsDone, 'onGetSkillTagsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(onGetCountriesDone, 'onGetCountriesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(onGetAllCountriesDone, 'onGetAllCountriesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/lookup.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/lookup.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _lookup = __webpack_require__(/*! ../actions/lookup */ \"./src/actions/lookup.js\");\n\nvar _lookup2 = _interopRequireDefault(_lookup);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.lookup\"\n * @desc Reducer for {@link module:actions.lookup} actions.\n *\n * State segment managed by this reducer has the following structure:\n * @param {Array} skillTags='' skill tags.\n */\n\n\n/**\n * Handles LOOKUP/GET_SKILL_TAGS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetSkillTagsDone(state, _ref) {\n var payload = _ref.payload,\n error = _ref.error;\n\n if (error) {\n _logger2.default.error('Failed to get skill tags', payload);\n return (0, _extends3.default)({}, state, { loadingSkillTagsError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n loadingSkillTagsError: false,\n skillTags: payload\n });\n}\n\n/**\n * Handles LOOKUP/GET_COUNTRIES_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetCountriesDone(state, _ref2) {\n var payload = _ref2.payload,\n error = _ref2.error;\n\n if (error) {\n _logger2.default.error('Failed to get countries', payload);\n return (0, _extends3.default)({}, state, { loadingCountriesError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n loadingCountriesError: false,\n countries: payload\n });\n}\n\n/**\n * Handles LOOKUP/GET_ALL_COUNTRIES_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetAllCountriesDone(state, _ref3) {\n var payload = _ref3.payload,\n error = _ref3.error;\n\n if (error) {\n _logger2.default.error('Failed to get all countries', payload);\n return (0, _extends3.default)({}, state, { loadingAllCountriesError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n loadingAllCountriesError: false,\n allCountries: payload\n });\n}\n\n/**\n * Creates a new Lookup reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Lookup reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _lookup2.default.lookup;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.getSkillTagsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getSkillTagsDone, onGetSkillTagsDone), (0, _defineProperty3.default)(_handleActions, a.getCountriesInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getCountriesDone, onGetCountriesDone), (0, _defineProperty3.default)(_handleActions, a.getAllCountriesInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getAllCountriesDone, onGetAllCountriesDone), _handleActions), _lodash2.default.defaults(initialState, {\n skillTags: [],\n countries: [],\n allCountries: []\n }));\n}\n\n/**\n * Factory which creates a new reducer.\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetSkillTagsDone, 'onGetSkillTagsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(onGetCountriesDone, 'onGetCountriesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(onGetAllCountriesDone, 'onGetAllCountriesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/lookup.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/lookup.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/lookup.js?"); /***/ }), @@ -712,7 +712,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _memberTasks = __webpack_require__(/*! ../actions/member-tasks */ \"./src/actions/member-tasks.js\");\n\nvar _memberTasks2 = _interopRequireDefault(_memberTasks);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reduces.member-tasks\"\n * @desc Member tasks reducer.\n * @todo Document state segment structure.\n */\n/* global alert */\n\n/**\n * Drops all tasks and cancels the ongoing loading operation, if it is pending.\n * @param {Object} state\n * @return {Object} New state.\n */\nfunction onDropAll(state) {\n return (0, _extends3.default)({}, state, {\n allLoaded: false,\n lastRequestedPageNum: -1,\n loadingUuid: '',\n tasks: [],\n timestamp: 0\n });\n}\n\n/**\n * Stores into the state meta data about the initiated loading operation.\n * This will effectively cancel the already pending loading operation, if any.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetInit(state, _ref) {\n var payload = _ref.payload;\n\n return (0, _extends3.default)({}, state, {\n lastRequestedPageNum: payload.pageNum,\n loadingUuid: payload.uuid\n });\n}\n\n/**\n * Handles the actual result of the loading operation.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetDone(state, _ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n /* Bails out in case of error. */\n if (error) {\n _logger2.default.error(payload);\n /* NOTE: For now, using alert to inform about failures is kind of fine. */\n /* eslint-disable no-alert */\n if (_topcoderReactUtils.isomorphy.isClientSide()) alert('Failed to load member tasks');\n /* eslint-enable no-alert */\n return state;\n }\n\n /* Silently ignores the action, if it has unexpected UUID. */\n var projectId = payload.projectId,\n tasks = payload.tasks,\n uuid = payload.uuid;\n\n if (uuid !== state.loadingUuid) return state;\n\n /* Generates the map of old tasks, and the count of old tasks related to\n * the specified project. */\n var taskMap = {};\n state.tasks.forEach(function (task) {\n taskMap[task.id] = task;\n });\n\n /* Merges newly loaded tasks into the map of old ones. */\n tasks.forEach(function (task) {\n taskMap[task.id] = task;\n });\n\n /* If the first page of tasks has been loaded, updates its timestamp. */\n var timestamps = state.timestamps;\n\n if (!state.lastRequestedPageNum) {\n timestamps = _lodash2.default.clone(timestamps);\n timestamps[projectId] = Date.now();\n }\n\n return (0, _extends3.default)({}, state, {\n allLoaded: tasks.length < _memberTasks.PAGE_SIZE,\n loadingUuid: '',\n tasks: _lodash2.default.values(taskMap),\n timestamps: timestamps\n });\n}\n\n/**\n * Creates a new Member tasks reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Member tasks reducer.\n */\nfunction create() {\n var _redux$handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _memberTasks2.default.memberTasks;\n return _topcoderReactUtils.redux.handleActions((_redux$handleActions = {}, (0, _defineProperty3.default)(_redux$handleActions, a.dropAll, onDropAll), (0, _defineProperty3.default)(_redux$handleActions, a.getInit, onGetInit), (0, _defineProperty3.default)(_redux$handleActions, a.getDone, onGetDone), _redux$handleActions), _lodash2.default.defaults(initialState, {\n /* It is set true when a request to load tasks loads less tasks than a full\n * task page size. It is reset to false each time the page number 0 starts\n * to load. If you load task pages sequentially from the very first page,\n * with the same projectId and user specified by auth token, this flag\n * signals you when there is no more tasks to load. */\n allLoaded: false,\n\n /* Holds the number of the last requested task page. */\n lastRequestedPageNum: -1,\n\n /* Equals to the loading operation UUID when the result is pending; equals\n * empty string when nothing is being loaded. */\n loadingUuid: '',\n\n /* The list of tasks loaded so far. For better performance and user\n * experience it may contain tasks related to projects queried before;\n * be sure to filter it according to your needs. */\n tasks: [],\n\n /* Keys of this object are projectIds, and values keep the timestamps\n * corresponding to latest updates of the first page of tasks related\n * to those projects. */\n timestamps: {}\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onDropAll, 'onDropAll', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(onGetInit, 'onGetInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(onGetDone, 'onGetDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/member-tasks.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/member-tasks.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _memberTasks = __webpack_require__(/*! ../actions/member-tasks */ \"./src/actions/member-tasks.js\");\n\nvar _memberTasks2 = _interopRequireDefault(_memberTasks);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reduces.member-tasks\"\n * @desc Member tasks reducer.\n * @todo Document state segment structure.\n */\n/* global alert */\n\n/**\n * Drops all tasks and cancels the ongoing loading operation, if it is pending.\n * @param {Object} state\n * @return {Object} New state.\n */\nfunction onDropAll(state) {\n return (0, _extends3.default)({}, state, {\n allLoaded: false,\n lastRequestedPageNum: -1,\n loadingUuid: '',\n tasks: [],\n timestamp: 0\n });\n}\n\n/**\n * Stores into the state meta data about the initiated loading operation.\n * This will effectively cancel the already pending loading operation, if any.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetInit(state, _ref) {\n var payload = _ref.payload;\n\n return (0, _extends3.default)({}, state, {\n lastRequestedPageNum: payload.pageNum,\n loadingUuid: payload.uuid\n });\n}\n\n/**\n * Handles the actual result of the loading operation.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetDone(state, _ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n /* Bails out in case of error. */\n if (error) {\n _logger2.default.error(payload);\n /* NOTE: For now, using alert to inform about failures is kind of fine. */\n /* eslint-disable no-alert */\n if (_topcoderReactUtils.isomorphy.isClientSide()) alert('Failed to load member tasks');\n /* eslint-enable no-alert */\n return state;\n }\n\n /* Silently ignores the action, if it has unexpected UUID. */\n var projectId = payload.projectId,\n tasks = payload.tasks,\n uuid = payload.uuid;\n\n if (uuid !== state.loadingUuid) return state;\n\n /* Generates the map of old tasks, and the count of old tasks related to\n * the specified project. */\n var taskMap = {};\n state.tasks.forEach(function (task) {\n taskMap[task.id] = task;\n });\n\n /* Merges newly loaded tasks into the map of old ones. */\n tasks.forEach(function (task) {\n taskMap[task.id] = task;\n });\n\n /* If the first page of tasks has been loaded, updates its timestamp. */\n var timestamps = state.timestamps;\n\n if (!state.lastRequestedPageNum) {\n timestamps = _lodash2.default.clone(timestamps);\n timestamps[projectId] = Date.now();\n }\n\n return (0, _extends3.default)({}, state, {\n allLoaded: tasks.length < _memberTasks.PAGE_SIZE,\n loadingUuid: '',\n tasks: _lodash2.default.values(taskMap),\n timestamps: timestamps\n });\n}\n\n/**\n * Creates a new Member tasks reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Member tasks reducer.\n */\nfunction create() {\n var _redux$handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _memberTasks2.default.memberTasks;\n return _topcoderReactUtils.redux.handleActions((_redux$handleActions = {}, (0, _defineProperty3.default)(_redux$handleActions, a.dropAll, onDropAll), (0, _defineProperty3.default)(_redux$handleActions, a.getInit, onGetInit), (0, _defineProperty3.default)(_redux$handleActions, a.getDone, onGetDone), _redux$handleActions), _lodash2.default.defaults(initialState, {\n /* It is set true when a request to load tasks loads less tasks than a full\n * task page size. It is reset to false each time the page number 0 starts\n * to load. If you load task pages sequentially from the very first page,\n * with the same projectId and user specified by auth token, this flag\n * signals you when there is no more tasks to load. */\n allLoaded: false,\n\n /* Holds the number of the last requested task page. */\n lastRequestedPageNum: -1,\n\n /* Equals to the loading operation UUID when the result is pending; equals\n * empty string when nothing is being loaded. */\n loadingUuid: '',\n\n /* The list of tasks loaded so far. For better performance and user\n * experience it may contain tasks related to projects queried before;\n * be sure to filter it according to your needs. */\n tasks: [],\n\n /* Keys of this object are projectIds, and values keep the timestamps\n * corresponding to latest updates of the first page of tasks related\n * to those projects. */\n timestamps: {}\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onDropAll, 'onDropAll', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(onGetInit, 'onGetInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(onGetDone, 'onGetDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/member-tasks.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/member-tasks.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/member-tasks.js?"); /***/ }), @@ -724,7 +724,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends20 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends21 = _interopRequireDefault(_extends20);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _members = __webpack_require__(/*! ../actions/members */ \"./src/actions/members.js\");\n\nvar _members2 = _interopRequireDefault(_members);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.members\"\n * @desc Reducer for the Redux store segment that holds members data.\n * @todo Document state segment structure.\n */\n\n/**\n * Drops information about a member.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onDrop(state, _ref) {\n var payload = _ref.payload;\n\n if (!state[payload]) return state;\n return _lodash2.default.omit(state, payload);\n}\n\n/**\n * Drops all loaded information on members.\n * @return {Object} New state.\n */\nfunction onDropAll() {\n return {};\n}\n\n/**\n * Inits the loading of member achievements.\n * @param {Object} state\n * @param {String} action.handle\n * @param {String} action.uuid\n * @return {Object} New state.\n */\nfunction onGetAchievementsInit(state, action) {\n var _action$payload = action.payload,\n handle = _action$payload.handle,\n uuid = _action$payload.uuid;\n\n var res = state[handle];\n res = res ? _lodash2.default.clone(res) : {};\n res.achievements = { loadingUuid: uuid };\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, res));\n}\n\n/**\n * Finalizes the loading of member achievements.\n * @param {Object} state\n * @param {Object} error\n * @param {Array} payload.data\n * @param {String} payload.handle\n * @param {String} payload.uuid\n * @return {Object} New state.\n */\nfunction onGetAchievementsDone(state, _ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n if (error) {\n _logger2.default.error('Failed to load member achievements', payload);\n (0, _errors.fireErrorMessage)('Failed to load member achievements');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'achievements.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n achievements: { data: data, timestamp: Date.now() }\n })));\n}\n\n/**\n * Initializes the loading of member financial information.\n * @param {Object} state\n * @param {String} action.payload.handle\n * @param {String} action.payload.uuid\n * @return {Object} New state.\n */\nfunction onGetFinancesInit(state, action) {\n var _action$payload2 = action.payload,\n handle = _action$payload2.handle,\n uuid = _action$payload2.uuid;\n\n var envelop = (0, _extends21.default)({}, state[handle] || {}, {\n finances: {\n loadingUuid: uuid,\n timestamp: 0\n }\n });\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, envelop));\n}\n\n/**\n * Finalizes a pending loading of member financial information.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetFinancesDone(state, _ref3) {\n var error = _ref3.error,\n payload = _ref3.payload;\n\n if (error) {\n _logger2.default.error('Failed to get user financial info', payload);\n (0, _errors.fireErrorMessage)('Failed to get user financial info', '');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'finances.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n finances: {\n data: data,\n loadingUuid: '',\n timestamp: Date.now()\n }\n })));\n}\n\n/**\n * Inits the loading of member stats.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsInit(state, action) {\n var _action$payload3 = action.payload,\n handle = _action$payload3.handle,\n uuid = _action$payload3.uuid;\n\n var res = state[handle];\n res = res ? _lodash2.default.clone(res) : {};\n res.stats = { loadingUuid: uuid };\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, res));\n}\n\n/**\n * Finalizes the loading of member stats.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsDone(state, _ref4) {\n var error = _ref4.error,\n payload = _ref4.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member stats', payload);\n (0, _errors.fireErrorMessage)('Failed to get member stats', '');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'stats.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n stats: { data: data, timestamp: Date.now() }\n })));\n}\n\n/**\n * Inits the loading of member stats history.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsHistoryInit(state, action) {\n var _action$payload4 = action.payload,\n handle = _action$payload4.handle,\n uuid = _action$payload4.uuid;\n\n var res = state[handle];\n res = res ? _lodash2.default.clone(res) : {};\n res.statsHistory = { loadingUuid: uuid };\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, res));\n}\n\n/**\n * Finalizes the loading of member stats history.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsHistoryDone(state, _ref5) {\n var error = _ref5.error,\n payload = _ref5.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member statsHistory', payload);\n (0, _errors.fireErrorMessage)('Failed to get member statsHistory', '');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'statsHistory.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n statsHistory: { data: data, timestamp: Date.now() }\n })));\n}\n\n/**\n * Inits the loading of member stats distribution.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsDistributionInit(state, action) {\n var _action$payload5 = action.payload,\n handle = _action$payload5.handle,\n uuid = _action$payload5.uuid;\n\n var res = state[handle];\n res = res ? _lodash2.default.clone(res) : {};\n res.statsDistribution = { loadingUuid: uuid };\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, res));\n}\n\n/**\n * Finalizes the loading of member stats distribution.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsDistributionDone(state, _ref6) {\n var error = _ref6.error,\n payload = _ref6.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member statsDistribution', payload);\n (0, _errors.fireErrorMessage)('Failed to get member statsDistribution', '');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'statsDistribution.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n statsDistribution: { data: data, timestamp: Date.now() }\n })));\n}\n\n/**\n * Inits the loading of member active challenges.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetActiveChallengesInit(state, action) {\n var handle = action.payload.handle;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], { activeChallengesCount: null })));\n}\n\n/**\n * Finalizes the loading of member active challenges.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetActiveChallengesDone(state, _ref7) {\n var error = _ref7.error,\n payload = _ref7.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member active challenges', payload);\n (0, _errors.fireErrorMessage)('Failed to get member active challenges', '');\n return state;\n }\n\n var handle = payload.handle,\n challenges = payload.challenges;\n\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n activeChallengesCount: challenges.length\n })));\n}\n\n/**\n * Inits the loading of member subtrack challenges.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetSubtrackChallengesInit(state, _ref8) {\n var payload = _ref8.payload;\n var handle = payload.handle,\n uuid = payload.uuid;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], { loadingSubTrackChallengesUUID: uuid })));\n}\n\n/**\n * Finalizes the loading of member subtrack challenges.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetSubtrackChallengesDone(state, _ref9) {\n var error = _ref9.error,\n payload = _ref9.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member subtrack challenges', payload);\n (0, _errors.fireErrorMessage)('Failed to get member subtrack challenges', '');\n return state;\n }\n\n var uuid = payload.uuid,\n challenges = payload.challenges,\n refresh = payload.refresh,\n handle = payload.handle;\n\n if (uuid !== state[handle].loadingSubTrackChallengesUUID) return state;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n subtrackChallenges: state[handle].subtrackChallenges && !refresh ? [].concat((0, _toConsumableArray3.default)(state[handle].subtrackChallenges), (0, _toConsumableArray3.default)(challenges)) : challenges,\n // if current query returns 0 item, mark it completed\n subtrackChallengesHasMore: challenges && challenges.length > 0,\n loadingSubTrackChallengesUUID: ''\n })));\n}\n\n/**\n * Inits the loading of member SRMs.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserSRMInit(state, _ref10) {\n var payload = _ref10.payload;\n var handle = payload.handle,\n uuid = payload.uuid;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], { loadingSRMUUID: uuid })));\n}\n\n/**\n * Finalizes the loading of member SRMs.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserSRMDone(state, _ref11) {\n var error = _ref11.error,\n payload = _ref11.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member SRMs', payload);\n (0, _errors.fireErrorMessage)('Failed to get member SRMs', '');\n return state;\n }\n\n var uuid = payload.uuid,\n srms = payload.srms,\n refresh = payload.refresh,\n handle = payload.handle;\n\n if (uuid !== state[handle].loadingSRMUUID) return state;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n userSRMs: state[handle].userSRMs && !refresh ? [].concat((0, _toConsumableArray3.default)(state[handle].userSRMs), (0, _toConsumableArray3.default)(srms)) : srms,\n userSRMHasMore: srms && srms.length > 0, // if current query returns 0 item, mark it completed\n loadingSRMUUID: ''\n })));\n}\n\n/**\n * Inits the loading of member marathons.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserMarathonInit(state, _ref12) {\n var payload = _ref12.payload;\n var handle = payload.handle,\n uuid = payload.uuid;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], { loadingMarathonUUID: uuid })));\n}\n\n/**\n * Finalizes the loading of member marathons.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserMarathonDone(state, _ref13) {\n var error = _ref13.error,\n payload = _ref13.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member marathons', payload);\n (0, _errors.fireErrorMessage)('Failed to get member marathons', '');\n return state;\n }\n\n var uuid = payload.uuid,\n marathons = payload.marathons,\n refresh = payload.refresh,\n handle = payload.handle;\n\n if (uuid !== state[handle].loadingMarathonUUID) return state;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n userMarathons: state[handle].userMarathons && !refresh ? [].concat((0, _toConsumableArray3.default)(state[handle].userMarathons), (0, _toConsumableArray3.default)(marathons.challenges)) : marathons.challenges,\n // if current query returns 0 item, mark it completed\n userMarathonHasMore: marathons && marathons.challenges && marathons.challenges.length > 0,\n loadingMarathonUUID: ''\n })));\n}\n\n/**\n * Creates a new Members reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Members reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _members2.default.members;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.drop, onDrop), (0, _defineProperty3.default)(_handleActions, a.dropAll, onDropAll), (0, _defineProperty3.default)(_handleActions, a.getAchievementsInit, onGetAchievementsInit), (0, _defineProperty3.default)(_handleActions, a.getAchievementsDone, onGetAchievementsDone), (0, _defineProperty3.default)(_handleActions, a.getAchievementsV3Done, onGetAchievementsDone), (0, _defineProperty3.default)(_handleActions, a.getFinancesInit, onGetFinancesInit), (0, _defineProperty3.default)(_handleActions, a.getFinancesDone, onGetFinancesDone), (0, _defineProperty3.default)(_handleActions, a.getStatsInit, onGetStatsInit), (0, _defineProperty3.default)(_handleActions, a.getStatsDone, onGetStatsDone), (0, _defineProperty3.default)(_handleActions, a.getStatsHistoryInit, onGetStatsHistoryInit), (0, _defineProperty3.default)(_handleActions, a.getStatsHistoryDone, onGetStatsHistoryDone), (0, _defineProperty3.default)(_handleActions, a.getStatsDistributionInit, onGetStatsDistributionInit), (0, _defineProperty3.default)(_handleActions, a.getStatsDistributionDone, onGetStatsDistributionDone), (0, _defineProperty3.default)(_handleActions, a.getActiveChallengesInit, onGetActiveChallengesInit), (0, _defineProperty3.default)(_handleActions, a.getActiveChallengesDone, onGetActiveChallengesDone), (0, _defineProperty3.default)(_handleActions, a.getSubtrackChallengesInit, onGetSubtrackChallengesInit), (0, _defineProperty3.default)(_handleActions, a.getSubtrackChallengesDone, onGetSubtrackChallengesDone), (0, _defineProperty3.default)(_handleActions, a.getUserSrmInit, onGetUserSRMInit), (0, _defineProperty3.default)(_handleActions, a.getUserSrmDone, onGetUserSRMDone), (0, _defineProperty3.default)(_handleActions, a.getUserMarathonInit, onGetUserMarathonInit), (0, _defineProperty3.default)(_handleActions, a.getUserMarathonDone, onGetUserMarathonDone), _handleActions), initialState);\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onDrop, 'onDrop', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onDropAll, 'onDropAll', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetAchievementsInit, 'onGetAchievementsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetAchievementsDone, 'onGetAchievementsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetFinancesInit, 'onGetFinancesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetFinancesDone, 'onGetFinancesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsInit, 'onGetStatsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsDone, 'onGetStatsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsHistoryInit, 'onGetStatsHistoryInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsHistoryDone, 'onGetStatsHistoryDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsDistributionInit, 'onGetStatsDistributionInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsDistributionDone, 'onGetStatsDistributionDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetActiveChallengesInit, 'onGetActiveChallengesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetActiveChallengesDone, 'onGetActiveChallengesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetSubtrackChallengesInit, 'onGetSubtrackChallengesInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetSubtrackChallengesDone, 'onGetSubtrackChallengesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetUserSRMInit, 'onGetUserSRMInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetUserSRMDone, 'onGetUserSRMDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetUserMarathonInit, 'onGetUserMarathonInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetUserMarathonDone, 'onGetUserMarathonDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/members.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/members.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends20 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends21 = _interopRequireDefault(_extends20);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _members = __webpack_require__(/*! ../actions/members */ \"./src/actions/members.js\");\n\nvar _members2 = _interopRequireDefault(_members);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.members\"\n * @desc Reducer for the Redux store segment that holds members data.\n * @todo Document state segment structure.\n */\n\n/**\n * Drops information about a member.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onDrop(state, _ref) {\n var payload = _ref.payload;\n\n if (!state[payload]) return state;\n return _lodash2.default.omit(state, payload);\n}\n\n/**\n * Drops all loaded information on members.\n * @return {Object} New state.\n */\nfunction onDropAll() {\n return {};\n}\n\n/**\n * Inits the loading of member achievements.\n * @param {Object} state\n * @param {String} action.handle\n * @param {String} action.uuid\n * @return {Object} New state.\n */\nfunction onGetAchievementsInit(state, action) {\n var _action$payload = action.payload,\n handle = _action$payload.handle,\n uuid = _action$payload.uuid;\n\n var res = state[handle];\n res = res ? _lodash2.default.clone(res) : {};\n res.achievements = { loadingUuid: uuid };\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, res));\n}\n\n/**\n * Finalizes the loading of member achievements.\n * @param {Object} state\n * @param {Object} error\n * @param {Array} payload.data\n * @param {String} payload.handle\n * @param {String} payload.uuid\n * @return {Object} New state.\n */\nfunction onGetAchievementsDone(state, _ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n if (error) {\n _logger2.default.error('Failed to load member achievements', payload);\n (0, _errors.fireErrorMessage)('Failed to load member achievements');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'achievements.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n achievements: { data: data, timestamp: Date.now() }\n })));\n}\n\n/**\n * Initializes the loading of member financial information.\n * @param {Object} state\n * @param {String} action.payload.handle\n * @param {String} action.payload.uuid\n * @return {Object} New state.\n */\nfunction onGetFinancesInit(state, action) {\n var _action$payload2 = action.payload,\n handle = _action$payload2.handle,\n uuid = _action$payload2.uuid;\n\n var envelop = (0, _extends21.default)({}, state[handle] || {}, {\n finances: {\n loadingUuid: uuid,\n timestamp: 0\n }\n });\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, envelop));\n}\n\n/**\n * Finalizes a pending loading of member financial information.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetFinancesDone(state, _ref3) {\n var error = _ref3.error,\n payload = _ref3.payload;\n\n if (error) {\n _logger2.default.error('Failed to get user financial info', payload);\n (0, _errors.fireErrorMessage)('Failed to get user financial info', '');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'finances.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n finances: {\n data: data,\n loadingUuid: '',\n timestamp: Date.now()\n }\n })));\n}\n\n/**\n * Inits the loading of member stats.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsInit(state, action) {\n var _action$payload3 = action.payload,\n handle = _action$payload3.handle,\n uuid = _action$payload3.uuid;\n\n var res = state[handle];\n res = res ? _lodash2.default.clone(res) : {};\n res.stats = { loadingUuid: uuid };\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, res));\n}\n\n/**\n * Finalizes the loading of member stats.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsDone(state, _ref4) {\n var error = _ref4.error,\n payload = _ref4.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member stats', payload);\n (0, _errors.fireErrorMessage)('Failed to get member stats', '');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'stats.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n stats: { data: data, timestamp: Date.now() }\n })));\n}\n\n/**\n * Inits the loading of member stats history.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsHistoryInit(state, action) {\n var _action$payload4 = action.payload,\n handle = _action$payload4.handle,\n uuid = _action$payload4.uuid;\n\n var res = state[handle];\n res = res ? _lodash2.default.clone(res) : {};\n res.statsHistory = { loadingUuid: uuid };\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, res));\n}\n\n/**\n * Finalizes the loading of member stats history.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsHistoryDone(state, _ref5) {\n var error = _ref5.error,\n payload = _ref5.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member statsHistory', payload);\n (0, _errors.fireErrorMessage)('Failed to get member statsHistory', '');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'statsHistory.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n statsHistory: { data: data, timestamp: Date.now() }\n })));\n}\n\n/**\n * Inits the loading of member stats distribution.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsDistributionInit(state, action) {\n var _action$payload5 = action.payload,\n handle = _action$payload5.handle,\n uuid = _action$payload5.uuid;\n\n var res = state[handle];\n res = res ? _lodash2.default.clone(res) : {};\n res.statsDistribution = { loadingUuid: uuid };\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, res));\n}\n\n/**\n * Finalizes the loading of member stats distribution.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetStatsDistributionDone(state, _ref6) {\n var error = _ref6.error,\n payload = _ref6.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member statsDistribution', payload);\n (0, _errors.fireErrorMessage)('Failed to get member statsDistribution', '');\n return state;\n }\n\n var data = payload.data,\n handle = payload.handle,\n uuid = payload.uuid;\n\n if (uuid !== _lodash2.default.get(state[handle], 'statsDistribution.loadingUuid')) return state;\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n statsDistribution: { data: data, timestamp: Date.now() }\n })));\n}\n\n/**\n * Inits the loading of member active challenges.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetActiveChallengesInit(state, action) {\n var handle = action.payload.handle;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], { activeChallengesCount: null })));\n}\n\n/**\n * Finalizes the loading of member active challenges.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetActiveChallengesDone(state, _ref7) {\n var error = _ref7.error,\n payload = _ref7.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member active challenges', payload);\n (0, _errors.fireErrorMessage)('Failed to get member active challenges', '');\n return state;\n }\n\n var handle = payload.handle,\n challenges = payload.challenges;\n\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n activeChallengesCount: challenges.length\n })));\n}\n\n/**\n * Inits the loading of member subtrack challenges.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetSubtrackChallengesInit(state, _ref8) {\n var payload = _ref8.payload;\n var handle = payload.handle,\n uuid = payload.uuid;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], { loadingSubTrackChallengesUUID: uuid })));\n}\n\n/**\n * Finalizes the loading of member subtrack challenges.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetSubtrackChallengesDone(state, _ref9) {\n var error = _ref9.error,\n payload = _ref9.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member subtrack challenges', payload);\n (0, _errors.fireErrorMessage)('Failed to get member subtrack challenges', '');\n return state;\n }\n\n var uuid = payload.uuid,\n challenges = payload.challenges,\n refresh = payload.refresh,\n handle = payload.handle;\n\n if (uuid !== state[handle].loadingSubTrackChallengesUUID) return state;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n subtrackChallenges: state[handle].subtrackChallenges && !refresh ? [].concat((0, _toConsumableArray3.default)(state[handle].subtrackChallenges), (0, _toConsumableArray3.default)(challenges)) : challenges,\n // if current query returns 0 item, mark it completed\n subtrackChallengesHasMore: challenges && challenges.length > 0,\n loadingSubTrackChallengesUUID: ''\n })));\n}\n\n/**\n * Inits the loading of member SRMs.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserSRMInit(state, _ref10) {\n var payload = _ref10.payload;\n var handle = payload.handle,\n uuid = payload.uuid;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], { loadingSRMUUID: uuid })));\n}\n\n/**\n * Finalizes the loading of member SRMs.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserSRMDone(state, _ref11) {\n var error = _ref11.error,\n payload = _ref11.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member SRMs', payload);\n (0, _errors.fireErrorMessage)('Failed to get member SRMs', '');\n return state;\n }\n\n var uuid = payload.uuid,\n srms = payload.srms,\n refresh = payload.refresh,\n handle = payload.handle;\n\n if (uuid !== state[handle].loadingSRMUUID) return state;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n userSRMs: state[handle].userSRMs && !refresh ? [].concat((0, _toConsumableArray3.default)(state[handle].userSRMs), (0, _toConsumableArray3.default)(srms)) : srms,\n userSRMHasMore: srms && srms.length > 0, // if current query returns 0 item, mark it completed\n loadingSRMUUID: ''\n })));\n}\n\n/**\n * Inits the loading of member marathons.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserMarathonInit(state, _ref12) {\n var payload = _ref12.payload;\n var handle = payload.handle,\n uuid = payload.uuid;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], { loadingMarathonUUID: uuid })));\n}\n\n/**\n * Finalizes the loading of member marathons.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetUserMarathonDone(state, _ref13) {\n var error = _ref13.error,\n payload = _ref13.payload;\n\n if (error) {\n _logger2.default.error('Failed to get member marathons', payload);\n (0, _errors.fireErrorMessage)('Failed to get member marathons', '');\n return state;\n }\n\n var uuid = payload.uuid,\n marathons = payload.marathons,\n refresh = payload.refresh,\n handle = payload.handle;\n\n if (uuid !== state[handle].loadingMarathonUUID) return state;\n\n return (0, _extends21.default)({}, state, (0, _defineProperty3.default)({}, handle, (0, _extends21.default)({}, state[handle], {\n userMarathons: state[handle].userMarathons && !refresh ? [].concat((0, _toConsumableArray3.default)(state[handle].userMarathons), (0, _toConsumableArray3.default)(marathons.challenges)) : marathons.challenges,\n // if current query returns 0 item, mark it completed\n userMarathonHasMore: marathons && marathons.challenges && marathons.challenges.length > 0,\n loadingMarathonUUID: ''\n })));\n}\n\n/**\n * Creates a new Members reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Members reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _members2.default.members;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.drop, onDrop), (0, _defineProperty3.default)(_handleActions, a.dropAll, onDropAll), (0, _defineProperty3.default)(_handleActions, a.getAchievementsInit, onGetAchievementsInit), (0, _defineProperty3.default)(_handleActions, a.getAchievementsDone, onGetAchievementsDone), (0, _defineProperty3.default)(_handleActions, a.getAchievementsV3Done, onGetAchievementsDone), (0, _defineProperty3.default)(_handleActions, a.getFinancesInit, onGetFinancesInit), (0, _defineProperty3.default)(_handleActions, a.getFinancesDone, onGetFinancesDone), (0, _defineProperty3.default)(_handleActions, a.getStatsInit, onGetStatsInit), (0, _defineProperty3.default)(_handleActions, a.getStatsDone, onGetStatsDone), (0, _defineProperty3.default)(_handleActions, a.getStatsHistoryInit, onGetStatsHistoryInit), (0, _defineProperty3.default)(_handleActions, a.getStatsHistoryDone, onGetStatsHistoryDone), (0, _defineProperty3.default)(_handleActions, a.getStatsDistributionInit, onGetStatsDistributionInit), (0, _defineProperty3.default)(_handleActions, a.getStatsDistributionDone, onGetStatsDistributionDone), (0, _defineProperty3.default)(_handleActions, a.getActiveChallengesInit, onGetActiveChallengesInit), (0, _defineProperty3.default)(_handleActions, a.getActiveChallengesDone, onGetActiveChallengesDone), (0, _defineProperty3.default)(_handleActions, a.getSubtrackChallengesInit, onGetSubtrackChallengesInit), (0, _defineProperty3.default)(_handleActions, a.getSubtrackChallengesDone, onGetSubtrackChallengesDone), (0, _defineProperty3.default)(_handleActions, a.getUserSrmInit, onGetUserSRMInit), (0, _defineProperty3.default)(_handleActions, a.getUserSrmDone, onGetUserSRMDone), (0, _defineProperty3.default)(_handleActions, a.getUserMarathonInit, onGetUserMarathonInit), (0, _defineProperty3.default)(_handleActions, a.getUserMarathonDone, onGetUserMarathonDone), _handleActions), initialState);\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onDrop, 'onDrop', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onDropAll, 'onDropAll', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetAchievementsInit, 'onGetAchievementsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetAchievementsDone, 'onGetAchievementsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetFinancesInit, 'onGetFinancesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetFinancesDone, 'onGetFinancesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsInit, 'onGetStatsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsDone, 'onGetStatsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsHistoryInit, 'onGetStatsHistoryInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsHistoryDone, 'onGetStatsHistoryDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsDistributionInit, 'onGetStatsDistributionInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetStatsDistributionDone, 'onGetStatsDistributionDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetActiveChallengesInit, 'onGetActiveChallengesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetActiveChallengesDone, 'onGetActiveChallengesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetSubtrackChallengesInit, 'onGetSubtrackChallengesInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetSubtrackChallengesDone, 'onGetSubtrackChallengesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetUserSRMInit, 'onGetUserSRMInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetUserSRMDone, 'onGetUserSRMDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetUserMarathonInit, 'onGetUserMarathonInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(onGetUserMarathonDone, 'onGetUserMarathonDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/members.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/members.js?"); /***/ }), @@ -736,7 +736,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _smp = __webpack_require__(/*! ../actions/smp */ \"./src/actions/smp.js\");\n\nvar _smp2 = _interopRequireDefault(_smp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.my-submissions-management\"\n * @desc This reducer and corresponding actions control the logic for\n * submission management.\n * @todo Document state segment structure.\n */\n\n\n/**\n * Creates a new Submission management reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Submission management reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, _smp2.default.smp.deleteSubmissionDone, function (state) {\n return (0, _extends3.default)({}, state, {\n deletingSubmission: false\n });\n }), (0, _defineProperty3.default)(_handleActions, _smp2.default.smp.deleteSubmissionInit, function (state) {\n return (0, _extends3.default)({}, state, {\n deletingSubmission: true\n });\n }), _handleActions), _lodash2.default.defaults(initialState, {}));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/my-submissions-management.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/my-submissions-management.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/my-submissions-management.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/my-submissions-management.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _smp = __webpack_require__(/*! ../actions/smp */ \"./src/actions/smp.js\");\n\nvar _smp2 = _interopRequireDefault(_smp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.my-submissions-management\"\n * @desc This reducer and corresponding actions control the logic for\n * submission management.\n * @todo Document state segment structure.\n */\n\n\n/**\n * Creates a new Submission management reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Submission management reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, _smp2.default.smp.deleteSubmissionDone, function (state) {\n return (0, _extends3.default)({}, state, {\n deletingSubmission: false\n });\n }), (0, _defineProperty3.default)(_handleActions, _smp2.default.smp.deleteSubmissionInit, function (state) {\n return (0, _extends3.default)({}, state, {\n deletingSubmission: true\n });\n }), _handleActions), _lodash2.default.defaults(initialState, {}));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/my-submissions-management.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/my-submissions-management.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/my-submissions-management.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/my-submissions-management.js?"); /***/ }), @@ -748,7 +748,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _profile = __webpack_require__(/*! ../actions/profile */ \"./src/actions/profile.js\");\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.profile\"\n * @desc Reducer for Profile API data\n * @todo Document reducer state structure.\n */\n\n\n/**\n * Handles PROFILE/GET_ACHIEVEMENTS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetAchievementsDone(state, _ref) {\n var payload = _ref.payload,\n error = _ref.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n achievements: payload.Achievements,\n copilot: payload.copilot,\n country: payload.country,\n loadingError: false\n });\n}\n\n/**\n * Handles PROFILE/GET_ACHIEVEMENTS_V3_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetAchievementsV3Done(state, _ref2) {\n var payload = _ref2.payload,\n error = _ref2.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n achievements: payload.achievements || [],\n copilot: payload.copilot,\n country: payload.country,\n loadingError: false\n });\n}\n\n/**\n * Handles PROFILE/GET_EXTERNAL_ACCOUNTS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetExternalAccountsDone(state, _ref3) {\n var payload = _ref3.payload,\n error = _ref3.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n externalAccounts: payload\n });\n}\n\n/**\n * Handles PROFILE/GET_EXTERNAL_LINKS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetExternalLinksDone(state, _ref4) {\n var payload = _ref4.payload,\n error = _ref4.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n externalLinks: payload\n });\n}\n\n/**\n * Handles PROFILE/GET_INFO_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetInfoDone(state, _ref5) {\n var payload = _ref5.payload,\n error = _ref5.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { info: payload, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_SKILLS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetSkillsDone(state, _ref6) {\n var payload = _ref6.payload,\n error = _ref6.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { skills: payload.skills, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_STATS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetStatsDone(state, _ref7) {\n var payload = _ref7.payload,\n error = _ref7.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { stats: payload, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_LINKED_ACCOUNTS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetLinkedAccountsDone(state, _ref8) {\n var payload = _ref8.payload,\n error = _ref8.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { linkedAccounts: payload.profiles, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_CREDENTIAL_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetCredentialDone(state, _ref9) {\n var payload = _ref9.payload,\n error = _ref9.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { credential: payload.credential, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_EMAIL_PREFERENCES_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetEmailPreferencesDone(state, _ref10) {\n var payload = _ref10.payload,\n error = _ref10.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { emailPreferences: payload.subscriptions, loadingError: false });\n}\n\n/**\n * Handles PROFILE/UPLOAD_PHOTO_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onUploadPhotoDone(state, _ref11) {\n var payload = _ref11.payload,\n error = _ref11.error;\n\n var newState = (0, _extends3.default)({}, state, { uploadingPhoto: false });\n\n if (error) {\n _logger2.default.error('Failed to upload user photo', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to upload photo!');\n return newState;\n }\n\n if (!newState.info || newState.info.handle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n info: (0, _extends3.default)({}, newState.info, {\n photoURL: payload.photoURL\n })\n });\n}\n\n/**\n * Handles PROFILE/DELETE_PHOTO_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onDeletePhotoDone(state, _ref12) {\n var payload = _ref12.payload,\n error = _ref12.error;\n\n var newState = (0, _extends3.default)({}, state, { deletingPhoto: false });\n\n if (error) {\n _logger2.default.error('Failed to delete user photo', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to delete photo!');\n return newState;\n }\n\n if (!newState.info || newState.info.handle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n info: (0, _extends3.default)({}, newState.info, {\n photoURL: null\n })\n });\n}\n\n/**\n * Handles PROFILE/UPDATE_PROFILE_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onUpdateProfileDone(state, _ref13) {\n var payload = _ref13.payload,\n error = _ref13.error;\n\n var newState = (0, _extends3.default)({}, state, { updatingProfile: false });\n\n if (payload.isEmailConflict) {\n return (0, _extends3.default)({}, newState, {\n isEmailConflict: true,\n updateProfileSuccess: false\n });\n }\n\n if (error) {\n _logger2.default.error('Failed to update user profile', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to update user profile!');\n return (0, _extends3.default)({}, newState, {\n updateProfileSuccess: false\n });\n }\n\n if (!newState.info || newState.info.handle !== payload.handle) {\n return (0, _extends3.default)({}, newState, {\n updateProfileSuccess: true\n });\n }\n\n return (0, _extends3.default)({}, newState, {\n info: (0, _extends3.default)({}, newState.info, payload),\n updateProfileSuccess: true\n });\n}\n\n/**\n * Handles PROFILE/ADD_SKILL_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onAddSkillDone(state, _ref14) {\n var payload = _ref14.payload,\n error = _ref14.error;\n\n var newState = (0, _extends3.default)({}, state, { addingSkill: false });\n\n if (error) {\n _logger2.default.error('Failed to add user skill', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to add user skill!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n skills: payload.skills\n });\n}\n\n/**\n * Handles PROFILE/HIDE_SKILL_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onHideSkillDone(state, _ref15) {\n var payload = _ref15.payload,\n error = _ref15.error;\n\n var newState = (0, _extends3.default)({}, state, { hidingSkill: false });\n\n if (error) {\n _logger2.default.error('Failed to remove user skill', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to remove user skill!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n skills: payload.skills\n });\n}\n\n/**\n * Handles PROFILE/ADD_WEB_LINK_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onAddWebLinkDone(state, _ref16) {\n var payload = _ref16.payload,\n error = _ref16.error;\n\n var newState = (0, _extends3.default)({}, state, { addingWebLink: false });\n\n if (error) {\n _logger2.default.error('Failed to add web link', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to add web link!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle || !payload.data) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n externalLinks: [].concat((0, _toConsumableArray3.default)(newState.externalLinks), [payload.data])\n });\n}\n\n/**\n * Handles PROFILE/DELETE_WEB_LINK_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onDeleteWebLinkDone(state, _ref17) {\n var payload = _ref17.payload,\n error = _ref17.error;\n\n var newState = (0, _extends3.default)({}, state, { deletingWebLink: false });\n\n if (error) {\n _logger2.default.error('Failed to delete web link', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to delete web link!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle || !payload.data) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n externalLinks: _lodash2.default.filter(newState.externalLinks, function (el) {\n return el.key !== payload.data.key;\n })\n });\n}\n\n/**\n * Handles PROFILE/LINK_EXTERNAL_ACCOUNT_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onLinkExternalAccountDone(state, _ref18) {\n var payload = _ref18.payload,\n error = _ref18.error;\n\n var newState = (0, _extends3.default)({}, state, { linkingExternalAccount: false });\n\n if (error) {\n _logger2.default.error('Failed to link external account', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to link external account!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle || !payload.data) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n linkedAccounts: [].concat((0, _toConsumableArray3.default)(newState.linkedAccounts), [payload.data])\n });\n}\n\n/**\n * Handles PROFILE/UNLINK_EXTERNAL_ACCOUNT_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onUnlinkExternalAccountDone(state, _ref19) {\n var payload = _ref19.payload,\n error = _ref19.error;\n\n var newState = (0, _extends3.default)({}, state, { unlinkingExternalAccount: false });\n\n if (error) {\n _logger2.default.error('Failed to unlink external account', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to unlink external account!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n linkedAccounts: _lodash2.default.filter(newState.linkedAccounts, function (el) {\n return el.providerType !== payload.providerType;\n })\n });\n}\n\n/**\n * Handles PROFILE/SAVE_EMAIL_PREFERENCES_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onSaveEmailPreferencesDone(state, _ref20) {\n var payload = _ref20.payload,\n error = _ref20.error;\n\n var newState = (0, _extends3.default)({}, state, { savingEmailPreferences: false });\n\n if (error) {\n _logger2.default.error('Failed to save email preferences', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to save email preferences!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle || !payload.data) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n emailPreferences: payload.data.subscriptions\n });\n}\n\n/**\n * Handles PROFILE/UPDATE_PASSWORD_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onUpdatePasswordDone(state, _ref21) {\n var payload = _ref21.payload,\n error = _ref21.error;\n\n var newState = (0, _extends3.default)({}, state, { updatingPassword: false });\n\n if (error) {\n _logger2.default.error('Failed to update password', payload);\n (0, _errors.fireErrorMessage)('The old password is invalid');\n }\n return newState;\n}\n\n/**\n * Handles PROFILE/VERIFY_MEMBER_NEW_EMAIL_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onVerifyMemberNewEmailDone(state, _ref22) {\n var payload = _ref22.payload,\n error = _ref22.error;\n\n var newState = (0, _extends3.default)({}, state, { verifyingEmail: false });\n\n if (error) {\n _logger2.default.error('Failed to verify member new email', payload);\n return (0, _extends3.default)({}, newState, {\n verifyError: true\n });\n }\n\n return (0, _extends3.default)({}, newState, {\n verifyError: false,\n emailChangeResult: payload.data\n });\n}\n\n/**\n * Handles UPDATE_EMAIL_CONFLICT action\n * @param {Object} state\n * @param {Object} action Payload will be a boolean value\n * @return {Object} New state\n */\nfunction onUpdateEmailConflict(state, _ref23) {\n var payload = _ref23.payload;\n\n return (0, _extends3.default)({}, state, {\n isEmailConflict: payload\n });\n}\n\n/**\n * Creates a new Profile reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Profile reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n var a = _profile2.default.profile;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.clearProfile, function (state) {\n return (0, _extends3.default)({}, state, { achievements: null, country: '', info: null, skills: null, stats: null\n });\n }), (0, _defineProperty3.default)(_handleActions, a.loadProfile, function (state, action) {\n return (0, _extends3.default)({}, state, { profileForHandle: action.payload });\n }), (0, _defineProperty3.default)(_handleActions, a.getAchievementsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getAchievementsDone, onGetAchievementsDone), (0, _defineProperty3.default)(_handleActions, a.getAchievementsV3Done, onGetAchievementsV3Done), (0, _defineProperty3.default)(_handleActions, a.getExternalAccountsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getExternalAccountsDone, onGetExternalAccountsDone), (0, _defineProperty3.default)(_handleActions, a.getExternalLinksInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getExternalLinksDone, onGetExternalLinksDone), (0, _defineProperty3.default)(_handleActions, a.getInfoInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getInfoDone, onGetInfoDone), (0, _defineProperty3.default)(_handleActions, a.getSkillsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getSkillsDone, onGetSkillsDone), (0, _defineProperty3.default)(_handleActions, a.getStatsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getStatsDone, onGetStatsDone), (0, _defineProperty3.default)(_handleActions, a.getLinkedAccountsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getLinkedAccountsDone, onGetLinkedAccountsDone), (0, _defineProperty3.default)(_handleActions, a.uploadPhotoInit, function (state) {\n return (0, _extends3.default)({}, state, { uploadingPhoto: true });\n }), (0, _defineProperty3.default)(_handleActions, a.uploadPhotoDone, onUploadPhotoDone), (0, _defineProperty3.default)(_handleActions, a.deletePhotoInit, function (state) {\n return (0, _extends3.default)({}, state, { deletingPhoto: true });\n }), (0, _defineProperty3.default)(_handleActions, a.deletePhotoDone, onDeletePhotoDone), (0, _defineProperty3.default)(_handleActions, a.updateProfileInit, function (state) {\n return (0, _extends3.default)({}, state, { updatingProfile: true });\n }), (0, _defineProperty3.default)(_handleActions, a.updateProfileDone, onUpdateProfileDone), (0, _defineProperty3.default)(_handleActions, a.addSkillInit, function (state) {\n return (0, _extends3.default)({}, state, { addingSkill: true });\n }), (0, _defineProperty3.default)(_handleActions, a.addSkillDone, onAddSkillDone), (0, _defineProperty3.default)(_handleActions, a.hideSkillInit, function (state) {\n return (0, _extends3.default)({}, state, { hidingSkill: true });\n }), (0, _defineProperty3.default)(_handleActions, a.hideSkillDone, onHideSkillDone), (0, _defineProperty3.default)(_handleActions, a.addWebLinkInit, function (state) {\n return (0, _extends3.default)({}, state, { addingWebLink: true });\n }), (0, _defineProperty3.default)(_handleActions, a.addWebLinkDone, onAddWebLinkDone), (0, _defineProperty3.default)(_handleActions, a.deleteWebLinkInit, function (state) {\n return (0, _extends3.default)({}, state, { deletingWebLink: true });\n }), (0, _defineProperty3.default)(_handleActions, a.deleteWebLinkDone, onDeleteWebLinkDone), (0, _defineProperty3.default)(_handleActions, a.linkExternalAccountInit, function (state) {\n return (0, _extends3.default)({}, state, { linkingExternalAccount: true });\n }), (0, _defineProperty3.default)(_handleActions, a.linkExternalAccountDone, onLinkExternalAccountDone), (0, _defineProperty3.default)(_handleActions, a.unlinkExternalAccountInit, function (state) {\n return (0, _extends3.default)({}, state, { unlinkingExternalAccount: true });\n }), (0, _defineProperty3.default)(_handleActions, a.unlinkExternalAccountDone, onUnlinkExternalAccountDone), (0, _defineProperty3.default)(_handleActions, a.getCredentialInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getCredentialDone, onGetCredentialDone), (0, _defineProperty3.default)(_handleActions, a.getEmailPreferencesInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getEmailPreferencesDone, onGetEmailPreferencesDone), (0, _defineProperty3.default)(_handleActions, a.saveEmailPreferencesInit, function (state) {\n return (0, _extends3.default)({}, state, { savingEmailPreferences: true });\n }), (0, _defineProperty3.default)(_handleActions, a.saveEmailPreferencesDone, onSaveEmailPreferencesDone), (0, _defineProperty3.default)(_handleActions, a.updatePasswordInit, function (state) {\n return (0, _extends3.default)({}, state, { updatingPassword: true });\n }), (0, _defineProperty3.default)(_handleActions, a.updatePasswordDone, onUpdatePasswordDone), (0, _defineProperty3.default)(_handleActions, a.verifyMemberNewEmailInit, function (state) {\n return (0, _extends3.default)({}, state, { verifyingEmail: true });\n }), (0, _defineProperty3.default)(_handleActions, a.verifyMemberNewEmailDone, onVerifyMemberNewEmailDone), (0, _defineProperty3.default)(_handleActions, a.updateEmailConflict, onUpdateEmailConflict), _handleActions), _lodash2.default.defaults(initialState, {\n achievements: null,\n copilot: false,\n country: '',\n info: null,\n loadingError: false,\n skills: null,\n stats: null,\n verifyError: null,\n updateProfileSuccess: null\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @returns {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/* Reducer with the default initial state. */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetAchievementsDone, 'onGetAchievementsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetAchievementsV3Done, 'onGetAchievementsV3Done', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetExternalAccountsDone, 'onGetExternalAccountsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetExternalLinksDone, 'onGetExternalLinksDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetInfoDone, 'onGetInfoDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetSkillsDone, 'onGetSkillsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetStatsDone, 'onGetStatsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetLinkedAccountsDone, 'onGetLinkedAccountsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetCredentialDone, 'onGetCredentialDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetEmailPreferencesDone, 'onGetEmailPreferencesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUploadPhotoDone, 'onUploadPhotoDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onDeletePhotoDone, 'onDeletePhotoDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUpdateProfileDone, 'onUpdateProfileDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onAddSkillDone, 'onAddSkillDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onHideSkillDone, 'onHideSkillDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onAddWebLinkDone, 'onAddWebLinkDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onDeleteWebLinkDone, 'onDeleteWebLinkDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onLinkExternalAccountDone, 'onLinkExternalAccountDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUnlinkExternalAccountDone, 'onUnlinkExternalAccountDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onSaveEmailPreferencesDone, 'onSaveEmailPreferencesDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUpdatePasswordDone, 'onUpdatePasswordDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onVerifyMemberNewEmailDone, 'onVerifyMemberNewEmailDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUpdateEmailConflict, 'onUpdateEmailConflict', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/profile.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/profile.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _profile = __webpack_require__(/*! ../actions/profile */ \"./src/actions/profile.js\");\n\nvar _profile2 = _interopRequireDefault(_profile);\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.profile\"\n * @desc Reducer for Profile API data\n * @todo Document reducer state structure.\n */\n\n\n/**\n * Handles PROFILE/GET_ACHIEVEMENTS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetAchievementsDone(state, _ref) {\n var payload = _ref.payload,\n error = _ref.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n achievements: payload.Achievements,\n copilot: payload.copilot,\n country: payload.country,\n loadingError: false\n });\n}\n\n/**\n * Handles PROFILE/GET_ACHIEVEMENTS_V3_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetAchievementsV3Done(state, _ref2) {\n var payload = _ref2.payload,\n error = _ref2.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n achievements: payload.achievements || [],\n copilot: payload.copilot,\n country: payload.country,\n loadingError: false\n });\n}\n\n/**\n * Handles PROFILE/GET_EXTERNAL_ACCOUNTS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetExternalAccountsDone(state, _ref3) {\n var payload = _ref3.payload,\n error = _ref3.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n externalAccounts: payload\n });\n}\n\n/**\n * Handles PROFILE/GET_EXTERNAL_LINKS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetExternalLinksDone(state, _ref4) {\n var payload = _ref4.payload,\n error = _ref4.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, {\n externalLinks: payload\n });\n}\n\n/**\n * Handles PROFILE/GET_INFO_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetInfoDone(state, _ref5) {\n var payload = _ref5.payload,\n error = _ref5.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { info: payload, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_SKILLS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetSkillsDone(state, _ref6) {\n var payload = _ref6.payload,\n error = _ref6.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { skills: payload.skills, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_STATS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetStatsDone(state, _ref7) {\n var payload = _ref7.payload,\n error = _ref7.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { stats: payload, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_LINKED_ACCOUNTS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetLinkedAccountsDone(state, _ref8) {\n var payload = _ref8.payload,\n error = _ref8.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { linkedAccounts: payload.profiles, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_CREDENTIAL_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetCredentialDone(state, _ref9) {\n var payload = _ref9.payload,\n error = _ref9.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { credential: payload.credential, loadingError: false });\n}\n\n/**\n * Handles PROFILE/GET_EMAIL_PREFERENCES_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetEmailPreferencesDone(state, _ref10) {\n var payload = _ref10.payload,\n error = _ref10.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, { loadingError: true });\n }\n\n return (0, _extends3.default)({}, state, { emailPreferences: payload.subscriptions, loadingError: false });\n}\n\n/**\n * Handles PROFILE/UPLOAD_PHOTO_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onUploadPhotoDone(state, _ref11) {\n var payload = _ref11.payload,\n error = _ref11.error;\n\n var newState = (0, _extends3.default)({}, state, { uploadingPhoto: false });\n\n if (error) {\n _logger2.default.error('Failed to upload user photo', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to upload photo!');\n return newState;\n }\n\n if (!newState.info || newState.info.handle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n info: (0, _extends3.default)({}, newState.info, {\n photoURL: payload.photoURL\n })\n });\n}\n\n/**\n * Handles PROFILE/DELETE_PHOTO_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onDeletePhotoDone(state, _ref12) {\n var payload = _ref12.payload,\n error = _ref12.error;\n\n var newState = (0, _extends3.default)({}, state, { deletingPhoto: false });\n\n if (error) {\n _logger2.default.error('Failed to delete user photo', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to delete photo!');\n return newState;\n }\n\n if (!newState.info || newState.info.handle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n info: (0, _extends3.default)({}, newState.info, {\n photoURL: null\n })\n });\n}\n\n/**\n * Handles PROFILE/UPDATE_PROFILE_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onUpdateProfileDone(state, _ref13) {\n var payload = _ref13.payload,\n error = _ref13.error;\n\n var newState = (0, _extends3.default)({}, state, { updatingProfile: false });\n\n if (payload.isEmailConflict) {\n return (0, _extends3.default)({}, newState, {\n isEmailConflict: true,\n updateProfileSuccess: false\n });\n }\n\n if (error) {\n _logger2.default.error('Failed to update user profile', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to update user profile!');\n return (0, _extends3.default)({}, newState, {\n updateProfileSuccess: false\n });\n }\n\n if (!newState.info || newState.info.handle !== payload.handle) {\n return (0, _extends3.default)({}, newState, {\n updateProfileSuccess: true\n });\n }\n\n return (0, _extends3.default)({}, newState, {\n info: (0, _extends3.default)({}, newState.info, payload),\n updateProfileSuccess: true\n });\n}\n\n/**\n * Handles PROFILE/ADD_SKILL_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onAddSkillDone(state, _ref14) {\n var payload = _ref14.payload,\n error = _ref14.error;\n\n var newState = (0, _extends3.default)({}, state, { addingSkill: false });\n\n if (error) {\n _logger2.default.error('Failed to add user skill', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to add user skill!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n skills: payload.skills\n });\n}\n\n/**\n * Handles PROFILE/HIDE_SKILL_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onHideSkillDone(state, _ref15) {\n var payload = _ref15.payload,\n error = _ref15.error;\n\n var newState = (0, _extends3.default)({}, state, { hidingSkill: false });\n\n if (error) {\n _logger2.default.error('Failed to remove user skill', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to remove user skill!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n skills: payload.skills\n });\n}\n\n/**\n * Handles PROFILE/ADD_WEB_LINK_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onAddWebLinkDone(state, _ref16) {\n var payload = _ref16.payload,\n error = _ref16.error;\n\n var newState = (0, _extends3.default)({}, state, { addingWebLink: false });\n\n if (error) {\n _logger2.default.error('Failed to add web link', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to add web link!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle || !payload.data) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n externalLinks: [].concat((0, _toConsumableArray3.default)(newState.externalLinks), [payload.data])\n });\n}\n\n/**\n * Handles PROFILE/DELETE_WEB_LINK_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onDeleteWebLinkDone(state, _ref17) {\n var payload = _ref17.payload,\n error = _ref17.error;\n\n var newState = (0, _extends3.default)({}, state, { deletingWebLink: false });\n\n if (error) {\n _logger2.default.error('Failed to delete web link', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to delete web link!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle || !payload.data) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n externalLinks: _lodash2.default.filter(newState.externalLinks, function (el) {\n return el.key !== payload.data.key;\n })\n });\n}\n\n/**\n * Handles PROFILE/LINK_EXTERNAL_ACCOUNT_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onLinkExternalAccountDone(state, _ref18) {\n var payload = _ref18.payload,\n error = _ref18.error;\n\n var newState = (0, _extends3.default)({}, state, { linkingExternalAccount: false });\n\n if (error) {\n _logger2.default.error('Failed to link external account', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to link external account!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle || !payload.data) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n linkedAccounts: [].concat((0, _toConsumableArray3.default)(newState.linkedAccounts), [payload.data])\n });\n}\n\n/**\n * Handles PROFILE/UNLINK_EXTERNAL_ACCOUNT_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onUnlinkExternalAccountDone(state, _ref19) {\n var payload = _ref19.payload,\n error = _ref19.error;\n\n var newState = (0, _extends3.default)({}, state, { unlinkingExternalAccount: false });\n\n if (error) {\n _logger2.default.error('Failed to unlink external account', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to unlink external account!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n linkedAccounts: _lodash2.default.filter(newState.linkedAccounts, function (el) {\n return el.providerType !== payload.providerType;\n })\n });\n}\n\n/**\n * Handles PROFILE/SAVE_EMAIL_PREFERENCES_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onSaveEmailPreferencesDone(state, _ref20) {\n var payload = _ref20.payload,\n error = _ref20.error;\n\n var newState = (0, _extends3.default)({}, state, { savingEmailPreferences: false });\n\n if (error) {\n _logger2.default.error('Failed to save email preferences', payload);\n (0, _errors.fireErrorMessage)('ERROR: Failed to save email preferences!');\n return newState;\n }\n\n if (newState.profileForHandle !== payload.handle || !payload.data) {\n return newState;\n }\n\n return (0, _extends3.default)({}, newState, {\n emailPreferences: payload.data.subscriptions\n });\n}\n\n/**\n * Handles PROFILE/UPDATE_PASSWORD_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onUpdatePasswordDone(state, _ref21) {\n var payload = _ref21.payload,\n error = _ref21.error;\n\n var newState = (0, _extends3.default)({}, state, { updatingPassword: false });\n\n if (error) {\n _logger2.default.error('Failed to update password', payload);\n (0, _errors.fireErrorMessage)('The old password is invalid');\n }\n return newState;\n}\n\n/**\n * Handles PROFILE/VERIFY_MEMBER_NEW_EMAIL_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onVerifyMemberNewEmailDone(state, _ref22) {\n var payload = _ref22.payload,\n error = _ref22.error;\n\n var newState = (0, _extends3.default)({}, state, { verifyingEmail: false });\n\n if (error) {\n _logger2.default.error('Failed to verify member new email', payload);\n return (0, _extends3.default)({}, newState, {\n verifyError: true\n });\n }\n\n return (0, _extends3.default)({}, newState, {\n verifyError: false,\n emailChangeResult: payload.data\n });\n}\n\n/**\n * Handles UPDATE_EMAIL_CONFLICT action\n * @param {Object} state\n * @param {Object} action Payload will be a boolean value\n * @return {Object} New state\n */\nfunction onUpdateEmailConflict(state, _ref23) {\n var payload = _ref23.payload;\n\n return (0, _extends3.default)({}, state, {\n isEmailConflict: payload\n });\n}\n\n/**\n * Creates a new Profile reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Profile reducer.\n */\nfunction create(initialState) {\n var _handleActions;\n\n var a = _profile2.default.profile;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.clearProfile, function (state) {\n return (0, _extends3.default)({}, state, { achievements: null, country: '', info: null, skills: null, stats: null\n });\n }), (0, _defineProperty3.default)(_handleActions, a.loadProfile, function (state, action) {\n return (0, _extends3.default)({}, state, { profileForHandle: action.payload });\n }), (0, _defineProperty3.default)(_handleActions, a.getAchievementsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getAchievementsDone, onGetAchievementsDone), (0, _defineProperty3.default)(_handleActions, a.getAchievementsV3Done, onGetAchievementsV3Done), (0, _defineProperty3.default)(_handleActions, a.getExternalAccountsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getExternalAccountsDone, onGetExternalAccountsDone), (0, _defineProperty3.default)(_handleActions, a.getExternalLinksInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getExternalLinksDone, onGetExternalLinksDone), (0, _defineProperty3.default)(_handleActions, a.getInfoInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getInfoDone, onGetInfoDone), (0, _defineProperty3.default)(_handleActions, a.getSkillsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getSkillsDone, onGetSkillsDone), (0, _defineProperty3.default)(_handleActions, a.getStatsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getStatsDone, onGetStatsDone), (0, _defineProperty3.default)(_handleActions, a.getLinkedAccountsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getLinkedAccountsDone, onGetLinkedAccountsDone), (0, _defineProperty3.default)(_handleActions, a.uploadPhotoInit, function (state) {\n return (0, _extends3.default)({}, state, { uploadingPhoto: true });\n }), (0, _defineProperty3.default)(_handleActions, a.uploadPhotoDone, onUploadPhotoDone), (0, _defineProperty3.default)(_handleActions, a.deletePhotoInit, function (state) {\n return (0, _extends3.default)({}, state, { deletingPhoto: true });\n }), (0, _defineProperty3.default)(_handleActions, a.deletePhotoDone, onDeletePhotoDone), (0, _defineProperty3.default)(_handleActions, a.updateProfileInit, function (state) {\n return (0, _extends3.default)({}, state, { updatingProfile: true });\n }), (0, _defineProperty3.default)(_handleActions, a.updateProfileDone, onUpdateProfileDone), (0, _defineProperty3.default)(_handleActions, a.addSkillInit, function (state) {\n return (0, _extends3.default)({}, state, { addingSkill: true });\n }), (0, _defineProperty3.default)(_handleActions, a.addSkillDone, onAddSkillDone), (0, _defineProperty3.default)(_handleActions, a.hideSkillInit, function (state) {\n return (0, _extends3.default)({}, state, { hidingSkill: true });\n }), (0, _defineProperty3.default)(_handleActions, a.hideSkillDone, onHideSkillDone), (0, _defineProperty3.default)(_handleActions, a.addWebLinkInit, function (state) {\n return (0, _extends3.default)({}, state, { addingWebLink: true });\n }), (0, _defineProperty3.default)(_handleActions, a.addWebLinkDone, onAddWebLinkDone), (0, _defineProperty3.default)(_handleActions, a.deleteWebLinkInit, function (state) {\n return (0, _extends3.default)({}, state, { deletingWebLink: true });\n }), (0, _defineProperty3.default)(_handleActions, a.deleteWebLinkDone, onDeleteWebLinkDone), (0, _defineProperty3.default)(_handleActions, a.linkExternalAccountInit, function (state) {\n return (0, _extends3.default)({}, state, { linkingExternalAccount: true });\n }), (0, _defineProperty3.default)(_handleActions, a.linkExternalAccountDone, onLinkExternalAccountDone), (0, _defineProperty3.default)(_handleActions, a.unlinkExternalAccountInit, function (state) {\n return (0, _extends3.default)({}, state, { unlinkingExternalAccount: true });\n }), (0, _defineProperty3.default)(_handleActions, a.unlinkExternalAccountDone, onUnlinkExternalAccountDone), (0, _defineProperty3.default)(_handleActions, a.getCredentialInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getCredentialDone, onGetCredentialDone), (0, _defineProperty3.default)(_handleActions, a.getEmailPreferencesInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_handleActions, a.getEmailPreferencesDone, onGetEmailPreferencesDone), (0, _defineProperty3.default)(_handleActions, a.saveEmailPreferencesInit, function (state) {\n return (0, _extends3.default)({}, state, { savingEmailPreferences: true });\n }), (0, _defineProperty3.default)(_handleActions, a.saveEmailPreferencesDone, onSaveEmailPreferencesDone), (0, _defineProperty3.default)(_handleActions, a.updatePasswordInit, function (state) {\n return (0, _extends3.default)({}, state, { updatingPassword: true });\n }), (0, _defineProperty3.default)(_handleActions, a.updatePasswordDone, onUpdatePasswordDone), (0, _defineProperty3.default)(_handleActions, a.verifyMemberNewEmailInit, function (state) {\n return (0, _extends3.default)({}, state, { verifyingEmail: true });\n }), (0, _defineProperty3.default)(_handleActions, a.verifyMemberNewEmailDone, onVerifyMemberNewEmailDone), (0, _defineProperty3.default)(_handleActions, a.updateEmailConflict, onUpdateEmailConflict), _handleActions), _lodash2.default.defaults(initialState, {\n achievements: null,\n copilot: false,\n country: '',\n info: null,\n loadingError: false,\n skills: null,\n stats: null,\n verifyError: null,\n updateProfileSuccess: null\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @returns {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/* Reducer with the default initial state. */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetAchievementsDone, 'onGetAchievementsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetAchievementsV3Done, 'onGetAchievementsV3Done', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetExternalAccountsDone, 'onGetExternalAccountsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetExternalLinksDone, 'onGetExternalLinksDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetInfoDone, 'onGetInfoDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetSkillsDone, 'onGetSkillsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetStatsDone, 'onGetStatsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetLinkedAccountsDone, 'onGetLinkedAccountsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetCredentialDone, 'onGetCredentialDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onGetEmailPreferencesDone, 'onGetEmailPreferencesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUploadPhotoDone, 'onUploadPhotoDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onDeletePhotoDone, 'onDeletePhotoDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUpdateProfileDone, 'onUpdateProfileDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onAddSkillDone, 'onAddSkillDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onHideSkillDone, 'onHideSkillDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onAddWebLinkDone, 'onAddWebLinkDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onDeleteWebLinkDone, 'onDeleteWebLinkDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onLinkExternalAccountDone, 'onLinkExternalAccountDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUnlinkExternalAccountDone, 'onUnlinkExternalAccountDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onSaveEmailPreferencesDone, 'onSaveEmailPreferencesDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUpdatePasswordDone, 'onUpdatePasswordDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onVerifyMemberNewEmailDone, 'onVerifyMemberNewEmailDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(onUpdateEmailConflict, 'onUpdateEmailConflict', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/profile.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/profile.js?"); /***/ }), @@ -760,7 +760,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _reviewOpportunity = __webpack_require__(/*! ../actions/reviewOpportunity */ \"./src/actions/reviewOpportunity.js\");\n\nvar _reviewOpportunity2 = _interopRequireDefault(_reviewOpportunity);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.reviewOpportunity\"\n * @desc Reducer for state.reviewOpportunity\n * @todo Document state structure.\n */\n\n/**\n * Generates a list of unique terms ids required for the open review roles\n * with an agreed field\n *\n * @param {Object} details Review Opportuny details from API\n * @return {Array} List of unique terms\n */\nfunction buildRequiredTermsList(details) {\n var roles = details.payments.map(function (payment) {\n return payment.role;\n });\n\n var requiredTerms = _lodash2.default.uniqBy(details.challenge.terms\n // Sometimes roles such as Primary Reviewer have no directly equal\n // terms entry. Include the plain Reviewer terms when present as a back-up.\n .filter(function (term) {\n return term.role === 'Reviewer' || _lodash2.default.includes(roles, term.role);\n }).map(function (term) {\n return _lodash2.default.pick(term, ['termsOfUseId', 'agreed', 'title']);\n }), function (term) {\n return term.termsOfUseId;\n });\n\n return requiredTerms || [];\n}\n\n/**\n * Handles REVIEW_OPPORTUNITY/GET__DETAILS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetDetailsDone(state, _ref) {\n var payload = _ref.payload,\n error = _ref.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, {\n authError: true,\n isLoadingDetails: false\n });\n }\n\n return (0, _extends3.default)({}, state, {\n details: payload,\n isLoadingDetails: false,\n requiredTerms: buildRequiredTermsList(payload)\n });\n}\n\n/**\n * Creates a new Review opportunity reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Review opportunity reducer.\n */\nfunction create(initialState) {\n var _redux$handleActions;\n\n var a = _reviewOpportunity2.default.reviewOpportunity;\n return _topcoderReactUtils.redux.handleActions((_redux$handleActions = {}, (0, _defineProperty3.default)(_redux$handleActions, a.cancelApplicationsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_redux$handleActions, a.cancelApplicationsDone, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_redux$handleActions, a.getDetailsInit, function (state) {\n return (0, _extends3.default)({}, state, { isLoadingDetails: true });\n }), (0, _defineProperty3.default)(_redux$handleActions, a.getDetailsDone, onGetDetailsDone), (0, _defineProperty3.default)(_redux$handleActions, a.submitApplicationsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_redux$handleActions, a.submitApplicationsDone, function (state) {\n return state;\n }), _redux$handleActions), _lodash2.default.defaults(initialState, {\n authError: false,\n details: null,\n isLoadingDetails: false,\n requiredTerms: []\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @param {Object} options={} Optional. Options object for initial state.\n * @param {String} [options.auth.tokenV2=''] The V2 auth token\n * @param {String} [options.auth.tokenV3=''] The V3 auth token\n * @param {String} [options.reviewOpportunity.challenge.id=''] The challenge id.\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var challengeId = _lodash2.default.get(options, 'reviewOpportunity.challenge.id');\n\n if (challengeId) {\n var tokens = {\n tokenV2: _lodash2.default.get(options.auth, 'tokenV2'),\n tokenV3: _lodash2.default.get(options.auth, 'tokenV3')\n };\n\n var a = _reviewOpportunity2.default.reviewOpportunity;\n return _topcoderReactUtils.redux.resolveAction(a.getDetailsDone(challengeId, tokens.tokenV3)).then(function (_ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n var initialState = {};\n initialState.details = error ? null : payload;\n initialState.requiredTerms = error ? [] : buildRequiredTermsList(payload);\n create(initialState);\n });\n }\n\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(buildRequiredTermsList, 'buildRequiredTermsList', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n reactHotLoader.register(onGetDetailsDone, 'onGetDetailsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/reviewOpportunity.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _reviewOpportunity = __webpack_require__(/*! ../actions/reviewOpportunity */ \"./src/actions/reviewOpportunity.js\");\n\nvar _reviewOpportunity2 = _interopRequireDefault(_reviewOpportunity);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.reviewOpportunity\"\n * @desc Reducer for state.reviewOpportunity\n * @todo Document state structure.\n */\n\n/**\n * Generates a list of unique terms ids required for the open review roles\n * with an agreed field\n *\n * @param {Object} details Review Opportuny details from API\n * @return {Array} List of unique terms\n */\nfunction buildRequiredTermsList(details) {\n var roles = details.payments.map(function (payment) {\n return payment.role;\n });\n\n var requiredTerms = _lodash2.default.uniqBy(details.challenge.terms\n // Sometimes roles such as Primary Reviewer have no directly equal\n // terms entry. Include the plain Reviewer terms when present as a back-up.\n .filter(function (term) {\n return term.role === 'Reviewer' || _lodash2.default.includes(roles, term.role);\n }).map(function (term) {\n return _lodash2.default.pick(term, ['termsOfUseId', 'agreed', 'title']);\n }), function (term) {\n return term.termsOfUseId;\n });\n\n return requiredTerms || [];\n}\n\n/**\n * Handles REVIEW_OPPORTUNITY/GET__DETAILS_DONE action.\n * @param {Object} state\n * @param {Object} action Payload will be JSON from api call\n * @return {Object} New state\n */\nfunction onGetDetailsDone(state, _ref) {\n var payload = _ref.payload,\n error = _ref.error;\n\n if (error) {\n return (0, _extends3.default)({}, state, {\n authError: true,\n isLoadingDetails: false\n });\n }\n\n return (0, _extends3.default)({}, state, {\n details: payload,\n isLoadingDetails: false,\n requiredTerms: buildRequiredTermsList(payload)\n });\n}\n\n/**\n * Creates a new Review opportunity reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Review opportunity reducer.\n */\nfunction create(initialState) {\n var _redux$handleActions;\n\n var a = _reviewOpportunity2.default.reviewOpportunity;\n return _topcoderReactUtils.redux.handleActions((_redux$handleActions = {}, (0, _defineProperty3.default)(_redux$handleActions, a.cancelApplicationsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_redux$handleActions, a.cancelApplicationsDone, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_redux$handleActions, a.getDetailsInit, function (state) {\n return (0, _extends3.default)({}, state, { isLoadingDetails: true });\n }), (0, _defineProperty3.default)(_redux$handleActions, a.getDetailsDone, onGetDetailsDone), (0, _defineProperty3.default)(_redux$handleActions, a.submitApplicationsInit, function (state) {\n return state;\n }), (0, _defineProperty3.default)(_redux$handleActions, a.submitApplicationsDone, function (state) {\n return state;\n }), _redux$handleActions), _lodash2.default.defaults(initialState, {\n authError: false,\n details: null,\n isLoadingDetails: false,\n requiredTerms: []\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @param {Object} options={} Optional. Options object for initial state.\n * @param {String} [options.auth.tokenV2=''] The V2 auth token\n * @param {String} [options.auth.tokenV3=''] The V3 auth token\n * @param {String} [options.reviewOpportunity.challenge.id=''] The challenge id.\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var challengeId = _lodash2.default.get(options, 'reviewOpportunity.challenge.id');\n\n if (challengeId) {\n var tokens = {\n tokenV2: _lodash2.default.get(options.auth, 'tokenV2'),\n tokenV3: _lodash2.default.get(options.auth, 'tokenV3')\n };\n\n var a = _reviewOpportunity2.default.reviewOpportunity;\n return _topcoderReactUtils.redux.resolveAction(a.getDetailsDone(challengeId, tokens.tokenV3)).then(function (_ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n var initialState = {};\n initialState.details = error ? null : payload;\n initialState.requiredTerms = error ? [] : buildRequiredTermsList(payload);\n create(initialState);\n });\n }\n\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(buildRequiredTermsList, 'buildRequiredTermsList', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n reactHotLoader.register(onGetDetailsDone, 'onGetDetailsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/reviewOpportunity.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/reviewOpportunity.js?"); /***/ }), @@ -772,7 +772,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _settings = __webpack_require__(/*! ../actions/settings */ \"./src/actions/settings.js\");\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.settings\"\n * @desc Reducer for the Redux store segment that holds traits data.\n */\n\n/**\n * Handles SETTINGS/GET_ALL_USER_TRAITS action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetAllUserTraits(state, _ref) {\n var error = _ref.error,\n payload = _ref.payload;\n\n if (error) {\n _logger2.default.error('Failed to get all user traits', payload);\n return (0, _extends3.default)({}, state, {\n userTraits: []\n });\n }\n\n return (0, _extends3.default)({}, state, {\n userTraits: payload.data\n });\n}\n\n/**\n * Handles SETTINGS/MODIFY_USER_TRAIT_INIT action.\n * @param {Object} state *\n * @return {Object} New state.\n */\nfunction onModifyUserTraitInit(state) {\n return (0, _extends3.default)({}, state, {\n traitRequestCount: state.traitRequestCount + 1\n });\n}\n\n/**\n * Handles SETTINGS/ADD_USER_TRAIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onAddUserTrait(state, _ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n if (error) {\n _logger2.default.error('Failed to add user trait', payload);\n (0, _errors.fireErrorMessage)('Failed to add user trait', '');\n return (0, _extends3.default)({}, state, {\n traitRequestCount: state.traitRequestCount - 1\n });\n }\n var newData = payload.result[0];\n return (0, _extends3.default)({}, state, {\n userTraits: [].concat((0, _toConsumableArray3.default)(state.userTraits), [newData]),\n traitRequestCount: state.traitRequestCount - 1\n });\n}\n\n/**\n * Handles SETTINGS/UPDATE_USER_TRAIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onUpdateUserTrait(state, _ref3) {\n var error = _ref3.error,\n payload = _ref3.payload;\n\n if (error) {\n _logger2.default.error('Failed to update user trait', payload);\n (0, _errors.fireErrorMessage)('Failed to update user trait', '');\n return (0, _extends3.default)({}, state, {\n traitRequestCount: state.traitRequestCount - 1\n });\n }\n var newData = payload.result[0];\n var newUserTraits = state.userTraits.filter(function (trait) {\n return trait.traitId !== payload.traitId;\n });\n newUserTraits.push(newData);\n\n return (0, _extends3.default)({}, state, {\n userTraits: newUserTraits,\n traitRequestCount: state.traitRequestCount - 1\n });\n}\n\n/**\n * Handles SETTINGS/DELETE_USER_TRAIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onDeleteUserTrait(state, _ref4) {\n var error = _ref4.error,\n payload = _ref4.payload;\n\n if (error) {\n _logger2.default.error('Failed to delete user trait', payload);\n (0, _errors.fireErrorMessage)('Failed to delete user trait', '');\n return (0, _extends3.default)({}, state, {\n traitRequestCount: state.traitRequestCount - 1\n });\n }\n var newUserTraits = state.userTraits.filter(function (trait) {\n return trait.traitId !== payload.traitId;\n });\n return (0, _extends3.default)({}, state, {\n userTraits: newUserTraits,\n traitRequestCount: state.traitRequestCount - 1\n });\n}\n\n/**\n * Creates a new user trait reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} userTraits reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n traitRequestCount: 0,\n userTraits: []\n };\n\n var a = _settings2.default.settings;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.getAllUserTraits, onGetAllUserTraits), (0, _defineProperty3.default)(_handleActions, a.modifyUserTraitInit, onModifyUserTraitInit), (0, _defineProperty3.default)(_handleActions, a.addUserTrait, onAddUserTrait), (0, _defineProperty3.default)(_handleActions, a.deleteUserTrait, onDeleteUserTrait), (0, _defineProperty3.default)(_handleActions, a.updateUserTrait, onUpdateUserTrait), _handleActions), initialState);\n}\n\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetAllUserTraits, 'onGetAllUserTraits', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(onModifyUserTraitInit, 'onModifyUserTraitInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(onAddUserTrait, 'onAddUserTrait', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(onUpdateUserTrait, 'onUpdateUserTrait', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(onDeleteUserTrait, 'onDeleteUserTrait', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/settings.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/settings.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _settings = __webpack_require__(/*! ../actions/settings */ \"./src/actions/settings.js\");\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.settings\"\n * @desc Reducer for the Redux store segment that holds traits data.\n */\n\n/**\n * Handles SETTINGS/GET_ALL_USER_TRAITS action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetAllUserTraits(state, _ref) {\n var error = _ref.error,\n payload = _ref.payload;\n\n if (error) {\n _logger2.default.error('Failed to get all user traits', payload);\n return (0, _extends3.default)({}, state, {\n userTraits: []\n });\n }\n\n return (0, _extends3.default)({}, state, {\n userTraits: payload.data\n });\n}\n\n/**\n * Handles SETTINGS/MODIFY_USER_TRAIT_INIT action.\n * @param {Object} state *\n * @return {Object} New state.\n */\nfunction onModifyUserTraitInit(state) {\n return (0, _extends3.default)({}, state, {\n traitRequestCount: state.traitRequestCount + 1\n });\n}\n\n/**\n * Handles SETTINGS/ADD_USER_TRAIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onAddUserTrait(state, _ref2) {\n var error = _ref2.error,\n payload = _ref2.payload;\n\n if (error) {\n _logger2.default.error('Failed to add user trait', payload);\n (0, _errors.fireErrorMessage)('Failed to add user trait', '');\n return (0, _extends3.default)({}, state, {\n traitRequestCount: state.traitRequestCount - 1\n });\n }\n var newData = payload.result[0];\n return (0, _extends3.default)({}, state, {\n userTraits: [].concat((0, _toConsumableArray3.default)(state.userTraits), [newData]),\n traitRequestCount: state.traitRequestCount - 1\n });\n}\n\n/**\n * Handles SETTINGS/UPDATE_USER_TRAIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onUpdateUserTrait(state, _ref3) {\n var error = _ref3.error,\n payload = _ref3.payload;\n\n if (error) {\n _logger2.default.error('Failed to update user trait', payload);\n (0, _errors.fireErrorMessage)('Failed to update user trait', '');\n return (0, _extends3.default)({}, state, {\n traitRequestCount: state.traitRequestCount - 1\n });\n }\n var newData = payload.result[0];\n var newUserTraits = state.userTraits.filter(function (trait) {\n return trait.traitId !== payload.traitId;\n });\n newUserTraits.push(newData);\n\n return (0, _extends3.default)({}, state, {\n userTraits: newUserTraits,\n traitRequestCount: state.traitRequestCount - 1\n });\n}\n\n/**\n * Handles SETTINGS/DELETE_USER_TRAIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onDeleteUserTrait(state, _ref4) {\n var error = _ref4.error,\n payload = _ref4.payload;\n\n if (error) {\n _logger2.default.error('Failed to delete user trait', payload);\n (0, _errors.fireErrorMessage)('Failed to delete user trait', '');\n return (0, _extends3.default)({}, state, {\n traitRequestCount: state.traitRequestCount - 1\n });\n }\n var newUserTraits = state.userTraits.filter(function (trait) {\n return trait.traitId !== payload.traitId;\n });\n return (0, _extends3.default)({}, state, {\n userTraits: newUserTraits,\n traitRequestCount: state.traitRequestCount - 1\n });\n}\n\n/**\n * Creates a new user trait reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} userTraits reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n traitRequestCount: 0,\n userTraits: []\n };\n\n var a = _settings2.default.settings;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.getAllUserTraits, onGetAllUserTraits), (0, _defineProperty3.default)(_handleActions, a.modifyUserTraitInit, onModifyUserTraitInit), (0, _defineProperty3.default)(_handleActions, a.addUserTrait, onAddUserTrait), (0, _defineProperty3.default)(_handleActions, a.deleteUserTrait, onDeleteUserTrait), (0, _defineProperty3.default)(_handleActions, a.updateUserTrait, onUpdateUserTrait), _handleActions), initialState);\n}\n\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetAllUserTraits, 'onGetAllUserTraits', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(onModifyUserTraitInit, 'onModifyUserTraitInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(onAddUserTrait, 'onAddUserTrait', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(onUpdateUserTrait, 'onUpdateUserTrait', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(onDeleteUserTrait, 'onDeleteUserTrait', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/settings.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/settings.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/settings.js?"); /***/ }), @@ -784,7 +784,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _stats = __webpack_require__(/*! ../actions/stats */ \"./src/actions/stats.js\");\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.stats\"\n * @desc Reducer for state.stats. That part of Redux state is intended to keep\n * user- and group-related statistics to render in the frontend.\n * @todo Document state segment structure.\n */\n\n/**\n * Inits the loading of community stats.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetCommunityStatsInit(state, action) {\n var _action$payload = action.payload,\n community = _action$payload.community,\n uuid = _action$payload.uuid;\n\n var res = state.communities[community];\n res = res ? _lodash2.default.clone(res) : {};\n res.loadingUuid = uuid;\n return (0, _extends5.default)({}, state, {\n communities: (0, _extends5.default)({}, state.communities, (0, _defineProperty3.default)({}, community, res))\n });\n}\n\n/**\n * Handles result of the getCommunityStats action.\n * @param {Object} state Previous state.\n * @param {Object} action Action result.\n * @return {Object} New state.\n */\nfunction onGetCommunityStatsDone(state, _ref) {\n var error = _ref.error,\n payload = _ref.payload;\n\n if (error) {\n _logger2.default.error('Failed to load community stats', payload);\n (0, _errors.fireErrorMessage)('Failed to load community stats', '');\n return state;\n }\n\n var community = payload.community,\n stats = payload.stats,\n uuid = payload.uuid;\n\n if (_lodash2.default.get(state.communities[community], 'loadingUuid') !== uuid) {\n return state;\n }\n return (0, _extends5.default)({}, state, {\n communities: (0, _extends5.default)({}, state.communities, (0, _defineProperty3.default)({}, community, {\n data: stats,\n timestamp: Date.now()\n }))\n });\n}\n\n/**\n * Creates a new Stats reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Stats reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _stats2.default.stats;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.getCommunityStatsInit, onGetCommunityStatsInit), (0, _defineProperty3.default)(_handleActions, a.getCommunityStatsDone, onGetCommunityStatsDone), _handleActions), _lodash2.default.defaults(_lodash2.default.clone(initialState), {\n communities: {}\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetCommunityStatsInit, 'onGetCommunityStatsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/stats.js');\n reactHotLoader.register(onGetCommunityStatsDone, 'onGetCommunityStatsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/stats.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/stats.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/stats.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/stats.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/stats.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends4 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends5 = _interopRequireDefault(_extends4);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _reduxActions = __webpack_require__(/*! redux-actions */ \"redux-actions\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _stats = __webpack_require__(/*! ../actions/stats */ \"./src/actions/stats.js\");\n\nvar _stats2 = _interopRequireDefault(_stats);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.stats\"\n * @desc Reducer for state.stats. That part of Redux state is intended to keep\n * user- and group-related statistics to render in the frontend.\n * @todo Document state segment structure.\n */\n\n/**\n * Inits the loading of community stats.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetCommunityStatsInit(state, action) {\n var _action$payload = action.payload,\n community = _action$payload.community,\n uuid = _action$payload.uuid;\n\n var res = state.communities[community];\n res = res ? _lodash2.default.clone(res) : {};\n res.loadingUuid = uuid;\n return (0, _extends5.default)({}, state, {\n communities: (0, _extends5.default)({}, state.communities, (0, _defineProperty3.default)({}, community, res))\n });\n}\n\n/**\n * Handles result of the getCommunityStats action.\n * @param {Object} state Previous state.\n * @param {Object} action Action result.\n * @return {Object} New state.\n */\nfunction onGetCommunityStatsDone(state, _ref) {\n var error = _ref.error,\n payload = _ref.payload;\n\n if (error) {\n _logger2.default.error('Failed to load community stats', payload);\n (0, _errors.fireErrorMessage)('Failed to load community stats', '');\n return state;\n }\n\n var community = payload.community,\n stats = payload.stats,\n uuid = payload.uuid;\n\n if (_lodash2.default.get(state.communities[community], 'loadingUuid') !== uuid) {\n return state;\n }\n return (0, _extends5.default)({}, state, {\n communities: (0, _extends5.default)({}, state.communities, (0, _defineProperty3.default)({}, community, {\n data: stats,\n timestamp: Date.now()\n }))\n });\n}\n\n/**\n * Creates a new Stats reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function} Stats reducer.\n */\nfunction create() {\n var _handleActions;\n\n var initialState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var a = _stats2.default.stats;\n return (0, _reduxActions.handleActions)((_handleActions = {}, (0, _defineProperty3.default)(_handleActions, a.getCommunityStatsInit, onGetCommunityStatsInit), (0, _defineProperty3.default)(_handleActions, a.getCommunityStatsDone, onGetCommunityStatsDone), _handleActions), _lodash2.default.defaults(_lodash2.default.clone(initialState), {\n communities: {}\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(onGetCommunityStatsInit, 'onGetCommunityStatsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/stats.js');\n reactHotLoader.register(onGetCommunityStatsDone, 'onGetCommunityStatsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/stats.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/stats.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/stats.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/stats.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/stats.js?"); /***/ }), @@ -796,7 +796,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _terms = __webpack_require__(/*! ../actions/terms */ \"./src/actions/terms.js\");\n\nvar _terms2 = _interopRequireDefault(_terms);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.terms\"\n * @desc Reducer for state.terms.\n * @todo Document state segment structure.\n */\n\n\n/**\n * sort terms by agreed status\n * @param {Array} terms terms to sort\n * @return {Array} sorted terms\n */\nfunction sortTerms(terms) {\n return _lodash2.default.sortBy(terms, function (t) {\n return t.agreed ? 0 : 1;\n });\n}\n\n/**\n * Handles TERMS/GET_TERMS_DONE action.\n * Note, that it silently discards received terms if the entity of received data\n * mismatches the one stored in loadingTermsForEntity\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetTermsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get terms!', action.payload);\n return (0, _extends3.default)({}, state, {\n terms: [],\n getTermsFailure: action.error,\n loadingTermsForEntity: null\n });\n }\n\n if (!_lodash2.default.isEqual(action.payload.entity, state.loadingTermsForEntity)) {\n return state;\n }\n\n return (0, _extends3.default)({}, state, {\n entity: action.payload.entity,\n terms: sortTerms(action.payload.terms),\n getTermsFailure: false,\n loadingTermsForEntity: null\n });\n}\n\n/**\n * Handles TERMS/GET_TERMS_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetTermsInit(state, action) {\n return (0, _extends3.default)({}, state, {\n getTermsFailure: false,\n loadingTermsForEntity: action.payload,\n terms: [],\n entity: action.payload\n });\n}\n\n/**\n * Handles TERMS/CHECK_STATUS_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onCheckStatusDone(state, action) {\n if (action.error) {\n _logger2.default.error('Check terms status failed!', action.payload);\n return (0, _extends3.default)({}, state, {\n checkingStatus: false,\n checkStatusError: action.payload,\n canRegister: false\n });\n }\n var canRegister = _lodash2.default.every(action.payload, 'agreed');\n var selectedTerm = _lodash2.default.find(action.payload, function (t) {\n return !t.agreed;\n });\n return (0, _extends3.default)({}, state, {\n checkingStatus: false,\n checkStatusError: false,\n canRegister: canRegister,\n terms: sortTerms(action.payload),\n selectedTerm: selectedTerm\n });\n}\n\n/**\n * Handles TERMS/GET_TERM_DETAILS_DONE action.\n * Note, that it silently discards received details if the termId of received\n * mismatches the one stored in loadingDetailsForTermId field\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetTermDetailsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get term details!', action.payload);\n return (0, _extends3.default)({}, state, {\n details: null,\n getTermDetailsFailure: action.payload,\n loadingDetailsForTermId: ''\n });\n }\n\n if (_lodash2.default.toString(action.payload.termId) !== state.loadingDetailsForTermId) {\n return state;\n }\n\n return (0, _extends3.default)({}, state, action.payload, {\n getTermDetailsFailure: false,\n loadingDetailsForTermId: ''\n });\n}\n\n/**\n * Handles TERMS/GET_DOCU_SIGN_URL_DONE action.\n * Note, that it silently discards received url if the templateId of received\n * mismatches the one stored in loadingDocuSignUrl field\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetDocuSignUrlDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get docu sign url!', action.payload);\n return (0, _extends3.default)({}, state, {\n docuSignUrl: '',\n getDocuSignUrlFailure: action.payload,\n loadingDocuSignUrl: ''\n });\n }\n\n if (_lodash2.default.toString(action.payload.templateId) !== state.loadingDocuSignUrl) {\n return state;\n }\n return (0, _extends3.default)({}, state, action.payload, {\n getDocuSignUrlFailure: false,\n loadingDocuSignUrl: ''\n });\n}\n\n/**\n * Handles TERMS/AGREE_TERM_DONE action.\n * Note, that it silently discards received result if the termId of received\n * mismatches the one stored in agreeingTerm field\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onAgreeTermDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to agree term!', action.payload);\n return (0, _extends3.default)({}, state, {\n agreeTermFailure: action.payload,\n agreeingTerm: ''\n });\n }\n\n if (_lodash2.default.toString(action.payload.termId) !== state.agreeingTerm) {\n return state;\n }\n if (action.payload.success) {\n var terms = _lodash2.default.cloneDeep(state.terms);\n var term = _lodash2.default.find(terms, ['termsOfUseId', action.payload.termId]);\n term.agreed = true;\n var selectedTerm = _lodash2.default.find(terms, function (t) {\n return !t.agreed;\n });\n return (0, _extends3.default)({}, state, {\n terms: terms,\n selectedTerm: selectedTerm,\n agreeTermFailure: false,\n agreeingTerm: ''\n });\n }\n return (0, _extends3.default)({}, state, {\n agreeTermFailure: false,\n agreeingTerm: ''\n });\n}\n\n/**\n * Creates a new Profile reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function(state, action): state} Profile reducer.\n */\nfunction create(initialState) {\n var _redux$handleActions;\n\n return _topcoderReactUtils.redux.handleActions((_redux$handleActions = {}, (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getTermsInit, onGetTermsInit), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getTermsDone, onGetTermsDone), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getTermDetailsInit, function (state, _ref) {\n var payload = _ref.payload;\n return (0, _extends3.default)({}, state, {\n getTermDetailsFailure: false,\n loadingDetailsForTermId: payload,\n details: null,\n termId: payload\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getTermDetailsDone, onGetTermDetailsDone), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getDocuSignUrlInit, function (state, _ref2) {\n var payload = _ref2.payload;\n return (0, _extends3.default)({}, state, {\n getDocuSignUrlFailure: false,\n loadingDocuSignUrl: payload,\n docuSignUrl: '',\n templateId: payload\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getDocuSignUrlDone, onGetDocuSignUrlDone), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.agreeTermInit, function (state, _ref3) {\n var payload = _ref3.payload;\n return (0, _extends3.default)({}, state, {\n agreeTermFailure: false,\n agreeingTerm: payload\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.agreeTermDone, onAgreeTermDone), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.checkStatusInit, function (state) {\n return (0, _extends3.default)({}, state, {\n checkingStatus: true\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.checkStatusDone, onCheckStatusDone), _redux$handleActions), _lodash2.default.defaults(initialState, {\n terms: [],\n selectedTerm: null\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @param {Object} options={} Optional. Options object for initial state.\n * @param {String} [options.auth.tokenV2=''] The V2 auth token\n * @param {String} [options.auth.tokenV3=''] The V3 auth token\n * @param {String} [options.terms.entity.type=''] The terms entity type:\n * - `challenge`\n * - `community`\n * - `reviewOpportunity`\n * @param {String} [options.terms.entity.id=''] The terms entity id\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var entityType = _lodash2.default.get(options, 'terms.entity.type');\n var entityId = _lodash2.default.get(options, 'terms.entity.id');\n\n if (entityType && entityId) {\n var entity = options.terms.entity;\n\n var tokens = {\n tokenV2: _lodash2.default.get(options.auth, 'tokenV2'),\n tokenV3: _lodash2.default.get(options.auth, 'tokenV3')\n };\n return _topcoderReactUtils.redux.resolveAction(_terms2.default.terms.getTermsDone(entity, tokens)).then(function (termsDoneAction) {\n // we have to init first, otherwise results will be ignored by onGetTermsDone\n var state = onGetTermsInit({}, _terms2.default.terms.getTermsInit(entity));\n state = onGetTermsDone(state, termsDoneAction);\n\n return create(state);\n });\n }\n\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(sortTerms, 'sortTerms', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onGetTermsDone, 'onGetTermsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onGetTermsInit, 'onGetTermsInit', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onCheckStatusDone, 'onCheckStatusDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onGetTermDetailsDone, 'onGetTermDetailsDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onGetDocuSignUrlDone, 'onGetDocuSignUrlDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onAgreeTermDone, 'onAgreeTermDone', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(create, 'create', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(factory, 'factory', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/reducers/terms.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/terms.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.factory = factory;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _terms = __webpack_require__(/*! ../actions/terms */ \"./src/actions/terms.js\");\n\nvar _terms2 = _interopRequireDefault(_terms);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"reducers.terms\"\n * @desc Reducer for state.terms.\n * @todo Document state segment structure.\n */\n\n\n/**\n * sort terms by agreed status\n * @param {Array} terms terms to sort\n * @return {Array} sorted terms\n */\nfunction sortTerms(terms) {\n return _lodash2.default.sortBy(terms, function (t) {\n return t.agreed ? 0 : 1;\n });\n}\n\n/**\n * Handles TERMS/GET_TERMS_DONE action.\n * Note, that it silently discards received terms if the entity of received data\n * mismatches the one stored in loadingTermsForEntity\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetTermsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get terms!', action.payload);\n return (0, _extends3.default)({}, state, {\n terms: [],\n getTermsFailure: action.error,\n loadingTermsForEntity: null\n });\n }\n\n if (!_lodash2.default.isEqual(action.payload.entity, state.loadingTermsForEntity)) {\n return state;\n }\n\n return (0, _extends3.default)({}, state, {\n entity: action.payload.entity,\n terms: sortTerms(action.payload.terms),\n getTermsFailure: false,\n loadingTermsForEntity: null\n });\n}\n\n/**\n * Handles TERMS/GET_TERMS_INIT action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetTermsInit(state, action) {\n return (0, _extends3.default)({}, state, {\n getTermsFailure: false,\n loadingTermsForEntity: action.payload,\n terms: [],\n entity: action.payload\n });\n}\n\n/**\n * Handles TERMS/CHECK_STATUS_DONE action.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onCheckStatusDone(state, action) {\n if (action.error) {\n _logger2.default.error('Check terms status failed!', action.payload);\n return (0, _extends3.default)({}, state, {\n checkingStatus: false,\n checkStatusError: action.payload,\n canRegister: false\n });\n }\n var canRegister = _lodash2.default.every(action.payload, 'agreed');\n var selectedTerm = _lodash2.default.find(action.payload, function (t) {\n return !t.agreed;\n });\n return (0, _extends3.default)({}, state, {\n checkingStatus: false,\n checkStatusError: false,\n canRegister: canRegister,\n terms: sortTerms(action.payload),\n selectedTerm: selectedTerm\n });\n}\n\n/**\n * Handles TERMS/GET_TERM_DETAILS_DONE action.\n * Note, that it silently discards received details if the termId of received\n * mismatches the one stored in loadingDetailsForTermId field\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetTermDetailsDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get term details!', action.payload);\n return (0, _extends3.default)({}, state, {\n details: null,\n getTermDetailsFailure: action.payload,\n loadingDetailsForTermId: ''\n });\n }\n\n if (_lodash2.default.toString(action.payload.termId) !== state.loadingDetailsForTermId) {\n return state;\n }\n\n return (0, _extends3.default)({}, state, action.payload, {\n getTermDetailsFailure: false,\n loadingDetailsForTermId: ''\n });\n}\n\n/**\n * Handles TERMS/GET_DOCU_SIGN_URL_DONE action.\n * Note, that it silently discards received url if the templateId of received\n * mismatches the one stored in loadingDocuSignUrl field\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onGetDocuSignUrlDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to get docu sign url!', action.payload);\n return (0, _extends3.default)({}, state, {\n docuSignUrl: '',\n getDocuSignUrlFailure: action.payload,\n loadingDocuSignUrl: ''\n });\n }\n\n if (_lodash2.default.toString(action.payload.templateId) !== state.loadingDocuSignUrl) {\n return state;\n }\n return (0, _extends3.default)({}, state, action.payload, {\n getDocuSignUrlFailure: false,\n loadingDocuSignUrl: ''\n });\n}\n\n/**\n * Handles TERMS/AGREE_TERM_DONE action.\n * Note, that it silently discards received result if the termId of received\n * mismatches the one stored in agreeingTerm field\n * of the state.\n * @param {Object} state\n * @param {Object} action\n * @return {Object} New state.\n */\nfunction onAgreeTermDone(state, action) {\n if (action.error) {\n _logger2.default.error('Failed to agree term!', action.payload);\n return (0, _extends3.default)({}, state, {\n agreeTermFailure: action.payload,\n agreeingTerm: ''\n });\n }\n\n if (_lodash2.default.toString(action.payload.termId) !== state.agreeingTerm) {\n return state;\n }\n if (action.payload.success) {\n var terms = _lodash2.default.cloneDeep(state.terms);\n var term = _lodash2.default.find(terms, ['termsOfUseId', action.payload.termId]);\n term.agreed = true;\n var selectedTerm = _lodash2.default.find(terms, function (t) {\n return !t.agreed;\n });\n return (0, _extends3.default)({}, state, {\n terms: terms,\n selectedTerm: selectedTerm,\n agreeTermFailure: false,\n agreeingTerm: ''\n });\n }\n return (0, _extends3.default)({}, state, {\n agreeTermFailure: false,\n agreeingTerm: ''\n });\n}\n\n/**\n * Creates a new Profile reducer with the specified initial state.\n * @param {Object} initialState Optional. Initial state.\n * @return {Function(state, action): state} Profile reducer.\n */\nfunction create(initialState) {\n var _redux$handleActions;\n\n return _topcoderReactUtils.redux.handleActions((_redux$handleActions = {}, (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getTermsInit, onGetTermsInit), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getTermsDone, onGetTermsDone), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getTermDetailsInit, function (state, _ref) {\n var payload = _ref.payload;\n return (0, _extends3.default)({}, state, {\n getTermDetailsFailure: false,\n loadingDetailsForTermId: payload,\n details: null,\n termId: payload\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getTermDetailsDone, onGetTermDetailsDone), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getDocuSignUrlInit, function (state, _ref2) {\n var payload = _ref2.payload;\n return (0, _extends3.default)({}, state, {\n getDocuSignUrlFailure: false,\n loadingDocuSignUrl: payload,\n docuSignUrl: '',\n templateId: payload\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.getDocuSignUrlDone, onGetDocuSignUrlDone), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.agreeTermInit, function (state, _ref3) {\n var payload = _ref3.payload;\n return (0, _extends3.default)({}, state, {\n agreeTermFailure: false,\n agreeingTerm: payload\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.agreeTermDone, onAgreeTermDone), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.checkStatusInit, function (state) {\n return (0, _extends3.default)({}, state, {\n checkingStatus: true\n });\n }), (0, _defineProperty3.default)(_redux$handleActions, _terms2.default.terms.checkStatusDone, onCheckStatusDone), _redux$handleActions), _lodash2.default.defaults(initialState, {\n terms: [],\n selectedTerm: null\n }));\n}\n\n/**\n * Factory which creates a new reducer with its initial state tailored to the\n * given options object, if specified (for server-side rendering). If options\n * object is not specified, it creates just the default reducer. Accepted options are:\n * @param {Object} options={} Optional. Options object for initial state.\n * @param {String} [options.auth.tokenV2=''] The V2 auth token\n * @param {String} [options.auth.tokenV3=''] The V3 auth token\n * @param {String} [options.terms.entity.type=''] The terms entity type:\n * - `challenge`\n * - `community`\n * - `reviewOpportunity`\n * @param {String} [options.terms.entity.id=''] The terms entity id\n * @return {Promise}\n * @resolves {Function(state, action): state} New reducer.\n */\nfunction factory() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var entityType = _lodash2.default.get(options, 'terms.entity.type');\n var entityId = _lodash2.default.get(options, 'terms.entity.id');\n\n if (entityType && entityId) {\n var entity = options.terms.entity;\n\n var tokens = {\n tokenV2: _lodash2.default.get(options.auth, 'tokenV2'),\n tokenV3: _lodash2.default.get(options.auth, 'tokenV3')\n };\n return _topcoderReactUtils.redux.resolveAction(_terms2.default.terms.getTermsDone(entity, tokens)).then(function (termsDoneAction) {\n // we have to init first, otherwise results will be ignored by onGetTermsDone\n var state = onGetTermsInit({}, _terms2.default.terms.getTermsInit(entity));\n state = onGetTermsDone(state, termsDoneAction);\n\n return create(state);\n });\n }\n\n return _promise2.default.resolve(create());\n}\n\n/**\n * @static\n * @member default\n * @desc Reducer with default initial state.\n */\n\nvar _default = create();\n\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(sortTerms, 'sortTerms', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onGetTermsDone, 'onGetTermsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onGetTermsInit, 'onGetTermsInit', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onCheckStatusDone, 'onCheckStatusDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onGetTermDetailsDone, 'onGetTermDetailsDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onGetDocuSignUrlDone, 'onGetDocuSignUrlDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(onAgreeTermDone, 'onAgreeTermDone', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(create, 'create', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(factory, 'factory', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/reducers/terms.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/reducers/terms.js?"); /***/ }), @@ -874,7 +874,7 @@ eval("module.exports = JSON.parse(\"{\\\"termsOfUseId\\\":21193,\\\"title\\\":\\ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _termsAuth = __webpack_require__(/*! ./data/terms-auth.json */ \"./src/services/__mocks__/data/terms-auth.json\");\n\nvar _termsAuth2 = _interopRequireDefault(_termsAuth);\n\nvar _termsDocuSignDetails = __webpack_require__(/*! ./data/terms-docu-sign-details.json */ \"./src/services/__mocks__/data/terms-docu-sign-details.json\");\n\nvar _termsDocuSignDetails2 = _interopRequireDefault(_termsDocuSignDetails);\n\nvar _termsNoauth = __webpack_require__(/*! ./data/terms-noauth.json */ \"./src/services/__mocks__/data/terms-noauth.json\");\n\nvar _termsNoauth2 = _interopRequireDefault(_termsNoauth);\n\nvar _termsReviewer = __webpack_require__(/*! ./data/terms-reviewer.json */ \"./src/services/__mocks__/data/terms-reviewer.json\");\n\nvar _termsReviewer2 = _interopRequireDefault(_termsReviewer);\n\nvar _termsReviewerDetails = __webpack_require__(/*! ./data/terms-reviewer-details.json */ \"./src/services/__mocks__/data/terms-reviewer-details.json\");\n\nvar _termsReviewerDetails2 = _interopRequireDefault(_termsReviewerDetails);\n\nvar _termsTopcoderDetails = __webpack_require__(/*! ./data/terms-topcoder-details.json */ \"./src/services/__mocks__/data/terms-topcoder-details.json\");\n\nvar _termsTopcoderDetails2 = _interopRequireDefault(_termsTopcoderDetails);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Mock version of Terms service. To be used both for Jest testing, and for\n * manual testing inside the app (see MOCK_TERMS_SERVICE constant\n * in the app config).\n *\n * NOTE: At the moment this mock does not care much about authorization\n * (i.e. the presence of auth token), as the real backend api acts a bit\n * surprising and non-intuitive at the moment, so it is a bit difficult\n * to imitate it exactly.\n */\n\nvar reviewTermsAgreed = false;\n\nvar TermsService = function () {\n /**\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n */\n function TermsService(tokenV2) {\n (0, _classCallCheck3.default)(this, TermsService);\n\n this.private = {\n tokenV2: tokenV2\n };\n }\n\n /**\n * Mock of getChallengeTerms(..) method.\n * The second argument is optional. If present, it should be an array of\n * boolean values, and it will override acceptance status of terms read\n * from the JSON data file.\n * @param {String} challengeId\n * @param {Array} agreed Optional.\n */\n\n\n (0, _createClass3.default)(TermsService, [{\n key: 'getChallengeTerms',\n value: function getChallengeTerms(challengeId, agreed) {\n var res = _lodash2.default.clone(this.private.tokenV2 ? _termsAuth2.default : _termsNoauth2.default);\n res.serverInformation.currentTime = Date.now();\n res.requesterInformation.receivedParams.challengeId = _lodash2.default.toString(challengeId);\n if (this.private.tokenV2 && _lodash2.default.isArray(agreed)) {\n for (var i = 0; i < Math.min(agreed.length, res.terms.length); i += 1) {\n res.terms[i].agreed = agreed[i];\n }\n }\n return _promise2.default.resolve(res);\n }\n\n /**\n * Mock of getCommunityTerms(..) method.\n *\n * @param {String} communityId community id\n * @param {String} tokenV3 auth token V3\n * @param {Array} agreed Optional. If present, it should be an array of\n * boolean values, and it will override acceptance\n * status of terms read from the JSON data file.\n *\n * @return {Promise} resolves to the list of mocked terms\n */\n\n }, {\n key: 'getCommunityTerms',\n value: function getCommunityTerms(challengeId, tokenV3, agreed) {\n var res = _lodash2.default.clone(this.private.tokenV2 ? _termsAuth2.default : _termsNoauth2.default);\n res.serverInformation.currentTime = Date.now();\n if (this.private.tokenV2 && _lodash2.default.isArray(agreed)) {\n for (var i = 0; i < Math.min(agreed.length, res.terms.length); i += 1) {\n res.terms[i].agreed = agreed[i];\n delete res.terms[i].text;\n }\n }\n return _promise2.default.resolve(res);\n }\n\n /**\n * Mock of getReviewOpportunityTerms(..) method.\n */\n /* eslint-disable class-methods-use-this */\n\n }, {\n key: 'getReviewOpportunityTerms',\n value: function getReviewOpportunityTerms() {\n var res = _lodash2.default.clone(_termsReviewer2.default);\n res.terms[0].agreed = reviewTermsAgreed;\n res.terms[1].agreed = reviewTermsAgreed;\n return _promise2.default.resolve(res);\n }\n /* eslint-enable class-methods-use-this */\n\n /**\n * Mock of getTermDetails(..) method.\n * In the case of Topcoder challenge terms there is \"agreed\" field in the\n * response. If the second argument is passed into this method, it will\n * override the value of this field from JSON file with mock data.\n * @param {Number} termId\n * @param {Boolean} agreed Optional.\n */\n\n }, {\n key: 'getTermDetails',\n value: function getTermDetails(termId, agreed) {\n _lodash2.default.noop(this);\n var res = void 0;\n switch (termId) {\n case 20704:\n // eslint-disable-next-line\n agreed = reviewTermsAgreed;\n res = _lodash2.default.clone(_termsReviewerDetails2.default);\n break;\n case 21153:\n // eslint-disable-next-line\n if (reviewTermsAgreed) agreed = reviewTermsAgreed;\n res = _lodash2.default.clone(_termsDocuSignDetails2.default);\n break;\n case 21193:\n case 21194:\n res = _lodash2.default.clone(_termsTopcoderDetails2.default);\n break;\n default:\n throw new Error('Unknown termId \\'' + termId + '\\'!');\n }\n if (!_lodash2.default.isUndefined(agreed)) res.agreed = agreed;\n res.serverInformation.currentTime = Date.now();\n res.termsOfUseId = termId;\n res.requesterInformation.receivedParams.termsOfUseId = _lodash2.default.toString(termId);\n return _promise2.default.resolve(res);\n }\n }, {\n key: 'getDocuSignUrl',\n value: function getDocuSignUrl(templateId, returnUrl) {\n _lodash2.default.noop(this);\n\n /* TODO: It has not been tracked explicitely, what is the response of\n * the real api here. It sure contains \"recipientViewUrl\", and this is\n * the only thing we need for our purposes now. However, it might also\n * have another useful datafields. This should be explored. */\n return _promise2.default.resolve({\n recipientViewUrl: '/community-app-assets/api/mock/docu-sign?returnUrl=' + returnUrl\n });\n }\n }, {\n key: 'agreeTerm',\n value: function agreeTerm(termId) {\n _lodash2.default.noop(termId, this);\n\n if (termId === 20704) {\n reviewTermsAgreed = true;\n }\n\n /* TODO: It has not been tracked explicitely, what is the response of\n * the real api here. It sure contains \"success\" field, and this is\n * the only thing we need for our purposes now. However, it might also\n * have another useful datafields. This should be explored. */\n return _promise2.default.resolve({ success: true });\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return TermsService;\n}();\n\n/**\n * Returns a new or existing terms service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {Object} Terms service object\n */\n\n\nvar lastInstance = null;\nfunction getService(tokenV2) {\n /* eslint-disable no-console */\n console.error('WARNING:\\n Mock version of DocuSign service is used! Should you see this message in\\n production, contact support as soon as possible!');\n /* eslint-enable no-console */\n if (!lastInstance || tokenV2 && lastInstance.private.tokenV2 !== tokenV2) {\n lastInstance = new TermsService(tokenV2);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(reviewTermsAgreed, 'reviewTermsAgreed', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/__mocks__/terms.js');\n reactHotLoader.register(TermsService, 'TermsService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/__mocks__/terms.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/__mocks__/terms.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/__mocks__/terms.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/__mocks__/terms.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/__mocks__/terms.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _termsAuth = __webpack_require__(/*! ./data/terms-auth.json */ \"./src/services/__mocks__/data/terms-auth.json\");\n\nvar _termsAuth2 = _interopRequireDefault(_termsAuth);\n\nvar _termsDocuSignDetails = __webpack_require__(/*! ./data/terms-docu-sign-details.json */ \"./src/services/__mocks__/data/terms-docu-sign-details.json\");\n\nvar _termsDocuSignDetails2 = _interopRequireDefault(_termsDocuSignDetails);\n\nvar _termsNoauth = __webpack_require__(/*! ./data/terms-noauth.json */ \"./src/services/__mocks__/data/terms-noauth.json\");\n\nvar _termsNoauth2 = _interopRequireDefault(_termsNoauth);\n\nvar _termsReviewer = __webpack_require__(/*! ./data/terms-reviewer.json */ \"./src/services/__mocks__/data/terms-reviewer.json\");\n\nvar _termsReviewer2 = _interopRequireDefault(_termsReviewer);\n\nvar _termsReviewerDetails = __webpack_require__(/*! ./data/terms-reviewer-details.json */ \"./src/services/__mocks__/data/terms-reviewer-details.json\");\n\nvar _termsReviewerDetails2 = _interopRequireDefault(_termsReviewerDetails);\n\nvar _termsTopcoderDetails = __webpack_require__(/*! ./data/terms-topcoder-details.json */ \"./src/services/__mocks__/data/terms-topcoder-details.json\");\n\nvar _termsTopcoderDetails2 = _interopRequireDefault(_termsTopcoderDetails);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Mock version of Terms service. To be used both for Jest testing, and for\n * manual testing inside the app (see MOCK_TERMS_SERVICE constant\n * in the app config).\n *\n * NOTE: At the moment this mock does not care much about authorization\n * (i.e. the presence of auth token), as the real backend api acts a bit\n * surprising and non-intuitive at the moment, so it is a bit difficult\n * to imitate it exactly.\n */\n\nvar reviewTermsAgreed = false;\n\nvar TermsService = function () {\n /**\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n */\n function TermsService(tokenV2) {\n (0, _classCallCheck3.default)(this, TermsService);\n\n this.private = {\n tokenV2: tokenV2\n };\n }\n\n /**\n * Mock of getChallengeTerms(..) method.\n * The second argument is optional. If present, it should be an array of\n * boolean values, and it will override acceptance status of terms read\n * from the JSON data file.\n * @param {String} challengeId\n * @param {Array} agreed Optional.\n */\n\n\n (0, _createClass3.default)(TermsService, [{\n key: 'getChallengeTerms',\n value: function getChallengeTerms(challengeId, agreed) {\n var res = _lodash2.default.clone(this.private.tokenV2 ? _termsAuth2.default : _termsNoauth2.default);\n res.serverInformation.currentTime = Date.now();\n res.requesterInformation.receivedParams.challengeId = _lodash2.default.toString(challengeId);\n if (this.private.tokenV2 && _lodash2.default.isArray(agreed)) {\n for (var i = 0; i < Math.min(agreed.length, res.terms.length); i += 1) {\n res.terms[i].agreed = agreed[i];\n }\n }\n return _promise2.default.resolve(res);\n }\n\n /**\n * Mock of getCommunityTerms(..) method.\n *\n * @param {String} communityId community id\n * @param {String} tokenV3 auth token V3\n * @param {Array} agreed Optional. If present, it should be an array of\n * boolean values, and it will override acceptance\n * status of terms read from the JSON data file.\n *\n * @return {Promise} resolves to the list of mocked terms\n */\n\n }, {\n key: 'getCommunityTerms',\n value: function getCommunityTerms(challengeId, tokenV3, agreed) {\n var res = _lodash2.default.clone(this.private.tokenV2 ? _termsAuth2.default : _termsNoauth2.default);\n res.serverInformation.currentTime = Date.now();\n if (this.private.tokenV2 && _lodash2.default.isArray(agreed)) {\n for (var i = 0; i < Math.min(agreed.length, res.terms.length); i += 1) {\n res.terms[i].agreed = agreed[i];\n delete res.terms[i].text;\n }\n }\n return _promise2.default.resolve(res);\n }\n\n /**\n * Mock of getReviewOpportunityTerms(..) method.\n */\n /* eslint-disable class-methods-use-this */\n\n }, {\n key: 'getReviewOpportunityTerms',\n value: function getReviewOpportunityTerms() {\n var res = _lodash2.default.clone(_termsReviewer2.default);\n res.terms[0].agreed = reviewTermsAgreed;\n res.terms[1].agreed = reviewTermsAgreed;\n return _promise2.default.resolve(res);\n }\n /* eslint-enable class-methods-use-this */\n\n /**\n * Mock of getTermDetails(..) method.\n * In the case of Topcoder challenge terms there is \"agreed\" field in the\n * response. If the second argument is passed into this method, it will\n * override the value of this field from JSON file with mock data.\n * @param {Number} termId\n * @param {Boolean} agreed Optional.\n */\n\n }, {\n key: 'getTermDetails',\n value: function getTermDetails(termId, agreed) {\n _lodash2.default.noop(this);\n var res = void 0;\n switch (termId) {\n case 20704:\n // eslint-disable-next-line\n agreed = reviewTermsAgreed;\n res = _lodash2.default.clone(_termsReviewerDetails2.default);\n break;\n case 21153:\n // eslint-disable-next-line\n if (reviewTermsAgreed) agreed = reviewTermsAgreed;\n res = _lodash2.default.clone(_termsDocuSignDetails2.default);\n break;\n case 21193:\n case 21194:\n res = _lodash2.default.clone(_termsTopcoderDetails2.default);\n break;\n default:\n throw new Error('Unknown termId \\'' + termId + '\\'!');\n }\n if (!_lodash2.default.isUndefined(agreed)) res.agreed = agreed;\n res.serverInformation.currentTime = Date.now();\n res.termsOfUseId = termId;\n res.requesterInformation.receivedParams.termsOfUseId = _lodash2.default.toString(termId);\n return _promise2.default.resolve(res);\n }\n }, {\n key: 'getDocuSignUrl',\n value: function getDocuSignUrl(templateId, returnUrl) {\n _lodash2.default.noop(this);\n\n /* TODO: It has not been tracked explicitely, what is the response of\n * the real api here. It sure contains \"recipientViewUrl\", and this is\n * the only thing we need for our purposes now. However, it might also\n * have another useful datafields. This should be explored. */\n return _promise2.default.resolve({\n recipientViewUrl: '/community-app-assets/api/mock/docu-sign?returnUrl=' + returnUrl\n });\n }\n }, {\n key: 'agreeTerm',\n value: function agreeTerm(termId) {\n _lodash2.default.noop(termId, this);\n\n if (termId === 20704) {\n reviewTermsAgreed = true;\n }\n\n /* TODO: It has not been tracked explicitely, what is the response of\n * the real api here. It sure contains \"success\" field, and this is\n * the only thing we need for our purposes now. However, it might also\n * have another useful datafields. This should be explored. */\n return _promise2.default.resolve({ success: true });\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return TermsService;\n}();\n\n/**\n * Returns a new or existing terms service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {Object} Terms service object\n */\n\n\nvar lastInstance = null;\nfunction getService(tokenV2) {\n /* eslint-disable no-console */\n console.error('WARNING:\\n Mock version of DocuSign service is used! Should you see this message in\\n production, contact support as soon as possible!');\n /* eslint-enable no-console */\n if (!lastInstance || tokenV2 && lastInstance.private.tokenV2 !== tokenV2) {\n lastInstance = new TermsService(tokenV2);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(reviewTermsAgreed, 'reviewTermsAgreed', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/__mocks__/terms.js');\n reactHotLoader.register(TermsService, 'TermsService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/__mocks__/terms.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/__mocks__/terms.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/__mocks__/terms.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/__mocks__/terms.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/__mocks__/terms.js?"); /***/ }), @@ -886,7 +886,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTcM2mToken = exports.getApiV5 = exports.getApiV4 = exports.getApiV3 = exports.getApiV2 = undefined;\n\nvar _keys = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\n/**\n * Gets a valid TC M2M token, either requesting one from TC Auth0 API, or\n * serving one from internal cache.\n *\n * @return {Promise} Resolves to a token, valid at least next\n * getTcM2mToken.MIN_LIFETIME milliseconds.\n *\n * @throw if called outside of the server.s\n */\nvar getTcM2mToken = exports.getTcM2mToken = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var now, cached, TC_M2M, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (_topcoderReactUtils.isomorphy.isServerSide()) {\n _context2.next = 2;\n break;\n }\n\n throw new Error('getTcM2mToken() called outside the server');\n\n case 2:\n now = Date.now();\n cached = getTcM2mToken.cached;\n TC_M2M = _topcoderReactUtils.config.SECRET.TC_M2M;\n\n if (!(!cached || cached.expires < now + getTcM2mToken.MIN_LIFETIME)) {\n _context2.next = 13;\n break;\n }\n\n _context2.next = 8;\n return (0, _isomorphicFetch2.default)('https://' + _topcoderReactUtils.config.AUTH0.DOMAIN + '/oauth/token', {\n headers: { 'Content-Type': 'application/json' },\n body: (0, _stringify2.default)({\n client_id: TC_M2M.CLIENT_ID,\n client_secret: TC_M2M.CLIENT_SECRET,\n audience: TC_M2M.AUDIENCE,\n grant_type: TC_M2M.GRANT_TYPE\n }),\n method: 'POST'\n });\n\n case 8:\n res = _context2.sent;\n _context2.next = 11;\n return res.json();\n\n case 11:\n res = _context2.sent;\n\n getTcM2mToken.cached = {\n expires: now + 1000 * res.expires_in, // [ms]\n token: res.access_token\n };\n\n case 13:\n return _context2.abrupt('return', getTcM2mToken.cached.token);\n\n case 14:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function getTcM2mToken() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nexports.getApi = getApi;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _isomorphicFetch = __webpack_require__(/*! isomorphic-fetch */ \"isomorphic-fetch\");\n\nvar _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _time = __webpack_require__(/*! ../utils/time */ \"./src/utils/time.js\");\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.api\"\n * @desc This module provides a service for conventient access to Topcoder APIs.\n */\n\n/* The minimal delay [ms] between API calls. To avoid problems with the requests\n * rate limits configured in Topcoder APIs, we throttle requests rate at the\n * client side, and at server-side, in dev mode (which is meant to be used for\n * local development. */\nvar MIN_API_CALL_DELAY = _topcoderReactUtils.isomorphy.isDevBuild() ? 1000 : 200;\n\nvar API_THROTTLING = true;\n\nvar lastApiCallTimestamp = Date.now();\n\n/**\n * @static\n * @member default\n * @desc The default export from the module is\n * {@link module:services.api~Api} class.\n */\n\n/**\n * API service object. It is reused for both Topcoder API v2 and v3,\n * as in these cases we are fine with the same interface, and the only\n * thing we need to be different is the base URL and auth token to use.\n */\n\nvar Api = function () {\n /**\n * Creates a new Api object.\n * @param {String} base Base URL of the API.\n * @param {String} token Optional. Authorization token.\n */\n function Api(base, token) {\n (0, _classCallCheck3.default)(this, Api);\n\n this.private = {\n base: base,\n token: token\n };\n }\n\n /**\n * Sends HTTP request to the specified API endpoint. This method is just\n * a convenient wrapper around isomorphic fetch(..):\n *\n * - If API service has auth token, Authorization header is automatically\n * added to the request;\n *\n * - If no Content-Type header set in options, it is automatically set to\n * \"application/json\". In case you want to avoid it, pass null into\n * Content-Type header option.\n *\n * For additional details see https://github.github.io/fetch/\n * @param {String} enpoint Should start with slash, like /endpoint.\n * @param {Object} options Optional. Fetch options.\n * @return {Promise} It resolves to the HTTP response object. To get the\n * actual data you probably want to call .json() method of that object.\n * Mind that this promise rejects only on network errors. In case of\n * HTTP errors (404, etc.) the promise will be resolved successfully,\n * and you should check .status or .ok fields of the response object\n * to find out the response status.\n */\n\n\n (0, _createClass3.default)(Api, [{\n key: 'fetch',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(endpoint) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _private, base, token, headers, now;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _private = this.private, base = _private.base, token = _private.token;\n headers = options.headers ? _lodash2.default.clone(options.headers) : {};\n\n if (token) headers.Authorization = 'Bearer ' + token;\n\n _context.t0 = headers['Content-Type'];\n _context.next = _context.t0 === null ? 6 : _context.t0 === undefined ? 8 : 10;\n break;\n\n case 6:\n delete headers['Content-Type'];\n return _context.abrupt('break', 10);\n\n case 8:\n headers['Content-Type'] = 'application/json';\n return _context.abrupt('break', 10);\n\n case 10:\n if (!(API_THROTTLING && (_topcoderReactUtils.isomorphy.isClientSide() || _topcoderReactUtils.isomorphy.isDevBuild()))) {\n _context.next = 19;\n break;\n }\n\n now = Date.now();\n\n lastApiCallTimestamp += MIN_API_CALL_DELAY;\n\n if (!(lastApiCallTimestamp > now)) {\n _context.next = 18;\n break;\n }\n\n _context.next = 16;\n return (0, _time.delay)(lastApiCallTimestamp - now);\n\n case 16:\n _context.next = 19;\n break;\n\n case 18:\n lastApiCallTimestamp = now;\n\n case 19:\n return _context.abrupt('return', (0, _isomorphicFetch2.default)('' + base + endpoint, (0, _extends3.default)({}, options, {\n headers: headers\n })).catch(function (e) {\n (0, _errors.setErrorIcon)(_errors.ERROR_ICON_TYPES.NETWORK, '' + base + endpoint, e.message);\n throw e;\n }));\n\n case 20:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function fetch(_x) {\n return _ref.apply(this, arguments);\n }\n\n return fetch;\n }()\n\n /**\n * Sends DELETE request to the specified endpoint.\n * @param {String} endpoint\n * @param {Blob|BufferSource|FormData|String} body\n * @return {Promise}\n */\n\n }, {\n key: 'delete',\n value: function _delete(endpoint, body) {\n return this.fetch(endpoint, {\n body: body,\n method: 'DELETE'\n });\n }\n\n /**\n * Sends GET request to the specified endpoint.\n * @param {String} endpoint\n * @return {Promise}\n */\n\n }, {\n key: 'get',\n value: function get(endpoint) {\n return this.fetch(endpoint);\n }\n\n /**\n * Sends POST request to the specified endpoint.\n * @param {String} endpoint\n * @param {Blob|BufferSource|FormData|String} body\n * @return {Promise}\n */\n\n }, {\n key: 'post',\n value: function post(endpoint, body) {\n return this.fetch(endpoint, {\n body: body,\n method: 'POST'\n });\n }\n\n /**\n * Sends POST request to the specified endpoint, with JSON payload.\n * @param {String} endpoint\n * @param {JSON} json\n * @return {Promise}\n */\n\n }, {\n key: 'postJson',\n value: function postJson(endpoint, json) {\n return this.post(endpoint, (0, _stringify2.default)(json));\n }\n\n /**\n * Sends PUT request to the specified endpoint.\n * @param {String} endpoint\n * @param {Blob|BufferSource|FormData|String} body\n * @return {Promise}\n */\n\n }, {\n key: 'put',\n value: function put(endpoint, body) {\n return this.fetch(endpoint, {\n body: body,\n method: 'PUT'\n });\n }\n\n /**\n * Sends PUT request to the specified endpoint.\n * @param {String} endpoint\n * @param {JSON} json\n * @return {Promise}\n */\n\n }, {\n key: 'putJson',\n value: function putJson(endpoint, json) {\n return this.put(endpoint, (0, _stringify2.default)(json));\n }\n\n /**\n * Sends PATCH request to the specified endpoint.\n * @param {String} endpoint\n * @param {Blob|BufferSource|FormData|String} body\n * @return {Promise}\n */\n\n }, {\n key: 'patch',\n value: function patch(endpoint, body) {\n return this.fetch(endpoint, {\n body: body,\n method: 'PATCH'\n });\n }\n\n /**\n * Sends PATCH request to the specified endpoint.\n * @param {String} endpoint\n * @param {JSON} json\n * @return {Promise}\n */\n\n }, {\n key: 'patchJson',\n value: function patchJson(endpoint, json) {\n return this.patch(endpoint, (0, _stringify2.default)(json));\n }\n\n /**\n * Upload with progress\n * @param {String} endpoint\n * @param {Object} body and headers\n * @param {Function} callback handler for update progress only works for client side for now\n * @return {Promise}\n */\n\n }, {\n key: 'upload',\n value: function upload(endpoint, options, onProgress) {\n var _private2 = this.private,\n base = _private2.base,\n token = _private2.token;\n\n var headers = options.headers ? _lodash2.default.clone(options.headers) : {};\n if (token) headers.Authorization = 'Bearer ' + token;\n if (_topcoderReactUtils.isomorphy.isClientSide()) {\n return new _promise2.default(function (res, rej) {\n var xhr = new XMLHttpRequest(); //eslint-disable-line\n xhr.open(options.method, '' + base + endpoint);\n (0, _keys2.default)(headers).forEach(function (key) {\n if (headers[key] != null) {\n xhr.setRequestHeader(key, headers[key]);\n }\n });\n xhr.onload = function (e) {\n return res(e.target.responseText);\n };\n xhr.onerror = rej;\n if (xhr.upload && onProgress) {\n xhr.upload.onprogress = function (evt) {\n if (evt.lengthComputable) onProgress(evt.loaded / evt.total);\n };\n }\n xhr.send(options.body);\n });\n }\n return this.fetch(endpoint, options);\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return Api;\n}();\n\nvar _default = Api;\nexports.default = _default;\n\n/*\n * Topcoder API\n */\n\nvar lastApiInstances = {};\n\n/**\n * Returns a new or existing Api object for Topcoder API.\n * @param {String} version The API version.\n * @param {String} token Optional. Auth token for Topcoder API.\n * @return {Api} API service object.\n */\nfunction getApi(version, token) {\n if (!version || !_topcoderReactUtils.config.API[version]) {\n throw new Error(version + ' is not a valid API version');\n }\n if (!lastApiInstances[version] || lastApiInstances[version].private.token !== token) {\n lastApiInstances[version] = new Api(_topcoderReactUtils.config.API[version], token);\n }\n return lastApiInstances[version];\n}\n\n/**\n * Keep the old API factories for backwards compatibility\n * DO NOT USE THEM FOR NEW IMPLEMENTATIONS.\n * USE THE getApi(version, token) FACTORY.\n */\nvar getApiV2 = exports.getApiV2 = function getApiV2(token) {\n return getApi('V2', token);\n};\nvar getApiV3 = exports.getApiV3 = function getApiV3(token) {\n return getApi('V3', token);\n};\nvar getApiV4 = exports.getApiV4 = function getApiV4(token) {\n return getApi('V4', token);\n};\nvar getApiV5 = exports.getApiV5 = function getApiV5(token) {\n return getApi('V5', token);\n};\n\ngetTcM2mToken.MIN_LIFETIME = 30 * 1000; // [ms]\n\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(MIN_API_CALL_DELAY, 'MIN_API_CALL_DELAY', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(API_THROTTLING, 'API_THROTTLING', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(lastApiCallTimestamp, 'lastApiCallTimestamp', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(Api, 'Api', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(lastApiInstances, 'lastApiInstances', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApi, 'getApi', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApiV2, 'getApiV2', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApiV3, 'getApiV3', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApiV4, 'getApiV4', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApiV5, 'getApiV5', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getTcM2mToken, 'getTcM2mToken', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/api.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/api.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getTcM2mToken = exports.getApiV5 = exports.getApiV4 = exports.getApiV3 = exports.getApiV2 = undefined;\n\nvar _keys = __webpack_require__(/*! babel-runtime/core-js/object/keys */ \"babel-runtime/core-js/object/keys\");\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\n/**\n * Gets a valid TC M2M token, either requesting one from TC Auth0 API, or\n * serving one from internal cache.\n *\n * @return {Promise} Resolves to a token, valid at least next\n * getTcM2mToken.MIN_LIFETIME milliseconds.\n *\n * @throw if called outside of the server.s\n */\nvar getTcM2mToken = exports.getTcM2mToken = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var now, cached, TC_M2M, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (_topcoderReactUtils.isomorphy.isServerSide()) {\n _context2.next = 2;\n break;\n }\n\n throw new Error('getTcM2mToken() called outside the server');\n\n case 2:\n now = Date.now();\n cached = getTcM2mToken.cached;\n TC_M2M = _topcoderReactUtils.config.SECRET.TC_M2M;\n\n if (!(!cached || cached.expires < now + getTcM2mToken.MIN_LIFETIME)) {\n _context2.next = 13;\n break;\n }\n\n _context2.next = 8;\n return (0, _isomorphicFetch2.default)('https://' + _topcoderReactUtils.config.AUTH0.DOMAIN + '/oauth/token', {\n headers: { 'Content-Type': 'application/json' },\n body: (0, _stringify2.default)({\n client_id: TC_M2M.CLIENT_ID,\n client_secret: TC_M2M.CLIENT_SECRET,\n audience: TC_M2M.AUDIENCE,\n grant_type: TC_M2M.GRANT_TYPE\n }),\n method: 'POST'\n });\n\n case 8:\n res = _context2.sent;\n _context2.next = 11;\n return res.json();\n\n case 11:\n res = _context2.sent;\n\n getTcM2mToken.cached = {\n expires: now + 1000 * res.expires_in, // [ms]\n token: res.access_token\n };\n\n case 13:\n return _context2.abrupt('return', getTcM2mToken.cached.token);\n\n case 14:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function getTcM2mToken() {\n return _ref2.apply(this, arguments);\n };\n}();\n\nexports.getApi = getApi;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _isomorphicFetch = __webpack_require__(/*! isomorphic-fetch */ \"isomorphic-fetch\");\n\nvar _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _time = __webpack_require__(/*! ../utils/time */ \"./src/utils/time.js\");\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.api\"\n * @desc This module provides a service for conventient access to Topcoder APIs.\n */\n\n/* The minimal delay [ms] between API calls. To avoid problems with the requests\n * rate limits configured in Topcoder APIs, we throttle requests rate at the\n * client side, and at server-side, in dev mode (which is meant to be used for\n * local development. */\nvar MIN_API_CALL_DELAY = _topcoderReactUtils.isomorphy.isDevBuild() ? 1000 : 200;\n\nvar API_THROTTLING = true;\n\nvar lastApiCallTimestamp = Date.now();\n\n/**\n * @static\n * @member default\n * @desc The default export from the module is\n * {@link module:services.api~Api} class.\n */\n\n/**\n * API service object. It is reused for both Topcoder API v2 and v3,\n * as in these cases we are fine with the same interface, and the only\n * thing we need to be different is the base URL and auth token to use.\n */\n\nvar Api = function () {\n /**\n * Creates a new Api object.\n * @param {String} base Base URL of the API.\n * @param {String} token Optional. Authorization token.\n */\n function Api(base, token) {\n (0, _classCallCheck3.default)(this, Api);\n\n this.private = {\n base: base,\n token: token\n };\n }\n\n /**\n * Sends HTTP request to the specified API endpoint. This method is just\n * a convenient wrapper around isomorphic fetch(..):\n *\n * - If API service has auth token, Authorization header is automatically\n * added to the request;\n *\n * - If no Content-Type header set in options, it is automatically set to\n * \"application/json\". In case you want to avoid it, pass null into\n * Content-Type header option.\n *\n * For additional details see https://github.github.io/fetch/\n * @param {String} enpoint Should start with slash, like /endpoint.\n * @param {Object} options Optional. Fetch options.\n * @return {Promise} It resolves to the HTTP response object. To get the\n * actual data you probably want to call .json() method of that object.\n * Mind that this promise rejects only on network errors. In case of\n * HTTP errors (404, etc.) the promise will be resolved successfully,\n * and you should check .status or .ok fields of the response object\n * to find out the response status.\n */\n\n\n (0, _createClass3.default)(Api, [{\n key: 'fetch',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(endpoint) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _private, base, token, headers, now;\n\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _private = this.private, base = _private.base, token = _private.token;\n headers = options.headers ? _lodash2.default.clone(options.headers) : {};\n\n if (token) headers.Authorization = 'Bearer ' + token;\n\n _context.t0 = headers['Content-Type'];\n _context.next = _context.t0 === null ? 6 : _context.t0 === undefined ? 8 : 10;\n break;\n\n case 6:\n delete headers['Content-Type'];\n return _context.abrupt('break', 10);\n\n case 8:\n headers['Content-Type'] = 'application/json';\n return _context.abrupt('break', 10);\n\n case 10:\n if (!(API_THROTTLING && (_topcoderReactUtils.isomorphy.isClientSide() || _topcoderReactUtils.isomorphy.isDevBuild()))) {\n _context.next = 19;\n break;\n }\n\n now = Date.now();\n\n lastApiCallTimestamp += MIN_API_CALL_DELAY;\n\n if (!(lastApiCallTimestamp > now)) {\n _context.next = 18;\n break;\n }\n\n _context.next = 16;\n return (0, _time.delay)(lastApiCallTimestamp - now);\n\n case 16:\n _context.next = 19;\n break;\n\n case 18:\n lastApiCallTimestamp = now;\n\n case 19:\n return _context.abrupt('return', (0, _isomorphicFetch2.default)('' + base + endpoint, (0, _extends3.default)({}, options, {\n headers: headers\n })).catch(function (e) {\n (0, _errors.setErrorIcon)(_errors.ERROR_ICON_TYPES.NETWORK, '' + base + endpoint, e.message);\n throw e;\n }));\n\n case 20:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function fetch(_x) {\n return _ref.apply(this, arguments);\n }\n\n return fetch;\n }()\n\n /**\n * Sends DELETE request to the specified endpoint.\n * @param {String} endpoint\n * @param {Blob|BufferSource|FormData|String} body\n * @return {Promise}\n */\n\n }, {\n key: 'delete',\n value: function _delete(endpoint, body) {\n return this.fetch(endpoint, {\n body: body,\n method: 'DELETE'\n });\n }\n\n /**\n * Sends GET request to the specified endpoint.\n * @param {String} endpoint\n * @return {Promise}\n */\n\n }, {\n key: 'get',\n value: function get(endpoint) {\n return this.fetch(endpoint);\n }\n\n /**\n * Sends POST request to the specified endpoint.\n * @param {String} endpoint\n * @param {Blob|BufferSource|FormData|String} body\n * @return {Promise}\n */\n\n }, {\n key: 'post',\n value: function post(endpoint, body) {\n return this.fetch(endpoint, {\n body: body,\n method: 'POST'\n });\n }\n\n /**\n * Sends POST request to the specified endpoint, with JSON payload.\n * @param {String} endpoint\n * @param {JSON} json\n * @return {Promise}\n */\n\n }, {\n key: 'postJson',\n value: function postJson(endpoint, json) {\n return this.post(endpoint, (0, _stringify2.default)(json));\n }\n\n /**\n * Sends PUT request to the specified endpoint.\n * @param {String} endpoint\n * @param {Blob|BufferSource|FormData|String} body\n * @return {Promise}\n */\n\n }, {\n key: 'put',\n value: function put(endpoint, body) {\n return this.fetch(endpoint, {\n body: body,\n method: 'PUT'\n });\n }\n\n /**\n * Sends PUT request to the specified endpoint.\n * @param {String} endpoint\n * @param {JSON} json\n * @return {Promise}\n */\n\n }, {\n key: 'putJson',\n value: function putJson(endpoint, json) {\n return this.put(endpoint, (0, _stringify2.default)(json));\n }\n\n /**\n * Sends PATCH request to the specified endpoint.\n * @param {String} endpoint\n * @param {Blob|BufferSource|FormData|String} body\n * @return {Promise}\n */\n\n }, {\n key: 'patch',\n value: function patch(endpoint, body) {\n return this.fetch(endpoint, {\n body: body,\n method: 'PATCH'\n });\n }\n\n /**\n * Sends PATCH request to the specified endpoint.\n * @param {String} endpoint\n * @param {JSON} json\n * @return {Promise}\n */\n\n }, {\n key: 'patchJson',\n value: function patchJson(endpoint, json) {\n return this.patch(endpoint, (0, _stringify2.default)(json));\n }\n\n /**\n * Upload with progress\n * @param {String} endpoint\n * @param {Object} body and headers\n * @param {Function} callback handler for update progress only works for client side for now\n * @return {Promise}\n */\n\n }, {\n key: 'upload',\n value: function upload(endpoint, options, onProgress) {\n var _private2 = this.private,\n base = _private2.base,\n token = _private2.token;\n\n var headers = options.headers ? _lodash2.default.clone(options.headers) : {};\n if (token) headers.Authorization = 'Bearer ' + token;\n if (_topcoderReactUtils.isomorphy.isClientSide()) {\n return new _promise2.default(function (res, rej) {\n var xhr = new XMLHttpRequest(); //eslint-disable-line\n xhr.open(options.method, '' + base + endpoint);\n (0, _keys2.default)(headers).forEach(function (key) {\n if (headers[key] != null) {\n xhr.setRequestHeader(key, headers[key]);\n }\n });\n xhr.onload = function (e) {\n return res(e.target.responseText);\n };\n xhr.onerror = rej;\n if (xhr.upload && onProgress) {\n xhr.upload.onprogress = function (evt) {\n if (evt.lengthComputable) onProgress(evt.loaded / evt.total);\n };\n }\n xhr.send(options.body);\n });\n }\n return this.fetch(endpoint, options);\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return Api;\n}();\n\nvar _default = Api;\nexports.default = _default;\n\n/*\n * Topcoder API\n */\n\nvar lastApiInstances = {};\n\n/**\n * Returns a new or existing Api object for Topcoder API.\n * @param {String} version The API version.\n * @param {String} token Optional. Auth token for Topcoder API.\n * @return {Api} API service object.\n */\nfunction getApi(version, token) {\n if (!version || !_topcoderReactUtils.config.API[version]) {\n throw new Error(version + ' is not a valid API version');\n }\n if (!lastApiInstances[version] || lastApiInstances[version].private.token !== token) {\n lastApiInstances[version] = new Api(_topcoderReactUtils.config.API[version], token);\n }\n return lastApiInstances[version];\n}\n\n/**\n * Keep the old API factories for backwards compatibility\n * DO NOT USE THEM FOR NEW IMPLEMENTATIONS.\n * USE THE getApi(version, token) FACTORY.\n */\nvar getApiV2 = exports.getApiV2 = function getApiV2(token) {\n return getApi('V2', token);\n};\nvar getApiV3 = exports.getApiV3 = function getApiV3(token) {\n return getApi('V3', token);\n};\nvar getApiV4 = exports.getApiV4 = function getApiV4(token) {\n return getApi('V4', token);\n};\nvar getApiV5 = exports.getApiV5 = function getApiV5(token) {\n return getApi('V5', token);\n};\n\ngetTcM2mToken.MIN_LIFETIME = 30 * 1000; // [ms]\n\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(MIN_API_CALL_DELAY, 'MIN_API_CALL_DELAY', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(API_THROTTLING, 'API_THROTTLING', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(lastApiCallTimestamp, 'lastApiCallTimestamp', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(Api, 'Api', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(lastApiInstances, 'lastApiInstances', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApi, 'getApi', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApiV2, 'getApiV2', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApiV3, 'getApiV3', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApiV4, 'getApiV4', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getApiV5, 'getApiV5', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(getTcM2mToken, 'getTcM2mToken', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/api.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/api.js?"); /***/ }), @@ -898,7 +898,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.billing\"\n * @desc Access to Topcoder billing accounts.\n */\n\n\n/**\n * @static\n * @member default\n * @desc Default module export is\n * {@link module:services.billing~Billing} class.\n */\n\n/**\n * Billing service object.\n */\nvar Billing = function () {\n /**\n * Creates a new service.\n * @param {String} tokenV3 Topcoder auth token v3.\n */\n function Billing(tokenV3) {\n (0, _classCallCheck3.default)(this, Billing);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets billing accounts accessible to service user.\n * @return {Promise} Resolves to the list of billing account objects.\n */\n\n\n (0, _createClass3.default)(Billing, [{\n key: 'getUserBillingAccounts',\n value: function getUserBillingAccounts() {\n return this.private.api.fetch();\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return Billing;\n}();\n\nvar lastInstance = null;\n\n/**\n * Returns a new or existing Billing service for the user specified by token.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Billing} Billing service instance.\n */\nfunction getService(tokenV3) {\n if (!lastInstance || lastInstance.private.tokenV3 !== tokenV3) {\n lastInstance = new Billing(tokenV3);\n }\n return lastInstance;\n}\n\nvar _default = Billing;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(Billing, 'Billing', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/billing.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/billing.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/billing.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/billing.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/billing.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.billing\"\n * @desc Access to Topcoder billing accounts.\n */\n\n\n/**\n * @static\n * @member default\n * @desc Default module export is\n * {@link module:services.billing~Billing} class.\n */\n\n/**\n * Billing service object.\n */\nvar Billing = function () {\n /**\n * Creates a new service.\n * @param {String} tokenV3 Topcoder auth token v3.\n */\n function Billing(tokenV3) {\n (0, _classCallCheck3.default)(this, Billing);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets billing accounts accessible to service user.\n * @return {Promise} Resolves to the list of billing account objects.\n */\n\n\n (0, _createClass3.default)(Billing, [{\n key: 'getUserBillingAccounts',\n value: function getUserBillingAccounts() {\n return this.private.api.fetch();\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return Billing;\n}();\n\nvar lastInstance = null;\n\n/**\n * Returns a new or existing Billing service for the user specified by token.\n * @param {String} tokenV3 Topcoder auth token v3.\n * @return {Billing} Billing service instance.\n */\nfunction getService(tokenV3) {\n if (!lastInstance || lastInstance.private.tokenV3 !== tokenV3) {\n lastInstance = new Billing(tokenV3);\n }\n return lastInstance;\n}\n\nvar _default = Billing;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(Billing, 'Billing', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/billing.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/billing.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/billing.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/billing.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/billing.js?"); /***/ }), @@ -910,7 +910,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ORDER_BY = undefined;\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _set = __webpack_require__(/*! babel-runtime/core-js/set */ \"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\n/**\n * Helper method that checks for HTTP error response and throws Error in this case.\n * @param {Object} res HTTP response object\n * @return {Object} API JSON response object\n * @private\n */\nvar checkError = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(res) {\n var jsonRes;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (res.ok) {\n _context.next = 3;\n break;\n }\n\n if (res.status >= 500) {\n (0, _errors.setErrorIcon)(_errors.ERROR_ICON_TYPES.API, '/challenges', res.statusText);\n }\n throw new Error(res.statusText);\n\n case 3:\n _context.next = 5;\n return res.json();\n\n case 5:\n jsonRes = _context.sent.result;\n\n if (!(jsonRes.status !== 200)) {\n _context.next = 8;\n break;\n }\n\n throw new Error(jsonRes.content);\n\n case 8:\n return _context.abrupt('return', jsonRes);\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function checkError(_x) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Challenge service.\n */\n\n\nexports.normalizeChallengeDetails = normalizeChallengeDetails;\nexports.normalizeChallenge = normalizeChallenge;\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _moment = __webpack_require__(/*! moment */ \"moment\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _tcAccounts = __webpack_require__(/*! tc-accounts */ \"tc-accounts\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nvar _members = __webpack_require__(/*! ./members */ \"./src/services/members.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.challenges\"\n * @desc This module provides a service for convenient manipulation with\n * Topcoder challenges via TC API.\n */\n\nvar ORDER_BY = exports.ORDER_BY = {\n SUBMISSION_END_DATE: 'submissionEndDate'\n};\n\n/**\n * Normalizes a regular challenge details object received from the backend APIs.\n * @todo Why this one is exported? It should be only used internally!\n * @param {Object} challenge Challenge object received from the /challenges/{id}\n * endpoint.\n * @param {Object} filtered Challenge object received from the\n * /challenges?filter=id={id} endpoint.\n * @param {Object} user Challenge object received from the\n * /members/{username}/challenges?filter=id={id} endpoint.\n * If action was fired for authenticated visitor, `user` will contain\n * details fetched specifically for the user (thus may include additional\n * data comparing to the standard API response for the challenge details,\n * stored in `filtered`).\n * @param {String} username Optional.\n * @return {Object} Normalized challenge object.\n */\nfunction normalizeChallengeDetails(challenge, filtered, user, username) {\n // Normalize exising data to make it consistent with the rest of the code\n var finalChallenge = (0, _extends3.default)({}, challenge, {\n\n id: challenge.challengeId,\n reliabilityBonus: _lodash2.default.get(filtered, 'reliabilityBonus', 0),\n status: (challenge.currentStatus || '').toUpperCase(),\n\n allPhases: [],\n currentPhases: [],\n name: challenge.challengeName || challenge.challengeTitle,\n projectId: Number(challenge.projectId),\n forumId: Number(challenge.forumId),\n introduction: challenge.introduction || '',\n detailedRequirements: challenge.detailedRequirements === 'null' ? '' : challenge.detailedRequirements,\n finalSubmissionGuidelines: challenge.finalSubmissionGuidelines === 'null' ? '' : challenge.finalSubmissionGuidelines,\n screeningScorecardId: Number(challenge.screeningScorecardId),\n reviewScorecardId: Number(challenge.reviewScorecardId),\n numberOfCheckpointsPrizes: challenge.numberOfCheckpointsPrizes,\n topCheckPointPrize: challenge.topCheckPointPrize,\n submissionsViewable: challenge.submissionsViewable || 'false',\n reviewType: challenge.reviewType,\n allowStockArt: challenge.allowStockArt === 'true',\n fileTypes: challenge.filetypes || [],\n environment: challenge.environment,\n codeRepo: challenge.codeRepo,\n forumLink: challenge.forumLink,\n submissionLimit: Number(challenge.submissionLimit) || 0,\n drPoints: challenge.digitalRunPoints,\n directUrl: challenge.directUrl,\n technologies: challenge.technologies || challenge.technology || [],\n platforms: challenge.platforms || [],\n prizes: challenge.prize || challenge.prizes || [],\n events: _lodash2.default.map(challenge.event, function (e) {\n return {\n eventName: e.eventShortDesc,\n eventId: e.id,\n description: e.eventDescription\n };\n }),\n terms: challenge.terms,\n submissions: challenge.submissions,\n track: _lodash2.default.toUpper(challenge.challengeCommunity),\n subTrack: challenge.subTrack,\n checkpoints: challenge.checkpoints,\n documents: challenge.documents || [],\n numRegistrants: challenge.numberOfRegistrants,\n numberOfCheckpointSubmissions: challenge.numberOfCheckpointSubmissions,\n registrants: challenge.registrants || []\n });\n\n _lodash2.default.forEach(finalChallenge.registrants, function (registrant) {\n if (registrant.memberInfo) {\n var homeCountryCode = registrant.memberInfo.homeCountryCode;\n // eslint-disable-next-line no-param-reassign\n\n registrant.countryCode = homeCountryCode || registrant.memberInfo.competitionCountryCode;\n }\n });\n\n // Winners have different field names, needs to be normalized to match `filtered` and `challenge`\n finalChallenge.winners = _lodash2.default.map(challenge.winners, function (winner, index) {\n return (0, _extends3.default)({}, winner, {\n handle: winner.submitter,\n placement: winner.rank || index + 1 // Legacy MMs do not have a rank but are sorted by points\n });\n });\n\n if (finalChallenge.subTrack === 'MARATHON_MATCH') {\n finalChallenge.track = 'DATA_SCIENCE';\n }\n\n // It's not clear if this will be the main event, will need to be investigated\n finalChallenge.mainEvent = finalChallenge.events[0] || {};\n\n /* It's unclear if these normalization steps are still required for `challenge` */\n // Fill missing data from filtered\n if (filtered) {\n var groups = {};\n if (filtered.groupIds) {\n filtered.groupIds.forEach(function (id) {\n groups[id] = true;\n });\n }\n\n _lodash2.default.merge(finalChallenge, {\n componentId: filtered.componentId,\n contestId: filtered.contestId,\n\n submissionEndDate: filtered.submissionEndDate, // Dates are not correct in `challenge`\n submissionEndTimestamp: filtered.submissionEndDate, // Dates are not correct in `challenge`\n\n /* Taking phases from filtered, because dates are not correct in `challenge` */\n allPhases: filtered.allPhases || [],\n\n /* Taking phases from filtered, because dates are not correct in `challenge` */\n currentPhases: filtered.currentPhases || [],\n\n /* `challenge` has incorrect value for numberOfSubmissions for some reason */\n numSubmissions: filtered.numSubmissions,\n groups: groups\n });\n }\n\n // Fill missing data from user\n if (user) {\n _lodash2.default.defaults(finalChallenge, {\n userDetails: user.userDetails\n });\n }\n\n // Fill some derived data\n var registrationOpen = _lodash2.default.some(finalChallenge.allPhases, function (phase) {\n return phase.phaseType === 'Registration' && phase.phaseStatus === 'Open';\n }) ? 'Yes' : 'No';\n _lodash2.default.defaults(finalChallenge, {\n communities: new _set2.default([_tc.COMPETITION_TRACKS[finalChallenge.track]]),\n registrationOpen: registrationOpen,\n users: username ? (0, _defineProperty3.default)({}, username, true) : {}\n });\n\n // A hot fix to show submissions for on-going challenges\n if (!finalChallenge.submissions || !finalChallenge.submissions.length) {\n finalChallenge.submissions = finalChallenge.registrants.filter(function (r) {\n return r.submissionDate || '';\n }).sort(function (a, b) {\n return (a.submissionDate || '').localeCompare(b.submissionDate || '');\n });\n }\n\n if (!finalChallenge.allPhases) finalChallenge.allPhases = [];\n if (!finalChallenge.track) finalChallenge.track = '';\n\n return finalChallenge;\n}\n\n/**\n * Normalizes a regular challenge object received from the backend.\n * NOTE: This function is copied from the existing code in the challenge listing\n * component. It is possible, that this normalization is not necessary after we\n * have moved to Topcoder API, but it is kept for now to minimize a risk of\n * breaking anything.\n * @todo Should be used only internally!\n * @param {Object} challenge Challenge object received from the backend.\n * @param {String} username Optional.\n */\nfunction normalizeChallenge(challenge, username) {\n var registrationOpen = challenge.allPhases.filter(function (d) {\n return d.phaseType === 'Registration';\n })[0].phaseStatus === 'Open' ? 'Yes' : 'No';\n var groups = {};\n if (challenge.groupIds) {\n challenge.groupIds.forEach(function (id) {\n groups[id] = true;\n });\n }\n /* eslint-disable no-param-reassign */\n if (!challenge.prizes) challenge.prizes = challenge.prize || [];\n if (!challenge.totalPrize) {\n challenge.totalPrize = challenge.prizes.reduce(function (sum, x) {\n return sum + x;\n }, 0);\n }\n if (!challenge.technologies) challenge.technologies = [];\n if (!challenge.platforms) challenge.platforms = [];\n\n if (challenge.subTrack === 'DEVELOP_MARATHON_MATCH') {\n challenge.track = 'DATA_SCIENCE';\n }\n /* eslint-enable no-param-reassign */\n\n _lodash2.default.defaults(challenge, {\n communities: new _set2.default([_tc.COMPETITION_TRACKS[challenge.track]]),\n groups: groups,\n registrationOpen: registrationOpen,\n submissionEndTimestamp: challenge.submissionEndDate,\n users: username ? (0, _defineProperty3.default)({}, username, true) : {}\n });\n}\nvar ChallengesService = function () {\n /**\n * Creates a new ChallengeService instance.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n */\n function ChallengesService(tokenV3, tokenV2) {\n var _this = this;\n\n (0, _classCallCheck3.default)(this, ChallengesService);\n\n /**\n * Private function being re-used in all methods related to getting\n * challenges. It handles query-related arguments in the uniform way:\n * @param {String} endpoint API endpoint, where the request will be send.\n * @param {Object} filters Optional. A map of filters to pass as `filter`\n * query parameter (this function takes care to stringify it properly).\n * @param {Object} params Optional. A map of any other parameters beside\n * `filter`.\n */\n var getChallenges = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(endpoint) {\n var filters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var query, url, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n query = (0, _extends3.default)({\n filter: _qs2.default.stringify(filters, { encode: false })\n }, params);\n url = endpoint + '?' + _qs2.default.stringify(query);\n _context2.next = 4;\n return _this.private.api.get(url).then(checkError);\n\n case 4:\n res = _context2.sent;\n return _context2.abrupt('return', {\n challenges: res.content || [],\n totalCount: res.metadata.totalCount,\n meta: res.metadata\n });\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this);\n }));\n\n return function getChallenges(_x2) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n this.private = {\n api: (0, _api.getApi)('V4', tokenV3),\n apiV2: (0, _api.getApi)('V2', tokenV2),\n getChallenges: getChallenges,\n tokenV2: tokenV2,\n tokenV3: tokenV3,\n memberService: (0, _members.getService)()\n };\n }\n\n /**\n * Activates the specified challenge.\n * @param {Number} challengeId\n * @return {Promise} Resolves to null value in case of success; otherwise it\n * is rejected.\n */\n\n\n (0, _createClass3.default)(ChallengesService, [{\n key: 'activate',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(challengeId) {\n var res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.private.api.post('/challenges/' + challengeId + '/activate');\n\n case 2:\n res = _context3.sent;\n\n if (res.ok) {\n _context3.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n _context3.next = 7;\n return res.json();\n\n case 7:\n res = _context3.sent.result;\n\n if (!(res.status !== 200)) {\n _context3.next = 10;\n break;\n }\n\n throw new Error(res.content);\n\n case 10:\n return _context3.abrupt('return', res.content);\n\n case 11:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function activate(_x5) {\n return _ref5.apply(this, arguments);\n }\n\n return activate;\n }()\n\n /**\n * Closes the specified challenge.\n * @param {Number} challengeId\n * @param {Number} winnerId Optional. ID of the assignee to declare the\n * winner.\n * @return {Promise} Resolves to null value in case of success; otherwise it\n * is rejected.\n */\n\n }, {\n key: 'close',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(challengeId, winnerId) {\n var url, res;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n url = '/challenges/' + challengeId + '/close';\n\n if (winnerId) url = url + '?winnerId=' + winnerId;\n _context4.next = 4;\n return this.private.api.post(url);\n\n case 4:\n res = _context4.sent;\n\n if (res.ok) {\n _context4.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context4.next = 9;\n return res.json();\n\n case 9:\n res = _context4.sent.result;\n\n if (!(res.status !== 200)) {\n _context4.next = 12;\n break;\n }\n\n throw new Error(res.content);\n\n case 12:\n return _context4.abrupt('return', res.content);\n\n case 13:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function close(_x6, _x7) {\n return _ref6.apply(this, arguments);\n }\n\n return close;\n }()\n\n /**\n * Creates a new payment task.\n * @param {Number} projectId\n * @param {Number} accountId Billing account ID.\n * @param {String} title\n * @param {String} description\n * @param {String} assignee\n * @param {Number} payment\n * @param {String} submissionGuidelines\n * @param {Number} copilotId\n * @param {Number} copilotFee\n * @param {?} technologies\n * @return {Promise} Resolves to the created challenge object (payment task).\n */\n\n }, {\n key: 'createTask',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(projectId, accountId, title, description, assignee, payment, submissionGuidelines, copilotId, copilotFee, technologies) {\n var payload, res;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n payload = {\n param: {\n assignees: [assignee],\n billingAccountId: accountId,\n confidentialityType: 'public',\n detailedRequirements: description,\n submissionGuidelines: submissionGuidelines,\n milestoneId: 1,\n name: title,\n technologies: technologies,\n prizes: payment ? [payment] : [],\n projectId: projectId,\n registrationStartsAt: (0, _moment2.default)().toISOString(),\n reviewType: 'INTERNAL',\n subTrack: 'FIRST_2_FINISH',\n task: true\n }\n };\n\n if (copilotId) {\n _lodash2.default.assign(payload.param, {\n copilotId: copilotId,\n copilotFee: copilotFee\n });\n }\n _context5.next = 4;\n return this.private.api.postJson('/challenges', payload);\n\n case 4:\n res = _context5.sent;\n\n if (res.ok) {\n _context5.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context5.next = 9;\n return res.json();\n\n case 9:\n res = _context5.sent.result;\n\n if (!(res.status !== 200)) {\n _context5.next = 12;\n break;\n }\n\n throw new Error(res.content);\n\n case 12:\n return _context5.abrupt('return', res.content);\n\n case 13:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function createTask(_x8, _x9, _x10, _x11, _x12, _x13, _x14, _x15, _x16, _x17) {\n return _ref7.apply(this, arguments);\n }\n\n return createTask;\n }()\n\n /**\n * Gets challenge details from Topcoder API.\n * NOTE: This function also uses API v2 and other endpoints for now, due\n * to some information is missing or\n * incorrect in the main endpoint. This may change in the future.\n * @param {Number|String} challengeId\n * @return {Promise} Resolves to the challenge object.\n */\n\n }, {\n key: 'getChallengeDetails',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(challengeId) {\n var challenge, challengeFiltered, username, challengeUser, finalChallenge;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.private.api.get('/challenges/' + challengeId).then(checkError).then(function (res) {\n return res.content;\n });\n\n case 2:\n challenge = _context6.sent;\n _context6.next = 5;\n return this.private.getChallenges('/challenges/', { id: challengeId }).then(function (res) {\n return res.challenges[0];\n });\n\n case 5:\n challengeFiltered = _context6.sent;\n username = this.private.tokenV3 && (0, _tcAccounts.decodeToken)(this.private.tokenV3).handle;\n _context6.t0 = username;\n\n if (!_context6.t0) {\n _context6.next = 12;\n break;\n }\n\n _context6.next = 11;\n return this.getUserChallenges(username, { id: challengeId }).then(function (res) {\n return res.challenges[0];\n }).catch(function () {\n return null;\n });\n\n case 11:\n _context6.t0 = _context6.sent;\n\n case 12:\n challengeUser = _context6.t0;\n _context6.next = 15;\n return this.private.memberService.getListMemberInfo(challenge.registrants || [], false);\n\n case 15:\n finalChallenge = normalizeChallengeDetails(challenge, challengeFiltered, challengeUser, username);\n\n\n finalChallenge.fetchedWithAuth = Boolean(this.private.api.private.token);\n\n return _context6.abrupt('return', finalChallenge);\n\n case 18:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getChallengeDetails(_x18) {\n return _ref8.apply(this, arguments);\n }\n\n return getChallengeDetails;\n }()\n\n /**\n * Gets possible challenge subtracks.\n * @return {Promise} Resolves to the array of subtrack names.\n */\n\n }, {\n key: 'getChallengeSubtracks',\n value: function getChallengeSubtracks() {\n return this.private.api.get('/challenge-types').then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : new Error(res.result.content);\n });\n }\n\n /**\n * Gets possible challenge tags (technologies).\n * @return {Promise} Resolves to the array of tag strings.\n */\n\n }, {\n key: 'getChallengeTags',\n value: function getChallengeTags() {\n return this.private.api.get('/technologies').then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : new Error(res.result.content);\n });\n }\n\n /**\n * Gets challenges.\n * @param {Object} filters Optional.\n * @param {Object} params Optional.\n * @return {Promise} Resolves to the api response.\n */\n\n }, {\n key: 'getChallenges',\n value: function getChallenges(filters, params) {\n return this.private.getChallenges('/challenges/', filters, params).then(function (res) {\n res.challenges.forEach(function (item) {\n return normalizeChallenge(item);\n });\n return res;\n });\n }\n\n /**\n * Gets SRM matches.\n * @param {Object} params\n * @return {Promise}\n */\n\n }, {\n key: 'getSrms',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(params) {\n var res;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.private.api.get('/srms/?' + _qs2.default.stringify(params));\n\n case 2:\n res = _context7.sent;\n return _context7.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getSrms(_x19) {\n return _ref9.apply(this, arguments);\n }\n\n return getSrms;\n }()\n\n /**\n * Gets challenges of the specified user.\n * @param {String} username User whose challenges we want to fetch.\n * @param {Object} filters Optional.\n * @param {Number} params Optional.\n * @return {Promise} Resolves to the api response.\n */\n\n }, {\n key: 'getUserChallenges',\n value: function getUserChallenges(username, filters, params) {\n var endpoint = '/members/' + username.toLowerCase() + '/challenges/';\n return this.private.getChallenges(endpoint, filters, params).then(function (res) {\n res.challenges.forEach(function (item) {\n return normalizeChallenge(item, username);\n });\n return res;\n });\n }\n\n /**\n * Gets marathon matches of the specified user.\n * @param {String} username User whose challenges we want to fetch.\n * @param {Object} filters Optional.\n * @param {Number} params Optional.\n * @return {Promise} Resolves to the api response.\n */\n\n }, {\n key: 'getUserMarathonMatches',\n value: function getUserMarathonMatches(username, filters, params) {\n var endpoint = '/members/' + username.toLowerCase() + '/mms/';\n return this.private.getChallenges(endpoint, filters, params);\n }\n\n /**\n * Gets SRM matches related to the user.\n * @param {String} handle\n * @param {Object} params\n * @return {Promise}\n */\n\n }, {\n key: 'getUserSrms',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(handle, params) {\n var url, res;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n url = '/members/' + handle + '/srms/?' + _qs2.default.stringify(params);\n _context8.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context8.sent;\n return _context8.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function getUserSrms(_x20, _x21) {\n return _ref10.apply(this, arguments);\n }\n\n return getUserSrms;\n }()\n\n /**\n * Registers user to the specified challenge.\n * @param {String} challengeId\n * @return {Promise}\n */\n\n }, {\n key: 'register',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(challengeId) {\n var endpoint, res;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n endpoint = '/challenges/' + challengeId + '/register';\n _context9.next = 3;\n return this.private.api.postJson(endpoint);\n\n case 3:\n res = _context9.sent;\n\n if (res.ok) {\n _context9.next = 6;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 6:\n return _context9.abrupt('return', res.json());\n\n case 7:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function register(_x22) {\n return _ref11.apply(this, arguments);\n }\n\n return register;\n }()\n\n /**\n * Unregisters user from the specified challenge.\n * @param {String} challengeId\n * @return {Promise}\n */\n\n }, {\n key: 'unregister',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(challengeId) {\n var endpoint, res;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n endpoint = '/challenges/' + challengeId + '/unregister';\n _context10.next = 3;\n return this.private.api.post(endpoint);\n\n case 3:\n res = _context10.sent;\n\n if (res.ok) {\n _context10.next = 6;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 6:\n return _context10.abrupt('return', res.json());\n\n case 7:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function unregister(_x23) {\n return _ref12.apply(this, arguments);\n }\n\n return unregister;\n }()\n\n /**\n * Gets count of user's active challenges.\n * @param {String} handle Topcoder user handle.\n * @return {Action} Resolves to the api response.\n */\n\n }, {\n key: 'getActiveChallengesCount',\n value: function getActiveChallengesCount(handle) {\n var filter = { status: 'ACTIVE' };\n var params = { limit: 1, offset: 0 };\n return this.getUserChallenges(handle, filter, params).then(function (res) {\n return res.totalCount;\n });\n }\n\n /**\n * Submits a challenge submission. Uses APIV2 for Development submission\n * and APIV3 for Design submisisons.\n * @param {Object} body\n * @param {String} challengeId\n * @param {String} track Either DESIGN or DEVELOP\n * @return {Promise}\n */\n\n }, {\n key: 'submit',\n value: function submit(body, challengeId, track, onProgress) {\n var api = void 0;\n var contentType = void 0;\n var url = void 0;\n\n if (track === 'DESIGN') {\n api = this.private.api;\n\n contentType = 'application/json';\n url = '/submissions/'; // The submission info is contained entirely in the JSON body\n } else {\n api = this.private.apiV2;\n // contentType = 'multipart/form-data';\n contentType = null;\n url = '/develop/challenges/' + challengeId + '/upload';\n }\n\n return api.upload(url, {\n body: body,\n headers: { 'Content-Type': contentType },\n method: 'POST'\n }, onProgress).then(function (res) {\n var jres = JSON.parse(res);\n // Return result for Develop submission\n if (track === 'DEVELOP') {\n return jres;\n }\n // Design Submission requires an extra \"Processing\" POST\n var procId = jres.result.content.id;\n return api.upload('/submissions/' + procId + '/process/', {\n body: (0, _stringify2.default)({ param: jres.result.content }),\n headers: { 'Content-Type': contentType },\n method: 'POST'\n }, onProgress).then(function (procres) {\n return JSON.parse(procres);\n });\n }, function (err) {\n _logger2.default.error('Failed to submit to the challenge #' + challengeId, err);\n throw err;\n });\n }\n\n /**\n * Updates the challenge (saves the give challenge to the API).\n * @param {Object} challenge\n * @param {String} tokenV3\n * @return {Promise}\n */\n\n }, {\n key: 'updateChallenge',\n value: function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(challenge) {\n var URL, body, res;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n URL = '/challenges/' + challenge.id;\n body = { param: challenge };\n _context11.next = 4;\n return this.private.api.putJson(URL, body);\n\n case 4:\n res = _context11.sent;\n\n if (res.ok) {\n _context11.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context11.next = 9;\n return res.json();\n\n case 9:\n res = _context11.sent.result;\n\n if (!(res.status !== 200)) {\n _context11.next = 12;\n break;\n }\n\n throw new Error(res.content);\n\n case 12:\n return _context11.abrupt('return', res.content);\n\n case 13:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function updateChallenge(_x24) {\n return _ref13.apply(this, arguments);\n }\n\n return updateChallenge;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return ChallengesService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing challenges service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n * @return {ChallengesService} Challenges service object\n */\nfunction getService(tokenV3, tokenV2) {\n if (!lastInstance || lastInstance.private.tokenV3 !== tokenV3 || lastInstance.tokenV2 !== tokenV2) {\n lastInstance = new ChallengesService(tokenV3, tokenV2);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(ORDER_BY, 'ORDER_BY', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(normalizeChallengeDetails, 'normalizeChallengeDetails', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(normalizeChallenge, 'normalizeChallenge', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(checkError, 'checkError', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(ChallengesService, 'ChallengesService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/challenges.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/challenges.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ORDER_BY = undefined;\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _set = __webpack_require__(/*! babel-runtime/core-js/set */ \"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\n/**\n * Helper method that checks for HTTP error response and throws Error in this case.\n * @param {Object} res HTTP response object\n * @return {Object} API JSON response object\n * @private\n */\nvar checkError = function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(res) {\n var jsonRes;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (res.ok) {\n _context.next = 3;\n break;\n }\n\n if (res.status >= 500) {\n (0, _errors.setErrorIcon)(_errors.ERROR_ICON_TYPES.API, '/challenges', res.statusText);\n }\n throw new Error(res.statusText);\n\n case 3:\n _context.next = 5;\n return res.json();\n\n case 5:\n jsonRes = _context.sent.result;\n\n if (!(jsonRes.status !== 200)) {\n _context.next = 8;\n break;\n }\n\n throw new Error(jsonRes.content);\n\n case 8:\n return _context.abrupt('return', jsonRes);\n\n case 9:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function checkError(_x) {\n return _ref3.apply(this, arguments);\n };\n}();\n\n/**\n * Challenge service.\n */\n\n\nexports.normalizeChallengeDetails = normalizeChallengeDetails;\nexports.normalizeChallenge = normalizeChallenge;\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _moment = __webpack_require__(/*! moment */ \"moment\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _tcAccounts = __webpack_require__(/*! tc-accounts */ \"tc-accounts\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _errors = __webpack_require__(/*! ../utils/errors */ \"./src/utils/errors.js\");\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nvar _members = __webpack_require__(/*! ./members */ \"./src/services/members.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.challenges\"\n * @desc This module provides a service for convenient manipulation with\n * Topcoder challenges via TC API.\n */\n\nvar ORDER_BY = exports.ORDER_BY = {\n SUBMISSION_END_DATE: 'submissionEndDate'\n};\n\n/**\n * Normalizes a regular challenge details object received from the backend APIs.\n * @todo Why this one is exported? It should be only used internally!\n * @param {Object} challenge Challenge object received from the /challenges/{id}\n * endpoint.\n * @param {Object} filtered Challenge object received from the\n * /challenges?filter=id={id} endpoint.\n * @param {Object} user Challenge object received from the\n * /members/{username}/challenges?filter=id={id} endpoint.\n * If action was fired for authenticated visitor, `user` will contain\n * details fetched specifically for the user (thus may include additional\n * data comparing to the standard API response for the challenge details,\n * stored in `filtered`).\n * @param {String} username Optional.\n * @return {Object} Normalized challenge object.\n */\nfunction normalizeChallengeDetails(challenge, filtered, user, username) {\n // Normalize exising data to make it consistent with the rest of the code\n var finalChallenge = (0, _extends3.default)({}, challenge, {\n\n id: challenge.challengeId,\n reliabilityBonus: _lodash2.default.get(filtered, 'reliabilityBonus', 0),\n status: (challenge.currentStatus || '').toUpperCase(),\n\n allPhases: [],\n currentPhases: [],\n name: challenge.challengeName || challenge.challengeTitle,\n projectId: Number(challenge.projectId),\n forumId: Number(challenge.forumId),\n introduction: challenge.introduction || '',\n detailedRequirements: challenge.detailedRequirements === 'null' ? '' : challenge.detailedRequirements,\n finalSubmissionGuidelines: challenge.finalSubmissionGuidelines === 'null' ? '' : challenge.finalSubmissionGuidelines,\n screeningScorecardId: Number(challenge.screeningScorecardId),\n reviewScorecardId: Number(challenge.reviewScorecardId),\n numberOfCheckpointsPrizes: challenge.numberOfCheckpointsPrizes,\n topCheckPointPrize: challenge.topCheckPointPrize,\n submissionsViewable: challenge.submissionsViewable || 'false',\n reviewType: challenge.reviewType,\n allowStockArt: challenge.allowStockArt === 'true',\n fileTypes: challenge.filetypes || [],\n environment: challenge.environment,\n codeRepo: challenge.codeRepo,\n forumLink: challenge.forumLink,\n submissionLimit: Number(challenge.submissionLimit) || 0,\n drPoints: challenge.digitalRunPoints,\n directUrl: challenge.directUrl,\n technologies: challenge.technologies || challenge.technology || [],\n platforms: challenge.platforms || [],\n prizes: challenge.prize || challenge.prizes || [],\n events: _lodash2.default.map(challenge.event, function (e) {\n return {\n eventName: e.eventShortDesc,\n eventId: e.id,\n description: e.eventDescription\n };\n }),\n terms: challenge.terms,\n submissions: challenge.submissions,\n track: _lodash2.default.toUpper(challenge.challengeCommunity),\n subTrack: challenge.subTrack,\n checkpoints: challenge.checkpoints,\n documents: challenge.documents || [],\n numRegistrants: challenge.numberOfRegistrants,\n numberOfCheckpointSubmissions: challenge.numberOfCheckpointSubmissions,\n registrants: challenge.registrants || []\n });\n\n // Winners have different field names, needs to be normalized to match `filtered` and `challenge`\n finalChallenge.winners = _lodash2.default.map(challenge.winners, function (winner, index) {\n return (0, _extends3.default)({}, winner, {\n handle: winner.submitter,\n placement: winner.rank || index + 1 // Legacy MMs do not have a rank but are sorted by points\n });\n });\n\n if (finalChallenge.subTrack === 'MARATHON_MATCH') {\n finalChallenge.track = 'DATA_SCIENCE';\n }\n\n // It's not clear if this will be the main event, will need to be investigated\n finalChallenge.mainEvent = finalChallenge.events[0] || {};\n\n /* It's unclear if these normalization steps are still required for `challenge` */\n // Fill missing data from filtered\n if (filtered) {\n var groups = {};\n if (filtered.groupIds) {\n filtered.groupIds.forEach(function (id) {\n groups[id] = true;\n });\n }\n\n _lodash2.default.merge(finalChallenge, {\n componentId: filtered.componentId,\n contestId: filtered.contestId,\n\n submissionEndDate: filtered.submissionEndDate, // Dates are not correct in `challenge`\n submissionEndTimestamp: filtered.submissionEndDate, // Dates are not correct in `challenge`\n\n /* Taking phases from filtered, because dates are not correct in `challenge` */\n allPhases: filtered.allPhases || [],\n\n /* Taking phases from filtered, because dates are not correct in `challenge` */\n currentPhases: filtered.currentPhases || [],\n\n /* `challenge` has incorrect value for numberOfSubmissions for some reason */\n numSubmissions: filtered.numSubmissions,\n groups: groups\n });\n }\n\n // Fill missing data from user\n if (user) {\n _lodash2.default.defaults(finalChallenge, {\n userDetails: user.userDetails\n });\n }\n\n // Fill some derived data\n var registrationOpen = _lodash2.default.some(finalChallenge.allPhases, function (phase) {\n return phase.phaseType === 'Registration' && phase.phaseStatus === 'Open';\n }) ? 'Yes' : 'No';\n _lodash2.default.defaults(finalChallenge, {\n communities: new _set2.default([_tc.COMPETITION_TRACKS[finalChallenge.track]]),\n registrationOpen: registrationOpen,\n users: username ? (0, _defineProperty3.default)({}, username, true) : {}\n });\n\n // A hot fix to show submissions for on-going challenges\n if (!finalChallenge.submissions || !finalChallenge.submissions.length) {\n finalChallenge.submissions = finalChallenge.registrants.filter(function (r) {\n return r.submissionDate || '';\n }).sort(function (a, b) {\n return (a.submissionDate || '').localeCompare(b.submissionDate || '');\n });\n }\n\n if (!finalChallenge.allPhases) finalChallenge.allPhases = [];\n if (!finalChallenge.track) finalChallenge.track = '';\n\n return finalChallenge;\n}\n\n/**\n * Normalizes a regular challenge object received from the backend.\n * NOTE: This function is copied from the existing code in the challenge listing\n * component. It is possible, that this normalization is not necessary after we\n * have moved to Topcoder API, but it is kept for now to minimize a risk of\n * breaking anything.\n * @todo Should be used only internally!\n * @param {Object} challenge Challenge object received from the backend.\n * @param {String} username Optional.\n */\nfunction normalizeChallenge(challenge, username) {\n var registrationOpen = challenge.allPhases.filter(function (d) {\n return d.phaseType === 'Registration';\n })[0].phaseStatus === 'Open' ? 'Yes' : 'No';\n var groups = {};\n if (challenge.groupIds) {\n challenge.groupIds.forEach(function (id) {\n groups[id] = true;\n });\n }\n /* eslint-disable no-param-reassign */\n if (!challenge.prizes) challenge.prizes = challenge.prize || [];\n if (!challenge.totalPrize) {\n challenge.totalPrize = challenge.prizes.reduce(function (sum, x) {\n return sum + x;\n }, 0);\n }\n if (!challenge.technologies) challenge.technologies = [];\n if (!challenge.platforms) challenge.platforms = [];\n\n if (challenge.subTrack === 'DEVELOP_MARATHON_MATCH') {\n challenge.track = 'DATA_SCIENCE';\n }\n /* eslint-enable no-param-reassign */\n\n _lodash2.default.defaults(challenge, {\n communities: new _set2.default([_tc.COMPETITION_TRACKS[challenge.track]]),\n groups: groups,\n registrationOpen: registrationOpen,\n submissionEndTimestamp: challenge.submissionEndDate,\n users: username ? (0, _defineProperty3.default)({}, username, true) : {}\n });\n}\nvar ChallengesService = function () {\n /**\n * Creates a new ChallengeService instance.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n */\n function ChallengesService(tokenV3, tokenV2) {\n var _this = this;\n\n (0, _classCallCheck3.default)(this, ChallengesService);\n\n /**\n * Private function being re-used in all methods related to getting\n * challenges. It handles query-related arguments in the uniform way:\n * @param {String} endpoint API endpoint, where the request will be send.\n * @param {Object} filters Optional. A map of filters to pass as `filter`\n * query parameter (this function takes care to stringify it properly).\n * @param {Object} params Optional. A map of any other parameters beside\n * `filter`.\n */\n var getChallenges = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(endpoint) {\n var filters = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var query, url, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n query = (0, _extends3.default)({\n filter: _qs2.default.stringify(filters, { encode: false })\n }, params);\n url = endpoint + '?' + _qs2.default.stringify(query);\n _context2.next = 4;\n return _this.private.api.get(url).then(checkError);\n\n case 4:\n res = _context2.sent;\n return _context2.abrupt('return', {\n challenges: res.content || [],\n totalCount: res.metadata.totalCount,\n meta: res.metadata\n });\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, _this);\n }));\n\n return function getChallenges(_x2) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n this.private = {\n api: (0, _api.getApi)('V4', tokenV3),\n apiV2: (0, _api.getApi)('V2', tokenV2),\n getChallenges: getChallenges,\n tokenV2: tokenV2,\n tokenV3: tokenV3,\n memberService: (0, _members.getService)()\n };\n }\n\n /**\n * Activates the specified challenge.\n * @param {Number} challengeId\n * @return {Promise} Resolves to null value in case of success; otherwise it\n * is rejected.\n */\n\n\n (0, _createClass3.default)(ChallengesService, [{\n key: 'activate',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(challengeId) {\n var res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.private.api.post('/challenges/' + challengeId + '/activate');\n\n case 2:\n res = _context3.sent;\n\n if (res.ok) {\n _context3.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n _context3.next = 7;\n return res.json();\n\n case 7:\n res = _context3.sent.result;\n\n if (!(res.status !== 200)) {\n _context3.next = 10;\n break;\n }\n\n throw new Error(res.content);\n\n case 10:\n return _context3.abrupt('return', res.content);\n\n case 11:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function activate(_x5) {\n return _ref5.apply(this, arguments);\n }\n\n return activate;\n }()\n\n /**\n * Closes the specified challenge.\n * @param {Number} challengeId\n * @param {Number} winnerId Optional. ID of the assignee to declare the\n * winner.\n * @return {Promise} Resolves to null value in case of success; otherwise it\n * is rejected.\n */\n\n }, {\n key: 'close',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(challengeId, winnerId) {\n var url, res;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n url = '/challenges/' + challengeId + '/close';\n\n if (winnerId) url = url + '?winnerId=' + winnerId;\n _context4.next = 4;\n return this.private.api.post(url);\n\n case 4:\n res = _context4.sent;\n\n if (res.ok) {\n _context4.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context4.next = 9;\n return res.json();\n\n case 9:\n res = _context4.sent.result;\n\n if (!(res.status !== 200)) {\n _context4.next = 12;\n break;\n }\n\n throw new Error(res.content);\n\n case 12:\n return _context4.abrupt('return', res.content);\n\n case 13:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function close(_x6, _x7) {\n return _ref6.apply(this, arguments);\n }\n\n return close;\n }()\n\n /**\n * Creates a new payment task.\n * @param {Number} projectId\n * @param {Number} accountId Billing account ID.\n * @param {String} title\n * @param {String} description\n * @param {String} assignee\n * @param {Number} payment\n * @param {String} submissionGuidelines\n * @param {Number} copilotId\n * @param {Number} copilotFee\n * @param {?} technologies\n * @return {Promise} Resolves to the created challenge object (payment task).\n */\n\n }, {\n key: 'createTask',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(projectId, accountId, title, description, assignee, payment, submissionGuidelines, copilotId, copilotFee, technologies) {\n var payload, res;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n payload = {\n param: {\n assignees: [assignee],\n billingAccountId: accountId,\n confidentialityType: 'public',\n detailedRequirements: description,\n submissionGuidelines: submissionGuidelines,\n milestoneId: 1,\n name: title,\n technologies: technologies,\n prizes: payment ? [payment] : [],\n projectId: projectId,\n registrationStartsAt: (0, _moment2.default)().toISOString(),\n reviewType: 'INTERNAL',\n subTrack: 'FIRST_2_FINISH',\n task: true\n }\n };\n\n if (copilotId) {\n _lodash2.default.assign(payload.param, {\n copilotId: copilotId,\n copilotFee: copilotFee\n });\n }\n _context5.next = 4;\n return this.private.api.postJson('/challenges', payload);\n\n case 4:\n res = _context5.sent;\n\n if (res.ok) {\n _context5.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context5.next = 9;\n return res.json();\n\n case 9:\n res = _context5.sent.result;\n\n if (!(res.status !== 200)) {\n _context5.next = 12;\n break;\n }\n\n throw new Error(res.content);\n\n case 12:\n return _context5.abrupt('return', res.content);\n\n case 13:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function createTask(_x8, _x9, _x10, _x11, _x12, _x13, _x14, _x15, _x16, _x17) {\n return _ref7.apply(this, arguments);\n }\n\n return createTask;\n }()\n\n /**\n * Gets challenge details from Topcoder API.\n * NOTE: This function also uses API v2 and other endpoints for now, due\n * to some information is missing or\n * incorrect in the main endpoint. This may change in the future.\n * @param {Number|String} challengeId\n * @return {Promise} Resolves to the challenge object.\n */\n\n }, {\n key: 'getChallengeDetails',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(challengeId) {\n var challenge, challengeFiltered, username, challengeUser, finalChallenge;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.private.api.get('/challenges/' + challengeId).then(checkError).then(function (res) {\n return res.content;\n });\n\n case 2:\n challenge = _context6.sent;\n _context6.next = 5;\n return this.private.getChallenges('/challenges/', { id: challengeId }).then(function (res) {\n return res.challenges[0];\n });\n\n case 5:\n challengeFiltered = _context6.sent;\n username = this.private.tokenV3 && (0, _tcAccounts.decodeToken)(this.private.tokenV3).handle;\n _context6.t0 = username;\n\n if (!_context6.t0) {\n _context6.next = 12;\n break;\n }\n\n _context6.next = 11;\n return this.getUserChallenges(username, { id: challengeId }).then(function (res) {\n return res.challenges[0];\n }).catch(function () {\n return null;\n });\n\n case 11:\n _context6.t0 = _context6.sent;\n\n case 12:\n challengeUser = _context6.t0;\n finalChallenge = normalizeChallengeDetails(challenge, challengeFiltered, challengeUser, username);\n\n\n finalChallenge.fetchedWithAuth = Boolean(this.private.api.private.token);\n\n return _context6.abrupt('return', finalChallenge);\n\n case 16:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getChallengeDetails(_x18) {\n return _ref8.apply(this, arguments);\n }\n\n return getChallengeDetails;\n }()\n\n /**\n * Gets possible challenge subtracks.\n * @return {Promise} Resolves to the array of subtrack names.\n */\n\n }, {\n key: 'getChallengeSubtracks',\n value: function getChallengeSubtracks() {\n return this.private.api.get('/challenge-types').then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : new Error(res.result.content);\n });\n }\n\n /**\n * Gets possible challenge tags (technologies).\n * @return {Promise} Resolves to the array of tag strings.\n */\n\n }, {\n key: 'getChallengeTags',\n value: function getChallengeTags() {\n return this.private.api.get('/technologies').then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : new Error(res.result.content);\n });\n }\n\n /**\n * Gets challenges.\n * @param {Object} filters Optional.\n * @param {Object} params Optional.\n * @return {Promise} Resolves to the api response.\n */\n\n }, {\n key: 'getChallenges',\n value: function getChallenges(filters, params) {\n return this.private.getChallenges('/challenges/', filters, params).then(function (res) {\n res.challenges.forEach(function (item) {\n return normalizeChallenge(item);\n });\n return res;\n });\n }\n\n /**\n * Gets SRM matches.\n * @param {Object} params\n * @return {Promise}\n */\n\n }, {\n key: 'getSrms',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(params) {\n var res;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.private.api.get('/srms/?' + _qs2.default.stringify(params));\n\n case 2:\n res = _context7.sent;\n return _context7.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getSrms(_x19) {\n return _ref9.apply(this, arguments);\n }\n\n return getSrms;\n }()\n\n /**\n * Gets challenges of the specified user.\n * @param {String} username User whose challenges we want to fetch.\n * @param {Object} filters Optional.\n * @param {Number} params Optional.\n * @return {Promise} Resolves to the api response.\n */\n\n }, {\n key: 'getUserChallenges',\n value: function getUserChallenges(username, filters, params) {\n var endpoint = '/members/' + username.toLowerCase() + '/challenges/';\n return this.private.getChallenges(endpoint, filters, params).then(function (res) {\n res.challenges.forEach(function (item) {\n return normalizeChallenge(item, username);\n });\n return res;\n });\n }\n\n /**\n * Gets marathon matches of the specified user.\n * @param {String} username User whose challenges we want to fetch.\n * @param {Object} filters Optional.\n * @param {Number} params Optional.\n * @return {Promise} Resolves to the api response.\n */\n\n }, {\n key: 'getUserMarathonMatches',\n value: function getUserMarathonMatches(username, filters, params) {\n var endpoint = '/members/' + username.toLowerCase() + '/mms/';\n return this.private.getChallenges(endpoint, filters, params);\n }\n\n /**\n * Gets SRM matches related to the user.\n * @param {String} handle\n * @param {Object} params\n * @return {Promise}\n */\n\n }, {\n key: 'getUserSrms',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(handle, params) {\n var url, res;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n url = '/members/' + handle + '/srms/?' + _qs2.default.stringify(params);\n _context8.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context8.sent;\n return _context8.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function getUserSrms(_x20, _x21) {\n return _ref10.apply(this, arguments);\n }\n\n return getUserSrms;\n }()\n\n /**\n * Registers user to the specified challenge.\n * @param {String} challengeId\n * @return {Promise}\n */\n\n }, {\n key: 'register',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(challengeId) {\n var endpoint, res;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n endpoint = '/challenges/' + challengeId + '/register';\n _context9.next = 3;\n return this.private.api.postJson(endpoint);\n\n case 3:\n res = _context9.sent;\n\n if (res.ok) {\n _context9.next = 6;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 6:\n return _context9.abrupt('return', res.json());\n\n case 7:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function register(_x22) {\n return _ref11.apply(this, arguments);\n }\n\n return register;\n }()\n\n /**\n * Unregisters user from the specified challenge.\n * @param {String} challengeId\n * @return {Promise}\n */\n\n }, {\n key: 'unregister',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(challengeId) {\n var endpoint, res;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n endpoint = '/challenges/' + challengeId + '/unregister';\n _context10.next = 3;\n return this.private.api.post(endpoint);\n\n case 3:\n res = _context10.sent;\n\n if (res.ok) {\n _context10.next = 6;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 6:\n return _context10.abrupt('return', res.json());\n\n case 7:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function unregister(_x23) {\n return _ref12.apply(this, arguments);\n }\n\n return unregister;\n }()\n\n /**\n * Gets count of user's active challenges.\n * @param {String} handle Topcoder user handle.\n * @return {Action} Resolves to the api response.\n */\n\n }, {\n key: 'getActiveChallengesCount',\n value: function getActiveChallengesCount(handle) {\n var filter = { status: 'ACTIVE' };\n var params = { limit: 1, offset: 0 };\n return this.getUserChallenges(handle, filter, params).then(function (res) {\n return res.totalCount;\n });\n }\n\n /**\n * Submits a challenge submission. Uses APIV2 for Development submission\n * and APIV3 for Design submisisons.\n * @param {Object} body\n * @param {String} challengeId\n * @param {String} track Either DESIGN or DEVELOP\n * @return {Promise}\n */\n\n }, {\n key: 'submit',\n value: function submit(body, challengeId, track, onProgress) {\n var api = void 0;\n var contentType = void 0;\n var url = void 0;\n\n if (track === 'DESIGN') {\n api = this.private.api;\n\n contentType = 'application/json';\n url = '/submissions/'; // The submission info is contained entirely in the JSON body\n } else {\n api = this.private.apiV2;\n // contentType = 'multipart/form-data';\n contentType = null;\n url = '/develop/challenges/' + challengeId + '/upload';\n }\n\n return api.upload(url, {\n body: body,\n headers: { 'Content-Type': contentType },\n method: 'POST'\n }, onProgress).then(function (res) {\n var jres = JSON.parse(res);\n // Return result for Develop submission\n if (track === 'DEVELOP') {\n return jres;\n }\n // Design Submission requires an extra \"Processing\" POST\n var procId = jres.result.content.id;\n return api.upload('/submissions/' + procId + '/process/', {\n body: (0, _stringify2.default)({ param: jres.result.content }),\n headers: { 'Content-Type': contentType },\n method: 'POST'\n }, onProgress).then(function (procres) {\n return JSON.parse(procres);\n });\n }, function (err) {\n _logger2.default.error('Failed to submit to the challenge #' + challengeId, err);\n throw err;\n });\n }\n\n /**\n * Updates the challenge (saves the give challenge to the API).\n * @param {Object} challenge\n * @param {String} tokenV3\n * @return {Promise}\n */\n\n }, {\n key: 'updateChallenge',\n value: function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(challenge) {\n var URL, body, res;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n URL = '/challenges/' + challenge.id;\n body = { param: challenge };\n _context11.next = 4;\n return this.private.api.putJson(URL, body);\n\n case 4:\n res = _context11.sent;\n\n if (res.ok) {\n _context11.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context11.next = 9;\n return res.json();\n\n case 9:\n res = _context11.sent.result;\n\n if (!(res.status !== 200)) {\n _context11.next = 12;\n break;\n }\n\n throw new Error(res.content);\n\n case 12:\n return _context11.abrupt('return', res.content);\n\n case 13:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function updateChallenge(_x24) {\n return _ref13.apply(this, arguments);\n }\n\n return updateChallenge;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return ChallengesService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing challenges service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n * @return {ChallengesService} Challenges service object\n */\nfunction getService(tokenV3, tokenV2) {\n if (!lastInstance || lastInstance.private.tokenV3 !== tokenV3 || lastInstance.tokenV2 !== tokenV2) {\n lastInstance = new ChallengesService(tokenV3, tokenV2);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(ORDER_BY, 'ORDER_BY', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(normalizeChallengeDetails, 'normalizeChallengeDetails', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(normalizeChallenge, 'normalizeChallenge', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(checkError, 'checkError', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(ChallengesService, 'ChallengesService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/challenges.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/challenges.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/challenges.js?"); /***/ }), @@ -922,7 +922,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _isomorphicFetch = __webpack_require__(/*! isomorphic-fetch */ \"isomorphic-fetch\");\n\nvar _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch);\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.communities\"\n * @desc Communities service.\n */\n\n\n/**\n * Returns Community App URL, or throws an error if URL cannot be found in\n * config.\n */\nfunction getCommunityAppUrl() {\n var url = _lodash2.default.get(_topcoderReactUtils.config, 'URL.COMMUNITY_APP');\n if (!url) throw new Error('No URL.COMMUNITY_APP param found in config');\n return url;\n}\n\n/**\n * Client-side version of the service.\n */\n\nvar Communities = function () {\n /**\n * Creates a new {@link module:services.communities~Communities} instance.\n * @param {String} tokenV3\n */\n function Communities(tokenV3) {\n (0, _classCallCheck3.default)(this, Communities);\n\n this.private = { tokenV3: tokenV3 };\n }\n\n /**\n * Gets the list of communities accessible to the member of specified groups.\n * @param {String[]} userGroupIds\n * @return {Promise} Resolves to the array of community data objects. Each of\n * the objects indludes only the most important data on the community.\n */\n\n\n (0, _createClass3.default)(Communities, [{\n key: 'getList',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(userGroupIds) {\n var url, res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n url = getCommunityAppUrl();\n\n url += '/community-app-assets/api/tc-communities?';\n url += _qs2.default.stringify({ groups: userGroupIds });\n _context.next = 5;\n return (0, _isomorphicFetch2.default)(url, {\n headers: {\n authorization: this.private.tokenV3\n }\n });\n\n case 5:\n res = _context.sent;\n return _context.abrupt('return', res.json());\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getList(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getList;\n }()\n\n /**\n * Gets metadata for the specified community.\n * @param {String} communityId\n * @return {Promise} Resolves to the community metadata.\n */\n\n }, {\n key: 'getMetadata',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(communityId) {\n var url, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n url = getCommunityAppUrl();\n\n url += '/community-app-assets/api/tc-communities/' + communityId + '/meta';\n _context2.next = 4;\n return (0, _isomorphicFetch2.default)(url, {\n headers: {\n authorization: this.private.tokenV3\n }\n });\n\n case 4:\n res = _context2.sent;\n return _context2.abrupt('return', res.json());\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getMetadata(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getMetadata;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return Communities;\n}();\n\nvar lastInstance = null;\n\n/**\n * Returns a new or existing communities service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {Communities} Communties service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new Communities(tokenV3);\n }\n return lastInstance;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getCommunityAppUrl, 'getCommunityAppUrl', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/communities.js');\n reactHotLoader.register(Communities, 'Communities', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/communities.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/communities.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/communities.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/communities.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/communities.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _isomorphicFetch = __webpack_require__(/*! isomorphic-fetch */ \"isomorphic-fetch\");\n\nvar _isomorphicFetch2 = _interopRequireDefault(_isomorphicFetch);\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.communities\"\n * @desc Communities service.\n */\n\n\n/**\n * Returns Community App URL, or throws an error if URL cannot be found in\n * config.\n */\nfunction getCommunityAppUrl() {\n var url = _lodash2.default.get(_topcoderReactUtils.config, 'URL.COMMUNITY_APP');\n if (!url) throw new Error('No URL.COMMUNITY_APP param found in config');\n return url;\n}\n\n/**\n * Client-side version of the service.\n */\n\nvar Communities = function () {\n /**\n * Creates a new {@link module:services.communities~Communities} instance.\n * @param {String} tokenV3\n */\n function Communities(tokenV3) {\n (0, _classCallCheck3.default)(this, Communities);\n\n this.private = { tokenV3: tokenV3 };\n }\n\n /**\n * Gets the list of communities accessible to the member of specified groups.\n * @param {String[]} userGroupIds\n * @return {Promise} Resolves to the array of community data objects. Each of\n * the objects indludes only the most important data on the community.\n */\n\n\n (0, _createClass3.default)(Communities, [{\n key: 'getList',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(userGroupIds) {\n var url, res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n url = getCommunityAppUrl();\n\n url += '/community-app-assets/api/tc-communities?';\n url += _qs2.default.stringify({ groups: userGroupIds });\n _context.next = 5;\n return (0, _isomorphicFetch2.default)(url, {\n headers: {\n authorization: this.private.tokenV3\n }\n });\n\n case 5:\n res = _context.sent;\n return _context.abrupt('return', res.json());\n\n case 7:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getList(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getList;\n }()\n\n /**\n * Gets metadata for the specified community.\n * @param {String} communityId\n * @return {Promise} Resolves to the community metadata.\n */\n\n }, {\n key: 'getMetadata',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(communityId) {\n var url, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n url = getCommunityAppUrl();\n\n url += '/community-app-assets/api/tc-communities/' + communityId + '/meta';\n _context2.next = 4;\n return (0, _isomorphicFetch2.default)(url, {\n headers: {\n authorization: this.private.tokenV3\n }\n });\n\n case 4:\n res = _context2.sent;\n return _context2.abrupt('return', res.json());\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getMetadata(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getMetadata;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return Communities;\n}();\n\nvar lastInstance = null;\n\n/**\n * Returns a new or existing communities service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {Communities} Communties service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new Communities(tokenV3);\n }\n return lastInstance;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(getCommunityAppUrl, 'getCommunityAppUrl', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/communities.js');\n reactHotLoader.register(Communities, 'Communities', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/communities.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/communities.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/communities.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/communities.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/communities.js?"); /***/ }), @@ -934,7 +934,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.direct\"\n * @desc The Direct service takes care about communication with Direct APIs:\n * projects, billing accounts, copilots, all these stuff should be added here,\n * at least for now.\n */\n\n/**\n * Direct service class.\n */\nvar Direct = function () {\n /**\n * Creates a new {@link module:services.direct~Direct} instance.\n * @param {String} tokenV3 Optional. Topcoder auth token v3. Though optional,\n * most probably most, if not all, of the service functionality won't work\n * for non-authenticated visitors.\n */\n function Direct(tokenV3) {\n (0, _classCallCheck3.default)(this, Direct);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets details of the specified project.\n * @param {Number} projectId\n * @return {Promise} Resolves to the project details object.\n */\n\n\n (0, _createClass3.default)(Direct, [{\n key: 'getProjectDetails',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(projectId) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/direct/projects/' + projectId);\n\n case 2:\n res = _context.sent;\n\n if (res.ok) {\n _context.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n _context.next = 7;\n return res.json();\n\n case 7:\n res = _context.sent.result;\n\n if (!(res.status !== 200)) {\n _context.next = 10;\n break;\n }\n\n throw new Error(res.content);\n\n case 10:\n return _context.abrupt('return', res.content);\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getProjectDetails(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getProjectDetails;\n }()\n\n /**\n * Gets user permissions on the specified project.\n * @param {Number|String} projectId\n * @param {String} tokenV3 Auth token for API v3.\n * @return {Promise} Resolves to the user permissions data.\n */\n\n }, {\n key: 'getProjectPermissions',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(projectId) {\n var URL, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n URL = '/direct/projects/' + projectId + '/permissions';\n _context2.next = 3;\n return this.private.api.get(URL);\n\n case 3:\n res = _context2.sent;\n\n if (res.ok) {\n _context2.next = 6;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 6:\n _context2.next = 8;\n return res.json();\n\n case 8:\n res = _context2.sent.result;\n\n if (!(res.status !== 200)) {\n _context2.next = 11;\n break;\n }\n\n throw new Error(res.content);\n\n case 11:\n return _context2.abrupt('return', res.content);\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getProjectPermissions(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getProjectPermissions;\n }()\n\n /**\n * Gets all projects the user can see.\n * @param {Object} query Optional. Query params for the request.\n * @return {Promise} Resolves to an array of project objects.\n */\n\n }, {\n key: 'getUserProjects',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(query) {\n var url, res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n url = '/direct/projects/user';\n\n if (query) url += '?' + _qs2.default.stringify(query);\n _context3.next = 4;\n return this.private.api.get(url);\n\n case 4:\n res = _context3.sent;\n\n if (res.ok) {\n _context3.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context3.next = 9;\n return res.json();\n\n case 9:\n res = _context3.sent.result;\n\n if (!(res.status !== 200)) {\n _context3.next = 12;\n break;\n }\n\n throw new Error(res.content);\n\n case 12:\n return _context3.abrupt('return', res.content);\n\n case 13:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getUserProjects(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getUserProjects;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return Direct;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing {@link module:services.direct~Direct} service.\n * @param {String} tokenV3 Optional. Topcoder auth token v3.\n * @return {Direct} Direct service object.\n */\nfunction getService(tokenV3) {\n if (!lastInstance || lastInstance.private.tokenV3 !== tokenV3) {\n lastInstance = new Direct(tokenV3);\n }\n return lastInstance;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(Direct, 'Direct', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/direct.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/direct.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/direct.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/direct.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/direct.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.direct\"\n * @desc The Direct service takes care about communication with Direct APIs:\n * projects, billing accounts, copilots, all these stuff should be added here,\n * at least for now.\n */\n\n/**\n * Direct service class.\n */\nvar Direct = function () {\n /**\n * Creates a new {@link module:services.direct~Direct} instance.\n * @param {String} tokenV3 Optional. Topcoder auth token v3. Though optional,\n * most probably most, if not all, of the service functionality won't work\n * for non-authenticated visitors.\n */\n function Direct(tokenV3) {\n (0, _classCallCheck3.default)(this, Direct);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets details of the specified project.\n * @param {Number} projectId\n * @return {Promise} Resolves to the project details object.\n */\n\n\n (0, _createClass3.default)(Direct, [{\n key: 'getProjectDetails',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(projectId) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/direct/projects/' + projectId);\n\n case 2:\n res = _context.sent;\n\n if (res.ok) {\n _context.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n _context.next = 7;\n return res.json();\n\n case 7:\n res = _context.sent.result;\n\n if (!(res.status !== 200)) {\n _context.next = 10;\n break;\n }\n\n throw new Error(res.content);\n\n case 10:\n return _context.abrupt('return', res.content);\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getProjectDetails(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getProjectDetails;\n }()\n\n /**\n * Gets user permissions on the specified project.\n * @param {Number|String} projectId\n * @param {String} tokenV3 Auth token for API v3.\n * @return {Promise} Resolves to the user permissions data.\n */\n\n }, {\n key: 'getProjectPermissions',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(projectId) {\n var URL, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n URL = '/direct/projects/' + projectId + '/permissions';\n _context2.next = 3;\n return this.private.api.get(URL);\n\n case 3:\n res = _context2.sent;\n\n if (res.ok) {\n _context2.next = 6;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 6:\n _context2.next = 8;\n return res.json();\n\n case 8:\n res = _context2.sent.result;\n\n if (!(res.status !== 200)) {\n _context2.next = 11;\n break;\n }\n\n throw new Error(res.content);\n\n case 11:\n return _context2.abrupt('return', res.content);\n\n case 12:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getProjectPermissions(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getProjectPermissions;\n }()\n\n /**\n * Gets all projects the user can see.\n * @param {Object} query Optional. Query params for the request.\n * @return {Promise} Resolves to an array of project objects.\n */\n\n }, {\n key: 'getUserProjects',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(query) {\n var url, res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n url = '/direct/projects/user';\n\n if (query) url += '?' + _qs2.default.stringify(query);\n _context3.next = 4;\n return this.private.api.get(url);\n\n case 4:\n res = _context3.sent;\n\n if (res.ok) {\n _context3.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context3.next = 9;\n return res.json();\n\n case 9:\n res = _context3.sent.result;\n\n if (!(res.status !== 200)) {\n _context3.next = 12;\n break;\n }\n\n throw new Error(res.content);\n\n case 12:\n return _context3.abrupt('return', res.content);\n\n case 13:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getUserProjects(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getUserProjects;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return Direct;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing {@link module:services.direct~Direct} service.\n * @param {String} tokenV3 Optional. Topcoder auth token v3.\n * @return {Direct} Direct service object.\n */\nfunction getService(tokenV3) {\n if (!lastInstance || lastInstance.private.tokenV3 !== tokenV3) {\n lastInstance = new Direct(tokenV3);\n }\n return lastInstance;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(Direct, 'Direct', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/direct.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/direct.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/direct.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/direct.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/direct.js?"); /***/ }), @@ -946,7 +946,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _set = __webpack_require__(/*! babel-runtime/core-js/set */ \"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nexports.addDescendantGroups = addDescendantGroups;\nexports.checkGroupsStatus = checkGroupsStatus;\nexports.checkUserGroups = checkUserGroups;\nexports.reduceGroupIds = reduceGroupIds;\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.groups\"\n * @desc Service for communication with group-related part of Topcoder API.\n *\n * NOTE: Through this file, and in related contexts, by loading a user group,\n * or user groups data, we refer to loading the information about descendant\n * user groups; i.e. given some user group(s) we speak about loading the sub-\n * three of related child groups.\n *\n * By group maps we refer to the object having group IDs as the keys, and\n * group data objects as the values. Any group object included into a group map\n * has its \"subGroups\" array (if present) replaced by \"subGroupIds\", that lists\n * only the IDs of immediate child groups; actual child group objects from\n * \"subGroups\" are recursively added to the top level of the group map.\n * Also each group in the group map is timestamped to keep caching of\n * the loaded data.\n */\n\n/* The value of USER_GROUP_MAXAGE constant converted to [ms]. */\nvar USER_GROUP_MAXAGE = _topcoderReactUtils.config.USER_GROUP_MAXAGE * 1000;\n\n/**\n * Given an array of IDs (or a single ID) of user groups, and a map of known\n * user groups, it returns the array including all specified user groups, and\n * all their known descendant groups.\n * @param {String|String[]} groupIds\n * @param {Object} knownGroups\n * @return {String[]}\n */\nfunction addDescendantGroups(groupIds, knownGroups) {\n var res = _lodash2.default.isArray(groupIds) ? groupIds : [groupIds];\n var visitedGroupsIds = new _set2.default();\n var pos = 0;\n while (pos < res.length) {\n var id = res[pos];\n if (!visitedGroupsIds.has(id)) {\n visitedGroupsIds.add(id);\n var g = knownGroups[id];\n if (g && g.subGroupIds) res = res.concat(g.subGroupIds);\n }\n pos += 1;\n }\n return _lodash2.default.uniq(res);\n}\n\n/**\n * Splits the given list of group IDs into the lists of groups being loaded,\n * loaded, and others.\n * @param {String|String[]} groupIds ID, or an array of IDs, of the group(s) we\n * are interested in.\n * @param {Object} knownGroups Optional. The map of already known groups (some\n * of them may be outdated, though). This should be of the same format as the\n * object on \"groups.groups\" path of the Redux store. Defaults to empty object.\n * @param {Object} loadingGroups Optional. Set of groups beign loaded now. This\n * should be of the same format as the object on \"groups.loading\" path of the\n * Redux store. Defaults to empty object.\n * @return {Object} Resulting object may hold four arrays with group IDs from\n * \"groupIds\" (empty arrays will not be included into the result object):\n * - \"loaded\" - the groups that are present in \"knownGroups\" and are not\n * outdated;\n * - \"loading\" - the groups that are not present in \"knownGroups\" (or present,\n * but outdated); but they are already being loaded;\n * - \"missing\" - the groups that are not present in \"knownGroups\"\n * (or outdated), and are not being loaded.\n * - \"unknown\" - the groups that are absent in \"knownGroups\" map.\n */\nfunction checkGroupsStatus(groupIds) {\n var knownGroups = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var loadingGroups = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var loaded = [];\n var loading = [];\n var missing = [];\n var unknown = [];\n var now = Date.now();\n var tested = new _set2.default();\n var ids = _lodash2.default.isArray(groupIds) ? groupIds : [groupIds];\n ids.forEach(function (id) {\n if (tested.has(id)) return;\n tested.add(id);\n var g = knownGroups[id];\n if (!g) unknown.push(id);\n if (g && (now - g.timestamp || 0) < USER_GROUP_MAXAGE) loaded.push(id);else if (loadingGroups[id]) loading.push(id);else missing.push(id);\n });\n return {\n loaded: loaded.length ? loaded : null,\n loading: loading.length ? loading : null,\n missing: missing.length ? missing : null,\n unknown: unknown.length ? unknown : null\n };\n}\n\n/**\n * Returns \"true\" if \"userGroups\" arrays includes any group specified by\n * \"groupIds\", or any group descendant from a group specified by \"groupIds\".\n * The is the map of known groups\n * @param {String|String[]} groupIds\n * @param {Object[]|String[]} userGroups Array of user's groups or their IDs.\n * @param {Object} knownGroups Map of known groups.\n * @return {Boolean}\n */\nfunction checkUserGroups(groupIds, userGroups, knownGroups) {\n var queue = _lodash2.default.isArray(groupIds) ? groupIds : [groupIds];\n if (!queue.length) return true;\n if (!userGroups.length) return false;\n\n /* Algorithmically, \"knownGroups\" stores, in compressed form, data on\n * known trees of user groups; and we want to check whether any of groups\n * from \"userGroups\" belong to sub-trees having groups from \"groupIds\" as\n * their roots. So, we do a breadth-frist search through the group trees. */\n var userGroupIds = new _set2.default();\n var visitedGroupIds = new _set2.default();\n userGroups.forEach(function (g) {\n return userGroupIds.add(_lodash2.default.isObject(g) ? g.id : g);\n });\n var pos = 0;\n while (pos < queue.length) {\n var id = queue[pos];\n if (userGroupIds.has(id)) return true;\n visitedGroupIds.add(id);\n var g = knownGroups[id];\n if (g && g.subGroupIds) {\n g.subGroupIds.forEach(function (sgId) {\n return !visitedGroupIds.has(sgId) ? queue.push(sgId) : null;\n });\n }\n pos += 1;\n }\n return false;\n}\n\n/**\n * Private. Handles given response from the groups API.\n * @param {Object} response\n * @return {Promise} On success resolves to the data fetched from the API.\n */\nfunction handleApiResponse(response) {\n if (!response.ok) throw new Error(response.statusText);\n return response.json();\n // return response.json().then(({ result }) => {\n // return result;\n // if (result.status !== 200) throw new Error(result.content);\n // });\n}\n\n/**\n * Private. Merges given user group (possibly a tree of user groups) into\n * groups map. This function intended only for internal use inside this module,\n * as it may mutate both arguments (hence, the corresponding ESLint rule is\n * disabled within this function), thus should be used only where it is safe.\n * For external use a similar function is provided by \"utils/tc\" module.\n * @param {Object} groups\n * @param {Object} group\n */\nfunction mergeGroup(groups, group) {\n /* eslint-disable no-param-reassign */\n var sg = group.subGroups;\n group.timestamp = Date.now();\n if (sg && sg.length) {\n group.subGroupIds = sg.map(function (g) {\n return g.id;\n });\n sg.forEach(function (g) {\n return mergeGroup(groups, g);\n });\n }\n delete group.subGroups;\n groups[group.id] = group;\n /* eslint-enable no-param-reassign */\n}\n\n/**\n * Given a group tree, reduces it to the array of all group IDs encountered in\n * the tree.\n * @param {Object} group\n * @return {String[]} Array of IDs.\n */\nfunction reduceGroupIds(_ref) {\n var id = _ref.id,\n subGroups = _ref.subGroups;\n\n var res = [id];\n if (subGroups) {\n subGroups.forEach(function (g) {\n res = res.concat(reduceGroupIds(g));\n });\n }\n return res;\n}\n\n/**\n * Service class.\n */\n\nvar GroupService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function GroupService(tokenV3) {\n (0, _classCallCheck3.default)(this, GroupService);\n\n var now = Date.now();\n this.private = {\n api: (0, _api.getApi)('V5', tokenV3),\n cache: {\n groupTreeIds: {\n lastCleanUp: now,\n data: {}\n }\n },\n tokenV3: tokenV3\n };\n }\n\n /**\n * Adds new member to the group.\n * @param {String} groupId\n * @param {String} memberId\n * @param {String} membershipType\n * @return {Promise}\n */\n\n\n (0, _createClass3.default)(GroupService, [{\n key: 'addMember',\n value: function addMember(groupId, memberId, membershipType) {\n return this.private.api.postJson('/groups/' + groupId + '/members', {\n param: { memberId: memberId, membershipType: membershipType }\n }).then(handleApiResponse);\n }\n\n /**\n * Gets detailed information about the group.\n *\n * Notice, when \"withSubGroups\" argument is true (default) this method returns\n * a tree of group data objects, connected via their \"subGroups\" fields.\n * getMap(..) method below wraps this functionality in a more practical way!\n *\n * @param {String} groupId\n * @param {Boolean} withSubGroups Optional. Defaults to true. Specifies,\n * whether the response should information about sub-groups, if any.\n * @return {Promise} On success resolves to the group data object.\n */\n\n }, {\n key: 'getGroup',\n value: function getGroup(groupId) {\n var withSubGroups = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var url = '/groups/' + groupId;\n if (withSubGroups) {\n url = url + '/getSubGroups?includeSubGroups=true&oneLevel=false';\n }\n return this.private.api.get(url).then(handleApiResponse);\n }\n\n /**\n * Gets detailed information about the specified user group(s) and their\n * descendant sub-groups.\n *\n * @param {String|String[]} groupIds Group ID, or an array of group IDs,\n * to query from Topcoder API.\n * @return {Promise} Resolves to the group map. That object will have group\n * IDs as the keys, and corresponding group data objects as the values. In\n * each group data object the \"subGroups\" field, if any, will be replaced by\n * \"subGroupIds\" (array of IDs of the immediate child groups), and the actual\n * data on the sub-groups will be moved to the root of the map object.\n * It also timestamps each fetched group.\n */\n\n }, {\n key: 'getGroupMap',\n value: function getGroupMap(groupIds) {\n var _this = this;\n\n var res = {};\n var seen = new _set2.default();\n var query = _lodash2.default.isArray(groupIds) ? groupIds : [groupIds];\n var promises = query.map(function (id) {\n if (seen.has(id)) return null;\n seen.add(id);\n return _this.getGroup(id).then(function (group) {\n return mergeGroup(res, group);\n }).catch(function (err) {\n /* In case we have failed to get some of the requested groups,\n * we just send error message to logs, and serve the result with\n * those groups that we managed to get. Otherwise it will be to\n * easy to break our code by minor mistakes in the group-related\n * configuration in the API and in the App. */\n _logger2.default.error('Failed to get user group #' + id, err);\n\n /* Empty group with timestamp is added to the result, as we still\n * want to cache the result, even if the result is that we cannot\n * load this group, at least for this visitor. */\n res[id] = { id: id, timestamp: Date.now() };\n });\n });\n return _promise2.default.all(promises).then(function () {\n return res;\n });\n }\n\n /**\n * Given a root group ID, returns an ID array that contains the root group ID,\n * and IDs of all descendant groups in the group (sub-)tree rooted at the\n * specified group.\n *\n * Results are cached inside the class instance to minimize the load on TC\n * Group API. To take advantage of that, be sure to keep and reuse the same\n * class instance.\n *\n * The reason to have such strange method and pay an extra attention to its\n * optimization for smaller API load is that it is essential for authorization\n * checks.\n *\n * @param {String} rootGroupId\n * @param {Number} maxage Optional. Max age [ms] of records served from the\n * cache. Defaults to 5 minutes.\n * @return {Promise} Resolves to ID array.\n */\n\n }, {\n key: 'getGroupTreeIds',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(rootGroupId) {\n var maxage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5 * 60 * 1000;\n var now, cache, CLEAN_UP_INTERVAL, cached, res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n now = Date.now();\n cache = this.private.cache.groupTreeIds;\n\n /* Clean-up: removes stale records from the cache. */\n\n CLEAN_UP_INTERVAL = 24 * 60 * 60 * 1000; // 1 day in ms.\n\n if (now - cache.lastCleanUp > CLEAN_UP_INTERVAL) {\n _lodash2.default.forOwn(cache, function (_ref3, key) {\n var timestamp = _ref3.timestamp;\n\n if (now - timestamp > CLEAN_UP_INTERVAL) delete cache[key];\n });\n cache.lastCleanUp = now;\n }\n\n /* If result is found in cache, and is fresh enough, return it. */\n cached = cache[rootGroupId];\n\n if (!(cached && now - cached.timestamp < maxage)) {\n _context.next = 7;\n break;\n }\n\n return _context.abrupt('return', _lodash2.default.clone(cached.data));\n\n case 7:\n _context.t0 = reduceGroupIds;\n _context.next = 10;\n return this.getGroup(rootGroupId);\n\n case 10:\n _context.t1 = _context.sent;\n res = (0, _context.t0)(_context.t1);\n\n cache[rootGroupId] = { data: res, timestamp: now };\n return _context.abrupt('return', _lodash2.default.clone(res));\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getGroupTreeIds(_x4) {\n return _ref2.apply(this, arguments);\n }\n\n return getGroupTreeIds;\n }()\n\n /**\n * Gets group members.\n * @param {String} groupId\n * @return {Promise} On sucess resolves to the array of member objects,\n * which include user IDs, membership time, and some bookkeeping data.\n */\n\n }, {\n key: 'getMembers',\n value: function getMembers(groupId) {\n return this.private.api.get('/groups/' + groupId + '/members').then(handleApiResponse);\n }\n\n /**\n * Gets the number of members in the group.\n * @param {Number|String} groupId ID of the group.\n * @param {Boolean} withSubGroups Optional. When this flag is set, the count\n * will include members of sub-groups of the specified group.\n * @return {Promise} Resolves to the members count.\n */\n\n }, {\n key: 'getMembersCount',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(groupId, withSubGroups) {\n var url, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n url = '/groups/' + groupId + '/membersCount';\n\n if (withSubGroups) url += '?includeSubGroups=true';\n _context2.next = 4;\n return this.private.api.get(url);\n\n case 4:\n res = _context2.sent;\n\n if (res.ok) {\n _context2.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context2.next = 9;\n return res.json();\n\n case 9:\n res = _context2.sent;\n return _context2.abrupt('return', Number(res.count));\n\n case 11:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getMembersCount(_x6, _x7) {\n return _ref4.apply(this, arguments);\n }\n\n return getMembersCount;\n }()\n\n /**\n * Returns TC Auth Token V3 used by the service instance.\n * @return {String} Token.\n */\n\n }, {\n key: 'getTokenV3',\n value: function getTokenV3() {\n return this.private.tokenV3;\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return GroupService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing instance of challenge service, which works with\n * the specified auth token.\n * @param {String} tokenV3 Optional. Topcoder API v3 auth token.\n * @return {GroupService} Instance of the service.\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new GroupService(tokenV3);\n }\n return lastInstance;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(USER_GROUP_MAXAGE, 'USER_GROUP_MAXAGE', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(addDescendantGroups, 'addDescendantGroups', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(checkGroupsStatus, 'checkGroupsStatus', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(checkUserGroups, 'checkUserGroups', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(handleApiResponse, 'handleApiResponse', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(mergeGroup, 'mergeGroup', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(reduceGroupIds, 'reduceGroupIds', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(GroupService, 'GroupService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/groups.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/groups.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _set = __webpack_require__(/*! babel-runtime/core-js/set */ \"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nexports.addDescendantGroups = addDescendantGroups;\nexports.checkGroupsStatus = checkGroupsStatus;\nexports.checkUserGroups = checkUserGroups;\nexports.reduceGroupIds = reduceGroupIds;\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.groups\"\n * @desc Service for communication with group-related part of Topcoder API.\n *\n * NOTE: Through this file, and in related contexts, by loading a user group,\n * or user groups data, we refer to loading the information about descendant\n * user groups; i.e. given some user group(s) we speak about loading the sub-\n * three of related child groups.\n *\n * By group maps we refer to the object having group IDs as the keys, and\n * group data objects as the values. Any group object included into a group map\n * has its \"subGroups\" array (if present) replaced by \"subGroupIds\", that lists\n * only the IDs of immediate child groups; actual child group objects from\n * \"subGroups\" are recursively added to the top level of the group map.\n * Also each group in the group map is timestamped to keep caching of\n * the loaded data.\n */\n\n/* The value of USER_GROUP_MAXAGE constant converted to [ms]. */\nvar USER_GROUP_MAXAGE = _topcoderReactUtils.config.USER_GROUP_MAXAGE * 1000;\n\n/**\n * Given an array of IDs (or a single ID) of user groups, and a map of known\n * user groups, it returns the array including all specified user groups, and\n * all their known descendant groups.\n * @param {String|String[]} groupIds\n * @param {Object} knownGroups\n * @return {String[]}\n */\nfunction addDescendantGroups(groupIds, knownGroups) {\n var res = _lodash2.default.isArray(groupIds) ? groupIds : [groupIds];\n var visitedGroupsIds = new _set2.default();\n var pos = 0;\n while (pos < res.length) {\n var id = res[pos];\n if (!visitedGroupsIds.has(id)) {\n visitedGroupsIds.add(id);\n var g = knownGroups[id];\n if (g && g.subGroupIds) res = res.concat(g.subGroupIds);\n }\n pos += 1;\n }\n return _lodash2.default.uniq(res);\n}\n\n/**\n * Splits the given list of group IDs into the lists of groups being loaded,\n * loaded, and others.\n * @param {String|String[]} groupIds ID, or an array of IDs, of the group(s) we\n * are interested in.\n * @param {Object} knownGroups Optional. The map of already known groups (some\n * of them may be outdated, though). This should be of the same format as the\n * object on \"groups.groups\" path of the Redux store. Defaults to empty object.\n * @param {Object} loadingGroups Optional. Set of groups beign loaded now. This\n * should be of the same format as the object on \"groups.loading\" path of the\n * Redux store. Defaults to empty object.\n * @return {Object} Resulting object may hold four arrays with group IDs from\n * \"groupIds\" (empty arrays will not be included into the result object):\n * - \"loaded\" - the groups that are present in \"knownGroups\" and are not\n * outdated;\n * - \"loading\" - the groups that are not present in \"knownGroups\" (or present,\n * but outdated); but they are already being loaded;\n * - \"missing\" - the groups that are not present in \"knownGroups\"\n * (or outdated), and are not being loaded.\n * - \"unknown\" - the groups that are absent in \"knownGroups\" map.\n */\nfunction checkGroupsStatus(groupIds) {\n var knownGroups = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var loadingGroups = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var loaded = [];\n var loading = [];\n var missing = [];\n var unknown = [];\n var now = Date.now();\n var tested = new _set2.default();\n var ids = _lodash2.default.isArray(groupIds) ? groupIds : [groupIds];\n ids.forEach(function (id) {\n if (tested.has(id)) return;\n tested.add(id);\n var g = knownGroups[id];\n if (!g) unknown.push(id);\n if (g && (now - g.timestamp || 0) < USER_GROUP_MAXAGE) loaded.push(id);else if (loadingGroups[id]) loading.push(id);else missing.push(id);\n });\n return {\n loaded: loaded.length ? loaded : null,\n loading: loading.length ? loading : null,\n missing: missing.length ? missing : null,\n unknown: unknown.length ? unknown : null\n };\n}\n\n/**\n * Returns \"true\" if \"userGroups\" arrays includes any group specified by\n * \"groupIds\", or any group descendant from a group specified by \"groupIds\".\n * The is the map of known groups\n * @param {String|String[]} groupIds\n * @param {Object[]|String[]} userGroups Array of user's groups or their IDs.\n * @param {Object} knownGroups Map of known groups.\n * @return {Boolean}\n */\nfunction checkUserGroups(groupIds, userGroups, knownGroups) {\n var queue = _lodash2.default.isArray(groupIds) ? groupIds : [groupIds];\n if (!queue.length) return true;\n if (!userGroups.length) return false;\n\n /* Algorithmically, \"knownGroups\" stores, in compressed form, data on\n * known trees of user groups; and we want to check whether any of groups\n * from \"userGroups\" belong to sub-trees having groups from \"groupIds\" as\n * their roots. So, we do a breadth-frist search through the group trees. */\n var userGroupIds = new _set2.default();\n var visitedGroupIds = new _set2.default();\n userGroups.forEach(function (g) {\n return userGroupIds.add(_lodash2.default.isObject(g) ? g.id : g);\n });\n var pos = 0;\n while (pos < queue.length) {\n var id = queue[pos];\n if (userGroupIds.has(id)) return true;\n visitedGroupIds.add(id);\n var g = knownGroups[id];\n if (g && g.subGroupIds) {\n g.subGroupIds.forEach(function (sgId) {\n return !visitedGroupIds.has(sgId) ? queue.push(sgId) : null;\n });\n }\n pos += 1;\n }\n return false;\n}\n\n/**\n * Private. Handles given response from the groups API.\n * @param {Object} response\n * @return {Promise} On success resolves to the data fetched from the API.\n */\nfunction handleApiResponse(response) {\n if (!response.ok) throw new Error(response.statusText);\n return response.json();\n // return response.json().then(({ result }) => {\n // return result;\n // if (result.status !== 200) throw new Error(result.content);\n // });\n}\n\n/**\n * Private. Merges given user group (possibly a tree of user groups) into\n * groups map. This function intended only for internal use inside this module,\n * as it may mutate both arguments (hence, the corresponding ESLint rule is\n * disabled within this function), thus should be used only where it is safe.\n * For external use a similar function is provided by \"utils/tc\" module.\n * @param {Object} groups\n * @param {Object} group\n */\nfunction mergeGroup(groups, group) {\n /* eslint-disable no-param-reassign */\n var sg = group.subGroups;\n group.timestamp = Date.now();\n if (sg && sg.length) {\n group.subGroupIds = sg.map(function (g) {\n return g.id;\n });\n sg.forEach(function (g) {\n return mergeGroup(groups, g);\n });\n }\n delete group.subGroups;\n groups[group.id] = group;\n /* eslint-enable no-param-reassign */\n}\n\n/**\n * Given a group tree, reduces it to the array of all group IDs encountered in\n * the tree.\n * @param {Object} group\n * @return {String[]} Array of IDs.\n */\nfunction reduceGroupIds(_ref) {\n var id = _ref.id,\n subGroups = _ref.subGroups;\n\n var res = [id];\n if (subGroups) {\n subGroups.forEach(function (g) {\n res = res.concat(reduceGroupIds(g));\n });\n }\n return res;\n}\n\n/**\n * Service class.\n */\n\nvar GroupService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function GroupService(tokenV3) {\n (0, _classCallCheck3.default)(this, GroupService);\n\n var now = Date.now();\n this.private = {\n api: (0, _api.getApi)('V5', tokenV3),\n cache: {\n groupTreeIds: {\n lastCleanUp: now,\n data: {}\n }\n },\n tokenV3: tokenV3\n };\n }\n\n /**\n * Adds new member to the group.\n * @param {String} groupId\n * @param {String} memberId\n * @param {String} membershipType\n * @return {Promise}\n */\n\n\n (0, _createClass3.default)(GroupService, [{\n key: 'addMember',\n value: function addMember(groupId, memberId, membershipType) {\n return this.private.api.postJson('/groups/' + groupId + '/members', {\n param: { memberId: memberId, membershipType: membershipType }\n }).then(handleApiResponse);\n }\n\n /**\n * Gets detailed information about the group.\n *\n * Notice, when \"withSubGroups\" argument is true (default) this method returns\n * a tree of group data objects, connected via their \"subGroups\" fields.\n * getMap(..) method below wraps this functionality in a more practical way!\n *\n * @param {String} groupId\n * @param {Boolean} withSubGroups Optional. Defaults to true. Specifies,\n * whether the response should information about sub-groups, if any.\n * @return {Promise} On success resolves to the group data object.\n */\n\n }, {\n key: 'getGroup',\n value: function getGroup(groupId) {\n var withSubGroups = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var url = '/groups/' + groupId;\n if (withSubGroups) {\n url = url + '/getSubGroups?includeSubGroups=true&oneLevel=false';\n }\n return this.private.api.get(url).then(handleApiResponse);\n }\n\n /**\n * Gets detailed information about the specified user group(s) and their\n * descendant sub-groups.\n *\n * @param {String|String[]} groupIds Group ID, or an array of group IDs,\n * to query from Topcoder API.\n * @return {Promise} Resolves to the group map. That object will have group\n * IDs as the keys, and corresponding group data objects as the values. In\n * each group data object the \"subGroups\" field, if any, will be replaced by\n * \"subGroupIds\" (array of IDs of the immediate child groups), and the actual\n * data on the sub-groups will be moved to the root of the map object.\n * It also timestamps each fetched group.\n */\n\n }, {\n key: 'getGroupMap',\n value: function getGroupMap(groupIds) {\n var _this = this;\n\n var res = {};\n var seen = new _set2.default();\n var query = _lodash2.default.isArray(groupIds) ? groupIds : [groupIds];\n var promises = query.map(function (id) {\n if (seen.has(id)) return null;\n seen.add(id);\n return _this.getGroup(id).then(function (group) {\n return mergeGroup(res, group);\n }).catch(function (err) {\n /* In case we have failed to get some of the requested groups,\n * we just send error message to logs, and serve the result with\n * those groups that we managed to get. Otherwise it will be to\n * easy to break our code by minor mistakes in the group-related\n * configuration in the API and in the App. */\n _logger2.default.error('Failed to get user group #' + id, err);\n\n /* Empty group with timestamp is added to the result, as we still\n * want to cache the result, even if the result is that we cannot\n * load this group, at least for this visitor. */\n res[id] = { id: id, timestamp: Date.now() };\n });\n });\n return _promise2.default.all(promises).then(function () {\n return res;\n });\n }\n\n /**\n * Given a root group ID, returns an ID array that contains the root group ID,\n * and IDs of all descendant groups in the group (sub-)tree rooted at the\n * specified group.\n *\n * Results are cached inside the class instance to minimize the load on TC\n * Group API. To take advantage of that, be sure to keep and reuse the same\n * class instance.\n *\n * The reason to have such strange method and pay an extra attention to its\n * optimization for smaller API load is that it is essential for authorization\n * checks.\n *\n * @param {String} rootGroupId\n * @param {Number} maxage Optional. Max age [ms] of records served from the\n * cache. Defaults to 5 minutes.\n * @return {Promise} Resolves to ID array.\n */\n\n }, {\n key: 'getGroupTreeIds',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(rootGroupId) {\n var maxage = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5 * 60 * 1000;\n var now, cache, CLEAN_UP_INTERVAL, cached, res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n now = Date.now();\n cache = this.private.cache.groupTreeIds;\n\n /* Clean-up: removes stale records from the cache. */\n\n CLEAN_UP_INTERVAL = 24 * 60 * 60 * 1000; // 1 day in ms.\n\n if (now - cache.lastCleanUp > CLEAN_UP_INTERVAL) {\n _lodash2.default.forOwn(cache, function (_ref3, key) {\n var timestamp = _ref3.timestamp;\n\n if (now - timestamp > CLEAN_UP_INTERVAL) delete cache[key];\n });\n cache.lastCleanUp = now;\n }\n\n /* If result is found in cache, and is fresh enough, return it. */\n cached = cache[rootGroupId];\n\n if (!(cached && now - cached.timestamp < maxage)) {\n _context.next = 7;\n break;\n }\n\n return _context.abrupt('return', _lodash2.default.clone(cached.data));\n\n case 7:\n _context.t0 = reduceGroupIds;\n _context.next = 10;\n return this.getGroup(rootGroupId);\n\n case 10:\n _context.t1 = _context.sent;\n res = (0, _context.t0)(_context.t1);\n\n cache[rootGroupId] = { data: res, timestamp: now };\n return _context.abrupt('return', _lodash2.default.clone(res));\n\n case 14:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getGroupTreeIds(_x4) {\n return _ref2.apply(this, arguments);\n }\n\n return getGroupTreeIds;\n }()\n\n /**\n * Gets group members.\n * @param {String} groupId\n * @return {Promise} On sucess resolves to the array of member objects,\n * which include user IDs, membership time, and some bookkeeping data.\n */\n\n }, {\n key: 'getMembers',\n value: function getMembers(groupId) {\n return this.private.api.get('/groups/' + groupId + '/members').then(handleApiResponse);\n }\n\n /**\n * Gets the number of members in the group.\n * @param {Number|String} groupId ID of the group.\n * @param {Boolean} withSubGroups Optional. When this flag is set, the count\n * will include members of sub-groups of the specified group.\n * @return {Promise} Resolves to the members count.\n */\n\n }, {\n key: 'getMembersCount',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(groupId, withSubGroups) {\n var url, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n url = '/groups/' + groupId + '/membersCount';\n\n if (withSubGroups) url += '?includeSubGroups=true';\n _context2.next = 4;\n return this.private.api.get(url);\n\n case 4:\n res = _context2.sent;\n\n if (res.ok) {\n _context2.next = 7;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 7:\n _context2.next = 9;\n return res.json();\n\n case 9:\n res = _context2.sent;\n return _context2.abrupt('return', Number(res.count));\n\n case 11:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getMembersCount(_x6, _x7) {\n return _ref4.apply(this, arguments);\n }\n\n return getMembersCount;\n }()\n\n /**\n * Returns TC Auth Token V3 used by the service instance.\n * @return {String} Token.\n */\n\n }, {\n key: 'getTokenV3',\n value: function getTokenV3() {\n return this.private.tokenV3;\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return GroupService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing instance of challenge service, which works with\n * the specified auth token.\n * @param {String} tokenV3 Optional. Topcoder API v3 auth token.\n * @return {GroupService} Instance of the service.\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new GroupService(tokenV3);\n }\n return lastInstance;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(USER_GROUP_MAXAGE, 'USER_GROUP_MAXAGE', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(addDescendantGroups, 'addDescendantGroups', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(checkGroupsStatus, 'checkGroupsStatus', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(checkUserGroups, 'checkUserGroups', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(handleApiResponse, 'handleApiResponse', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(mergeGroup, 'mergeGroup', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(reduceGroupIds, 'reduceGroupIds', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(GroupService, 'GroupService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/groups.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/groups.js?"); /***/ }), @@ -958,7 +958,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.services = undefined;\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nvar api = _interopRequireWildcard(_api);\n\nvar _billing = __webpack_require__(/*! ./billing */ \"./src/services/billing.js\");\n\nvar billing = _interopRequireWildcard(_billing);\n\nvar _challenges = __webpack_require__(/*! ./challenges */ \"./src/services/challenges.js\");\n\nvar challenge = _interopRequireWildcard(_challenges);\n\nvar _direct = __webpack_require__(/*! ./direct */ \"./src/services/direct.js\");\n\nvar direct = _interopRequireWildcard(_direct);\n\nvar _groups = __webpack_require__(/*! ./groups */ \"./src/services/groups.js\");\n\nvar groups = _interopRequireWildcard(_groups);\n\nvar _members = __webpack_require__(/*! ./members */ \"./src/services/members.js\");\n\nvar members = _interopRequireWildcard(_members);\n\nvar _terms = __webpack_require__(/*! ./terms */ \"./src/services/terms.js\");\n\nvar terms = _interopRequireWildcard(_terms);\n\nvar _communities = __webpack_require__(/*! ./communities */ \"./src/services/communities.js\");\n\nvar communities = _interopRequireWildcard(_communities);\n\nvar _reviewOpportunities = __webpack_require__(/*! ./reviewOpportunities */ \"./src/services/reviewOpportunities.js\");\n\nvar reviewOpportunities = _interopRequireWildcard(_reviewOpportunities);\n\nvar _userSettings = __webpack_require__(/*! ./user-settings */ \"./src/services/user-settings.js\");\n\nvar userSetting = _interopRequireWildcard(_userSettings);\n\nvar _user = __webpack_require__(/*! ./user */ \"./src/services/user.js\");\n\nvar user = _interopRequireWildcard(_user);\n\nvar _lookup = __webpack_require__(/*! ./lookup */ \"./src/services/lookup.js\");\n\nvar lookup = _interopRequireWildcard(_lookup);\n\nvar _userTraits = __webpack_require__(/*! ./user-traits */ \"./src/services/user-traits.js\");\n\nvar userTraits = _interopRequireWildcard(_userTraits);\n\nvar _submissions = __webpack_require__(/*! ./submissions */ \"./src/services/submissions.js\");\n\nvar submissions = _interopRequireWildcard(_submissions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Export services.\n */\n\n\nvar services = exports.services = {\n api: api,\n billing: billing,\n terms: terms,\n communities: communities,\n challenge: challenge,\n direct: direct,\n groups: groups,\n members: members,\n user: user,\n userSetting: userSetting,\n reviewOpportunities: reviewOpportunities,\n lookup: lookup,\n userTraits: userTraits,\n submissions: submissions\n};\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(services, 'services', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/index.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/index.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/index.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.services = undefined;\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nvar api = _interopRequireWildcard(_api);\n\nvar _billing = __webpack_require__(/*! ./billing */ \"./src/services/billing.js\");\n\nvar billing = _interopRequireWildcard(_billing);\n\nvar _challenges = __webpack_require__(/*! ./challenges */ \"./src/services/challenges.js\");\n\nvar challenge = _interopRequireWildcard(_challenges);\n\nvar _direct = __webpack_require__(/*! ./direct */ \"./src/services/direct.js\");\n\nvar direct = _interopRequireWildcard(_direct);\n\nvar _groups = __webpack_require__(/*! ./groups */ \"./src/services/groups.js\");\n\nvar groups = _interopRequireWildcard(_groups);\n\nvar _members = __webpack_require__(/*! ./members */ \"./src/services/members.js\");\n\nvar members = _interopRequireWildcard(_members);\n\nvar _terms = __webpack_require__(/*! ./terms */ \"./src/services/terms.js\");\n\nvar terms = _interopRequireWildcard(_terms);\n\nvar _communities = __webpack_require__(/*! ./communities */ \"./src/services/communities.js\");\n\nvar communities = _interopRequireWildcard(_communities);\n\nvar _reviewOpportunities = __webpack_require__(/*! ./reviewOpportunities */ \"./src/services/reviewOpportunities.js\");\n\nvar reviewOpportunities = _interopRequireWildcard(_reviewOpportunities);\n\nvar _userSettings = __webpack_require__(/*! ./user-settings */ \"./src/services/user-settings.js\");\n\nvar userSetting = _interopRequireWildcard(_userSettings);\n\nvar _user = __webpack_require__(/*! ./user */ \"./src/services/user.js\");\n\nvar user = _interopRequireWildcard(_user);\n\nvar _lookup = __webpack_require__(/*! ./lookup */ \"./src/services/lookup.js\");\n\nvar lookup = _interopRequireWildcard(_lookup);\n\nvar _userTraits = __webpack_require__(/*! ./user-traits */ \"./src/services/user-traits.js\");\n\nvar userTraits = _interopRequireWildcard(_userTraits);\n\nvar _submissions = __webpack_require__(/*! ./submissions */ \"./src/services/submissions.js\");\n\nvar submissions = _interopRequireWildcard(_submissions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Export services.\n */\n\n\nvar services = exports.services = {\n api: api,\n billing: billing,\n terms: terms,\n communities: communities,\n challenge: challenge,\n direct: direct,\n groups: groups,\n members: members,\n user: user,\n userSetting: userSetting,\n reviewOpportunities: reviewOpportunities,\n lookup: lookup,\n userTraits: userTraits,\n submissions: submissions\n};\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(services, 'services', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/index.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/index.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/index.js?"); /***/ }), @@ -970,7 +970,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.looker\"\n * @desc This module provides a service to get look data json via Topcoder API.\n */\n\n\n/**\n * Service class.\n */\nvar LookerService = function () {\n /**\n * @param {String} token Optional. Auth token for Topcoder API.\n */\n function LookerService(token) {\n (0, _classCallCheck3.default)(this, LookerService);\n\n this.private = {\n api: (0, _api.getApi)('V4', token),\n token: token\n };\n }\n\n /**\n * Get json look data by id.\n * @param {String} lookerId Look id.\n * @return {Promise} Resolves to the json data.\n */\n\n\n (0, _createClass3.default)(LookerService, [{\n key: 'getLooker',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(lookerId) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/looks/' + lookerId + '/run/json');\n\n case 2:\n res = _context.sent;\n return _context.abrupt('return', (0, _tc.getLookerApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getLooker(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getLooker;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return LookerService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing looker service.\n * @param {String} token Optional. Auth token for Topcoder API.\n * @return {LookerService} looker service object\n */\nfunction getService(token) {\n if (!lastInstance || token !== lastInstance.private.token) {\n lastInstance = new LookerService(token);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(LookerService, 'LookerService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/looker.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/looker.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/looker.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/looker.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/looker.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.looker\"\n * @desc This module provides a service to get look data json via Topcoder API.\n */\n\n\n/**\n * Service class.\n */\nvar LookerService = function () {\n /**\n * @param {String} token Optional. Auth token for Topcoder API.\n */\n function LookerService(token) {\n (0, _classCallCheck3.default)(this, LookerService);\n\n this.private = {\n api: (0, _api.getApi)('V4', token),\n token: token\n };\n }\n\n /**\n * Get json look data by id.\n * @param {String} lookerId Look id.\n * @return {Promise} Resolves to the json data.\n */\n\n\n (0, _createClass3.default)(LookerService, [{\n key: 'getLooker',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(lookerId) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/looks/' + lookerId + '/run/json');\n\n case 2:\n res = _context.sent;\n return _context.abrupt('return', (0, _tc.getLookerApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getLooker(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getLooker;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return LookerService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing looker service.\n * @param {String} token Optional. Auth token for Topcoder API.\n * @return {LookerService} looker service object\n */\nfunction getService(token) {\n if (!lastInstance || token !== lastInstance.private.token) {\n lastInstance = new LookerService(token);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(LookerService, 'LookerService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/looker.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/looker.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/looker.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/looker.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/looker.js?"); /***/ }), @@ -982,7 +982,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.lookup\"\n * @desc This module provides a service to get lookup data from Topcoder\n * via API V3.\n */\n\n\nvar LookupService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function LookupService(tokenV3) {\n (0, _classCallCheck3.default)(this, LookupService);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n apiV5: (0, _api.getApi)('V5', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets tags.\n * @param {Object} params Parameters\n * @return {Promise} Resolves to the tags.\n */\n\n\n (0, _createClass3.default)(LookupService, [{\n key: 'getTags',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(params) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/tags/?' + _qs2.default.stringify(params));\n\n case 2:\n res = _context.sent;\n return _context.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getTags(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getTags;\n }()\n\n /**\n * Gets countries.\n * @param {Object} params Parameters\n * @return {Promise} Resolves to the countries.\n */\n\n }, {\n key: 'getCountries',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.private.api.get('/members/lookup/countries');\n\n case 2:\n res = _context2.sent;\n return _context2.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getCountries() {\n return _ref2.apply(this, arguments);\n }\n\n return getCountries;\n }()\n\n /**\n * Gets all countries.\n * @return {Promise} Resolves to the countries.\n */\n\n }, {\n key: 'getAllCountries',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var res, jsonResult;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.private.apiV5.get('/lookups/countries');\n\n case 2:\n res = _context3.sent;\n _context3.next = 5;\n return res.json();\n\n case 5:\n jsonResult = _context3.sent;\n return _context3.abrupt('return', jsonResult);\n\n case 7:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getAllCountries() {\n return _ref3.apply(this, arguments);\n }\n\n return getAllCountries;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return LookupService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing lookup service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {LookupService} Lookup service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new LookupService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(LookupService, 'LookupService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/lookup.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/lookup.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/lookup.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/lookup.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/lookup.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.lookup\"\n * @desc This module provides a service to get lookup data from Topcoder\n * via API V3.\n */\n\n\nvar LookupService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function LookupService(tokenV3) {\n (0, _classCallCheck3.default)(this, LookupService);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n apiV5: (0, _api.getApi)('V5', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets tags.\n * @param {Object} params Parameters\n * @return {Promise} Resolves to the tags.\n */\n\n\n (0, _createClass3.default)(LookupService, [{\n key: 'getTags',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(params) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/tags/?' + _qs2.default.stringify(params));\n\n case 2:\n res = _context.sent;\n return _context.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getTags(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getTags;\n }()\n\n /**\n * Gets countries.\n * @param {Object} params Parameters\n * @return {Promise} Resolves to the countries.\n */\n\n }, {\n key: 'getCountries',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {\n var res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.private.api.get('/members/lookup/countries');\n\n case 2:\n res = _context2.sent;\n return _context2.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getCountries() {\n return _ref2.apply(this, arguments);\n }\n\n return getCountries;\n }()\n\n /**\n * Gets all countries.\n * @return {Promise} Resolves to the countries.\n */\n\n }, {\n key: 'getAllCountries',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {\n var res, jsonResult;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.private.apiV5.get('/lookups/countries');\n\n case 2:\n res = _context3.sent;\n _context3.next = 5;\n return res.json();\n\n case 5:\n jsonResult = _context3.sent;\n return _context3.abrupt('return', jsonResult);\n\n case 7:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getAllCountries() {\n return _ref3.apply(this, arguments);\n }\n\n return getAllCountries;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return LookupService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing lookup service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {LookupService} Lookup service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new LookupService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(LookupService, 'LookupService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/lookup.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/lookup.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/lookup.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/lookup.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/lookup.js?"); /***/ }), @@ -994,7 +994,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(/*! babel-runtime/core-js/object/assign */ \"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.members\"\n * @desc This module provides a service for searching for Topcoder\n * members via API V3.\n */\n\n/* global XMLHttpRequest */\n\n\n/**\n * Service class.\n */\nvar MembersService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function MembersService(tokenV3) {\n (0, _classCallCheck3.default)(this, MembersService);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets member's financial information.\n * @param {String} handle User handle.\n * @return {Promise} Resolves to the financial information object.\n */\n\n\n (0, _createClass3.default)(MembersService, [{\n key: 'getMemberFinances',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/members/' + handle + '/financial');\n\n case 2:\n res = _context.sent;\n return _context.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getMemberFinances(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getMemberFinances;\n }()\n\n /**\n * Gets public information on a member.\n *\n * This method does not require any authorization.\n *\n * @param {String} handle Member handle.\n * @return {Promise} Resolves to the data object.\n */\n\n }, {\n key: 'getMemberInfo',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.private.api.get('/members/' + handle);\n\n case 2:\n res = _context2.sent;\n return _context2.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getMemberInfo(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getMemberInfo;\n }()\n\n /**\n * Gets public information on a list member.\n *\n * This method does not require any authorization.\n *\n * @param {Array} members List member info.\n * @param {Boolean} shouldThrowError should throw error if request fail\n * @return {Promise} Resolves to the data object.\n */\n\n }, {\n key: 'getListMemberInfo',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(members) {\n var _this = this;\n\n var shouldThrowError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var getHandle, apis;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n getHandle = function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(member) {\n var result;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return _this.private.api.get('/members/' + member.handle);\n\n case 2:\n result = _context3.sent;\n _context3.next = 5;\n return (0, _tc.getApiResponsePayload)(result, shouldThrowError);\n\n case 5:\n member.memberInfo = _context3.sent;\n\n case 6:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, _this);\n }));\n\n return function getHandle(_x5) {\n return _ref4.apply(this, arguments);\n };\n }();\n\n apis = members.map(function (member) {\n return getHandle(member);\n });\n _context4.next = 4;\n return _promise2.default.all(apis);\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getListMemberInfo(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getListMemberInfo;\n }()\n\n /**\n * Gets member external account info.\n * @param {String} handle\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getExternalAccounts',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.private.api.get('/members/' + handle + '/externalAccounts');\n\n case 2:\n res = _context5.sent;\n return _context5.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getExternalAccounts(_x6) {\n return _ref5.apply(this, arguments);\n }\n\n return getExternalAccounts;\n }()\n\n /**\n * Gets member external links.\n * @param {String} handle\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getExternalLinks',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _context6.next = 2;\n return this.private.api.get('/members/' + handle + '/externalLinks');\n\n case 2:\n res = _context6.sent;\n return _context6.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getExternalLinks(_x7) {\n return _ref6.apply(this, arguments);\n }\n\n return getExternalLinks;\n }()\n\n /**\n * Gets member skills.\n * @param {String} handle\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getSkills',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.private.api.get('/members/' + handle + '/skills');\n\n case 2:\n res = _context7.sent;\n return _context7.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getSkills(_x8) {\n return _ref7.apply(this, arguments);\n }\n\n return getSkills;\n }()\n\n /**\n * Gets member statistics.\n * @param {String} handle\n * @param {String} groupIds\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getStats',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(handle, groupIds) {\n var res;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n res = void 0;\n\n if (!groupIds) {\n _context8.next = 7;\n break;\n }\n\n _context8.next = 4;\n return this.private.api.get('/members/' + handle + '/stats?groupIds=' + groupIds);\n\n case 4:\n res = _context8.sent;\n _context8.next = 10;\n break;\n\n case 7:\n _context8.next = 9;\n return this.private.api.get('/members/' + handle + '/stats');\n\n case 9:\n res = _context8.sent;\n\n case 10:\n return _context8.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 11:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function getStats(_x9, _x10) {\n return _ref8.apply(this, arguments);\n }\n\n return getStats;\n }()\n\n /**\n * Gets member statistics history\n * @param {String} handle\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getStatsHistory',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.private.api.get('/members/' + handle + '/stats/history');\n\n case 2:\n res = _context9.sent;\n return _context9.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function getStatsHistory(_x11) {\n return _ref9.apply(this, arguments);\n }\n\n return getStatsHistory;\n }()\n\n /**\n * Gets member statistics distribution\n * @param {String} handle\n * @param {String} track\n * @param {String} subTrack\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getStatsDistribution',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(handle, track, subTrack) {\n var res;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.private.api.get('/members/stats/distribution?filter=' + encodeURIComponent(_qs2.default.stringify({\n track: track,\n subTrack: subTrack\n })));\n\n case 2:\n res = _context10.sent;\n return _context10.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function getStatsDistribution(_x12, _x13, _x14) {\n return _ref10.apply(this, arguments);\n }\n\n return getStatsDistribution;\n }()\n\n /**\n * Gets a list of suggested member names for the supplied partial.\n *\n * WARNING: This method requires v3 authorization.\n *\n * @param {String} keyword Partial string to find suggestions for\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'getMemberSuggestions',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(keyword) {\n var res;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n _context11.next = 2;\n return this.private.api.get('/members/_suggest/' + keyword);\n\n case 2:\n res = _context11.sent;\n return _context11.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function getMemberSuggestions(_x15) {\n return _ref11.apply(this, arguments);\n }\n\n return getMemberSuggestions;\n }()\n\n /**\n * Adds external web link for member.\n * @param {String} userHandle The user handle\n * @param {String} webLink The external web link\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'addWebLink',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(userHandle, webLink) {\n var res;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n _context12.next = 2;\n return this.private.api.postJson('/members/' + userHandle + '/externalLinks', { param: { url: webLink } });\n\n case 2:\n res = _context12.sent;\n return _context12.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function addWebLink(_x16, _x17) {\n return _ref12.apply(this, arguments);\n }\n\n return addWebLink;\n }()\n\n /**\n * Deletes external web link for member.\n * @param {String} userHandle The user handle\n * @param {String} webLinkHandle The external web link handle\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'deleteWebLink',\n value: function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(userHandle, webLinkHandle) {\n var body, res;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n body = {\n param: {\n handle: webLinkHandle\n }\n };\n _context13.next = 3;\n return this.private.api.delete('/members/' + userHandle + '/externalLinks/' + webLinkHandle, (0, _stringify2.default)(body));\n\n case 3:\n res = _context13.sent;\n return _context13.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function deleteWebLink(_x18, _x19) {\n return _ref13.apply(this, arguments);\n }\n\n return deleteWebLink;\n }()\n\n /**\n * Adds user skill.\n * @param {String} handle Topcoder user handle\n * @param {Number} skillTagId Skill tag id\n * @return {Promise} Resolves to operation result\n */\n\n }, {\n key: 'addSkill',\n value: function () {\n var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(handle, skillTagId) {\n var body, res;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n body = {\n param: {\n skills: (0, _defineProperty3.default)({}, skillTagId, {\n hidden: false\n })\n }\n };\n _context14.next = 3;\n return this.private.api.patchJson('/members/' + handle + '/skills', body);\n\n case 3:\n res = _context14.sent;\n return _context14.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function addSkill(_x20, _x21) {\n return _ref14.apply(this, arguments);\n }\n\n return addSkill;\n }()\n\n /**\n * Hides user skill.\n * @param {String} handle Topcoder user handle\n * @param {Number} skillTagId Skill tag id\n * @return {Promise} Resolves to operation result\n */\n\n }, {\n key: 'hideSkill',\n value: function () {\n var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(handle, skillTagId) {\n var body, res;\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n body = {\n param: {\n skills: (0, _defineProperty3.default)({}, skillTagId, {\n hidden: true\n })\n }\n };\n _context15.next = 3;\n return this.private.api.fetch('/members/' + handle + '/skills', {\n body: (0, _stringify2.default)(body),\n method: 'PATCH'\n });\n\n case 3:\n res = _context15.sent;\n return _context15.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function hideSkill(_x22, _x23) {\n return _ref15.apply(this, arguments);\n }\n\n return hideSkill;\n }()\n\n /**\n * Updates member profile.\n * @param {Object} profile The profile to update.\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'updateMemberProfile',\n value: function () {\n var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(profile) {\n var url, res;\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n url = profile.verifyUrl ? '/members/' + profile.handle + '?verifyUrl=' + profile.verifyUrl : '/members/' + profile.handle;\n _context16.next = 3;\n return this.private.api.putJson(url, { param: profile.verifyUrl ? _lodash2.default.omit(profile, ['verifyUrl']) : profile });\n\n case 3:\n res = _context16.sent;\n\n if (!(profile.verifyUrl && res.status === 409)) {\n _context16.next = 6;\n break;\n }\n\n return _context16.abrupt('return', _promise2.default.resolve((0, _assign2.default)({}, profile, { isEmailConflict: true })));\n\n case 6:\n return _context16.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 7:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function updateMemberProfile(_x24) {\n return _ref16.apply(this, arguments);\n }\n\n return updateMemberProfile;\n }()\n\n /**\n * Gets presigned url for member photo file.\n * @param {String} userHandle The user handle\n * @param {File} file The file to get its presigned url\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'getPresignedUrl',\n value: function () {\n var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(userHandle, file) {\n var res, payload;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return this.private.api.postJson('/members/' + userHandle + '/photoUploadUrl', { param: { contentType: file.type } });\n\n case 2:\n res = _context17.sent;\n _context17.next = 5;\n return (0, _tc.getApiResponsePayload)(res);\n\n case 5:\n payload = _context17.sent;\n return _context17.abrupt('return', {\n preSignedURL: payload.preSignedURL,\n token: payload.token,\n file: file,\n userHandle: userHandle\n });\n\n case 7:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function getPresignedUrl(_x25, _x26) {\n return _ref17.apply(this, arguments);\n }\n\n return getPresignedUrl;\n }()\n\n /**\n * Updates member photo.\n * @param {Object} S3Response The response from uploadFileToS3() function.\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'updateMemberPhoto',\n value: function () {\n var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(S3Response) {\n var res;\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n _context18.next = 2;\n return this.private.api.putJson('/members/' + S3Response.userHandle + '/photo', { param: S3Response.body });\n\n case 2:\n res = _context18.sent;\n return _context18.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function updateMemberPhoto(_x27) {\n return _ref18.apply(this, arguments);\n }\n\n return updateMemberPhoto;\n }()\n\n /**\n * Uploads file to S3.\n * @param {Object} presignedUrlResponse The presigned url response from\n * getPresignedUrl() function.\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'uploadFileToS3',\n value: function uploadFileToS3(presignedUrlResponse) {\n _lodash2.default.noop(this);\n return new _promise2.default(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n\n xhr.open('PUT', presignedUrlResponse.preSignedURL, true);\n xhr.setRequestHeader('Content-Type', presignedUrlResponse.file.type);\n\n xhr.onreadystatechange = function () {\n var status = xhr.status;\n\n if ((status >= 200 && status < 300 || status === 304) && xhr.readyState === 4) {\n resolve({\n userHandle: presignedUrlResponse.userHandle,\n body: {\n token: presignedUrlResponse.token,\n contentType: presignedUrlResponse.file.type\n }\n });\n } else if (status >= 400) {\n var err = new Error('Could not upload image to S3');\n err.status = status;\n reject(err);\n }\n };\n\n xhr.onerror = function (err) {\n _logger2.default.error('Could not upload image to S3', err);\n\n reject(err);\n };\n\n xhr.send(presignedUrlResponse.file);\n });\n }\n\n /**\n * Verify member new email\n * @param {String} handle handle Topcoder user handle\n * @param {String} emailVerifyToken The verify token of new email\n * @returns {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'verifyMemberNewEmail',\n value: function () {\n var _ref19 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee19(handle, emailVerifyToken) {\n var res;\n return _regenerator2.default.wrap(function _callee19$(_context19) {\n while (1) {\n switch (_context19.prev = _context19.next) {\n case 0:\n _context19.next = 2;\n return this.private.api.get('/members/' + handle + '/verify?token=' + emailVerifyToken);\n\n case 2:\n res = _context19.sent;\n return _context19.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context19.stop();\n }\n }\n }, _callee19, this);\n }));\n\n function verifyMemberNewEmail(_x28, _x29) {\n return _ref19.apply(this, arguments);\n }\n\n return verifyMemberNewEmail;\n }()\n\n /**\n * Get members information\n * @param {Array} userIds the member ids\n */\n\n }, {\n key: 'getMembersInformation',\n value: function () {\n var _ref20 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee20(userIds) {\n var query, limit, url, res;\n return _regenerator2.default.wrap(function _callee20$(_context20) {\n while (1) {\n switch (_context20.prev = _context20.next) {\n case 0:\n query = 'query=' + encodeURI(_lodash2.default.map(userIds, function (id) {\n return 'userId:' + id;\n }).join(' OR '));\n limit = 'limit=' + userIds.length;\n url = '/members/_search?fields=userId%2Chandle&' + query + '&' + limit;\n _context20.next = 5;\n return this.private.api.get(url);\n\n case 5:\n res = _context20.sent;\n return _context20.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 7:\n case 'end':\n return _context20.stop();\n }\n }\n }, _callee20, this);\n }));\n\n function getMembersInformation(_x30) {\n return _ref20.apply(this, arguments);\n }\n\n return getMembersInformation;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return MembersService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing members service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {MembersService} Members service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new MembersService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(MembersService, 'MembersService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/members.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/members.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/members.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/members.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/members.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _assign = __webpack_require__(/*! babel-runtime/core-js/object/assign */ \"babel-runtime/core-js/object/assign\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _defineProperty2 = __webpack_require__(/*! babel-runtime/helpers/defineProperty */ \"babel-runtime/helpers/defineProperty\");\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.members\"\n * @desc This module provides a service for searching for Topcoder\n * members via API V3.\n */\n\n/* global XMLHttpRequest */\n\n\n/**\n * Service class.\n */\nvar MembersService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function MembersService(tokenV3) {\n (0, _classCallCheck3.default)(this, MembersService);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets member's financial information.\n * @param {String} handle User handle.\n * @return {Promise} Resolves to the financial information object.\n */\n\n\n (0, _createClass3.default)(MembersService, [{\n key: 'getMemberFinances',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/members/' + handle + '/financial');\n\n case 2:\n res = _context.sent;\n return _context.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getMemberFinances(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getMemberFinances;\n }()\n\n /**\n * Gets public information on a member.\n *\n * This method does not require any authorization.\n *\n * @param {String} handle Member handle.\n * @return {Promise} Resolves to the data object.\n */\n\n }, {\n key: 'getMemberInfo',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.private.api.get('/members/' + handle);\n\n case 2:\n res = _context2.sent;\n return _context2.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getMemberInfo(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getMemberInfo;\n }()\n\n /**\n * Gets member external account info.\n * @param {String} handle\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getExternalAccounts',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.private.api.get('/members/' + handle + '/externalAccounts');\n\n case 2:\n res = _context3.sent;\n return _context3.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getExternalAccounts(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getExternalAccounts;\n }()\n\n /**\n * Gets member external links.\n * @param {String} handle\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getExternalLinks',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.private.api.get('/members/' + handle + '/externalLinks');\n\n case 2:\n res = _context4.sent;\n return _context4.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getExternalLinks(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return getExternalLinks;\n }()\n\n /**\n * Gets member skills.\n * @param {String} handle\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getSkills',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return this.private.api.get('/members/' + handle + '/skills');\n\n case 2:\n res = _context5.sent;\n return _context5.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getSkills(_x5) {\n return _ref5.apply(this, arguments);\n }\n\n return getSkills;\n }()\n\n /**\n * Gets member statistics.\n * @param {String} handle\n * @param {String} groupIds\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getStats',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(handle, groupIds) {\n var res;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n res = void 0;\n\n if (!groupIds) {\n _context6.next = 7;\n break;\n }\n\n _context6.next = 4;\n return this.private.api.get('/members/' + handle + '/stats?groupIds=' + groupIds);\n\n case 4:\n res = _context6.sent;\n _context6.next = 10;\n break;\n\n case 7:\n _context6.next = 9;\n return this.private.api.get('/members/' + handle + '/stats');\n\n case 9:\n res = _context6.sent;\n\n case 10:\n return _context6.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 11:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function getStats(_x6, _x7) {\n return _ref6.apply(this, arguments);\n }\n\n return getStats;\n }()\n\n /**\n * Gets member statistics history\n * @param {String} handle\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getStatsHistory',\n value: function () {\n var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n _context7.next = 2;\n return this.private.api.get('/members/' + handle + '/stats/history');\n\n case 2:\n res = _context7.sent;\n return _context7.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getStatsHistory(_x8) {\n return _ref7.apply(this, arguments);\n }\n\n return getStatsHistory;\n }()\n\n /**\n * Gets member statistics distribution\n * @param {String} handle\n * @param {String} track\n * @param {String} subTrack\n * @return {Promise} Resolves to the stats object.\n */\n\n }, {\n key: 'getStatsDistribution',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(handle, track, subTrack) {\n var res;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n _context8.next = 2;\n return this.private.api.get('/members/stats/distribution?filter=' + encodeURIComponent(_qs2.default.stringify({\n track: track,\n subTrack: subTrack\n })));\n\n case 2:\n res = _context8.sent;\n return _context8.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function getStatsDistribution(_x9, _x10, _x11) {\n return _ref8.apply(this, arguments);\n }\n\n return getStatsDistribution;\n }()\n\n /**\n * Gets a list of suggested member names for the supplied partial.\n *\n * WARNING: This method requires v3 authorization.\n *\n * @param {String} keyword Partial string to find suggestions for\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'getMemberSuggestions',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(keyword) {\n var res;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n _context9.next = 2;\n return this.private.api.get('/members/_suggest/' + keyword);\n\n case 2:\n res = _context9.sent;\n return _context9.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function getMemberSuggestions(_x12) {\n return _ref9.apply(this, arguments);\n }\n\n return getMemberSuggestions;\n }()\n\n /**\n * Adds external web link for member.\n * @param {String} userHandle The user handle\n * @param {String} webLink The external web link\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'addWebLink',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(userHandle, webLink) {\n var res;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n _context10.next = 2;\n return this.private.api.postJson('/members/' + userHandle + '/externalLinks', { param: { url: webLink } });\n\n case 2:\n res = _context10.sent;\n return _context10.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function addWebLink(_x13, _x14) {\n return _ref10.apply(this, arguments);\n }\n\n return addWebLink;\n }()\n\n /**\n * Deletes external web link for member.\n * @param {String} userHandle The user handle\n * @param {String} webLinkHandle The external web link handle\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'deleteWebLink',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(userHandle, webLinkHandle) {\n var body, res;\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n body = {\n param: {\n handle: webLinkHandle\n }\n };\n _context11.next = 3;\n return this.private.api.delete('/members/' + userHandle + '/externalLinks/' + webLinkHandle, (0, _stringify2.default)(body));\n\n case 3:\n res = _context11.sent;\n return _context11.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function deleteWebLink(_x15, _x16) {\n return _ref11.apply(this, arguments);\n }\n\n return deleteWebLink;\n }()\n\n /**\n * Adds user skill.\n * @param {String} handle Topcoder user handle\n * @param {Number} skillTagId Skill tag id\n * @return {Promise} Resolves to operation result\n */\n\n }, {\n key: 'addSkill',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee12(handle, skillTagId) {\n var body, res;\n return _regenerator2.default.wrap(function _callee12$(_context12) {\n while (1) {\n switch (_context12.prev = _context12.next) {\n case 0:\n body = {\n param: {\n skills: (0, _defineProperty3.default)({}, skillTagId, {\n hidden: false\n })\n }\n };\n _context12.next = 3;\n return this.private.api.patchJson('/members/' + handle + '/skills', body);\n\n case 3:\n res = _context12.sent;\n return _context12.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context12.stop();\n }\n }\n }, _callee12, this);\n }));\n\n function addSkill(_x17, _x18) {\n return _ref12.apply(this, arguments);\n }\n\n return addSkill;\n }()\n\n /**\n * Hides user skill.\n * @param {String} handle Topcoder user handle\n * @param {Number} skillTagId Skill tag id\n * @return {Promise} Resolves to operation result\n */\n\n }, {\n key: 'hideSkill',\n value: function () {\n var _ref13 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee13(handle, skillTagId) {\n var body, res;\n return _regenerator2.default.wrap(function _callee13$(_context13) {\n while (1) {\n switch (_context13.prev = _context13.next) {\n case 0:\n body = {\n param: {\n skills: (0, _defineProperty3.default)({}, skillTagId, {\n hidden: true\n })\n }\n };\n _context13.next = 3;\n return this.private.api.fetch('/members/' + handle + '/skills', {\n body: (0, _stringify2.default)(body),\n method: 'PATCH'\n });\n\n case 3:\n res = _context13.sent;\n return _context13.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context13.stop();\n }\n }\n }, _callee13, this);\n }));\n\n function hideSkill(_x19, _x20) {\n return _ref13.apply(this, arguments);\n }\n\n return hideSkill;\n }()\n\n /**\n * Updates member profile.\n * @param {Object} profile The profile to update.\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'updateMemberProfile',\n value: function () {\n var _ref14 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee14(profile) {\n var url, res;\n return _regenerator2.default.wrap(function _callee14$(_context14) {\n while (1) {\n switch (_context14.prev = _context14.next) {\n case 0:\n url = profile.verifyUrl ? '/members/' + profile.handle + '?verifyUrl=' + profile.verifyUrl : '/members/' + profile.handle;\n _context14.next = 3;\n return this.private.api.putJson(url, { param: profile.verifyUrl ? _lodash2.default.omit(profile, ['verifyUrl']) : profile });\n\n case 3:\n res = _context14.sent;\n\n if (!(profile.verifyUrl && res.status === 409)) {\n _context14.next = 6;\n break;\n }\n\n return _context14.abrupt('return', _promise2.default.resolve((0, _assign2.default)({}, profile, { isEmailConflict: true })));\n\n case 6:\n return _context14.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 7:\n case 'end':\n return _context14.stop();\n }\n }\n }, _callee14, this);\n }));\n\n function updateMemberProfile(_x21) {\n return _ref14.apply(this, arguments);\n }\n\n return updateMemberProfile;\n }()\n\n /**\n * Gets presigned url for member photo file.\n * @param {String} userHandle The user handle\n * @param {File} file The file to get its presigned url\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'getPresignedUrl',\n value: function () {\n var _ref15 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee15(userHandle, file) {\n var res, payload;\n return _regenerator2.default.wrap(function _callee15$(_context15) {\n while (1) {\n switch (_context15.prev = _context15.next) {\n case 0:\n _context15.next = 2;\n return this.private.api.postJson('/members/' + userHandle + '/photoUploadUrl', { param: { contentType: file.type } });\n\n case 2:\n res = _context15.sent;\n _context15.next = 5;\n return (0, _tc.getApiResponsePayload)(res);\n\n case 5:\n payload = _context15.sent;\n return _context15.abrupt('return', {\n preSignedURL: payload.preSignedURL,\n token: payload.token,\n file: file,\n userHandle: userHandle\n });\n\n case 7:\n case 'end':\n return _context15.stop();\n }\n }\n }, _callee15, this);\n }));\n\n function getPresignedUrl(_x22, _x23) {\n return _ref15.apply(this, arguments);\n }\n\n return getPresignedUrl;\n }()\n\n /**\n * Updates member photo.\n * @param {Object} S3Response The response from uploadFileToS3() function.\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'updateMemberPhoto',\n value: function () {\n var _ref16 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee16(S3Response) {\n var res;\n return _regenerator2.default.wrap(function _callee16$(_context16) {\n while (1) {\n switch (_context16.prev = _context16.next) {\n case 0:\n _context16.next = 2;\n return this.private.api.putJson('/members/' + S3Response.userHandle + '/photo', { param: S3Response.body });\n\n case 2:\n res = _context16.sent;\n return _context16.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context16.stop();\n }\n }\n }, _callee16, this);\n }));\n\n function updateMemberPhoto(_x24) {\n return _ref16.apply(this, arguments);\n }\n\n return updateMemberPhoto;\n }()\n\n /**\n * Uploads file to S3.\n * @param {Object} presignedUrlResponse The presigned url response from\n * getPresignedUrl() function.\n * @return {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'uploadFileToS3',\n value: function uploadFileToS3(presignedUrlResponse) {\n _lodash2.default.noop(this);\n return new _promise2.default(function (resolve, reject) {\n var xhr = new XMLHttpRequest();\n\n xhr.open('PUT', presignedUrlResponse.preSignedURL, true);\n xhr.setRequestHeader('Content-Type', presignedUrlResponse.file.type);\n\n xhr.onreadystatechange = function () {\n var status = xhr.status;\n\n if ((status >= 200 && status < 300 || status === 304) && xhr.readyState === 4) {\n resolve({\n userHandle: presignedUrlResponse.userHandle,\n body: {\n token: presignedUrlResponse.token,\n contentType: presignedUrlResponse.file.type\n }\n });\n } else if (status >= 400) {\n var err = new Error('Could not upload image to S3');\n err.status = status;\n reject(err);\n }\n };\n\n xhr.onerror = function (err) {\n _logger2.default.error('Could not upload image to S3', err);\n\n reject(err);\n };\n\n xhr.send(presignedUrlResponse.file);\n });\n }\n\n /**\n * Verify member new email\n * @param {String} handle handle Topcoder user handle\n * @param {String} emailVerifyToken The verify token of new email\n * @returns {Promise} Resolves to the api response content\n */\n\n }, {\n key: 'verifyMemberNewEmail',\n value: function () {\n var _ref17 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee17(handle, emailVerifyToken) {\n var res;\n return _regenerator2.default.wrap(function _callee17$(_context17) {\n while (1) {\n switch (_context17.prev = _context17.next) {\n case 0:\n _context17.next = 2;\n return this.private.api.get('/members/' + handle + '/verify?token=' + emailVerifyToken);\n\n case 2:\n res = _context17.sent;\n return _context17.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context17.stop();\n }\n }\n }, _callee17, this);\n }));\n\n function verifyMemberNewEmail(_x25, _x26) {\n return _ref17.apply(this, arguments);\n }\n\n return verifyMemberNewEmail;\n }()\n\n /**\n * Get members information\n * @param {Array} userIds the member ids\n */\n\n }, {\n key: 'getMembersInformation',\n value: function () {\n var _ref18 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee18(userIds) {\n var query, limit, url, res;\n return _regenerator2.default.wrap(function _callee18$(_context18) {\n while (1) {\n switch (_context18.prev = _context18.next) {\n case 0:\n query = 'query=' + encodeURI(_lodash2.default.map(userIds, function (id) {\n return 'userId:' + id;\n }).join(' OR '));\n limit = 'limit=' + userIds.length;\n url = '/members/_search?fields=userId%2Chandle&' + query + '&' + limit;\n _context18.next = 5;\n return this.private.api.get(url);\n\n case 5:\n res = _context18.sent;\n return _context18.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 7:\n case 'end':\n return _context18.stop();\n }\n }\n }, _callee18, this);\n }));\n\n function getMembersInformation(_x27) {\n return _ref18.apply(this, arguments);\n }\n\n return getMembersInformation;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return MembersService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing members service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {MembersService} Members service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new MembersService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(MembersService, 'MembersService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/members.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/members.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/members.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/members.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/members.js?"); /***/ }), @@ -1006,7 +1006,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getReviewOpportunitiesService = getReviewOpportunitiesService;\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.reviewOpportunities\"\n * @desc This module provides a service for retrieving Review Opportunities and\n * submitting applications.\n */\n\n\n/**\n * Service class.\n */\nvar ReviewOpportunitiesService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function ReviewOpportunitiesService(tokenV3) {\n (0, _classCallCheck3.default)(this, ReviewOpportunitiesService);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets a list of currently open Review Opportunities.\n * @param {Number} limit The max number to return in one call.\n * @param {Number} offset Offset, used with limit to lazy load.\n * @return {Promise} Resolves to the api response in JSON.\n */\n\n\n (0, _createClass3.default)(ReviewOpportunitiesService, [{\n key: 'getReviewOpportunities',\n value: function getReviewOpportunities(limit, offset) {\n var endpoint = '/reviewOpportunities?limit=' + limit + '&offset=' + offset;\n return this.private.api.get(endpoint).then(function (res) {\n return res.ok ? res.json() : _promise2.default.reject(new Error('Error Code: ' + res.status));\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : _promise2.default.reject(res.result.content);\n });\n }\n\n /**\n * Gets the details of the review opportunity for the corresponding challenge\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @return {Promise} Resolves to the api response in JSON.\n */\n\n }, {\n key: 'getDetails',\n value: function getDetails(challengeId) {\n var endpoint = '/reviewOpportunities/' + challengeId;\n return this.private.api.get(endpoint).then(function (res) {\n return res.json();\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : _promise2.default.reject(res.result);\n });\n }\n\n /**\n * Submits review opportunity application for the specified challenge\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {Array} roleIds List of review role IDs to apply for\n * @return {Promise} Resolves to the api response in JSON.\n */\n\n }, {\n key: 'submitApplications',\n value: function submitApplications(challengeId, roleIds) {\n var endpoint = '/reviewOpportunities/' + challengeId + '/applications?reviewApplicationRoleIds=' + roleIds.join(',');\n return this.private.api.post(endpoint, {}).then(function (res) {\n return JSON.parse(res);\n });\n }\n\n /**\n * Cancels review opportunity application for the specified challenge\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {Array} roleIds List of review role IDs to cancel applications for\n * @return {Promise} Resolves to the api response in JSON.\n */\n\n }, {\n key: 'cancelApplications',\n value: function cancelApplications(challengeId, roleIds) {\n var endpoint = '/reviewOpportunities/' + challengeId + '/applications?reviewApplicationRoleIds=' + roleIds.join(',');\n return this.private.api.delete(endpoint, {}).then(function (res) {\n return JSON.parse(res);\n });\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return ReviewOpportunitiesService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing review opportunities service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {MembersService} Members service object\n */\nfunction getReviewOpportunitiesService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new ReviewOpportunitiesService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(ReviewOpportunitiesService, 'ReviewOpportunitiesService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/reviewOpportunities.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/reviewOpportunities.js');\n reactHotLoader.register(getReviewOpportunitiesService, 'getReviewOpportunitiesService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/reviewOpportunities.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/reviewOpportunities.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/reviewOpportunities.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getReviewOpportunitiesService = getReviewOpportunitiesService;\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.reviewOpportunities\"\n * @desc This module provides a service for retrieving Review Opportunities and\n * submitting applications.\n */\n\n\n/**\n * Service class.\n */\nvar ReviewOpportunitiesService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function ReviewOpportunitiesService(tokenV3) {\n (0, _classCallCheck3.default)(this, ReviewOpportunitiesService);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets a list of currently open Review Opportunities.\n * @param {Number} limit The max number to return in one call.\n * @param {Number} offset Offset, used with limit to lazy load.\n * @return {Promise} Resolves to the api response in JSON.\n */\n\n\n (0, _createClass3.default)(ReviewOpportunitiesService, [{\n key: 'getReviewOpportunities',\n value: function getReviewOpportunities(limit, offset) {\n var endpoint = '/reviewOpportunities?limit=' + limit + '&offset=' + offset;\n return this.private.api.get(endpoint).then(function (res) {\n return res.ok ? res.json() : _promise2.default.reject(new Error('Error Code: ' + res.status));\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : _promise2.default.reject(res.result.content);\n });\n }\n\n /**\n * Gets the details of the review opportunity for the corresponding challenge\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @return {Promise} Resolves to the api response in JSON.\n */\n\n }, {\n key: 'getDetails',\n value: function getDetails(challengeId) {\n var endpoint = '/reviewOpportunities/' + challengeId;\n return this.private.api.get(endpoint).then(function (res) {\n return res.json();\n }).then(function (res) {\n return res.result.status === 200 ? res.result.content : _promise2.default.reject(res.result);\n });\n }\n\n /**\n * Submits review opportunity application for the specified challenge\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {Array} roleIds List of review role IDs to apply for\n * @return {Promise} Resolves to the api response in JSON.\n */\n\n }, {\n key: 'submitApplications',\n value: function submitApplications(challengeId, roleIds) {\n var endpoint = '/reviewOpportunities/' + challengeId + '/applications?reviewApplicationRoleIds=' + roleIds.join(',');\n return this.private.api.post(endpoint, {}).then(function (res) {\n return JSON.parse(res);\n });\n }\n\n /**\n * Cancels review opportunity application for the specified challenge\n * @param {Number} challengeId The ID of the challenge (not the opportunity id)\n * @param {Array} roleIds List of review role IDs to cancel applications for\n * @return {Promise} Resolves to the api response in JSON.\n */\n\n }, {\n key: 'cancelApplications',\n value: function cancelApplications(challengeId, roleIds) {\n var endpoint = '/reviewOpportunities/' + challengeId + '/applications?reviewApplicationRoleIds=' + roleIds.join(',');\n return this.private.api.delete(endpoint, {}).then(function (res) {\n return JSON.parse(res);\n });\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return ReviewOpportunitiesService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing review opportunities service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {MembersService} Members service object\n */\nfunction getReviewOpportunitiesService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new ReviewOpportunitiesService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(ReviewOpportunitiesService, 'ReviewOpportunitiesService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/reviewOpportunities.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/reviewOpportunities.js');\n reactHotLoader.register(getReviewOpportunitiesService, 'getReviewOpportunitiesService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/reviewOpportunities.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/reviewOpportunities.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/reviewOpportunities.js?"); /***/ }), @@ -1018,7 +1018,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.submission\"\n * @desc This module provides a service for convenient manipulation with\n * Topcoder submissions via TC API. Currently only used for MM challenges\n */\n\n/**\n * Submission service.\n */\nvar SubmissionsService = function () {\n /**\n * Creates a new SubmissionService instance.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function SubmissionsService(tokenV3) {\n (0, _classCallCheck3.default)(this, SubmissionsService);\n\n this.private = {\n apiV5: (0, _api.getApi)('V5', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Get submissions of challenge\n * @param {Object} filters\n * @param {Object} params\n * @return {Promise} Resolves to the api response.\n */\n\n\n (0, _createClass3.default)(SubmissionsService, [{\n key: 'getSubmissions',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(filters, params) {\n var query, url;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n query = (0, _extends3.default)({}, filters, params);\n url = '/submissions?' + _qs2.default.stringify(query, { encode: false });\n return _context.abrupt('return', this.private.apiV5.get(url).then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res;\n }));\n\n case 3:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getSubmissions(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return getSubmissions;\n }()\n\n /**\n * Get submission information by submission id\n * @param submissionId The submission id\n * @returns {Promise} Resolves to the api response.\n */\n\n }, {\n key: 'getSubmissionInformation',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(submissionId) {\n var url;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n url = '/submissions/' + submissionId;\n return _context2.abrupt('return', this.private.apiV5.get(url).then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res;\n }));\n\n case 2:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getSubmissionInformation(_x3) {\n return _ref2.apply(this, arguments);\n }\n\n return getSubmissionInformation;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return SubmissionsService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing submissions service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {SubmissionsService} Submissions service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || lastInstance.private.tokenV3 !== tokenV3) {\n lastInstance = new SubmissionsService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(SubmissionsService, 'SubmissionsService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/submissions.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/submissions.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/submissions.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/submissions.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/submissions.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _qs = __webpack_require__(/*! qs */ \"qs\");\n\nvar _qs2 = _interopRequireDefault(_qs);\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.submission\"\n * @desc This module provides a service for convenient manipulation with\n * Topcoder submissions via TC API. Currently only used for MM challenges\n */\n\n/**\n * Submission service.\n */\nvar SubmissionsService = function () {\n /**\n * Creates a new SubmissionService instance.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function SubmissionsService(tokenV3) {\n (0, _classCallCheck3.default)(this, SubmissionsService);\n\n this.private = {\n apiV5: (0, _api.getApi)('V5', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Get submissions of challenge\n * @param {Object} filters\n * @param {Object} params\n * @return {Promise} Resolves to the api response.\n */\n\n\n (0, _createClass3.default)(SubmissionsService, [{\n key: 'getSubmissions',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(filters, params) {\n var query, url;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n query = (0, _extends3.default)({}, filters, params);\n url = '/submissions?' + _qs2.default.stringify(query, { encode: false });\n return _context.abrupt('return', this.private.apiV5.get(url).then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res;\n }));\n\n case 3:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getSubmissions(_x, _x2) {\n return _ref.apply(this, arguments);\n }\n\n return getSubmissions;\n }()\n\n /**\n * Get submission information by submission id\n * @param submissionId The submission id\n * @returns {Promise} Resolves to the api response.\n */\n\n }, {\n key: 'getSubmissionInformation',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(submissionId) {\n var url;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n url = '/submissions/' + submissionId;\n return _context2.abrupt('return', this.private.apiV5.get(url).then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res;\n }));\n\n case 2:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getSubmissionInformation(_x3) {\n return _ref2.apply(this, arguments);\n }\n\n return getSubmissionInformation;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return SubmissionsService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing submissions service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {SubmissionsService} Submissions service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || lastInstance.private.tokenV3 !== tokenV3) {\n lastInstance = new SubmissionsService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(SubmissionsService, 'SubmissionsService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/submissions.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/submissions.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/submissions.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/submissions.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/submissions.js?"); /***/ }), @@ -1030,7 +1030,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _communities = __webpack_require__(/*! ./communities */ \"./src/services/communities.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.terms\"\n * @desc This module provides a service for convenient manipulation with\n * Topcoder challenges' terms via TC API.\n */\n\n/**\n * Service class.\n */\nvar TermsService = function () {\n /**\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n */\n function TermsService(tokenV2) {\n (0, _classCallCheck3.default)(this, TermsService);\n\n this.private = {\n api: (0, _api.getApi)('V2', tokenV2),\n tokenV2: tokenV2\n };\n }\n\n /**\n * get all terms of specified challenge\n * @param {Number|String} challengeId id of the challenge\n * @return {Promise} promise of the request result\n */\n\n\n (0, _createClass3.default)(TermsService, [{\n key: 'getChallengeTerms',\n value: function getChallengeTerms(challengeId) {\n var _this = this;\n\n if (this.private.tokenV2) {\n var registered = false;\n return this.private.api.get('/terms/' + challengeId + '?role=Submitter').then(function (res) {\n return res.json();\n }).then(function (res) {\n if (res.error) {\n if (res.error.details === 'You are already registered for this challenge.') {\n registered = true;\n }\n return _this.private.api.get('/terms/' + challengeId + '?role=Submitter&noauth=true').then(function (resp) {\n if (resp.ok) {\n return resp.json().then(function (result) {\n if (registered) {\n // eslint-disable-next-line no-param-reassign\n _lodash2.default.forEach(result.terms, function (t) {\n t.agreed = true;\n });\n }\n return result;\n });\n }\n return new Error(resp.statusText);\n });\n }\n return res;\n });\n }\n return this.private.api.get('/terms/' + challengeId + '?role=Submitter&noauth=true').then(function (resp) {\n if (resp.ok) {\n return resp.json();\n }\n throw new Error(resp.statusText);\n });\n }\n\n /**\n * get all terms for community\n *\n * NOTE: As there is no specific endpoint to get community terms by one call\n * currently we get community term ids from community service and after\n * we get community terms using term ids list one by one\n *\n * @param {String} communityId community id\n * @param {String} tokenV3 auth token V3 - we need to get community meta data\n *\n * @return {Promise} resolves to the list of community terms\n */\n\n }, {\n key: 'getCommunityTerms',\n value: function getCommunityTerms(communityId, tokenV3) {\n var _this2 = this;\n\n var communityService = (0, _communities.getService)(tokenV3);\n\n return communityService.getMetadata(communityId).then(function (meta) {\n if (meta.terms && meta.terms.length) {\n return _promise2.default.all(meta.terms.map(function (termId) {\n return _this2.getTermDetails(termId);\n })).then(function (terms) {\n return terms.map(function (term) {\n return _lodash2.default.omit(term, 'text');\n }) // don't include text as it's big and we need it for list\n ;\n });\n }\n\n return [];\n }).then(function (terms) {\n return {\n terms: terms\n };\n });\n }\n\n /**\n * Get the terms for Review Opportunities. This will ensure that the\n * provided terms have all the necessary fields by getting anything missing\n * from the terms details endpoint\n *\n * @param {Object} requiredTerms Required terms for review opportunity\n *\n * @return {Promise} resolves to the list of validated terms\n */\n\n }, {\n key: 'getReviewOpportunityTerms',\n value: function getReviewOpportunityTerms(requiredTerms) {\n var _this3 = this;\n\n var promises = requiredTerms.map(function (term) {\n // Agreed field is present, all the necessary information is present for this term, but will\n // need to verify if agreed is false as user may have agreed to terms after data was loaded\n if (term.agreed) {\n return _promise2.default.resolve(term);\n }\n // Otherwise grab new details from terms api\n return _this3.getTermDetails(term.termsOfUseId).then(function (res) {\n return _lodash2.default.pick(res, ['termsOfUseId', 'agreed', 'title']);\n });\n });\n\n return _promise2.default.all(promises).then(function (terms) {\n return { terms: terms };\n });\n }\n\n /**\n * get details of specified term\n * @param {Number|String} termId id of the term\n * @return {Promise} promise of the request result\n */\n\n }, {\n key: 'getTermDetails',\n value: function getTermDetails(termId) {\n // looks like server cache responses, to prevent it we add nocache param with always new value\n var nocache = new Date().getTime();\n return this.private.api.get('/terms/detail/' + termId + '?nocache=' + nocache).then(function (res) {\n return res.ok ? res.json() : _promise2.default.reject(res.json());\n });\n }\n\n /**\n * generate the url of DocuSign term\n * @param {Number|String} templateId id of the term's template\n * @param {String} returnUrl callback url after finishing signing\n * @return {Promise} promise of the request result\n */\n\n }, {\n key: 'getDocuSignUrl',\n value: function getDocuSignUrl(templateId, returnUrl) {\n return this.private.api.post('/terms/docusign/viewURL?templateId=' + templateId + '&returnUrl=' + returnUrl).then(function (res) {\n return res.ok ? res.json() : _promise2.default.reject(res.json());\n });\n }\n\n /**\n * Agree a term\n * @param {Number|String} termId id of the term\n * @return {Promise} promise of the request result\n */\n\n }, {\n key: 'agreeTerm',\n value: function agreeTerm(termId) {\n return this.private.api.post('/terms/' + termId + '/agree').then(function (res) {\n return res.ok ? res.json() : _promise2.default.reject(res.json());\n });\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return TermsService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing terms service.\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n * @return {TermsService} Terms service object\n */\nfunction getService(tokenV2) {\n /* Because of Topcoder backend restrictions, it is not straightforward to test\n * terms-related functionality in any other way than just providing an option\n * to run the app against mock terms service. */\n if (_topcoderReactUtils.config.MOCK_TERMS_SERVICE) {\n /* eslint-disable global-require */\n return __webpack_require__(/*! ./__mocks__/terms */ \"./src/services/__mocks__/terms.js\").getService(tokenV2);\n /* eslint-enable global-require */\n }\n if (!lastInstance || tokenV2 && lastInstance.private.tokenV2 !== tokenV2) {\n lastInstance = new TermsService(tokenV2);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(TermsService, 'TermsService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/terms.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/terms.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/terms.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/terms.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/terms.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _communities = __webpack_require__(/*! ./communities */ \"./src/services/communities.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.terms\"\n * @desc This module provides a service for convenient manipulation with\n * Topcoder challenges' terms via TC API.\n */\n\n/**\n * Service class.\n */\nvar TermsService = function () {\n /**\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n */\n function TermsService(tokenV2) {\n (0, _classCallCheck3.default)(this, TermsService);\n\n this.private = {\n api: (0, _api.getApi)('V2', tokenV2),\n tokenV2: tokenV2\n };\n }\n\n /**\n * get all terms of specified challenge\n * @param {Number|String} challengeId id of the challenge\n * @return {Promise} promise of the request result\n */\n\n\n (0, _createClass3.default)(TermsService, [{\n key: 'getChallengeTerms',\n value: function getChallengeTerms(challengeId) {\n var _this = this;\n\n if (this.private.tokenV2) {\n var registered = false;\n return this.private.api.get('/terms/' + challengeId + '?role=Submitter').then(function (res) {\n return res.json();\n }).then(function (res) {\n if (res.error) {\n if (res.error.details === 'You are already registered for this challenge.') {\n registered = true;\n }\n return _this.private.api.get('/terms/' + challengeId + '?role=Submitter&noauth=true').then(function (resp) {\n if (resp.ok) {\n return resp.json().then(function (result) {\n if (registered) {\n // eslint-disable-next-line no-param-reassign\n _lodash2.default.forEach(result.terms, function (t) {\n t.agreed = true;\n });\n }\n return result;\n });\n }\n return new Error(resp.statusText);\n });\n }\n return res;\n });\n }\n return this.private.api.get('/terms/' + challengeId + '?role=Submitter&noauth=true').then(function (resp) {\n if (resp.ok) {\n return resp.json();\n }\n throw new Error(resp.statusText);\n });\n }\n\n /**\n * get all terms for community\n *\n * NOTE: As there is no specific endpoint to get community terms by one call\n * currently we get community term ids from community service and after\n * we get community terms using term ids list one by one\n *\n * @param {String} communityId community id\n * @param {String} tokenV3 auth token V3 - we need to get community meta data\n *\n * @return {Promise} resolves to the list of community terms\n */\n\n }, {\n key: 'getCommunityTerms',\n value: function getCommunityTerms(communityId, tokenV3) {\n var _this2 = this;\n\n var communityService = (0, _communities.getService)(tokenV3);\n\n return communityService.getMetadata(communityId).then(function (meta) {\n if (meta.terms && meta.terms.length) {\n return _promise2.default.all(meta.terms.map(function (termId) {\n return _this2.getTermDetails(termId);\n })).then(function (terms) {\n return terms.map(function (term) {\n return _lodash2.default.omit(term, 'text');\n }) // don't include text as it's big and we need it for list\n ;\n });\n }\n\n return [];\n }).then(function (terms) {\n return {\n terms: terms\n };\n });\n }\n\n /**\n * Get the terms for Review Opportunities. This will ensure that the\n * provided terms have all the necessary fields by getting anything missing\n * from the terms details endpoint\n *\n * @param {Object} requiredTerms Required terms for review opportunity\n *\n * @return {Promise} resolves to the list of validated terms\n */\n\n }, {\n key: 'getReviewOpportunityTerms',\n value: function getReviewOpportunityTerms(requiredTerms) {\n var _this3 = this;\n\n var promises = requiredTerms.map(function (term) {\n // Agreed field is present, all the necessary information is present for this term, but will\n // need to verify if agreed is false as user may have agreed to terms after data was loaded\n if (term.agreed) {\n return _promise2.default.resolve(term);\n }\n // Otherwise grab new details from terms api\n return _this3.getTermDetails(term.termsOfUseId).then(function (res) {\n return _lodash2.default.pick(res, ['termsOfUseId', 'agreed', 'title']);\n });\n });\n\n return _promise2.default.all(promises).then(function (terms) {\n return { terms: terms };\n });\n }\n\n /**\n * get details of specified term\n * @param {Number|String} termId id of the term\n * @return {Promise} promise of the request result\n */\n\n }, {\n key: 'getTermDetails',\n value: function getTermDetails(termId) {\n // looks like server cache responses, to prevent it we add nocache param with always new value\n var nocache = new Date().getTime();\n return this.private.api.get('/terms/detail/' + termId + '?nocache=' + nocache).then(function (res) {\n return res.ok ? res.json() : _promise2.default.reject(res.json());\n });\n }\n\n /**\n * generate the url of DocuSign term\n * @param {Number|String} templateId id of the term's template\n * @param {String} returnUrl callback url after finishing signing\n * @return {Promise} promise of the request result\n */\n\n }, {\n key: 'getDocuSignUrl',\n value: function getDocuSignUrl(templateId, returnUrl) {\n return this.private.api.post('/terms/docusign/viewURL?templateId=' + templateId + '&returnUrl=' + returnUrl).then(function (res) {\n return res.ok ? res.json() : _promise2.default.reject(res.json());\n });\n }\n\n /**\n * Agree a term\n * @param {Number|String} termId id of the term\n * @return {Promise} promise of the request result\n */\n\n }, {\n key: 'agreeTerm',\n value: function agreeTerm(termId) {\n return this.private.api.post('/terms/' + termId + '/agree').then(function (res) {\n return res.ok ? res.json() : _promise2.default.reject(res.json());\n });\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return TermsService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing terms service.\n * @param {String} tokenV2 Optional. Auth token for Topcoder API v2.\n * @return {TermsService} Terms service object\n */\nfunction getService(tokenV2) {\n /* Because of Topcoder backend restrictions, it is not straightforward to test\n * terms-related functionality in any other way than just providing an option\n * to run the app against mock terms service. */\n if (_topcoderReactUtils.config.MOCK_TERMS_SERVICE) {\n /* eslint-disable global-require */\n return __webpack_require__(/*! ./__mocks__/terms */ \"./src/services/__mocks__/terms.js\").getService(tokenV2);\n /* eslint-enable global-require */\n }\n if (!lastInstance || tokenV2 && lastInstance.private.tokenV2 !== tokenV2) {\n lastInstance = new TermsService(tokenV2);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(TermsService, 'TermsService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/terms.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/terms.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/terms.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/terms.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/terms.js?"); /***/ }), @@ -1042,7 +1042,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getUserSettingsService = getUserSettingsService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nvar _api2 = _interopRequireDefault(_api);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.user-settings\"\n * @desc User Settings service. Corresponding part of the backend is\n * implemented as a separate Heroku App, which is set up only for prod.\n * Currently, we use it to save user-defined filters in the challenge search.\n */\n\n/**\n * @static\n * @member default\n * @desc Default export is {@link module:services.user-settings~UserSettings}\n * class.\n */\n\n/**\n * Service class.\n */\nvar UserSettings = function () {\n /**\n * @param {String} tokenV2\n */\n function UserSettings(tokenV2) {\n (0, _classCallCheck3.default)(this, UserSettings);\n\n this.private = {\n api: new _api2.default(_topcoderReactUtils.config.URL.USER_SETTINGS, tokenV2),\n token: tokenV2\n };\n }\n\n /**\n * Removes the filter specified by ID.\n * @param {String} id\n * @return {Promise}\n */\n\n\n (0, _createClass3.default)(UserSettings, [{\n key: 'deleteFilter',\n value: function deleteFilter(id) {\n return this.private.api.delete('/saved-searches/' + id).then(function (res) {\n return res.ok ? null : new Error(res.statusText);\n });\n }\n\n /**\n * Gets saved filters.\n * @return {Promise}\n */\n\n }, {\n key: 'getFilters',\n value: function getFilters() {\n return this.private.api.get('/saved-searches').then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res.map(function (item) {\n /* NOTE: Previous version of the challenge listing saved filter in\n * different format (like an URL query string). This try/catch block\n * effectively differentiate between the old (unsupported) and new\n * format of the filters. */\n var filter = void 0;\n try {\n filter = JSON.parse(item.filter);\n } catch (e) {\n _lodash2.default.noop();\n }\n return (0, _extends3.default)({}, item, { filter: filter });\n });\n }).then(function (res) {\n return res.filter(function (item) {\n return item.filter;\n });\n });\n }\n\n /**\n * Saves filter.\n * @param {String} name\n * @param {Object} filter\n */\n\n }, {\n key: 'saveFilter',\n value: function saveFilter(name, filter) {\n return this.private.api.postJson('/saved-searches', {\n filter: (0, _stringify2.default)(filter),\n name: name,\n type: 'develop'\n }).then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n });\n }\n\n /**\n * Updates filter.\n * @param {String} id\n * @param {String} name\n * @param {Object} filter\n * @return {Promise}\n */\n\n }, {\n key: 'updateFilter',\n value: function updateFilter(id, name, filter) {\n return this.private.api.putJson('/saved-searches/' + id, {\n filter: (0, _stringify2.default)(filter),\n name: name,\n type: 'develop'\n }).then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n });\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return UserSettings;\n}();\n\nvar lastUserSettings = null;\n\n/**\n * Returns a new or existing instance of UserSettings service.\n * @param {String} tokenV2 Topcoder auth token v2.\n * @return {UserSettings}\n */\nfunction getUserSettingsService(tokenV2) {\n if (!lastUserSettings || lastUserSettings.private.token !== tokenV2) {\n lastUserSettings = new UserSettings(tokenV2);\n }\n return lastUserSettings;\n}\n\nvar _default = UserSettings;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(UserSettings, 'UserSettings', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user-settings.js');\n reactHotLoader.register(lastUserSettings, 'lastUserSettings', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user-settings.js');\n reactHotLoader.register(getUserSettingsService, 'getUserSettingsService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user-settings.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user-settings.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/user-settings.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getUserSettingsService = getUserSettingsService;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nvar _api2 = _interopRequireDefault(_api);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.user-settings\"\n * @desc User Settings service. Corresponding part of the backend is\n * implemented as a separate Heroku App, which is set up only for prod.\n * Currently, we use it to save user-defined filters in the challenge search.\n */\n\n/**\n * @static\n * @member default\n * @desc Default export is {@link module:services.user-settings~UserSettings}\n * class.\n */\n\n/**\n * Service class.\n */\nvar UserSettings = function () {\n /**\n * @param {String} tokenV2\n */\n function UserSettings(tokenV2) {\n (0, _classCallCheck3.default)(this, UserSettings);\n\n this.private = {\n api: new _api2.default(_topcoderReactUtils.config.URL.USER_SETTINGS, tokenV2),\n token: tokenV2\n };\n }\n\n /**\n * Removes the filter specified by ID.\n * @param {String} id\n * @return {Promise}\n */\n\n\n (0, _createClass3.default)(UserSettings, [{\n key: 'deleteFilter',\n value: function deleteFilter(id) {\n return this.private.api.delete('/saved-searches/' + id).then(function (res) {\n return res.ok ? null : new Error(res.statusText);\n });\n }\n\n /**\n * Gets saved filters.\n * @return {Promise}\n */\n\n }, {\n key: 'getFilters',\n value: function getFilters() {\n return this.private.api.get('/saved-searches').then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n }).then(function (res) {\n return res.map(function (item) {\n /* NOTE: Previous version of the challenge listing saved filter in\n * different format (like an URL query string). This try/catch block\n * effectively differentiate between the old (unsupported) and new\n * format of the filters. */\n var filter = void 0;\n try {\n filter = JSON.parse(item.filter);\n } catch (e) {\n _lodash2.default.noop();\n }\n return (0, _extends3.default)({}, item, { filter: filter });\n });\n }).then(function (res) {\n return res.filter(function (item) {\n return item.filter;\n });\n });\n }\n\n /**\n * Saves filter.\n * @param {String} name\n * @param {Object} filter\n */\n\n }, {\n key: 'saveFilter',\n value: function saveFilter(name, filter) {\n return this.private.api.postJson('/saved-searches', {\n filter: (0, _stringify2.default)(filter),\n name: name,\n type: 'develop'\n }).then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n });\n }\n\n /**\n * Updates filter.\n * @param {String} id\n * @param {String} name\n * @param {Object} filter\n * @return {Promise}\n */\n\n }, {\n key: 'updateFilter',\n value: function updateFilter(id, name, filter) {\n return this.private.api.putJson('/saved-searches/' + id, {\n filter: (0, _stringify2.default)(filter),\n name: name,\n type: 'develop'\n }).then(function (res) {\n return res.ok ? res.json() : new Error(res.statusText);\n });\n }\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return UserSettings;\n}();\n\nvar lastUserSettings = null;\n\n/**\n * Returns a new or existing instance of UserSettings service.\n * @param {String} tokenV2 Topcoder auth token v2.\n * @return {UserSettings}\n */\nfunction getUserSettingsService(tokenV2) {\n if (!lastUserSettings || lastUserSettings.private.token !== tokenV2) {\n lastUserSettings = new UserSettings(tokenV2);\n }\n return lastUserSettings;\n}\n\nvar _default = UserSettings;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(UserSettings, 'UserSettings', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user-settings.js');\n reactHotLoader.register(lastUserSettings, 'lastUserSettings', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user-settings.js');\n reactHotLoader.register(getUserSettingsService, 'getUserSettingsService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user-settings.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user-settings.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/user-settings.js?"); /***/ }), @@ -1054,7 +1054,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _toCapitalCase = __webpack_require__(/*! to-capital-case */ \"to-capital-case\");\n\nvar _toCapitalCase2 = _interopRequireDefault(_toCapitalCase);\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.userTraits\"\n * @desc This module provides a service for user traits crud\n * via API V3.\n */\n\n\n/**\n * Service class.\n */\nvar UserTraitsService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function UserTraitsService(tokenV3) {\n (0, _classCallCheck3.default)(this, UserTraitsService);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Get member's all traits.\n * @param {String} handle User handle.\n * @return {Promise} Resolves to the member traits.\n */\n\n\n (0, _createClass3.default)(UserTraitsService, [{\n key: 'getAllUserTraits',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/members/' + handle.toLowerCase() + '/traits');\n\n case 2:\n res = _context.sent;\n return _context.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getAllUserTraits(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getAllUserTraits;\n }()\n\n /**\n * Add member's trait.\n * @param {String} handle User handle.\n * @param {String} traitId Trait Id.\n * @param {Array} data Trait data.\n * @return {Promise} Resolves to the member traits.\n */\n\n }, {\n key: 'addUserTrait',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(handle, traitId, data) {\n var body, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n body = {\n param: [{\n traitId: traitId,\n categoryName: (0, _toCapitalCase2.default)(traitId),\n traits: {\n data: data\n }\n }]\n };\n _context2.next = 3;\n return this.private.api.postJson('/members/' + handle + '/traits', body);\n\n case 3:\n res = _context2.sent;\n return _context2.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function addUserTrait(_x2, _x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return addUserTrait;\n }()\n\n /**\n * Update member's trait.\n * @param {String} handle User handle.\n * @param {String} traitId Trait Id.\n * @param {Array} data Trait data.\n * @return {Promise} Resolves to the member traits.\n */\n\n }, {\n key: 'updateUserTrait',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(handle, traitId, data) {\n var body, res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n body = {\n param: [{\n traitId: traitId,\n categoryName: (0, _toCapitalCase2.default)(traitId),\n traits: {\n data: data\n }\n }]\n };\n _context3.next = 3;\n return this.private.api.putJson('/members/' + handle + '/traits', body);\n\n case 3:\n res = _context3.sent;\n return _context3.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function updateUserTrait(_x5, _x6, _x7) {\n return _ref3.apply(this, arguments);\n }\n\n return updateUserTrait;\n }()\n\n /**\n * Delete member's trait.\n * @param {String} handle User handle.\n * @param {String} traitId Trait Id.\n * @return {Promise} Resolves to the member traits.\n */\n\n }, {\n key: 'deleteUserTrait',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(handle, traitId) {\n var res;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.private.api.delete('/members/' + handle + '/traits?traitIds=' + traitId);\n\n case 2:\n res = _context4.sent;\n return _context4.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function deleteUserTrait(_x8, _x9) {\n return _ref4.apply(this, arguments);\n }\n\n return deleteUserTrait;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return UserTraitsService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing user trait service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {UserTraitsService} userTraits service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new UserTraitsService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(UserTraitsService, 'UserTraitsService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user-traits.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user-traits.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user-traits.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user-traits.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/user-traits.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nexports.getService = getService;\n\nvar _toCapitalCase = __webpack_require__(/*! to-capital-case */ \"to-capital-case\");\n\nvar _toCapitalCase2 = _interopRequireDefault(_toCapitalCase);\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.userTraits\"\n * @desc This module provides a service for user traits crud\n * via API V3.\n */\n\n\n/**\n * Service class.\n */\nvar UserTraitsService = function () {\n /**\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n */\n function UserTraitsService(tokenV3) {\n (0, _classCallCheck3.default)(this, UserTraitsService);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n tokenV3: tokenV3\n };\n }\n\n /**\n * Get member's all traits.\n * @param {String} handle User handle.\n * @return {Promise} Resolves to the member traits.\n */\n\n\n (0, _createClass3.default)(UserTraitsService, [{\n key: 'getAllUserTraits',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(handle) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.api.get('/members/' + handle.toLowerCase() + '/traits');\n\n case 2:\n res = _context.sent;\n return _context.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getAllUserTraits(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getAllUserTraits;\n }()\n\n /**\n * Add member's trait.\n * @param {String} handle User handle.\n * @param {String} traitId Trait Id.\n * @param {Array} data Trait data.\n * @return {Promise} Resolves to the member traits.\n */\n\n }, {\n key: 'addUserTrait',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(handle, traitId, data) {\n var body, res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n body = {\n param: [{\n traitId: traitId,\n categoryName: (0, _toCapitalCase2.default)(traitId),\n traits: {\n data: data\n }\n }]\n };\n _context2.next = 3;\n return this.private.api.postJson('/members/' + handle + '/traits', body);\n\n case 3:\n res = _context2.sent;\n return _context2.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function addUserTrait(_x2, _x3, _x4) {\n return _ref2.apply(this, arguments);\n }\n\n return addUserTrait;\n }()\n\n /**\n * Update member's trait.\n * @param {String} handle User handle.\n * @param {String} traitId Trait Id.\n * @param {Array} data Trait data.\n * @return {Promise} Resolves to the member traits.\n */\n\n }, {\n key: 'updateUserTrait',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(handle, traitId, data) {\n var body, res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n body = {\n param: [{\n traitId: traitId,\n categoryName: (0, _toCapitalCase2.default)(traitId),\n traits: {\n data: data\n }\n }]\n };\n _context3.next = 3;\n return this.private.api.putJson('/members/' + handle + '/traits', body);\n\n case 3:\n res = _context3.sent;\n return _context3.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function updateUserTrait(_x5, _x6, _x7) {\n return _ref3.apply(this, arguments);\n }\n\n return updateUserTrait;\n }()\n\n /**\n * Delete member's trait.\n * @param {String} handle User handle.\n * @param {String} traitId Trait Id.\n * @return {Promise} Resolves to the member traits.\n */\n\n }, {\n key: 'deleteUserTrait',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(handle, traitId) {\n var res;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.next = 2;\n return this.private.api.delete('/members/' + handle + '/traits?traitIds=' + traitId);\n\n case 2:\n res = _context4.sent;\n return _context4.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function deleteUserTrait(_x8, _x9) {\n return _ref4.apply(this, arguments);\n }\n\n return deleteUserTrait;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return UserTraitsService;\n}();\n\nvar lastInstance = null;\n/**\n * Returns a new or existing user trait service.\n * @param {String} tokenV3 Optional. Auth token for Topcoder API v3.\n * @return {UserTraitsService} userTraits service object\n */\nfunction getService(tokenV3) {\n if (!lastInstance || tokenV3 !== lastInstance.private.tokenV3) {\n lastInstance = new UserTraitsService(tokenV3);\n }\n return lastInstance;\n}\n\n/* Using default export would be confusing in this case. */\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(UserTraitsService, 'UserTraitsService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user-traits.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user-traits.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user-traits.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user-traits.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/user-traits.js?"); /***/ }), @@ -1066,7 +1066,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nexports.getService = getService;\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.user\"\n * @desc The User service provides functionality related to Topcoder user\n * accounts.\n */\n\n\nvar auth0 = void 0;\n\n/**\n * Returns a new, or cached auth0 instance.\n * @return {Object} Auth0 object.\n */\nfunction getAuth0() {\n if (!auth0 && _topcoderReactUtils.isomorphy.isClientSide()) {\n var Auth0 = __webpack_require__(/*! auth0-js */ \"./node_modules/auth0-js/index.js\"); /* eslint-disable-line global-require */\n auth0 = new Auth0({\n domain: _topcoderReactUtils.config.AUTH0.DOMAIN,\n clientID: _topcoderReactUtils.config.AUTH0.CLIENT_ID,\n callbackOnLocationHash: true,\n sso: false\n });\n }\n return auth0;\n}\n\n/**\n * Gets social user data.\n * @param {Object} profile The user social profile\n * @param {*} accessToken The access token\n * @returns {Object} Social user data\n */\nfunction getSocialUserData(profile, accessToken) {\n var socialProvider = profile.identities[0].connection;\n var firstName = '';\n var lastName = '';\n var handle = '';\n var email = profile.email || '';\n\n var socialUserId = profile.user_id.substring(profile.user_id.lastIndexOf('|') + 1);\n var splitName = void 0;\n\n if (socialProvider === 'google-oauth2') {\n firstName = profile.given_name;\n lastName = profile.family_name;\n handle = profile.nickname;\n } else if (socialProvider === 'facebook') {\n firstName = profile.given_name;\n lastName = profile.family_name;\n handle = firstName + '.' + lastName;\n } else if (socialProvider === 'twitter') {\n splitName = profile.name.split(' ');\n var _splitName = splitName;\n\n var _splitName2 = (0, _slicedToArray3.default)(_splitName, 1);\n\n firstName = _splitName2[0];\n\n if (splitName.length > 1) {\n var _splitName3 = splitName;\n\n var _splitName4 = (0, _slicedToArray3.default)(_splitName3, 2);\n\n lastName = _splitName4[1];\n }\n handle = profile.screen_name;\n } else if (socialProvider === 'github') {\n splitName = profile.name.split(' ');\n var _splitName5 = splitName;\n\n var _splitName6 = (0, _slicedToArray3.default)(_splitName5, 1);\n\n firstName = _splitName6[0];\n\n if (splitName.length > 1) {\n var _splitName7 = splitName;\n\n var _splitName8 = (0, _slicedToArray3.default)(_splitName7, 2);\n\n lastName = _splitName8[1];\n }\n handle = profile.nickname;\n } else if (socialProvider === 'bitbucket') {\n firstName = profile.first_name;\n lastName = profile.last_name;\n handle = profile.username;\n } else if (socialProvider === 'stackoverflow') {\n firstName = profile.first_name;\n lastName = profile.last_name;\n handle = socialUserId;\n } else if (socialProvider === 'dribbble') {\n firstName = profile.first_name;\n lastName = profile.last_name;\n handle = socialUserId;\n }\n\n var token = accessToken;\n var tokenSecret = null;\n if (profile.identities[0].access_token) {\n token = profile.identities[0].access_token;\n }\n if (profile.identities[0].access_token_secret) {\n tokenSecret = profile.identities[0].access_token_secret;\n }\n return {\n socialUserId: socialUserId,\n username: handle,\n firstname: firstName,\n lastname: lastName,\n email: email,\n socialProfile: profile,\n socialProvider: socialProvider,\n accessToken: token,\n accessTokenSecret: tokenSecret\n };\n}\n\n/**\n * Service class.\n */\n\nvar User = function () {\n /**\n * Creates a new User service.\n * @param {String} tokenV3 Topcoder auth tokenV3.\n * @param {String} tokenV2 TC auth token v2.\n */\n function User(tokenV3, tokenV2) {\n (0, _classCallCheck3.default)(this, User);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n apiV2: (0, _api.getApi)('V2', tokenV2),\n tokenV2: tokenV2,\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets user achievements. Does not need auth.\n * @param {String} username\n * @return {Object}\n */\n\n\n (0, _createClass3.default)(User, [{\n key: 'getAchievements',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(username) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.apiV2.get('/users/' + username);\n\n case 2:\n res = _context.sent;\n\n if (res.ok) {\n _context.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n _context.next = 7;\n return res.json();\n\n case 7:\n _context.t0 = _context.sent.Achievements;\n\n if (_context.t0) {\n _context.next = 10;\n break;\n }\n\n _context.t0 = [];\n\n case 10:\n return _context.abrupt('return', _context.t0);\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getAchievements(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getAchievements;\n }()\n\n /**\n * Gets public user info. Does not need auth.\n * @param {String} username\n * @return {Object}\n */\n\n }, {\n key: 'getUserPublic',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(username) {\n var res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.private.apiV2.get('/users/' + username);\n\n case 2:\n res = _context2.sent;\n\n if (res.ok) {\n _context2.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n return _context2.abrupt('return', res.json() || null);\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getUserPublic(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getUserPublic;\n }()\n\n /**\n * Gets public user info from v3 API. Does not need auth.\n * @param {String} username\n * @return {Object}\n */\n\n }, {\n key: 'getUserPublicV3',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(username) {\n var res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.private.api.get('/members/' + username);\n\n case 2:\n res = _context3.sent;\n return _context3.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getUserPublicV3(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getUserPublicV3;\n }()\n\n /**\n * Gets user data object for the specified username.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {String} username\n * @return {Promise} Resolves to the user data object.\n */\n\n }, {\n key: 'getUser',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(username) {\n var url, res;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n url = '/users?filter=handle%3D' + username;\n _context4.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context4.sent;\n _context4.next = 6;\n return (0, _tc.getApiResponsePayload)(res);\n\n case 6:\n return _context4.abrupt('return', _context4.sent[0]);\n\n case 7:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getUser(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return getUser;\n }()\n\n /**\n * Gets email preferences.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Number} userId The TopCoder user id\n * @returns {Promise} Resolves to the email preferences result\n */\n\n }, {\n key: 'getEmailPreferences',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(userId) {\n var url, res, x;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n url = '/users/' + userId + '/preferences/email';\n _context5.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context5.sent;\n _context5.next = 6;\n return res.json();\n\n case 6:\n x = _context5.sent.result;\n return _context5.abrupt('return', x.content);\n\n case 8:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getEmailPreferences(_x5) {\n return _ref5.apply(this, arguments);\n }\n\n return getEmailPreferences;\n }()\n\n /**\n * Saves email preferences.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Object} user The TopCoder user\n * @param {Object} preferences The email preferences\n * @returns {Promise} Resolves to the email preferences result\n */\n\n }, {\n key: 'saveEmailPreferences',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(_ref7, preferences) {\n var firstName = _ref7.firstName,\n lastName = _ref7.lastName,\n userId = _ref7.userId;\n var settings, url, res;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n settings = {\n firstName: firstName,\n lastName: lastName,\n subscriptions: {}\n };\n\n\n if (!preferences) {\n settings.subscriptions.TOPCODER_NL_GEN = true;\n } else {\n settings.subscriptions = preferences;\n }\n url = '/users/' + userId + '/preferences/email';\n _context6.next = 5;\n return this.private.api.putJson(url, { param: settings });\n\n case 5:\n res = _context6.sent;\n return _context6.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 7:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function saveEmailPreferences(_x6, _x7) {\n return _ref6.apply(this, arguments);\n }\n\n return saveEmailPreferences;\n }()\n\n /**\n * Gets credential for the specified user id.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Number} userId The user id\n * @return {Promise} Resolves to the linked accounts array.\n */\n\n }, {\n key: 'getCredential',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(userId) {\n var url, res;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n url = '/users/' + userId + '?fields=credential';\n _context7.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context7.sent;\n return _context7.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getCredential(_x8) {\n return _ref8.apply(this, arguments);\n }\n\n return getCredential;\n }()\n\n /**\n * Updates user password.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Number} userId The user id\n * @param {String} newPassword The new password\n * @param {String} oldPassword The old password\n * @return {Promise} Resolves to the update result.\n */\n\n }, {\n key: 'updatePassword',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(userId, newPassword, oldPassword) {\n var credential, url, res;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n credential = {\n password: newPassword,\n currentPassword: oldPassword\n };\n url = '/users/' + userId;\n _context8.next = 4;\n return this.private.api.patchJson(url, { param: { credential: credential } });\n\n case 4:\n res = _context8.sent;\n return _context8.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 6:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function updatePassword(_x9, _x10, _x11) {\n return _ref9.apply(this, arguments);\n }\n\n return updatePassword;\n }()\n\n /**\n * Gets linked accounts for the specified user id.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Number} userId The user id\n * @return {Promise} Resolves to the linked accounts array.\n */\n\n }, {\n key: 'getLinkedAccounts',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(userId) {\n var url, res;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n url = '/users/' + userId + '?fields=profiles';\n _context9.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context9.sent;\n return _context9.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function getLinkedAccounts(_x12) {\n return _ref10.apply(this, arguments);\n }\n\n return getLinkedAccounts;\n }()\n\n /**\n * Unlinks external account.\n * @param {Number} userId The TopCoder user id\n * @param {String} provider The external account service provider\n * @returns {Promise} Resolves to the unlink result\n */\n\n }, {\n key: 'unlinkExternalAccount',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(userId, provider) {\n var url, res;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n url = '/users/' + userId + '/profiles/' + provider;\n _context10.next = 3;\n return this.private.api.delete(url);\n\n case 3:\n res = _context10.sent;\n return _context10.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function unlinkExternalAccount(_x13, _x14) {\n return _ref11.apply(this, arguments);\n }\n\n return unlinkExternalAccount;\n }()\n\n /**\n * Links external account.\n * @param {Number} userId The TopCoder user id\n * @param {String} provider The external account service provider\n * @param {String} callbackUrl Optional. The callback url\n * @returns {Promise} Resolves to the linked account result\n */\n\n }, {\n key: 'linkExternalAccount',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(userId, provider, callbackUrl) {\n var _this = this;\n\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n return _context11.abrupt('return', new _promise2.default(function (resolve, reject) {\n getAuth0().signin({\n popup: true,\n connection: provider,\n scope: 'openid profile offline_access',\n state: callbackUrl\n }, function (authError, profile, idToken, accessToken) {\n if (authError) {\n _logger2.default.error('Error signing in - onSocialLoginFailure', authError);\n reject(authError);\n return;\n }\n\n var socialData = getSocialUserData(profile, accessToken);\n\n var postData = {\n userId: socialData.socialUserId,\n name: socialData.username,\n email: socialData.email,\n emailVerified: false,\n providerType: socialData.socialProvider,\n context: {\n handle: socialData.username,\n accessToken: socialData.accessToken,\n auth0UserId: profile.user_id\n }\n };\n if (socialData.accessTokenSecret) {\n postData.context.accessTokenSecret = socialData.accessTokenSecret;\n }\n _logger2.default.debug('link API postdata: ' + (0, _stringify2.default)(postData));\n _this.private.api.postJson('/users/' + userId + '/profiles', { param: postData }).then(function (resp) {\n return (0, _tc.getApiResponsePayload)(resp).then(function (result) {\n _logger2.default.debug('Succesfully linked account: ' + (0, _stringify2.default)(result));\n resolve(postData);\n });\n }).catch(function (err) {\n _logger2.default.error('Error linking account', err);\n reject(err);\n });\n });\n }));\n\n case 1:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function linkExternalAccount(_x15, _x16, _x17) {\n return _ref12.apply(this, arguments);\n }\n\n return linkExternalAccount;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return User;\n}();\n\nvar lastInstance = null;\n\n/**\n * Returns a new or existing User service for the specified tokenV3.\n * @param {String} tokenV3 Optional. Topcoder auth token v3.\n * @param {String} tokenV2 Optional. TC auth token v2.\n * @return {Api} API v3 service object.\n */\nfunction getService(tokenV3, tokenV2) {\n if (!lastInstance || lastInstance.private.tokenV2 !== tokenV2 || lastInstance.private.tokenV3 !== tokenV3) {\n lastInstance = new User(tokenV3, tokenV2);\n }\n return lastInstance;\n}\n\n/**\n * @static\n * @member default\n * @desc Default export is {@link module:services.user~User} class.\n */\nvar _default = User;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(auth0, 'auth0', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(getAuth0, 'getAuth0', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(getSocialUserData, 'getSocialUserData', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(User, 'User', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(getService, 'getService', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/services/user.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/user.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\nvar _classCallCheck2 = __webpack_require__(/*! babel-runtime/helpers/classCallCheck */ \"babel-runtime/helpers/classCallCheck\");\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = __webpack_require__(/*! babel-runtime/helpers/createClass */ \"babel-runtime/helpers/createClass\");\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _slicedToArray2 = __webpack_require__(/*! babel-runtime/helpers/slicedToArray */ \"babel-runtime/helpers/slicedToArray\");\n\nvar _slicedToArray3 = _interopRequireDefault(_slicedToArray2);\n\nexports.getService = getService;\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _logger = __webpack_require__(/*! ../utils/logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _tc = __webpack_require__(/*! ../utils/tc */ \"./src/utils/tc.js\");\n\nvar _api = __webpack_require__(/*! ./api */ \"./src/services/api.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"services.user\"\n * @desc The User service provides functionality related to Topcoder user\n * accounts.\n */\n\n\nvar auth0 = void 0;\n\n/**\n * Returns a new, or cached auth0 instance.\n * @return {Object} Auth0 object.\n */\nfunction getAuth0() {\n if (!auth0 && _topcoderReactUtils.isomorphy.isClientSide()) {\n var Auth0 = __webpack_require__(/*! auth0-js */ \"./node_modules/auth0-js/index.js\"); /* eslint-disable-line global-require */\n auth0 = new Auth0({\n domain: _topcoderReactUtils.config.AUTH0.DOMAIN,\n clientID: _topcoderReactUtils.config.AUTH0.CLIENT_ID,\n callbackOnLocationHash: true,\n sso: false\n });\n }\n return auth0;\n}\n\n/**\n * Gets social user data.\n * @param {Object} profile The user social profile\n * @param {*} accessToken The access token\n * @returns {Object} Social user data\n */\nfunction getSocialUserData(profile, accessToken) {\n var socialProvider = profile.identities[0].connection;\n var firstName = '';\n var lastName = '';\n var handle = '';\n var email = profile.email || '';\n\n var socialUserId = profile.user_id.substring(profile.user_id.lastIndexOf('|') + 1);\n var splitName = void 0;\n\n if (socialProvider === 'google-oauth2') {\n firstName = profile.given_name;\n lastName = profile.family_name;\n handle = profile.nickname;\n } else if (socialProvider === 'facebook') {\n firstName = profile.given_name;\n lastName = profile.family_name;\n handle = firstName + '.' + lastName;\n } else if (socialProvider === 'twitter') {\n splitName = profile.name.split(' ');\n var _splitName = splitName;\n\n var _splitName2 = (0, _slicedToArray3.default)(_splitName, 1);\n\n firstName = _splitName2[0];\n\n if (splitName.length > 1) {\n var _splitName3 = splitName;\n\n var _splitName4 = (0, _slicedToArray3.default)(_splitName3, 2);\n\n lastName = _splitName4[1];\n }\n handle = profile.screen_name;\n } else if (socialProvider === 'github') {\n splitName = profile.name.split(' ');\n var _splitName5 = splitName;\n\n var _splitName6 = (0, _slicedToArray3.default)(_splitName5, 1);\n\n firstName = _splitName6[0];\n\n if (splitName.length > 1) {\n var _splitName7 = splitName;\n\n var _splitName8 = (0, _slicedToArray3.default)(_splitName7, 2);\n\n lastName = _splitName8[1];\n }\n handle = profile.nickname;\n } else if (socialProvider === 'bitbucket') {\n firstName = profile.first_name;\n lastName = profile.last_name;\n handle = profile.username;\n } else if (socialProvider === 'stackoverflow') {\n firstName = profile.first_name;\n lastName = profile.last_name;\n handle = socialUserId;\n } else if (socialProvider === 'dribbble') {\n firstName = profile.first_name;\n lastName = profile.last_name;\n handle = socialUserId;\n }\n\n var token = accessToken;\n var tokenSecret = null;\n if (profile.identities[0].access_token) {\n token = profile.identities[0].access_token;\n }\n if (profile.identities[0].access_token_secret) {\n tokenSecret = profile.identities[0].access_token_secret;\n }\n return {\n socialUserId: socialUserId,\n username: handle,\n firstname: firstName,\n lastname: lastName,\n email: email,\n socialProfile: profile,\n socialProvider: socialProvider,\n accessToken: token,\n accessTokenSecret: tokenSecret\n };\n}\n\n/**\n * Service class.\n */\n\nvar User = function () {\n /**\n * Creates a new User service.\n * @param {String} tokenV3 Topcoder auth tokenV3.\n * @param {String} tokenV2 TC auth token v2.\n */\n function User(tokenV3, tokenV2) {\n (0, _classCallCheck3.default)(this, User);\n\n this.private = {\n api: (0, _api.getApi)('V3', tokenV3),\n apiV2: (0, _api.getApi)('V2', tokenV2),\n tokenV2: tokenV2,\n tokenV3: tokenV3\n };\n }\n\n /**\n * Gets user achievements. Does not need auth.\n * @param {String} username\n * @return {Object}\n */\n\n\n (0, _createClass3.default)(User, [{\n key: 'getAchievements',\n value: function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(username) {\n var res;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return this.private.apiV2.get('/users/' + username);\n\n case 2:\n res = _context.sent;\n\n if (res.ok) {\n _context.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n _context.next = 7;\n return res.json();\n\n case 7:\n _context.t0 = _context.sent.Achievements;\n\n if (_context.t0) {\n _context.next = 10;\n break;\n }\n\n _context.t0 = [];\n\n case 10:\n return _context.abrupt('return', _context.t0);\n\n case 11:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n function getAchievements(_x) {\n return _ref.apply(this, arguments);\n }\n\n return getAchievements;\n }()\n\n /**\n * Gets public user info. Does not need auth.\n * @param {String} username\n * @return {Object}\n */\n\n }, {\n key: 'getUserPublic',\n value: function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(username) {\n var res;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return this.private.apiV2.get('/users/' + username);\n\n case 2:\n res = _context2.sent;\n\n if (res.ok) {\n _context2.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n return _context2.abrupt('return', res.json() || null);\n\n case 6:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function getUserPublic(_x2) {\n return _ref2.apply(this, arguments);\n }\n\n return getUserPublic;\n }()\n\n /**\n * Gets public user info from v3 API. Does not need auth.\n * @param {String} username\n * @return {Object}\n */\n\n }, {\n key: 'getUserPublicV3',\n value: function () {\n var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(username) {\n var res;\n return _regenerator2.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return this.private.api.get('/members/' + username);\n\n case 2:\n res = _context3.sent;\n return _context3.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 4:\n case 'end':\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function getUserPublicV3(_x3) {\n return _ref3.apply(this, arguments);\n }\n\n return getUserPublicV3;\n }()\n\n /**\n * Gets user data object for the specified username.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {String} username\n * @return {Promise} Resolves to the user data object.\n */\n\n }, {\n key: 'getUser',\n value: function () {\n var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(username) {\n var url, res;\n return _regenerator2.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n url = '/users?filter=handle%3D' + username;\n _context4.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context4.sent;\n _context4.next = 6;\n return (0, _tc.getApiResponsePayload)(res);\n\n case 6:\n return _context4.abrupt('return', _context4.sent[0]);\n\n case 7:\n case 'end':\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function getUser(_x4) {\n return _ref4.apply(this, arguments);\n }\n\n return getUser;\n }()\n\n /**\n * Gets email preferences.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Number} userId The TopCoder user id\n * @returns {Promise} Resolves to the email preferences result\n */\n\n }, {\n key: 'getEmailPreferences',\n value: function () {\n var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(userId) {\n var url, res, x;\n return _regenerator2.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n url = '/users/' + userId + '/preferences/email';\n _context5.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context5.sent;\n _context5.next = 6;\n return res.json();\n\n case 6:\n x = _context5.sent.result;\n return _context5.abrupt('return', x.content);\n\n case 8:\n case 'end':\n return _context5.stop();\n }\n }\n }, _callee5, this);\n }));\n\n function getEmailPreferences(_x5) {\n return _ref5.apply(this, arguments);\n }\n\n return getEmailPreferences;\n }()\n\n /**\n * Saves email preferences.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Object} user The TopCoder user\n * @param {Object} preferences The email preferences\n * @returns {Promise} Resolves to the email preferences result\n */\n\n }, {\n key: 'saveEmailPreferences',\n value: function () {\n var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(_ref7, preferences) {\n var firstName = _ref7.firstName,\n lastName = _ref7.lastName,\n userId = _ref7.userId;\n var settings, url, res;\n return _regenerator2.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n settings = {\n firstName: firstName,\n lastName: lastName,\n subscriptions: {}\n };\n\n\n if (!preferences) {\n settings.subscriptions.TOPCODER_NL_GEN = true;\n } else {\n settings.subscriptions = preferences;\n }\n url = '/users/' + userId + '/preferences/email';\n _context6.next = 5;\n return this.private.api.putJson(url, { param: settings });\n\n case 5:\n res = _context6.sent;\n return _context6.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 7:\n case 'end':\n return _context6.stop();\n }\n }\n }, _callee6, this);\n }));\n\n function saveEmailPreferences(_x6, _x7) {\n return _ref6.apply(this, arguments);\n }\n\n return saveEmailPreferences;\n }()\n\n /**\n * Gets credential for the specified user id.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Number} userId The user id\n * @return {Promise} Resolves to the linked accounts array.\n */\n\n }, {\n key: 'getCredential',\n value: function () {\n var _ref8 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee7(userId) {\n var url, res;\n return _regenerator2.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n url = '/users/' + userId + '?fields=credential';\n _context7.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context7.sent;\n return _context7.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context7.stop();\n }\n }\n }, _callee7, this);\n }));\n\n function getCredential(_x8) {\n return _ref8.apply(this, arguments);\n }\n\n return getCredential;\n }()\n\n /**\n * Updates user password.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Number} userId The user id\n * @param {String} newPassword The new password\n * @param {String} oldPassword The old password\n * @return {Promise} Resolves to the update result.\n */\n\n }, {\n key: 'updatePassword',\n value: function () {\n var _ref9 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee8(userId, newPassword, oldPassword) {\n var credential, url, res;\n return _regenerator2.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n credential = {\n password: newPassword,\n currentPassword: oldPassword\n };\n url = '/users/' + userId;\n _context8.next = 4;\n return this.private.api.patchJson(url, { param: { credential: credential } });\n\n case 4:\n res = _context8.sent;\n return _context8.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 6:\n case 'end':\n return _context8.stop();\n }\n }\n }, _callee8, this);\n }));\n\n function updatePassword(_x9, _x10, _x11) {\n return _ref9.apply(this, arguments);\n }\n\n return updatePassword;\n }()\n\n /**\n * Gets linked accounts for the specified user id.\n *\n * NOTE: Only admins are authorized to use the underlying endpoint.\n *\n * @param {Number} userId The user id\n * @return {Promise} Resolves to the linked accounts array.\n */\n\n }, {\n key: 'getLinkedAccounts',\n value: function () {\n var _ref10 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee9(userId) {\n var url, res;\n return _regenerator2.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n url = '/users/' + userId + '?fields=profiles';\n _context9.next = 3;\n return this.private.api.get(url);\n\n case 3:\n res = _context9.sent;\n return _context9.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context9.stop();\n }\n }\n }, _callee9, this);\n }));\n\n function getLinkedAccounts(_x12) {\n return _ref10.apply(this, arguments);\n }\n\n return getLinkedAccounts;\n }()\n\n /**\n * Unlinks external account.\n * @param {Number} userId The TopCoder user id\n * @param {String} provider The external account service provider\n * @returns {Promise} Resolves to the unlink result\n */\n\n }, {\n key: 'unlinkExternalAccount',\n value: function () {\n var _ref11 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee10(userId, provider) {\n var url, res;\n return _regenerator2.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n url = '/users/' + userId + '/profiles/' + provider;\n _context10.next = 3;\n return this.private.api.delete(url);\n\n case 3:\n res = _context10.sent;\n return _context10.abrupt('return', (0, _tc.getApiResponsePayload)(res));\n\n case 5:\n case 'end':\n return _context10.stop();\n }\n }\n }, _callee10, this);\n }));\n\n function unlinkExternalAccount(_x13, _x14) {\n return _ref11.apply(this, arguments);\n }\n\n return unlinkExternalAccount;\n }()\n\n /**\n * Links external account.\n * @param {Number} userId The TopCoder user id\n * @param {String} provider The external account service provider\n * @param {String} callbackUrl Optional. The callback url\n * @returns {Promise} Resolves to the linked account result\n */\n\n }, {\n key: 'linkExternalAccount',\n value: function () {\n var _ref12 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee11(userId, provider, callbackUrl) {\n var _this = this;\n\n return _regenerator2.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n return _context11.abrupt('return', new _promise2.default(function (resolve, reject) {\n getAuth0().signin({\n popup: true,\n connection: provider,\n scope: 'openid profile offline_access',\n state: callbackUrl\n }, function (authError, profile, idToken, accessToken) {\n if (authError) {\n _logger2.default.error('Error signing in - onSocialLoginFailure', authError);\n reject(authError);\n return;\n }\n\n var socialData = getSocialUserData(profile, accessToken);\n\n var postData = {\n userId: socialData.socialUserId,\n name: socialData.username,\n email: socialData.email,\n emailVerified: false,\n providerType: socialData.socialProvider,\n context: {\n handle: socialData.username,\n accessToken: socialData.accessToken,\n auth0UserId: profile.user_id\n }\n };\n if (socialData.accessTokenSecret) {\n postData.context.accessTokenSecret = socialData.accessTokenSecret;\n }\n _logger2.default.debug('link API postdata: ' + (0, _stringify2.default)(postData));\n _this.private.api.postJson('/users/' + userId + '/profiles', { param: postData }).then(function (resp) {\n return (0, _tc.getApiResponsePayload)(resp).then(function (result) {\n _logger2.default.debug('Succesfully linked account: ' + (0, _stringify2.default)(result));\n resolve(postData);\n });\n }).catch(function (err) {\n _logger2.default.error('Error linking account', err);\n reject(err);\n });\n });\n }));\n\n case 1:\n case 'end':\n return _context11.stop();\n }\n }\n }, _callee11, this);\n }));\n\n function linkExternalAccount(_x15, _x16, _x17) {\n return _ref12.apply(this, arguments);\n }\n\n return linkExternalAccount;\n }()\n }, {\n key: '__reactstandin__regenerateByEval',\n // @ts-ignore\n value: function __reactstandin__regenerateByEval(key, code) {\n // @ts-ignore\n this[key] = eval(code);\n }\n }]);\n return User;\n}();\n\nvar lastInstance = null;\n\n/**\n * Returns a new or existing User service for the specified tokenV3.\n * @param {String} tokenV3 Optional. Topcoder auth token v3.\n * @param {String} tokenV2 Optional. TC auth token v2.\n * @return {Api} API v3 service object.\n */\nfunction getService(tokenV3, tokenV2) {\n if (!lastInstance || lastInstance.private.tokenV2 !== tokenV2 || lastInstance.private.tokenV3 !== tokenV3) {\n lastInstance = new User(tokenV3, tokenV2);\n }\n return lastInstance;\n}\n\n/**\n * @static\n * @member default\n * @desc Default export is {@link module:services.user~User} class.\n */\nvar _default = User;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(auth0, 'auth0', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(getAuth0, 'getAuth0', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(getSocialUserData, 'getSocialUserData', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(User, 'User', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(lastInstance, 'lastInstance', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(getService, 'getService', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/services/user.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/services/user.js?"); /***/ }), @@ -1078,7 +1078,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _set = __webpack_require__(/*! babel-runtime/core-js/set */ \"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.addTrack = addTrack;\nexports.getFilterFunction = getFilterFunction;\nexports.getReviewOpportunitiesFilterFunction = getReviewOpportunitiesFilterFunction;\nexports.combine = combine;\nexports.mapToBackend = mapToBackend;\nexports.removeTrack = removeTrack;\nexports.setEndDate = setEndDate;\nexports.setReviewOpportunityType = setReviewOpportunityType;\nexports.setStartDate = setStartDate;\nexports.setSubtracks = setSubtracks;\nexports.setTags = setTags;\nexports.setText = setText;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _moment = __webpack_require__(/*! moment */ \"moment\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _tc = __webpack_require__(/*! ../tc */ \"./src/utils/tc.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"challenge.filter\"\n *\n * @desc\n * Universal challenge filter. Must be used in all places where we need filter\n * or fetch challenges. This way we keep all related logic in the same place,\n * which simplifies maintenance and modifications of the code.\n *\n * The state of challenge filter is a plain JS object, containing only plain\n * data fields. It allows to avoid any problems with its storage inside Redux\n * store; with its serialization into / deserialization from a string. Each\n * field of the state describes a single rule for filtering the challenges.\n * The filter allows only those challenges that match all defined rules.\n * Undefined, null fields are ignored.\n *\n * The following fields are supported:\n *\n * endDate {Number|String} - Permits only those challenges with submission\n * deadline before this date.\n *\n * groupIds {Array} - Permits only the challenges belonging to at least one\n * of the groups which IDs are presented as keys in this object.\n *\n * or {Object[]} - All other filter fields applied to the challenge with AND\n * logic, i.e. a challenge must satisfy each specified filter rule to match the\n * filter as whole. In some cases we want to have OR logic between filter rules,\n * and this array allows to achieve it: each object in this array is treated as\n * an additional filter (these object may have all the same fields as the root\n * filter state object), to be tested with OR logic.\n *\n * registrationOpen {Boolean} - Permits only the challenges with open or closed\n * registration.\n *\n * startDate {Number|String} - Permits only those challenges started after this\n * date.\n *\n * status {Array} - Permits only the challenges with status matching one of\n * the keys of this object.\n *\n * started {Boolean} - Matches only the challenges with start date in past.\n * It turns out that status ACTIVE also includes upcoming activated challenges,\n * thus we need this additional filter.\n *\n * subtracks {Array} - Permits only the challenges belonging to at least one\n * of the competition subtracks presented as keys of this object.\n *\n * tags {Array} - Permits only the challenges that have at least one of the\n * tags within their platform and technology tags (keywords).\n *\n * text {String} - Free-text string which will be matched against challenge\n * name, its platform and technology tags. If not found anywhere, the challenge\n * is filtered out. Case-insensitive.\n *\n * tracks {Object} - Permits only the challenges belonging to at least one of\n * the competition tracks presented as keys of this object.\n *\n * upcoming {Boolean} - Permits only upcoming challenges.\n *\n * users {Array} - Permits only the challenges where the specified (by handles)\n * users are participating.\n */\n\n/**\n * Here are many similiar filerBy..(challenge, state) functions. Each of them\n * checks whether the given challenge fulfills the corresponding filtering rule\n * from the filter state object, and returns true or false depending on it.\n */\n\nfunction filterByEndDate(challenge, state) {\n if (!state.endDate) return true;\n return (0, _moment2.default)(state.endDate).isAfter(challenge.registrationStartDate);\n}\n\nfunction filterByGroupIds(challenge, state) {\n if (!state.groupIds) return true;\n return state.groupIds.some(function (id) {\n return challenge.groups[id];\n });\n}\n\nfunction filterByRegistrationOpen(challenge, state) {\n if (_lodash2.default.isUndefined(state.registrationOpen)) return true;\n var isRegOpen = function isRegOpen() {\n if (challenge.registrationOpen) {\n return challenge.registrationOpen === 'Yes';\n }\n if (challenge.subTrack === 'MARATHON_MATCH') {\n return challenge.status !== 'PAST';\n }\n var registrationPhase = challenge.allPhases.find(function (item) {\n return item.phaseType === 'Registration';\n });\n if (!registrationPhase || registrationPhase.phaseStatus !== 'Open') {\n return false;\n }\n if (challenge.track === 'DESIGN') {\n var checkpointPhase = challenge.allPhases.find(function (item) {\n return item.phaseType === 'Checkpoint Submission';\n });\n return !checkpointPhase || checkpointPhase.phaseStatus !== 'Closed';\n }\n return true;\n };\n return isRegOpen() === state.registrationOpen;\n}\n\n/**\n * Filter function for Review Opportunity Type, will be used internally in filter.js\n * @param {Object} opp Review Opportunity object\n * @param {Object} state Filter state\n * @return {Boolean} True if opp satifies the filter\n */\nfunction filterByReviewOpportunityType(opp, state) {\n if (!state.reviewOpportunityType) return true;\n return opp.type === state.reviewOpportunityType;\n}\n\nfunction filterByStartDate(challenge, state) {\n if (!state.startDate) return true;\n return (0, _moment2.default)(state.startDate).isBefore(challenge.submissionEndDate);\n}\n\nfunction filterByStarted(challenge, state) {\n if (_lodash2.default.isUndefined(state.started)) return true;\n return (0, _moment2.default)(challenge.registrationStartDate).isBefore(Date.now());\n}\n\nfunction filterByStatus(challenge, state) {\n if (!state.status) return true;\n return state.status.includes(challenge.status);\n}\n\nfunction filterBySubtracks(challenge, state) {\n if (!state.subtracks) return true;\n\n /* TODO: Although this is taken from the current code in prod,\n * it probably does not work in all cases. It should be double-checked,\n * why challenge subtracks in challenge objects are different from those\n * return from the API as the list of possible subtracks. */\n var filterSubtracks = state.subtracks.map(function (item) {\n return item.toLowerCase().replace(/[_ ]/g, '');\n });\n var challengeSubtrack = challenge.subTrack.toLowerCase().replace(/[_ ]/g, '');\n return filterSubtracks.includes(challengeSubtrack);\n}\n\nfunction filterByTags(challenge, state) {\n if (!state.tags) return true;\n var platforms = challenge.platforms,\n technologies = challenge.technologies;\n\n var str = (platforms + ' ' + technologies).toLowerCase();\n return state.tags.some(function (tag) {\n return str.includes(tag.toLowerCase());\n });\n}\n\nfunction filterByText(challenge, state) {\n if (!state.text) return true;\n var str = (challenge.name + ' ' + challenge.platforms + ' ' + challenge.technologies).toLowerCase();\n return str.includes(state.text.toLowerCase());\n}\n\nfunction filterByTrack(challenge, state) {\n if (!state.tracks) return true;\n\n /* Development challenges having Data Science tech tag, still should be\n * included into data science track. */\n if (state.tracks[_tc.COMPETITION_TRACKS.DATA_SCIENCE] && _lodash2.default.includes(challenge.technologies, 'Data Science')) {\n return true;\n }\n\n return _lodash2.default.keys(state.tracks).some(function (track) {\n return challenge.communities.has(track);\n });\n}\n\nfunction filterByUpcoming(challenge, state) {\n if (_lodash2.default.isUndefined(state.upcoming)) return true;\n return (0, _moment2.default)().isBefore(challenge.registrationStartDate);\n}\n\nfunction filterByUsers(challenge, state) {\n if (!state.users) return true;\n return state.users.find(function (user) {\n return challenge.users[user];\n });\n}\n\n/**\n * Returns clone of the state with the specified competition track added.\n * @param {Object} state\n * @param {String} track\n * @return {Object} Resulting state.\n */\nfunction addTrack(state, track) {\n /* When state has no tracks field all tracks are allowed, thus no need to\n * touch the object. */\n if (!state.tracks) return state;\n\n var res = _lodash2.default.clone(state);\n res.tracks = _lodash2.default.clone(res.tracks);\n res.tracks[track] = true;\n\n /* Selecting all tracks is the same as having no tracks field. To keep the\n * state more simple at any time, we remove tracks field in such case. */\n if (!_lodash2.default.values(_tc.COMPETITION_TRACKS).some(function (item) {\n return !res.tracks[item];\n })) {\n delete res.tracks;\n }\n\n return res;\n}\n\n/**\n * Generates filter function for the state.\n * @param {Object} state\n * @return {Function}\n */\nfunction getFilterFunction(state) {\n return function (challenge) {\n var test = filterByStatus(challenge, state) && filterByTrack(challenge, state) && filterByUpcoming(challenge, state) && filterByGroupIds(challenge, state) && filterByText(challenge, state) && filterByTags(challenge, state) && filterBySubtracks(challenge, state) && filterByUsers(challenge, state) && filterByEndDate(challenge, state) && filterByStartDate(challenge, state) && filterByStarted(challenge, state) && filterByRegistrationOpen(challenge, state);\n if (!test && state.or) {\n var pos = 0;\n while (!test && pos < state.or.length) {\n test = getFilterFunction(state.or[pos])(challenge);\n pos += 1;\n }\n }\n return test;\n };\n}\n\n/**\n * Generates a Review Opportunities filter function for the provided filter state.\n * @param {Object} state\n * @return {Function}\n */\nfunction getReviewOpportunitiesFilterFunction(state) {\n return function (opp) {\n // Review Opportunity objects have a challenge field which\n // is largely compatible with many of the existing filter functions\n // especially after a few normalization tweaks\n var challenge = (0, _extends3.default)({}, opp.challenge, {\n // This allows filterByText to search for Review Types and Challenge Titles\n name: opp.challenge.title + ' ' + _tc.REVIEW_OPPORTUNITY_TYPES[opp.type],\n registrationStartDate: opp.startDate, // startDate of Review, not Challenge\n subTrack: opp.challenge.subTrack || '', // Sometimes back-end doesn't return this field\n submissionEndDate: opp.startDate, // Currently uses startDate for both date comparisons\n communities: new _set2.default([// Used to filter by Track, and communities at a future date\n opp.challenge.track.toLowerCase()])\n });\n\n return filterByTrack(challenge, state) && filterByText(challenge, state) && filterByTags(challenge, state) && filterBySubtracks(challenge, state) && filterByEndDate(challenge, state) && filterByStartDate(challenge, state) && filterByReviewOpportunityType(opp, state);\n };\n}\n\n/* ************************************************************************** */\n/* Below is a group of functions that allow to combine multiple challenge\n * filters together. If you are not adding a new filter functionality, just\n * look for the exported combine(..) function.\n *\n * All other helper functions in this section take two filter state objects as\n * arguments, and combine some of the filter rules, merging the resulting one\n * into the first filter state object.\n */\n\n/* NOTE: Current implementation ignores plenty of rules when combining filters.\n * It is fine for the only current use case: we use combine just before calling\n * to mapToBackend(..) function, to map several frontend filters to the\n * matching backend one. The way mapToBackend(..) works, this ignoring of\n * some rules is not a big deal (resulting backend filter will be not that\n * specific, as it probably could be, but due to the current api limitations\n * we cannot be too specific anyway). If you are going to use this for anything\n * else - thing twice what are you doing? If you need it for filtering, it is\n * just a lot easier to filter by each frontend filter in turns, rather than\n * combine them into a single filter. */\n\n/* This ESLint rule is disabled for combineXXX(..) functions, as they are\n * intended to be used only internally, with a newly constructed object\n * passed in as the first argument (i.e. we take care that there is no\n * side-effects to mutate it within this module, and these functions\n * are not exported outside of the module). */\n/* eslint-disable no-param-reassign */\n\nfunction combineArrayRules(a, b, ruleName) {\n var or = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (a[ruleName] && b[ruleName]) {\n if (or) a[ruleName] = _lodash2.default.uniq(a[ruleName].concat(b[ruleName]));else a[ruleName] = _lodash2.default.intersection(a[ruleName], b[ruleName]);\n } else if (b[ruleName]) a[ruleName] = b[ruleName];\n}\n\nfunction combineEndDate(a, b) {\n if (a.endDate && b.endDate) {\n a.endDate = _moment2.default.min(a.endDate, b.endDate).format();\n } else if (b.endDate) a.endDate = b.endDate;\n}\n\nfunction combineStartDate(a, b) {\n if (a.startDate && b.startDate) {\n a.startDate = _moment2.default.max(a.startDate, b.startDate).format();\n } else if (b.startDate) a.startDate = b.startDate;\n}\n\nfunction combineTracks(a, b) {\n if (a.tracks && b.tracks) {\n _lodash2.default.forIn(a.tracks, function (value, key) {\n if (!b.tracks[key]) delete a.tracks[key];\n });\n } else if (b.tracks) a.tracks = b.tracks;\n}\n\n/* eslint-enable no-param-reassign */\n\n/**\n * Combines multiple filter state objects together. Resulting state describes\n * the filter, which matches only those challenges that satisfy each of the\n * filters passed in as arguments.\n *\n * The main intended use of this function is to combine multiple frontend\n * challenge filters into a single one, that can be mapped into the\n * corresponding backend filter by mapToBackend(..) function.\n *\n * @param {Object} filters Input filter state objects to combine.\n * @return {Object}\n */\nfunction combine() {\n var res = {};\n\n for (var _len = arguments.length, filters = Array(_len), _key = 0; _key < _len; _key++) {\n filters[_key] = arguments[_key];\n }\n\n filters.forEach(function (filter) {\n combineEndDate(res, filter);\n combineArrayRules(res, filter, 'groupIds');\n /* TODO: The registrationOpen rule is just ignored for now. */\n combineStartDate(res, filter);\n combineArrayRules(res, filter, 'or', true);\n combineArrayRules(res, filter, 'status');\n combineArrayRules(res, filter, 'subtracks');\n combineArrayRules(res, filter, 'tags');\n /* TODO: The text rule is just ignored for now. */\n combineTracks(res, filter);\n /* TODO: The upcoming rule is just ignored for now. */\n /* TODO: The users rule is just ignored for now. */\n });\n return res;\n}\n\n/* ************************************************************************** */\n/* Below is a group of function that allow to map a frontend filter into the\n * corresponding backend (api) one. If you are not adding a new filter\n * functionality, just look for the exported mapToBackend(..) function. */\n\n/**\n * Maps the frontend challenge filter into the corresponding backend (api) one.\n * As there is no 1:1 match between the frontend and backend challenge filters,\n * the resulting backend filter is always equal or broader than the given\n * frontend one; i.e. any challenge that satisfies the original frontend filter\n * will pass the backend one, though some of the challenges that pass the\n * backend filter may fail the frontend one.\n *\n * It is assumed that this function will help us to load challenges from the\n * backend more specifically, though it does not prevent as from the need\n * always perform the final filtering at the frontend side.\n *\n * @param {Object} filter\n * @return {Object}\n */\nfunction mapToBackend(filter) {\n if (filter.or) return {};\n\n var res = {};\n if (filter.groupIds) res.groupIds = filter.groupIds.join(',');\n\n /* NOTE: Right now the frontend challenge filter by tag works different,\n * it looks for matches in the challenge name OR in the techs / platforms. */\n // if (filter.tags) res.technologies = filter.tags.join(',');\n\n return res;\n}\n\n/**\n * Returns clone of the state with the specified competition track removed.\n * @param {Object} state\n * @param {String} track\n * @return {Object} Resulting state.\n */\nfunction removeTrack(state, track) {\n var res = _lodash2.default.clone(state);\n if (res.tracks) res.tracks = _lodash2.default.clone(res.tracks);else {\n res.tracks = {};\n _lodash2.default.forIn(_tc.COMPETITION_TRACKS, function (item) {\n res.tracks[item] = true;\n });\n }\n delete res.tracks[track];\n return res;\n}\n\n/**\n * Clone the state and sets the end date.\n * @param {Object} state\n * @param {String} date\n * @return {Object}\n */\nfunction setEndDate(state, date) {\n if (date) return (0, _extends3.default)({}, state, { endDate: date });\n if (!state.endDate) return state;\n var res = _lodash2.default.clone(state);\n delete res.endDate;\n return res;\n}\n\n/**\n * Clones the state and sets the review opportunity type.\n * @param {Object} state\n * @param {Array} reviewOpportunityType Possible values found in utils/tc REVIEW_OPPORTUNITY_TYPES\n * @return {Object}\n */\nfunction setReviewOpportunityType(state, reviewOpportunityType) {\n if (reviewOpportunityType) return (0, _extends3.default)({}, state, { reviewOpportunityType: reviewOpportunityType });\n if (!state.reviewOpportunityType) return state;\n var res = _lodash2.default.clone(state);\n delete res.reviewOpportunityType;\n return res;\n}\n\n/**\n * Clones the state and sets the start date.\n * @param {Object} state\n * @param {String} date ISO date string.\n * @return {Object}\n */\nfunction setStartDate(state, date) {\n if (date) return (0, _extends3.default)({}, state, { startDate: date });\n if (!state.startDate) return state;\n var res = _lodash2.default.clone(state);\n delete res.startDate;\n return res;\n}\n\n/**\n * Clones the state and sets the subtracks.\n * @param {Object} state\n * @param {Array} subtracks\n * @return {Object}\n */\nfunction setSubtracks(state, subtracks) {\n if (subtracks && subtracks.length) return (0, _extends3.default)({}, state, { subtracks: subtracks });\n if (!state.subtracks) return state;\n var res = _lodash2.default.clone(state);\n delete res.subtracks;\n return res;\n}\n\n/**\n * Clones the state and sets the tags.\n * @param {Object} state\n * @param {Array} tags String array.\n * @return {Object}\n */\nfunction setTags(state, tags) {\n if (tags && tags.length) return (0, _extends3.default)({}, state, { tags: tags });\n if (!state.tags) return state;\n var res = _lodash2.default.clone(state);\n delete res.tags;\n return res;\n}\n\n/**\n * Clones fitler state and sets the free-text string for the filtering by\n * challenge name and tags. To clear the string set it to anything evaluating\n * to falst (empty string, null, undefined).\n * @param {Object} state\n * @param {String} text\n * @return {Object} Resulting string.\n */\nfunction setText(state, text) {\n if (!text && !state.text) return state;\n var res = _lodash2.default.clone(state);\n if (text) res.text = text;else delete res.text;\n return res;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(filterByEndDate, 'filterByEndDate', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByGroupIds, 'filterByGroupIds', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByRegistrationOpen, 'filterByRegistrationOpen', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByReviewOpportunityType, 'filterByReviewOpportunityType', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByStartDate, 'filterByStartDate', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByStarted, 'filterByStarted', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByStatus, 'filterByStatus', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterBySubtracks, 'filterBySubtracks', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByTags, 'filterByTags', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByText, 'filterByText', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByTrack, 'filterByTrack', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByUpcoming, 'filterByUpcoming', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByUsers, 'filterByUsers', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(addTrack, 'addTrack', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(getFilterFunction, 'getFilterFunction', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(getReviewOpportunitiesFilterFunction, 'getReviewOpportunitiesFilterFunction', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combineArrayRules, 'combineArrayRules', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combineEndDate, 'combineEndDate', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combineStartDate, 'combineStartDate', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combineTracks, 'combineTracks', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combine, 'combine', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(mapToBackend, 'mapToBackend', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(removeTrack, 'removeTrack', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setEndDate, 'setEndDate', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setReviewOpportunityType, 'setReviewOpportunityType', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setStartDate, 'setStartDate', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setSubtracks, 'setSubtracks', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setTags, 'setTags', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setText, 'setText', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/challenge/filter.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/challenge/filter.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _set = __webpack_require__(/*! babel-runtime/core-js/set */ \"babel-runtime/core-js/set\");\n\nvar _set2 = _interopRequireDefault(_set);\n\nvar _extends2 = __webpack_require__(/*! babel-runtime/helpers/extends */ \"babel-runtime/helpers/extends\");\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nexports.addTrack = addTrack;\nexports.getFilterFunction = getFilterFunction;\nexports.getReviewOpportunitiesFilterFunction = getReviewOpportunitiesFilterFunction;\nexports.combine = combine;\nexports.mapToBackend = mapToBackend;\nexports.removeTrack = removeTrack;\nexports.setEndDate = setEndDate;\nexports.setReviewOpportunityType = setReviewOpportunityType;\nexports.setStartDate = setStartDate;\nexports.setSubtracks = setSubtracks;\nexports.setTags = setTags;\nexports.setText = setText;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _moment = __webpack_require__(/*! moment */ \"moment\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _tc = __webpack_require__(/*! ../tc */ \"./src/utils/tc.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module \"challenge.filter\"\n *\n * @desc\n * Universal challenge filter. Must be used in all places where we need filter\n * or fetch challenges. This way we keep all related logic in the same place,\n * which simplifies maintenance and modifications of the code.\n *\n * The state of challenge filter is a plain JS object, containing only plain\n * data fields. It allows to avoid any problems with its storage inside Redux\n * store; with its serialization into / deserialization from a string. Each\n * field of the state describes a single rule for filtering the challenges.\n * The filter allows only those challenges that match all defined rules.\n * Undefined, null fields are ignored.\n *\n * The following fields are supported:\n *\n * endDate {Number|String} - Permits only those challenges with submission\n * deadline before this date.\n *\n * groupIds {Array} - Permits only the challenges belonging to at least one\n * of the groups which IDs are presented as keys in this object.\n *\n * or {Object[]} - All other filter fields applied to the challenge with AND\n * logic, i.e. a challenge must satisfy each specified filter rule to match the\n * filter as whole. In some cases we want to have OR logic between filter rules,\n * and this array allows to achieve it: each object in this array is treated as\n * an additional filter (these object may have all the same fields as the root\n * filter state object), to be tested with OR logic.\n *\n * registrationOpen {Boolean} - Permits only the challenges with open or closed\n * registration.\n *\n * startDate {Number|String} - Permits only those challenges started after this\n * date.\n *\n * status {Array} - Permits only the challenges with status matching one of\n * the keys of this object.\n *\n * started {Boolean} - Matches only the challenges with start date in past.\n * It turns out that status ACTIVE also includes upcoming activated challenges,\n * thus we need this additional filter.\n *\n * subtracks {Array} - Permits only the challenges belonging to at least one\n * of the competition subtracks presented as keys of this object.\n *\n * tags {Array} - Permits only the challenges that have at least one of the\n * tags within their platform and technology tags (keywords).\n *\n * text {String} - Free-text string which will be matched against challenge\n * name, its platform and technology tags. If not found anywhere, the challenge\n * is filtered out. Case-insensitive.\n *\n * tracks {Object} - Permits only the challenges belonging to at least one of\n * the competition tracks presented as keys of this object.\n *\n * upcoming {Boolean} - Permits only upcoming challenges.\n *\n * users {Array} - Permits only the challenges where the specified (by handles)\n * users are participating.\n */\n\n/**\n * Here are many similiar filerBy..(challenge, state) functions. Each of them\n * checks whether the given challenge fulfills the corresponding filtering rule\n * from the filter state object, and returns true or false depending on it.\n */\n\nfunction filterByEndDate(challenge, state) {\n if (!state.endDate) return true;\n return (0, _moment2.default)(state.endDate).isAfter(challenge.registrationStartDate);\n}\n\nfunction filterByGroupIds(challenge, state) {\n if (!state.groupIds) return true;\n return state.groupIds.some(function (id) {\n return challenge.groups[id];\n });\n}\n\nfunction filterByRegistrationOpen(challenge, state) {\n if (_lodash2.default.isUndefined(state.registrationOpen)) return true;\n var isRegOpen = function isRegOpen() {\n if (challenge.registrationOpen) {\n return challenge.registrationOpen === 'Yes';\n }\n if (challenge.subTrack === 'MARATHON_MATCH') {\n return challenge.status !== 'PAST';\n }\n var registrationPhase = challenge.allPhases.find(function (item) {\n return item.phaseType === 'Registration';\n });\n if (!registrationPhase || registrationPhase.phaseStatus !== 'Open') {\n return false;\n }\n if (challenge.track === 'DESIGN') {\n var checkpointPhase = challenge.allPhases.find(function (item) {\n return item.phaseType === 'Checkpoint Submission';\n });\n return !checkpointPhase || checkpointPhase.phaseStatus !== 'Closed';\n }\n return true;\n };\n return isRegOpen() === state.registrationOpen;\n}\n\n/**\n * Filter function for Review Opportunity Type, will be used internally in filter.js\n * @param {Object} opp Review Opportunity object\n * @param {Object} state Filter state\n * @return {Boolean} True if opp satifies the filter\n */\nfunction filterByReviewOpportunityType(opp, state) {\n if (!state.reviewOpportunityType) return true;\n return opp.type === state.reviewOpportunityType;\n}\n\nfunction filterByStartDate(challenge, state) {\n if (!state.startDate) return true;\n return (0, _moment2.default)(state.startDate).isBefore(challenge.submissionEndDate);\n}\n\nfunction filterByStarted(challenge, state) {\n if (_lodash2.default.isUndefined(state.started)) return true;\n return (0, _moment2.default)(challenge.registrationStartDate).isBefore(Date.now());\n}\n\nfunction filterByStatus(challenge, state) {\n if (!state.status) return true;\n return state.status.includes(challenge.status);\n}\n\nfunction filterBySubtracks(challenge, state) {\n if (!state.subtracks) return true;\n\n /* TODO: Although this is taken from the current code in prod,\n * it probably does not work in all cases. It should be double-checked,\n * why challenge subtracks in challenge objects are different from those\n * return from the API as the list of possible subtracks. */\n var filterSubtracks = state.subtracks.map(function (item) {\n return item.toLowerCase().replace(/[_ ]/g, '');\n });\n var challengeSubtrack = challenge.subTrack.toLowerCase().replace(/[_ ]/g, '');\n return filterSubtracks.includes(challengeSubtrack);\n}\n\nfunction filterByTags(challenge, state) {\n if (!state.tags) return true;\n var platforms = challenge.platforms,\n technologies = challenge.technologies;\n\n var str = (platforms + ' ' + technologies).toLowerCase();\n return state.tags.some(function (tag) {\n return str.includes(tag.toLowerCase());\n });\n}\n\nfunction filterByText(challenge, state) {\n if (!state.text) return true;\n var str = (challenge.name + ' ' + challenge.platforms + ' ' + challenge.technologies).toLowerCase();\n return str.includes(state.text.toLowerCase());\n}\n\nfunction filterByTrack(challenge, state) {\n if (!state.tracks) return true;\n\n /* Development challenges having Data Science tech tag, still should be\n * included into data science track. */\n if (state.tracks[_tc.COMPETITION_TRACKS.DATA_SCIENCE] && _lodash2.default.includes(challenge.technologies, 'Data Science')) {\n return true;\n }\n\n return _lodash2.default.keys(state.tracks).some(function (track) {\n return challenge.communities.has(track);\n });\n}\n\nfunction filterByUpcoming(challenge, state) {\n if (_lodash2.default.isUndefined(state.upcoming)) return true;\n return (0, _moment2.default)().isBefore(challenge.registrationStartDate);\n}\n\nfunction filterByUsers(challenge, state) {\n if (!state.users) return true;\n return state.users.find(function (user) {\n return challenge.users[user];\n });\n}\n\n/**\n * Returns clone of the state with the specified competition track added.\n * @param {Object} state\n * @param {String} track\n * @return {Object} Resulting state.\n */\nfunction addTrack(state, track) {\n /* When state has no tracks field all tracks are allowed, thus no need to\n * touch the object. */\n if (!state.tracks) return state;\n\n var res = _lodash2.default.clone(state);\n res.tracks = _lodash2.default.clone(res.tracks);\n res.tracks[track] = true;\n\n /* Selecting all tracks is the same as having no tracks field. To keep the\n * state more simple at any time, we remove tracks field in such case. */\n if (!_lodash2.default.values(_tc.COMPETITION_TRACKS).some(function (item) {\n return !res.tracks[item];\n })) {\n delete res.tracks;\n }\n\n return res;\n}\n\n/**\n * Generates filter function for the state.\n * @param {Object} state\n * @return {Function}\n */\nfunction getFilterFunction(state) {\n return function (challenge) {\n var test = filterByStatus(challenge, state) && filterByTrack(challenge, state) && filterByUpcoming(challenge, state) && filterByGroupIds(challenge, state) && filterByText(challenge, state) && filterByTags(challenge, state) && filterBySubtracks(challenge, state) && filterByUsers(challenge, state) && filterByEndDate(challenge, state) && filterByStartDate(challenge, state) && filterByStarted(challenge, state) && filterByRegistrationOpen(challenge, state);\n if (!test && state.or) {\n var pos = 0;\n while (!test && pos < state.or.length) {\n test = getFilterFunction(state.or[pos])(challenge);\n pos += 1;\n }\n }\n return test;\n };\n}\n\n/**\n * Generates a Review Opportunities filter function for the provided filter state.\n * @param {Object} state\n * @return {Function}\n */\nfunction getReviewOpportunitiesFilterFunction(state) {\n return function (opp) {\n // Review Opportunity objects have a challenge field which\n // is largely compatible with many of the existing filter functions\n // especially after a few normalization tweaks\n var challenge = (0, _extends3.default)({}, opp.challenge, {\n // This allows filterByText to search for Review Types and Challenge Titles\n name: opp.challenge.title + ' ' + _tc.REVIEW_OPPORTUNITY_TYPES[opp.type],\n registrationStartDate: opp.startDate, // startDate of Review, not Challenge\n subTrack: opp.challenge.subTrack || '', // Sometimes back-end doesn't return this field\n submissionEndDate: opp.startDate, // Currently uses startDate for both date comparisons\n communities: new _set2.default([// Used to filter by Track, and communities at a future date\n opp.challenge.track.toLowerCase()])\n });\n\n return filterByTrack(challenge, state) && filterByText(challenge, state) && filterByTags(challenge, state) && filterBySubtracks(challenge, state) && filterByEndDate(challenge, state) && filterByStartDate(challenge, state) && filterByReviewOpportunityType(opp, state);\n };\n}\n\n/* ************************************************************************** */\n/* Below is a group of functions that allow to combine multiple challenge\n * filters together. If you are not adding a new filter functionality, just\n * look for the exported combine(..) function.\n *\n * All other helper functions in this section take two filter state objects as\n * arguments, and combine some of the filter rules, merging the resulting one\n * into the first filter state object.\n */\n\n/* NOTE: Current implementation ignores plenty of rules when combining filters.\n * It is fine for the only current use case: we use combine just before calling\n * to mapToBackend(..) function, to map several frontend filters to the\n * matching backend one. The way mapToBackend(..) works, this ignoring of\n * some rules is not a big deal (resulting backend filter will be not that\n * specific, as it probably could be, but due to the current api limitations\n * we cannot be too specific anyway). If you are going to use this for anything\n * else - thing twice what are you doing? If you need it for filtering, it is\n * just a lot easier to filter by each frontend filter in turns, rather than\n * combine them into a single filter. */\n\n/* This ESLint rule is disabled for combineXXX(..) functions, as they are\n * intended to be used only internally, with a newly constructed object\n * passed in as the first argument (i.e. we take care that there is no\n * side-effects to mutate it within this module, and these functions\n * are not exported outside of the module). */\n/* eslint-disable no-param-reassign */\n\nfunction combineArrayRules(a, b, ruleName) {\n var or = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (a[ruleName] && b[ruleName]) {\n if (or) a[ruleName] = _lodash2.default.uniq(a[ruleName].concat(b[ruleName]));else a[ruleName] = _lodash2.default.intersection(a[ruleName], b[ruleName]);\n } else if (b[ruleName]) a[ruleName] = b[ruleName];\n}\n\nfunction combineEndDate(a, b) {\n if (a.endDate && b.endDate) {\n a.endDate = _moment2.default.min(a.endDate, b.endDate).format();\n } else if (b.endDate) a.endDate = b.endDate;\n}\n\nfunction combineStartDate(a, b) {\n if (a.startDate && b.startDate) {\n a.startDate = _moment2.default.max(a.startDate, b.startDate).format();\n } else if (b.startDate) a.startDate = b.startDate;\n}\n\nfunction combineTracks(a, b) {\n if (a.tracks && b.tracks) {\n _lodash2.default.forIn(a.tracks, function (value, key) {\n if (!b.tracks[key]) delete a.tracks[key];\n });\n } else if (b.tracks) a.tracks = b.tracks;\n}\n\n/* eslint-enable no-param-reassign */\n\n/**\n * Combines multiple filter state objects together. Resulting state describes\n * the filter, which matches only those challenges that satisfy each of the\n * filters passed in as arguments.\n *\n * The main intended use of this function is to combine multiple frontend\n * challenge filters into a single one, that can be mapped into the\n * corresponding backend filter by mapToBackend(..) function.\n *\n * @param {Object} filters Input filter state objects to combine.\n * @return {Object}\n */\nfunction combine() {\n var res = {};\n\n for (var _len = arguments.length, filters = Array(_len), _key = 0; _key < _len; _key++) {\n filters[_key] = arguments[_key];\n }\n\n filters.forEach(function (filter) {\n combineEndDate(res, filter);\n combineArrayRules(res, filter, 'groupIds');\n /* TODO: The registrationOpen rule is just ignored for now. */\n combineStartDate(res, filter);\n combineArrayRules(res, filter, 'or', true);\n combineArrayRules(res, filter, 'status');\n combineArrayRules(res, filter, 'subtracks');\n combineArrayRules(res, filter, 'tags');\n /* TODO: The text rule is just ignored for now. */\n combineTracks(res, filter);\n /* TODO: The upcoming rule is just ignored for now. */\n /* TODO: The users rule is just ignored for now. */\n });\n return res;\n}\n\n/* ************************************************************************** */\n/* Below is a group of function that allow to map a frontend filter into the\n * corresponding backend (api) one. If you are not adding a new filter\n * functionality, just look for the exported mapToBackend(..) function. */\n\n/**\n * Maps the frontend challenge filter into the corresponding backend (api) one.\n * As there is no 1:1 match between the frontend and backend challenge filters,\n * the resulting backend filter is always equal or broader than the given\n * frontend one; i.e. any challenge that satisfies the original frontend filter\n * will pass the backend one, though some of the challenges that pass the\n * backend filter may fail the frontend one.\n *\n * It is assumed that this function will help us to load challenges from the\n * backend more specifically, though it does not prevent as from the need\n * always perform the final filtering at the frontend side.\n *\n * @param {Object} filter\n * @return {Object}\n */\nfunction mapToBackend(filter) {\n if (filter.or) return {};\n\n var res = {};\n if (filter.groupIds) res.groupIds = filter.groupIds.join(',');\n\n /* NOTE: Right now the frontend challenge filter by tag works different,\n * it looks for matches in the challenge name OR in the techs / platforms. */\n // if (filter.tags) res.technologies = filter.tags.join(',');\n\n return res;\n}\n\n/**\n * Returns clone of the state with the specified competition track removed.\n * @param {Object} state\n * @param {String} track\n * @return {Object} Resulting state.\n */\nfunction removeTrack(state, track) {\n var res = _lodash2.default.clone(state);\n if (res.tracks) res.tracks = _lodash2.default.clone(res.tracks);else {\n res.tracks = {};\n _lodash2.default.forIn(_tc.COMPETITION_TRACKS, function (item) {\n res.tracks[item] = true;\n });\n }\n delete res.tracks[track];\n return res;\n}\n\n/**\n * Clone the state and sets the end date.\n * @param {Object} state\n * @param {String} date\n * @return {Object}\n */\nfunction setEndDate(state, date) {\n if (date) return (0, _extends3.default)({}, state, { endDate: date });\n if (!state.endDate) return state;\n var res = _lodash2.default.clone(state);\n delete res.endDate;\n return res;\n}\n\n/**\n * Clones the state and sets the review opportunity type.\n * @param {Object} state\n * @param {Array} reviewOpportunityType Possible values found in utils/tc REVIEW_OPPORTUNITY_TYPES\n * @return {Object}\n */\nfunction setReviewOpportunityType(state, reviewOpportunityType) {\n if (reviewOpportunityType) return (0, _extends3.default)({}, state, { reviewOpportunityType: reviewOpportunityType });\n if (!state.reviewOpportunityType) return state;\n var res = _lodash2.default.clone(state);\n delete res.reviewOpportunityType;\n return res;\n}\n\n/**\n * Clones the state and sets the start date.\n * @param {Object} state\n * @param {String} date ISO date string.\n * @return {Object}\n */\nfunction setStartDate(state, date) {\n if (date) return (0, _extends3.default)({}, state, { startDate: date });\n if (!state.startDate) return state;\n var res = _lodash2.default.clone(state);\n delete res.startDate;\n return res;\n}\n\n/**\n * Clones the state and sets the subtracks.\n * @param {Object} state\n * @param {Array} subtracks\n * @return {Object}\n */\nfunction setSubtracks(state, subtracks) {\n if (subtracks && subtracks.length) return (0, _extends3.default)({}, state, { subtracks: subtracks });\n if (!state.subtracks) return state;\n var res = _lodash2.default.clone(state);\n delete res.subtracks;\n return res;\n}\n\n/**\n * Clones the state and sets the tags.\n * @param {Object} state\n * @param {Array} tags String array.\n * @return {Object}\n */\nfunction setTags(state, tags) {\n if (tags && tags.length) return (0, _extends3.default)({}, state, { tags: tags });\n if (!state.tags) return state;\n var res = _lodash2.default.clone(state);\n delete res.tags;\n return res;\n}\n\n/**\n * Clones fitler state and sets the free-text string for the filtering by\n * challenge name and tags. To clear the string set it to anything evaluating\n * to falst (empty string, null, undefined).\n * @param {Object} state\n * @param {String} text\n * @return {Object} Resulting string.\n */\nfunction setText(state, text) {\n if (!text && !state.text) return state;\n var res = _lodash2.default.clone(state);\n if (text) res.text = text;else delete res.text;\n return res;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(filterByEndDate, 'filterByEndDate', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByGroupIds, 'filterByGroupIds', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByRegistrationOpen, 'filterByRegistrationOpen', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByReviewOpportunityType, 'filterByReviewOpportunityType', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByStartDate, 'filterByStartDate', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByStarted, 'filterByStarted', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByStatus, 'filterByStatus', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterBySubtracks, 'filterBySubtracks', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByTags, 'filterByTags', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByText, 'filterByText', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByTrack, 'filterByTrack', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByUpcoming, 'filterByUpcoming', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(filterByUsers, 'filterByUsers', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(addTrack, 'addTrack', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(getFilterFunction, 'getFilterFunction', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(getReviewOpportunitiesFilterFunction, 'getReviewOpportunitiesFilterFunction', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combineArrayRules, 'combineArrayRules', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combineEndDate, 'combineEndDate', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combineStartDate, 'combineStartDate', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combineTracks, 'combineTracks', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(combine, 'combine', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(mapToBackend, 'mapToBackend', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(removeTrack, 'removeTrack', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setEndDate, 'setEndDate', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setReviewOpportunityType, 'setReviewOpportunityType', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setStartDate, 'setStartDate', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setSubtracks, 'setSubtracks', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setTags, 'setTags', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(setText, 'setText', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/challenge/filter.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/challenge/filter.js?"); /***/ }), @@ -1090,7 +1090,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ERROR_ICON_TYPES = undefined;\n\nvar _setImmediate2 = __webpack_require__(/*! babel-runtime/core-js/set-immediate */ \"babel-runtime/core-js/set-immediate\");\n\nvar _setImmediate3 = _interopRequireDefault(_setImmediate2);\n\nexports.setErrorsStore = setErrorsStore;\nexports.fireErrorMessage = fireErrorMessage;\nexports.clearAllErrorIcons = clearAllErrorIcons;\nexports.setErrorIcon = setErrorIcon;\nexports.clearErrorIcon = clearErrorIcon;\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _errors = __webpack_require__(/*! ../actions/errors */ \"./src/actions/errors.js\");\n\nvar _errors2 = _interopRequireDefault(_errors);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module errors\n * @desc Utility functions for the standard error handling.\n * @todo They will be moved to `topcoder-react-utils` soon.\n */\n\nvar ERROR_ICON_TYPES = exports.ERROR_ICON_TYPES = {\n NETWORK: 'network',\n API: 'api'\n};\n\nvar store = void 0; // Will be set only when rendering client-side\n\nfunction setErrorsStore(s) {\n store = s;\n}\n\n/**\n * The function behaves similarly to javascript alert()\n * it will show a modal error diaglog with styling until the user clicks OK.\n */\nfunction fireErrorMessage(title, details) {\n if (_topcoderReactUtils.isomorphy.isClientSide() && store) {\n (0, _setImmediate3.default)(function () {\n store.dispatch(_errors2.default.errors.newError(title, details));\n });\n }\n}\n\n/**\n * clear all error icons\n */\nfunction clearAllErrorIcons() {\n if (_topcoderReactUtils.isomorphy.isClientSide() && store) {\n (0, _setImmediate3.default)(function () {\n store.dispatch(_errors2.default.errors.clearAllErrorIcons());\n });\n }\n}\n\n/**\n * add error message to error icon in bottom left in the screen.\n * @param id id of error icon type (ERROR_ICON_TYPES.NETWORK or ERROR_ICON_TYPES.API)\n * @param title icon hover title\n * @param message icon hover message\n */\nfunction setErrorIcon(id, title, message) {\n if (_topcoderReactUtils.isomorphy.isClientSide() && store) {\n (0, _setImmediate3.default)(function () {\n store.dispatch(_errors2.default.errors.setErrorIcon(id, title, message));\n });\n }\n}\n\n/**\n * clear all error message for an error icon.\n * @param id id of error icon type to clear\n */\nfunction clearErrorIcon(id) {\n if (_topcoderReactUtils.isomorphy.isClientSide() && store) {\n (0, _setImmediate3.default)(function () {\n store.dispatch(_errors2.default.errors.clearErrorIcon(id));\n });\n }\n}\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(ERROR_ICON_TYPES, 'ERROR_ICON_TYPES', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(store, 'store', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(setErrorsStore, 'setErrorsStore', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(fireErrorMessage, 'fireErrorMessage', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(clearAllErrorIcons, 'clearAllErrorIcons', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(setErrorIcon, 'setErrorIcon', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(clearErrorIcon, 'clearErrorIcon', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/errors.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/errors.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ERROR_ICON_TYPES = undefined;\n\nvar _setImmediate2 = __webpack_require__(/*! babel-runtime/core-js/set-immediate */ \"babel-runtime/core-js/set-immediate\");\n\nvar _setImmediate3 = _interopRequireDefault(_setImmediate2);\n\nexports.setErrorsStore = setErrorsStore;\nexports.fireErrorMessage = fireErrorMessage;\nexports.clearAllErrorIcons = clearAllErrorIcons;\nexports.setErrorIcon = setErrorIcon;\nexports.clearErrorIcon = clearErrorIcon;\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nvar _errors = __webpack_require__(/*! ../actions/errors */ \"./src/actions/errors.js\");\n\nvar _errors2 = _interopRequireDefault(_errors);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module errors\n * @desc Utility functions for the standard error handling.\n * @todo They will be moved to `topcoder-react-utils` soon.\n */\n\nvar ERROR_ICON_TYPES = exports.ERROR_ICON_TYPES = {\n NETWORK: 'network',\n API: 'api'\n};\n\nvar store = void 0; // Will be set only when rendering client-side\n\nfunction setErrorsStore(s) {\n store = s;\n}\n\n/**\n * The function behaves similarly to javascript alert()\n * it will show a modal error diaglog with styling until the user clicks OK.\n */\nfunction fireErrorMessage(title, details) {\n if (_topcoderReactUtils.isomorphy.isClientSide() && store) {\n (0, _setImmediate3.default)(function () {\n store.dispatch(_errors2.default.errors.newError(title, details));\n });\n }\n}\n\n/**\n * clear all error icons\n */\nfunction clearAllErrorIcons() {\n if (_topcoderReactUtils.isomorphy.isClientSide() && store) {\n (0, _setImmediate3.default)(function () {\n store.dispatch(_errors2.default.errors.clearAllErrorIcons());\n });\n }\n}\n\n/**\n * add error message to error icon in bottom left in the screen.\n * @param id id of error icon type (ERROR_ICON_TYPES.NETWORK or ERROR_ICON_TYPES.API)\n * @param title icon hover title\n * @param message icon hover message\n */\nfunction setErrorIcon(id, title, message) {\n if (_topcoderReactUtils.isomorphy.isClientSide() && store) {\n (0, _setImmediate3.default)(function () {\n store.dispatch(_errors2.default.errors.setErrorIcon(id, title, message));\n });\n }\n}\n\n/**\n * clear all error message for an error icon.\n * @param id id of error icon type to clear\n */\nfunction clearErrorIcon(id) {\n if (_topcoderReactUtils.isomorphy.isClientSide() && store) {\n (0, _setImmediate3.default)(function () {\n store.dispatch(_errors2.default.errors.clearErrorIcon(id));\n });\n }\n}\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(ERROR_ICON_TYPES, 'ERROR_ICON_TYPES', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(store, 'store', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(setErrorsStore, 'setErrorsStore', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(fireErrorMessage, 'fireErrorMessage', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(clearAllErrorIcons, 'clearAllErrorIcons', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(setErrorIcon, 'setErrorIcon', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/errors.js');\n reactHotLoader.register(clearErrorIcon, 'clearErrorIcon', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/errors.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/errors.js?"); /***/ }), @@ -1102,7 +1102,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.submission = exports.errors = exports.mock = exports.time = exports.tc = exports.logger = exports.challenge = undefined;\n\nvar _logger = __webpack_require__(/*! ./logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _tc = __webpack_require__(/*! ./tc */ \"./src/utils/tc.js\");\n\nvar tc = _interopRequireWildcard(_tc);\n\nvar _time = __webpack_require__(/*! ./time */ \"./src/utils/time.js\");\n\nvar time = _interopRequireWildcard(_time);\n\nvar _mock = __webpack_require__(/*! ./mock */ \"./src/utils/mock.js\");\n\nvar mock = _interopRequireWildcard(_mock);\n\nvar _errors = __webpack_require__(/*! ./errors */ \"./src/utils/errors.js\");\n\nvar errors = _interopRequireWildcard(_errors);\n\nvar _filter = __webpack_require__(/*! ./challenge/filter */ \"./src/utils/challenge/filter.js\");\n\nvar filter = _interopRequireWildcard(_filter);\n\nvar _submission = __webpack_require__(/*! ./submission */ \"./src/utils/submission.js\");\n\nvar submission = _interopRequireWildcard(_submission);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Export utils.\n */\n\n\nvar challenge = {\n filter: filter\n};\n\nexports.challenge = challenge;\nexports.logger = _logger2.default;\nexports.tc = tc;\nexports.time = time;\nexports.mock = mock;\nexports.errors = errors;\nexports.submission = submission;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(challenge, 'challenge', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/index.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/index.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.submission = exports.errors = exports.mock = exports.time = exports.tc = exports.logger = exports.challenge = undefined;\n\nvar _logger = __webpack_require__(/*! ./logger */ \"./src/utils/logger.js\");\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _tc = __webpack_require__(/*! ./tc */ \"./src/utils/tc.js\");\n\nvar tc = _interopRequireWildcard(_tc);\n\nvar _time = __webpack_require__(/*! ./time */ \"./src/utils/time.js\");\n\nvar time = _interopRequireWildcard(_time);\n\nvar _mock = __webpack_require__(/*! ./mock */ \"./src/utils/mock.js\");\n\nvar mock = _interopRequireWildcard(_mock);\n\nvar _errors = __webpack_require__(/*! ./errors */ \"./src/utils/errors.js\");\n\nvar errors = _interopRequireWildcard(_errors);\n\nvar _filter = __webpack_require__(/*! ./challenge/filter */ \"./src/utils/challenge/filter.js\");\n\nvar filter = _interopRequireWildcard(_filter);\n\nvar _submission = __webpack_require__(/*! ./submission */ \"./src/utils/submission.js\");\n\nvar submission = _interopRequireWildcard(_submission);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Export utils.\n */\n\n\nvar challenge = {\n filter: filter\n};\n\nexports.challenge = challenge;\nexports.logger = _logger2.default;\nexports.tc = tc;\nexports.time = time;\nexports.mock = mock;\nexports.errors = errors;\nexports.submission = submission;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(challenge, 'challenge', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/index.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/index.js?"); /***/ }), @@ -1114,7 +1114,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module logger\n *\n * @desc\n * Isomorphic logger.\n *\n * At the server-side it outputs log messages to the console, and also sends\n * them to the https://logentries.com service (only if LOG_ENTRIES_TOKEN is\n * set).\n *\n * At the front-end side it outputs log messages to the console (only when\n * development build of the frontend is used), and sends them to the\n * https://logentries.com service (both dev and prod build of the frontend\n * send messages to the service, proxying them through the App's server;\n * the proxy will forward them to the service only if LOG_ENTRIES_TOKEN is set).\n *\n * In all case, interface of the logger matches that of the standard JS console.\n *\n * @todo This module does not belong here, it should be moved to\n * `topcoder-react-utils`.\n */\n/* eslint-disable global-require */\n/* eslint-disable no-console */\n\n/* global fetch */\n\n\nvar logger = {};\n_lodash2.default.functions(console).forEach(function (func) {\n logger[func] = _topcoderReactUtils.isomorphy.isDevBuild() || _topcoderReactUtils.isomorphy.isServerSide() ? console[func] : _lodash2.default.noop;\n});\n\nvar leLogger = void 0;\nif (_topcoderReactUtils.isomorphy.isServerSide()) {\n var token = _topcoderReactUtils.config.LOG_ENTRIES_TOKEN;\n if (token) {\n var LeLogger = __webpack_require__(/*! le_node */ \"le_node\");\n leLogger = new LeLogger({ token: token });\n }\n} else {\n var _log = function _log(type) {\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n fetch('/community-app-assets/api/logger', {\n body: (0, _stringify2.default)({\n data: rest,\n type: type\n }),\n headers: {\n 'Content-Type': 'application/json',\n Authorization: 'ApiKey ' + _topcoderReactUtils.config.SERVER_API_KEY\n },\n method: 'POST'\n }).catch(function () {\n /* TODO: Network or server are down. We should msg it to the user somehow\n */\n });\n };\n leLogger = {\n err: function err() {\n for (var _len2 = arguments.length, rest = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n rest[_key2] = arguments[_key2];\n }\n\n return _log.apply(undefined, ['err'].concat(rest));\n },\n info: function info() {\n for (var _len3 = arguments.length, rest = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n rest[_key3] = arguments[_key3];\n }\n\n return _log.apply(undefined, ['info'].concat(rest));\n },\n log: function log() {\n for (var _len4 = arguments.length, rest = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n rest[_key4] = arguments[_key4];\n }\n\n return _log.apply(undefined, ['log'].concat(rest));\n },\n warning: function warning() {\n for (var _len5 = arguments.length, rest = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n rest[_key5] = arguments[_key5];\n }\n\n return _log.apply(undefined, ['warn'].concat(rest));\n }\n };\n}\n\nif (leLogger) {\n var extend = function extend(base, le) {\n logger[base] = function () {\n for (var _len6 = arguments.length, rest = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n rest[_key6] = arguments[_key6];\n }\n\n if (_topcoderReactUtils.isomorphy.isDevBuild() || _topcoderReactUtils.isomorphy.isServerSide()) {\n var _console;\n\n (_console = console)[base].apply(_console, rest);\n }\n var msg = '';\n rest.forEach(function (item) {\n var it = item;\n if (!_lodash2.default.isString(it)) {\n it = (0, _stringify2.default)(it);\n if (!_lodash2.default.isString(it)) it = String(it);\n }\n msg = '' + msg + it + ' ';\n });\n leLogger[le](msg);\n };\n };\n extend('error', 'err');\n extend('info', 'info');\n extend('log', 'log');\n extend('warn', 'warning');\n}\n\nvar _default = logger;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(logger, 'logger', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/logger.js');\n reactHotLoader.register(leLogger, 'leLogger', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/logger.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/logger.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/logger.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _stringify = __webpack_require__(/*! babel-runtime/core-js/json/stringify */ \"babel-runtime/core-js/json/stringify\");\n\nvar _stringify2 = _interopRequireDefault(_stringify);\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _topcoderReactUtils = __webpack_require__(/*! topcoder-react-utils */ \"topcoder-react-utils\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module logger\n *\n * @desc\n * Isomorphic logger.\n *\n * At the server-side it outputs log messages to the console, and also sends\n * them to the https://logentries.com service (only if LOG_ENTRIES_TOKEN is\n * set).\n *\n * At the front-end side it outputs log messages to the console (only when\n * development build of the frontend is used), and sends them to the\n * https://logentries.com service (both dev and prod build of the frontend\n * send messages to the service, proxying them through the App's server;\n * the proxy will forward them to the service only if LOG_ENTRIES_TOKEN is set).\n *\n * In all case, interface of the logger matches that of the standard JS console.\n *\n * @todo This module does not belong here, it should be moved to\n * `topcoder-react-utils`.\n */\n/* eslint-disable global-require */\n/* eslint-disable no-console */\n\n/* global fetch */\n\n\nvar logger = {};\n_lodash2.default.functions(console).forEach(function (func) {\n logger[func] = _topcoderReactUtils.isomorphy.isDevBuild() || _topcoderReactUtils.isomorphy.isServerSide() ? console[func] : _lodash2.default.noop;\n});\n\nvar leLogger = void 0;\nif (_topcoderReactUtils.isomorphy.isServerSide()) {\n var token = _topcoderReactUtils.config.LOG_ENTRIES_TOKEN;\n if (token) {\n var LeLogger = __webpack_require__(/*! le_node */ \"le_node\");\n leLogger = new LeLogger({ token: token });\n }\n} else {\n var _log = function _log(type) {\n for (var _len = arguments.length, rest = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n rest[_key - 1] = arguments[_key];\n }\n\n fetch('/community-app-assets/api/logger', {\n body: (0, _stringify2.default)({\n data: rest,\n type: type\n }),\n headers: {\n 'Content-Type': 'application/json',\n Authorization: 'ApiKey ' + _topcoderReactUtils.config.SERVER_API_KEY\n },\n method: 'POST'\n }).catch(function () {\n /* TODO: Network or server are down. We should msg it to the user somehow\n */\n });\n };\n leLogger = {\n err: function err() {\n for (var _len2 = arguments.length, rest = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n rest[_key2] = arguments[_key2];\n }\n\n return _log.apply(undefined, ['err'].concat(rest));\n },\n info: function info() {\n for (var _len3 = arguments.length, rest = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n rest[_key3] = arguments[_key3];\n }\n\n return _log.apply(undefined, ['info'].concat(rest));\n },\n log: function log() {\n for (var _len4 = arguments.length, rest = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n rest[_key4] = arguments[_key4];\n }\n\n return _log.apply(undefined, ['log'].concat(rest));\n },\n warning: function warning() {\n for (var _len5 = arguments.length, rest = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n rest[_key5] = arguments[_key5];\n }\n\n return _log.apply(undefined, ['warn'].concat(rest));\n }\n };\n}\n\nif (leLogger) {\n var extend = function extend(base, le) {\n logger[base] = function () {\n for (var _len6 = arguments.length, rest = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n rest[_key6] = arguments[_key6];\n }\n\n if (_topcoderReactUtils.isomorphy.isDevBuild() || _topcoderReactUtils.isomorphy.isServerSide()) {\n var _console;\n\n (_console = console)[base].apply(_console, rest);\n }\n var msg = '';\n rest.forEach(function (item) {\n var it = item;\n if (!_lodash2.default.isString(it)) {\n it = (0, _stringify2.default)(it);\n if (!_lodash2.default.isString(it)) it = String(it);\n }\n msg = '' + msg + it + ' ';\n });\n leLogger[le](msg);\n };\n };\n extend('error', 'err');\n extend('info', 'info');\n extend('log', 'log');\n extend('warn', 'warning');\n}\n\nvar _default = logger;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(logger, 'logger', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/logger.js');\n reactHotLoader.register(leLogger, 'leLogger', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/logger.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/logger.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/logger.js?"); /***/ }), @@ -1126,7 +1126,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mockAction = mockAction;\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n};\n\n/**\n * @module mock\n * @desc Collection of functions useful in unit tests.\n * @todo This will be moved to Jest utils in `topcoder-react-utils` soon.\n */\n\n/**\n * Creates a mock Flux Standard Action creator.\n * TODO: Additional options to set errors, etc. should be added.\n * TODO: It may be handier to return action created wrapped into Jest mock\n * function.\n * @param {String} type Action type.\n * @param {Any} payload Action payload.\n * @param {Any} error Has error or not.\n */\nfunction mockAction(type, payload, error) {\n var res = function res() {\n return { type: type, payload: payload, error: error };\n };\n res.toString = function () {\n return type;\n };\n return res;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(mockAction, \"mockAction\", \"/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/mock.js\");\n reactHotLoader.register(_default, \"default\", \"/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/mock.js\");\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/mock.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.mockAction = mockAction;\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n};\n\n/**\n * @module mock\n * @desc Collection of functions useful in unit tests.\n * @todo This will be moved to Jest utils in `topcoder-react-utils` soon.\n */\n\n/**\n * Creates a mock Flux Standard Action creator.\n * TODO: Additional options to set errors, etc. should be added.\n * TODO: It may be handier to return action created wrapped into Jest mock\n * function.\n * @param {String} type Action type.\n * @param {Any} payload Action payload.\n * @param {Any} error Has error or not.\n */\nfunction mockAction(type, payload, error) {\n var res = function res() {\n return { type: type, payload: payload, error: error };\n };\n res.toString = function () {\n return type;\n };\n return res;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(mockAction, \"mockAction\", \"/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/mock.js\");\n reactHotLoader.register(_default, \"default\", \"/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/mock.js\");\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/mock.js?"); /***/ }), @@ -1138,7 +1138,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nexports.getProvisionalScore = getProvisionalScore;\nexports.getFinalScore = getFinalScore;\nexports.processMMSubmissions = processMMSubmissions;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Various submissions functions.\n */\n/* global CONFIG */\n/* eslint-disable no-param-reassign */\n\n\nvar _CONFIG = {\"AV_SCAN_SCORER_REVIEW_TYPE_ID\":\"68c5a381-c8ab-48af-92a7-7a869a4ee6c3\",\"PAGE_SIZE\":50,\"REVIEW_OPPORTUNITY_PAGE_SIZE\":1000},\n AV_SCAN_SCORER_REVIEW_TYPE_ID = _CONFIG.AV_SCAN_SCORER_REVIEW_TYPE_ID;\n\n\nfunction removeDecimal(num) {\n var re = new RegExp('^-?\\\\d+');\n return num.toString().match(re)[0];\n}\n\nfunction toAcurateFixed(num, decimal) {\n var re = new RegExp('^-?\\\\d+(?:.\\\\d{0,' + decimal + '})?');\n return num.toString().match(re)[0];\n}\n\nfunction toFixed(num, decimal) {\n if (_lodash2.default.isNaN(parseFloat(num))) return num;\n num = parseFloat(num);\n\n var result = _lodash2.default.toFinite(toAcurateFixed(num, decimal));\n var integerResult = _lodash2.default.toFinite(removeDecimal(num));\n\n if (_lodash2.default.isInteger(result)) {\n return integerResult;\n }\n return result;\n}\n\nfunction getMMChallengeHandleStyle(handle, registrants) {\n var style = _lodash2.default.get(_lodash2.default.find(registrants, function (m) {\n return m.handle === handle;\n }), 'colorStyle', null);\n if (style) return JSON.parse(style.replace(/(\\w+):\\s*([^;]*)/g, '{\"$1\": \"$2\"}'));\n return {};\n}\n\n/**\n * Process each submission rank of MM challenge\n * @param submissions the array of submissions\n */\nfunction processRanks(submissions) {\n var maxFinalScore = 0;\n submissions.sort(function (a, b) {\n var pA = _lodash2.default.get(a, 'submissions[0]', { provisionalScore: 0 }).provisionalScore;\n var pB = _lodash2.default.get(b, 'submissions[0]', { provisionalScore: 0 }).provisionalScore;\n if (pA === '-') pA = 0;\n if (pB === '-') pB = 0;\n if (pA === pB) {\n var timeA = new Date(_lodash2.default.get(a, 'submissions[0].submissionTime'));\n var timeB = new Date(_lodash2.default.get(b, 'submissions[0].submissionTime'));\n return timeA - timeB;\n }\n return pB - pA;\n });\n _lodash2.default.each(submissions, function (submission, i) {\n submissions[i].provisionalRank = i + 1;\n });\n\n submissions.sort(function (a, b) {\n var pA = _lodash2.default.get(a, 'submissions[0]', { finalScore: 0 }).finalScore;\n var pB = _lodash2.default.get(b, 'submissions[0]', { finalScore: 0 }).finalScore;\n if (pA === '-') pA = 0;\n if (pB === '-') pB = 0;\n if (pA > 0) maxFinalScore = pA;\n if (pB > 0) maxFinalScore = pB;\n if (pA === pB) {\n var timeA = new Date(_lodash2.default.get(a, 'submissions[0].submissionTime'));\n var timeB = new Date(_lodash2.default.get(b, 'submissions[0].submissionTime'));\n return timeA - timeB;\n }\n return pB - pA;\n });\n if (maxFinalScore > 0) {\n _lodash2.default.each(submissions, function (submission, i) {\n submissions[i].finalRank = i + 1;\n });\n }\n return { submissions: submissions, maxFinalScore: maxFinalScore };\n}\n\n/**\n * Get provisional score of submission\n * @param submission\n */\nfunction getProvisionalScore(submission) {\n var subs = submission.submissions;\n\n if (!subs || subs.length === 0) {\n return 0;\n }\n var provisionalScore = subs[0].provisionalScore;\n\n if (!provisionalScore || provisionalScore < 0) {\n return 0;\n }\n return provisionalScore;\n}\n\n/**\n * Get final score of submission\n * @param submission\n */\nfunction getFinalScore(submission) {\n var subs = submission.submissions;\n\n if (!subs || subs.length === 0) {\n return 0;\n }\n var finalScore = subs[0].finalScore;\n\n if (!finalScore || finalScore < 0) {\n return 0;\n }\n return finalScore;\n}\n\n/**\n * Process submissions of MM challenge\n * @param submissions the array of submissions\n * @param resources the challenge resources\n * @param registrants the challenge registrants\n */\nfunction processMMSubmissions(submissions, resources, registrants) {\n var data = {};\n var result = [];\n\n _lodash2.default.each(submissions, function (submission) {\n var memberId = submission.memberId;\n\n var memberHandle = void 0;\n var resource = _lodash2.default.find(resources, function (r) {\n return _lodash2.default.get(r, 'userId').toString() === memberId.toString();\n });\n if (_lodash2.default.isEmpty(resource)) {\n memberHandle = memberId;\n } else {\n memberHandle = _lodash2.default.has(resource, 'handle') ? _lodash2.default.get(resource, 'handle') : memberId.toString();\n }\n if (!data[memberHandle]) {\n data[memberHandle] = [];\n }\n var validReviews = _lodash2.default.filter(submission.review, function (r) {\n return !_lodash2.default.isEmpty(r) && r.typeId !== AV_SCAN_SCORER_REVIEW_TYPE_ID;\n });\n validReviews.sort(function (a, b) {\n var dateA = new Date(a.created);\n var dateB = new Date(b.created);\n return dateB - dateA;\n });\n\n var provisionalScore = toFixed(_lodash2.default.get(validReviews, '[0].score', '-'), 5);\n var finalScore = toFixed(_lodash2.default.get(submission, 'reviewSummation[0].aggregateScore', '-'), 5);\n\n data[memberHandle].push({\n submissionId: submission.id,\n submissionTime: submission.created,\n provisionalScore: provisionalScore,\n finalScore: finalScore\n });\n });\n\n _lodash2.default.each(data, function (value, key) {\n result.push({\n submissions: [].concat((0, _toConsumableArray3.default)(value.sort(function (a, b) {\n return new Date(b.submissionTime).getTime() - new Date(a.submissionTime).getTime();\n }))),\n member: key,\n colorStyle: getMMChallengeHandleStyle(key, registrants)\n });\n });\n\n var _processRanks = processRanks(result),\n finalSubmissions = _processRanks.submissions,\n maxFinalScore = _processRanks.maxFinalScore;\n\n finalSubmissions.sort(function (a, b) {\n if (maxFinalScore === 0) {\n return a.provisionalRank - b.provisionalRank;\n }\n return a.finalRank - b.finalRank;\n });\n\n return finalSubmissions;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(AV_SCAN_SCORER_REVIEW_TYPE_ID, 'AV_SCAN_SCORER_REVIEW_TYPE_ID', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(removeDecimal, 'removeDecimal', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(toAcurateFixed, 'toAcurateFixed', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(toFixed, 'toFixed', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(getMMChallengeHandleStyle, 'getMMChallengeHandleStyle', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(processRanks, 'processRanks', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(getProvisionalScore, 'getProvisionalScore', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(getFinalScore, 'getFinalScore', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(processMMSubmissions, 'processMMSubmissions', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/submission.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/submission.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _toConsumableArray2 = __webpack_require__(/*! babel-runtime/helpers/toConsumableArray */ \"babel-runtime/helpers/toConsumableArray\");\n\nvar _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);\n\nexports.getProvisionalScore = getProvisionalScore;\nexports.getFinalScore = getFinalScore;\nexports.processMMSubmissions = processMMSubmissions;\n\nvar _lodash = __webpack_require__(/*! lodash */ \"lodash\");\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * Various submissions functions.\n */\n/* global CONFIG */\n/* eslint-disable no-param-reassign */\n\n\nvar _CONFIG = {\"AV_SCAN_SCORER_REVIEW_TYPE_ID\":\"68c5a381-c8ab-48af-92a7-7a869a4ee6c3\",\"PAGE_SIZE\":50,\"REVIEW_OPPORTUNITY_PAGE_SIZE\":1000},\n AV_SCAN_SCORER_REVIEW_TYPE_ID = _CONFIG.AV_SCAN_SCORER_REVIEW_TYPE_ID;\n\n\nfunction removeDecimal(num) {\n var re = new RegExp('^-?\\\\d+');\n return num.toString().match(re)[0];\n}\n\nfunction toAcurateFixed(num, decimal) {\n var re = new RegExp('^-?\\\\d+(?:.\\\\d{0,' + decimal + '})?');\n return num.toString().match(re)[0];\n}\n\nfunction toFixed(num, decimal) {\n if (_lodash2.default.isNaN(parseFloat(num))) return num;\n num = parseFloat(num);\n\n var result = _lodash2.default.toFinite(toAcurateFixed(num, decimal));\n var integerResult = _lodash2.default.toFinite(removeDecimal(num));\n\n if (_lodash2.default.isInteger(result)) {\n return integerResult;\n }\n return result;\n}\n\nfunction getMMChallengeHandleStyle(handle, registrants) {\n var style = _lodash2.default.get(_lodash2.default.find(registrants, function (m) {\n return m.handle === handle;\n }), 'colorStyle', null);\n if (style) return JSON.parse(style.replace(/(\\w+):\\s*([^;]*)/g, '{\"$1\": \"$2\"}'));\n return {};\n}\n\n/**\n * Process each submission rank of MM challenge\n * @param submissions the array of submissions\n */\nfunction processRanks(submissions) {\n var maxFinalScore = 0;\n submissions.sort(function (a, b) {\n var pA = _lodash2.default.get(a, 'submissions[0]', { provisionalScore: 0 }).provisionalScore;\n var pB = _lodash2.default.get(b, 'submissions[0]', { provisionalScore: 0 }).provisionalScore;\n if (pA === '-') pA = 0;\n if (pB === '-') pB = 0;\n if (pA === pB) {\n var timeA = new Date(_lodash2.default.get(a, 'submissions[0].submissionTime'));\n var timeB = new Date(_lodash2.default.get(b, 'submissions[0].submissionTime'));\n return timeA - timeB;\n }\n return pB - pA;\n });\n _lodash2.default.each(submissions, function (submission, i) {\n submissions[i].provisionalRank = i + 1;\n });\n\n submissions.sort(function (a, b) {\n var pA = _lodash2.default.get(a, 'submissions[0]', { finalScore: 0 }).finalScore;\n var pB = _lodash2.default.get(b, 'submissions[0]', { finalScore: 0 }).finalScore;\n if (pA === '-') pA = 0;\n if (pB === '-') pB = 0;\n if (pA > 0) maxFinalScore = pA;\n if (pB > 0) maxFinalScore = pB;\n if (pA === pB) {\n var timeA = new Date(_lodash2.default.get(a, 'submissions[0].submissionTime'));\n var timeB = new Date(_lodash2.default.get(b, 'submissions[0].submissionTime'));\n return timeA - timeB;\n }\n return pB - pA;\n });\n if (maxFinalScore > 0) {\n _lodash2.default.each(submissions, function (submission, i) {\n submissions[i].finalRank = i + 1;\n });\n }\n return { submissions: submissions, maxFinalScore: maxFinalScore };\n}\n\n/**\n * Get provisional score of submission\n * @param submission\n */\nfunction getProvisionalScore(submission) {\n var subs = submission.submissions;\n\n if (!subs || subs.length === 0) {\n return 0;\n }\n var provisionalScore = subs[0].provisionalScore;\n\n if (!provisionalScore || provisionalScore < 0) {\n return 0;\n }\n return provisionalScore;\n}\n\n/**\n * Get final score of submission\n * @param submission\n */\nfunction getFinalScore(submission) {\n var subs = submission.submissions;\n\n if (!subs || subs.length === 0) {\n return 0;\n }\n var finalScore = subs[0].finalScore;\n\n if (!finalScore || finalScore < 0) {\n return 0;\n }\n return finalScore;\n}\n\n/**\n * Process submissions of MM challenge\n * @param submissions the array of submissions\n * @param resources the challenge resources\n * @param registrants the challenge registrants\n */\nfunction processMMSubmissions(submissions, resources, registrants) {\n var data = {};\n var result = [];\n\n _lodash2.default.each(submissions, function (submission) {\n var memberId = submission.memberId;\n\n var memberHandle = void 0;\n var resource = _lodash2.default.find(resources, function (r) {\n return _lodash2.default.get(r, 'userId').toString() === memberId.toString();\n });\n if (_lodash2.default.isEmpty(resource)) {\n memberHandle = memberId;\n } else {\n memberHandle = _lodash2.default.has(resource, 'handle') ? _lodash2.default.get(resource, 'handle') : memberId.toString();\n }\n if (!data[memberHandle]) {\n data[memberHandle] = [];\n }\n var validReviews = _lodash2.default.filter(submission.review, function (r) {\n return !_lodash2.default.isEmpty(r) && r.typeId !== AV_SCAN_SCORER_REVIEW_TYPE_ID;\n });\n validReviews.sort(function (a, b) {\n var dateA = new Date(a.created);\n var dateB = new Date(b.created);\n return dateB - dateA;\n });\n\n var provisionalScore = toFixed(_lodash2.default.get(validReviews, '[0].score', '-'), 5);\n var finalScore = toFixed(_lodash2.default.get(submission, 'reviewSummation[0].aggregateScore', '-'), 5);\n\n data[memberHandle].push({\n submissionId: submission.id,\n submissionTime: submission.created,\n provisionalScore: provisionalScore,\n finalScore: finalScore\n });\n });\n\n _lodash2.default.each(data, function (value, key) {\n result.push({\n submissions: [].concat((0, _toConsumableArray3.default)(value.sort(function (a, b) {\n return new Date(b.submissionTime).getTime() - new Date(a.submissionTime).getTime();\n }))),\n member: key,\n colorStyle: getMMChallengeHandleStyle(key, registrants)\n });\n });\n\n var _processRanks = processRanks(result),\n finalSubmissions = _processRanks.submissions,\n maxFinalScore = _processRanks.maxFinalScore;\n\n finalSubmissions.sort(function (a, b) {\n if (maxFinalScore === 0) {\n return a.provisionalRank - b.provisionalRank;\n }\n return a.finalRank - b.finalRank;\n });\n\n return finalSubmissions;\n}\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(AV_SCAN_SCORER_REVIEW_TYPE_ID, 'AV_SCAN_SCORER_REVIEW_TYPE_ID', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(removeDecimal, 'removeDecimal', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(toAcurateFixed, 'toAcurateFixed', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(toFixed, 'toFixed', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(getMMChallengeHandleStyle, 'getMMChallengeHandleStyle', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(processRanks, 'processRanks', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(getProvisionalScore, 'getProvisionalScore', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(getFinalScore, 'getFinalScore', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(processMMSubmissions, 'processMMSubmissions', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/submission.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/submission.js?"); /***/ }), @@ -1150,7 +1150,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLookerApiResponsePayload = exports.getApiResponsePayload = exports.REVIEW_OPPORTUNITY_TYPES = exports.COMPETITION_TRACKS = undefined;\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * Gets payload from a standard success response from TC API; or throws\n * an error in case of a failure response.\n * @param {Object} res\n * @param {Boolean} shouldThrowError should throw error if request fail\n * @return {Promise} Resolves to the payload.\n */\nvar getApiResponsePayload = exports.getApiResponsePayload = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(res) {\n var shouldThrowError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var x;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (res.ok) {\n _context.next = 6;\n break;\n }\n\n if (!shouldThrowError) {\n _context.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n return _context.abrupt('return', null);\n\n case 6:\n _context.next = 8;\n return res.json();\n\n case 8:\n x = _context.sent.result;\n\n if (x.success) {\n _context.next = 15;\n break;\n }\n\n if (!shouldThrowError) {\n _context.next = 14;\n break;\n }\n\n throw new Error(x.content);\n\n case 14:\n return _context.abrupt('return', null);\n\n case 15:\n return _context.abrupt('return', x.content);\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getApiResponsePayload(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Gets payload from a standard success response from TC LOOKER API; or throws\n * an error in case of a failure response.\n * @param {Object} res\n * @return {Promise} Resolves to the payload.\n */\n\n\nvar getLookerApiResponsePayload = exports.getLookerApiResponsePayload = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(res) {\n var resJson, x;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return res.json();\n\n case 2:\n resJson = _context2.sent;\n\n if (!Array.isArray(resJson)) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt('return', {\n res: resJson,\n error: false\n });\n\n case 5:\n x = resJson.result;\n return _context2.abrupt('return', {\n res: x.content,\n error: !x.success,\n status: x.status\n });\n\n case 7:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function getLookerApiResponsePayload(_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n};\n\n/**\n * @module tc\n * @desc Collection of small Topcoder-related functions.\n * @todo More TC-related utils should be moved here from Community-app.\n */\n\n/**\n * Codes of the Topcoder communities.\n */\n/* TODO: These are originally motivated by Topcoder API v2. Topcoder API v3\n * uses upper-case literals to encode the tracks. At some point, we should\n * update it in this code as well! */\nvar COMPETITION_TRACKS = exports.COMPETITION_TRACKS = {\n DATA_SCIENCE: 'data_science',\n DESIGN: 'design',\n DEVELOP: 'develop'\n};\n\n/**\n * Review Opportunity types\n */\nvar REVIEW_OPPORTUNITY_TYPES = exports.REVIEW_OPPORTUNITY_TYPES = {\n 'Contest Review': 'Review',\n 'Spec Review': 'Specification Review',\n 'Iterative Review': 'Iterative Review'\n};;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(COMPETITION_TRACKS, 'COMPETITION_TRACKS', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/tc.js');\n reactHotLoader.register(REVIEW_OPPORTUNITY_TYPES, 'REVIEW_OPPORTUNITY_TYPES', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/tc.js');\n reactHotLoader.register(getApiResponsePayload, 'getApiResponsePayload', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/tc.js');\n reactHotLoader.register(getLookerApiResponsePayload, 'getLookerApiResponsePayload', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/tc.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/tc.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLookerApiResponsePayload = exports.getApiResponsePayload = exports.REVIEW_OPPORTUNITY_TYPES = exports.COMPETITION_TRACKS = undefined;\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * Gets payload from a standard success response from TC API; or throws\n * an error in case of a failure response.\n * @param {Object} res\n * @param {Boolean} shouldThrowError should throw error if request fail\n * @return {Promise} Resolves to the payload.\n */\nvar getApiResponsePayload = exports.getApiResponsePayload = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(res) {\n var shouldThrowError = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var x;\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (res.ok) {\n _context.next = 6;\n break;\n }\n\n if (!shouldThrowError) {\n _context.next = 5;\n break;\n }\n\n throw new Error(res.statusText);\n\n case 5:\n return _context.abrupt('return', null);\n\n case 6:\n _context.next = 8;\n return res.json();\n\n case 8:\n x = _context.sent.result;\n\n if (x.success) {\n _context.next = 15;\n break;\n }\n\n if (!shouldThrowError) {\n _context.next = 14;\n break;\n }\n\n throw new Error(x.content);\n\n case 14:\n return _context.abrupt('return', null);\n\n case 15:\n return _context.abrupt('return', x.content);\n\n case 16:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function getApiResponsePayload(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Gets payload from a standard success response from TC LOOKER API; or throws\n * an error in case of a failure response.\n * @param {Object} res\n * @return {Promise} Resolves to the payload.\n */\n\n\nvar getLookerApiResponsePayload = exports.getLookerApiResponsePayload = function () {\n var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(res) {\n var resJson, x;\n return _regenerator2.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return res.json();\n\n case 2:\n resJson = _context2.sent;\n\n if (!Array.isArray(resJson)) {\n _context2.next = 5;\n break;\n }\n\n return _context2.abrupt('return', {\n res: resJson,\n error: false\n });\n\n case 5:\n x = resJson.result;\n return _context2.abrupt('return', {\n res: x.content,\n error: !x.success,\n status: x.status\n });\n\n case 7:\n case 'end':\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function getLookerApiResponsePayload(_x3) {\n return _ref2.apply(this, arguments);\n };\n}();\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n};\n\n/**\n * @module tc\n * @desc Collection of small Topcoder-related functions.\n * @todo More TC-related utils should be moved here from Community-app.\n */\n\n/**\n * Codes of the Topcoder communities.\n */\n/* TODO: These are originally motivated by Topcoder API v2. Topcoder API v3\n * uses upper-case literals to encode the tracks. At some point, we should\n * update it in this code as well! */\nvar COMPETITION_TRACKS = exports.COMPETITION_TRACKS = {\n DATA_SCIENCE: 'data_science',\n DESIGN: 'design',\n DEVELOP: 'develop'\n};\n\n/**\n * Review Opportunity types\n */\nvar REVIEW_OPPORTUNITY_TYPES = exports.REVIEW_OPPORTUNITY_TYPES = {\n 'Contest Review': 'Review',\n 'Spec Review': 'Specification Review',\n 'Iterative Review': 'Iterative Review'\n};;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(COMPETITION_TRACKS, 'COMPETITION_TRACKS', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/tc.js');\n reactHotLoader.register(REVIEW_OPPORTUNITY_TYPES, 'REVIEW_OPPORTUNITY_TYPES', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/tc.js');\n reactHotLoader.register(getApiResponsePayload, 'getApiResponsePayload', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/tc.js');\n reactHotLoader.register(getLookerApiResponsePayload, 'getLookerApiResponsePayload', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/tc.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/tc.js?"); /***/ }), @@ -1162,7 +1162,7 @@ eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(ex /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatDuration = exports.delay = undefined;\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * Returns a Promise that resolves after the specified delay.\n * @param {Number} time Delay [ms].\n * @return {Promise}\n */\nvar delay = exports.delay = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(time) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', new _promise2.default(function (resolve) {\n return setTimeout(function () {\n return resolve();\n }, time);\n }));\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function delay(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Standard duration formatting for listings and details\n *\n * @param {Number} time Time in milliseconds\n * @return {String} Formatted duration\n */\n\n\nvar _moment = __webpack_require__(/*! moment */ \"moment\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\n__webpack_require__(/*! moment-duration-format */ \"moment-duration-format\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module time\n * @desc Utility functions for time/date related stuff\n */\n\n\nvar HOUR_MS = 60 * 60 * 1000;\nvar DAY_MS = 24 * HOUR_MS;var formatDuration = exports.formatDuration = function formatDuration(time) {\n var format = void 0;\n if (time > DAY_MS) format = 'D[d] H[h]';else if (time > HOUR_MS) format = 'H[h] m[min]';else format = 'm[min] s[s]';\n\n return _moment2.default.duration(time).format(format);\n};\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(HOUR_MS, 'HOUR_MS', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/time.js');\n reactHotLoader.register(DAY_MS, 'DAY_MS', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/time.js');\n reactHotLoader.register(delay, 'delay', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/time.js');\n reactHotLoader.register(formatDuration, 'formatDuration', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/time.js');\n reactHotLoader.register(_default, 'default', '/Users/gurmeetb/Desktop/topcoder/private_tasks/appirio-tech/community-apps/topcoder-react-lib/src/utils/time.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/time.js?"); +eval("/* WEBPACK VAR INJECTION */(function(module) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.formatDuration = exports.delay = undefined;\n\nvar _regenerator = __webpack_require__(/*! babel-runtime/regenerator */ \"babel-runtime/regenerator\");\n\nvar _regenerator2 = _interopRequireDefault(_regenerator);\n\nvar _promise = __webpack_require__(/*! babel-runtime/core-js/promise */ \"babel-runtime/core-js/promise\");\n\nvar _promise2 = _interopRequireDefault(_promise);\n\nvar _asyncToGenerator2 = __webpack_require__(/*! babel-runtime/helpers/asyncToGenerator */ \"babel-runtime/helpers/asyncToGenerator\");\n\nvar _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);\n\n/**\n * Returns a Promise that resolves after the specified delay.\n * @param {Number} time Delay [ms].\n * @return {Promise}\n */\nvar delay = exports.delay = function () {\n var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(time) {\n return _regenerator2.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt('return', new _promise2.default(function (resolve) {\n return setTimeout(function () {\n return resolve();\n }, time);\n }));\n\n case 1:\n case 'end':\n return _context.stop();\n }\n }\n }, _callee, this);\n }));\n\n return function delay(_x) {\n return _ref.apply(this, arguments);\n };\n}();\n\n/**\n * Standard duration formatting for listings and details\n *\n * @param {Number} time Time in milliseconds\n * @return {String} Formatted duration\n */\n\n\nvar _moment = __webpack_require__(/*! moment */ \"moment\");\n\nvar _moment2 = _interopRequireDefault(_moment);\n\n__webpack_require__(/*! moment-duration-format */ \"moment-duration-format\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n(function () {\n var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;\n enterModule && enterModule(module);\n})();\n\nvar __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {\n return a;\n}; /**\n * @module time\n * @desc Utility functions for time/date related stuff\n */\n\n\nvar HOUR_MS = 60 * 60 * 1000;\nvar DAY_MS = 24 * HOUR_MS;var formatDuration = exports.formatDuration = function formatDuration(time) {\n var format = void 0;\n if (time > DAY_MS) format = 'D[d] H[h]';else if (time > HOUR_MS) format = 'H[h] m[min]';else format = 'm[min] s[s]';\n\n return _moment2.default.duration(time).format(format);\n};\n\nvar _default = undefined;\nexports.default = _default;\n;\n\n(function () {\n var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;\n\n if (!reactHotLoader) {\n return;\n }\n\n reactHotLoader.register(HOUR_MS, 'HOUR_MS', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/time.js');\n reactHotLoader.register(DAY_MS, 'DAY_MS', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/time.js');\n reactHotLoader.register(delay, 'delay', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/time.js');\n reactHotLoader.register(formatDuration, 'formatDuration', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/time.js');\n reactHotLoader.register(_default, 'default', '/Users/dat/Documents/ExampleCode/client/html/TopCoder/TopcoderSite/Community App/topcoder-react-lib/src/utils/time.js');\n})();\n\n;\n\n(function () {\n var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;\n leaveModule && leaveModule(module);\n})();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/module.js */ \"./node_modules/webpack/buildin/module.js\")(module)))\n\n//# sourceURL=webpack://topcoder-react-lib/./src/utils/time.js?"); /***/ }), diff --git a/docs/services.members.md b/docs/services.members.md index 87756464..856b90ce 100644 --- a/docs/services.members.md +++ b/docs/services.members.md @@ -13,7 +13,6 @@ members via API V3. * [new MembersService(tokenV3)](#new_module_services.members..MembersService_new) * [.getMemberFinances(handle)](#module_services.members..MembersService+getMemberFinances) ⇒ Promise * [.getMemberInfo(handle)](#module_services.members..MembersService+getMemberInfo) ⇒ Promise - * [.getListMemberInfo(members)](#module_services.members..MembersService+getListMemberInfo) ⇒ Promise * [.getExternalAccounts(handle)](#module_services.members..MembersService+getExternalAccounts) ⇒ Promise * [.getExternalLinks(handle)](#module_services.members..MembersService+getExternalLinks) ⇒ Promise * [.getSkills(handle)](#module_services.members..MembersService+getSkills) ⇒ Promise @@ -54,7 +53,6 @@ Service class. * [new MembersService(tokenV3)](#new_module_services.members..MembersService_new) * [.getMemberFinances(handle)](#module_services.members..MembersService+getMemberFinances) ⇒ Promise * [.getMemberInfo(handle)](#module_services.members..MembersService+getMemberInfo) ⇒ Promise - * [.getListMemberInfo(members)](#module_services.members..MembersService+getListMemberInfo) ⇒ Promise * [.getExternalAccounts(handle)](#module_services.members..MembersService+getExternalAccounts) ⇒ Promise * [.getExternalLinks(handle)](#module_services.members..MembersService+getExternalLinks) ⇒ Promise * [.getSkills(handle)](#module_services.members..MembersService+getSkills) ⇒ Promise @@ -106,18 +104,6 @@ This method does not require any authorization. | --- | --- | --- | | handle | String | Member handle. | -#### membersService.getListMemberInfo(members) ⇒ Promise -Gets public information on a list member. - -This method does not require any authorization. - -**Kind**: instance method of [MembersService](#module_services.members..MembersService) -**Returns**: Promise - Resolves to the array. - -| Param | Type | Description | -| --- | --- | --- | -| members | Array | Array of member info. | - #### membersService.getExternalAccounts(handle) ⇒ Promise diff --git a/src/services/challenges.js b/src/services/challenges.js index 706c62d4..789970cd 100644 --- a/src/services/challenges.js +++ b/src/services/challenges.js @@ -84,15 +84,6 @@ export function normalizeChallengeDetails(challenge, filtered, user, username) { registrants: challenge.registrants || [], }; - - _.forEach(finalChallenge.registrants, (registrant) => { - if (registrant.memberInfo) { - const { homeCountryCode } = registrant.memberInfo; - // eslint-disable-next-line no-param-reassign - registrant.countryCode = homeCountryCode || registrant.memberInfo.competitionCountryCode; - } - }); - // Winners have different field names, needs to be normalized to match `filtered` and `challenge` finalChallenge.winners = _.map( challenge.winners, @@ -384,8 +375,6 @@ class ChallengesService { const challengeUser = username && await this.getUserChallenges(username, { id: challengeId }) .then(res => res.challenges[0]).catch(() => null); - await this.private.memberService.getListMemberInfo(challenge.registrants || [], false); - const finalChallenge = normalizeChallengeDetails( challenge, challengeFiltered, diff --git a/src/services/members.js b/src/services/members.js index 873ed3ba..c761bdaa 100644 --- a/src/services/members.js +++ b/src/services/members.js @@ -48,25 +48,6 @@ class MembersService { return getApiResponsePayload(res); } - /** - * Gets public information on a list member. - * - * This method does not require any authorization. - * - * @param {Array} members List member info. - * @param {Boolean} shouldThrowError should throw error if request fail - * @return {Promise} Resolves to the data object. - */ - async getListMemberInfo(members, shouldThrowError = true) { - const getHandle = async (member) => { - const result = await this.private.api.get(`/members/${member.handle}`); - // eslint-disable-next-line no-param-reassign - member.memberInfo = await getApiResponsePayload(result, shouldThrowError); - }; - const apis = members.map(member => getHandle(member)); - await Promise.all(apis); - } - /** * Gets member external account info. * @param {String} handle