UNPKG

@stackend/api

Version:

JS bindings to api.stackend.com

55 lines 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Likes = exports.CLEAR_LIKES = exports.RECEIVE_LIKES = exports.UPDATE_LIKE = void 0; exports.UPDATE_LIKE = 'UPDATE_LIKE'; exports.RECEIVE_LIKES = 'RECEIVE_LIKES'; exports.CLEAR_LIKES = 'CLEAR_LIKES'; function Likes(state, action) { if (state === void 0) { state = {}; } switch (action.type) { case exports.CLEAR_LIKES: return {}; // like / unlike case exports.UPDATE_LIKE: { return updateLike(Object.assign({}, state), action.obfuscatedReference, action.likes, action.likedByCurrentUser); } case exports.RECEIVE_LIKES: { if (action.likes) { var x_1 = Object.assign({}, state); Object.keys(action.likes).forEach(function (oRef) { var v = action.likes[oRef]; // Stupid compiler updateLike(x_1, oRef, v.likes, v.likedByCurrentUser); }); return x_1; } } } return state; } exports.Likes = Likes; function updateLike(s, oRef, likes, likedByCurrentUser) { var v = s[oRef]; if (!v) { v = { likes: typeof likes === 'number' ? likes : likedByCurrentUser ? 1 : 0 }; } if (typeof likes === 'number') { v.likes = likes; } if (likedByCurrentUser) { v.likedByCurrentUser = true; } else { delete v.likedByCurrentUser; } if (v.likes == 0 && typeof v.likedByCurrentUser === 'undefined') { delete s[oRef]; } else { s[oRef] = v; } return s; } exports.default = Likes; //# sourceMappingURL=likeReducer.js.map