UNPKG

@stackend/api

Version:

JS bindings to api.stackend.com

89 lines 2.79 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.XCAP_VOTES_UPDATE = exports.XCAP_VOTES_RECEIVED = void 0; var immutability_helper_1 = __importDefault(require("immutability-helper")); exports.XCAP_VOTES_RECEIVED = 'XCAP_VOTES_RECEIVED'; exports.XCAP_VOTES_UPDATE = 'XCAP_VOTES_UPDATE'; /** * Update the votes * @param state * @param context * @param voteSummary * @param votes * @param vote * @param hasVoted * @param myReview */ function updateVotes(_a) { var state = _a.state, context = _a.context, voteSummary = _a.voteSummary, votes = _a.votes, vote = _a.vote, hasVoted = _a.hasVoted, myReview = _a.myReview; var x = Object.assign({}, state); if (!x[context]) { x[context] = {}; } var refId = voteSummary.referenceId; if (!x[context][refId]) { x[context][refId] = { voteSummary: voteSummary, votes: {}, hasVoted: false, myReview: null }; } var v = Object.assign({}, x[context][refId]); v.voteSummary = voteSummary; if (votes) { v = (0, immutability_helper_1.default)(v, { votes: { $merge: votes } }); } if (vote) { v.votes[vote.referenceGroupId] = vote; } if (typeof hasVoted === 'boolean') { v.hasVoted = hasVoted; } if (myReview) { if (v.myReview) { console.log('D=', v.myReview.modifiedDate, myReview.modifiedDate); } v.myReview = myReview; } x.n = Math.random(); // Hack to make this update x[context][refId] = v; return x; } var voteReducer = function (state, action) { if (state === void 0) { state = {}; } var c = state; switch (action.type) { case exports.XCAP_VOTES_RECEIVED: c = updateVotes({ state: state, context: action.context, voteSummary: action.voteSummary, votes: action.votes, hasVoted: action.hasVoted, myReview: action.myReview }); break; case exports.XCAP_VOTES_UPDATE: c = updateVotes({ state: state, context: action.context, voteSummary: action.voteSummary, vote: action.vote, hasVoted: action.hasVoted, myReview: action.myReview }); //console.log('XCAP_VOTES_UPDATE', state, c, 'same=', state === c); break; default: break; } return c; }; exports.default = voteReducer; //# sourceMappingURL=voteReducer.js.map