UNPKG

@stackend/api

Version:

JS bindings to api.stackend.com

128 lines 5.76 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.RECEIVE_RESOURCE_USAGE = exports.REMOVE_COMMUNITY = exports.REMOVE_COMMUNITIES = exports.SET_COMMUNITY_SETTINGS = exports.UPDATE_COMMUNITY = exports.RECEIVE_COMMUNITIES = exports.REQUEST_COMMUNITIES = exports.KEY = void 0; // @flow var immutability_helper_1 = __importDefault(require("immutability-helper")); var api_1 = require("../api"); exports.KEY = 'COMMUNITIES'; exports.REQUEST_COMMUNITIES = 'REQUEST_COMMUNITIES'; exports.RECEIVE_COMMUNITIES = 'RECEIVE_COMMUNITIES'; exports.UPDATE_COMMUNITY = 'UPDATE_COMMUNITY'; exports.SET_COMMUNITY_SETTINGS = 'SET_COMMUNITY_SETTINGS'; exports.REMOVE_COMMUNITIES = 'REMOVE_COMMUNITIES'; exports.REMOVE_COMMUNITY = 'REMOVE_COMMUNITY'; exports.RECEIVE_RESOURCE_USAGE = 'RECEIVE_RESOURCE_USAGE'; //Reducer function communityReducer(state, action) { var _a; var _b; if (state === void 0) { state = { objectsRequiringModeration: {} }; } switch (action.type) { case exports.REQUEST_COMMUNITIES: return Object.assign({}, state, { isFetching: true, didInvalidate: false }); case exports.RECEIVE_COMMUNITIES: return Object.assign({}, state, { isFetching: false, didInvalidate: false, lastUpdated: action.receivedAt, communities: action.json.results, statistics: action.json.statistics }); case exports.UPDATE_COMMUNITY: { var u = action.community; if (state.communities) { var entries = state.communities.entries; var found = false; for (var i = 0; i < entries.length; i++) { var e = entries[i]; if (e.id === u.id) { found = true; e.name = u.name; e.description = u.description; e.status = u.status; e.domains = u.domains; break; } } if (!found) { entries.push(action.community); } var newCommunities = Object.assign({}, state.communities); return (0, immutability_helper_1.default)(state, { isFetching: { $set: false }, didInvalidate: { $set: false }, lastUpdated: { $set: action.receivedAt }, communities: { $set: newCommunities } }); } return state; } case exports.SET_COMMUNITY_SETTINGS: { var objectsRequiringModeration = state.objectsRequiringModeration; var communities = state.communities; if (action.community) { // FIXME: Use of window still needed for xcap.js and old javascripts if ((0, api_1.isRunningInBrowser)()) { window.xcapCommunityName = action.community.name; window.xcapCommunityPermalink = action.community.permalink; } objectsRequiringModeration = Object.assign({}, state.objectsRequiringModeration, (_a = {}, _a[action.community.id] = action.objectsRequiringModeration || 0, _a)); // May also update a community in the list if (state.communities) { var c = (_b = state.communities) === null || _b === void 0 ? void 0 : _b.entries.find(function (c) { return c.id === action.community.id; }); if (c) { Object.assign(c, action.community); } communities = Object.assign({}, communities); } } return (0, immutability_helper_1.default)(state, { community: { $set: action.community || null }, communities: { $set: communities }, objectsRequiringModeration: { $set: objectsRequiringModeration } }); } case exports.REMOVE_COMMUNITIES: //window.xcapCommunityName = ''; //window.xcapCommunityPermalink = ''; return { objectsRequiringModeration: {} }; case exports.REMOVE_COMMUNITY: { var objectsRequiringModeration = state.objectsRequiringModeration; if (state.community) { objectsRequiringModeration = Object.assign({}, state.objectsRequiringModeration); delete objectsRequiringModeration[state.community.id]; } return (0, immutability_helper_1.default)(state, { community: { $set: null }, objectsRequiringModeration: { $set: objectsRequiringModeration } }); } case exports.RECEIVE_RESOURCE_USAGE: return (0, immutability_helper_1.default)(state, { resourceUsage: { $set: { maximumUseBeforeCharge: action.maximumUseBeforeCharge, resourceUsageLast30Days: action.resourceUsageLast30Days, hasPaymentMethod: action.hasPaymentMethod, isUserExcludedFromBilling: action.isUserExcludedFromBilling } } }); default: return state; } } exports.default = communityReducer; //# sourceMappingURL=communityReducer.js.map