UNPKG

@uimkit/uikit-react

Version:

<img style="width:64px" src="https://mgmt.uimkit.chat/media/img/avatar.png"/>

72 lines (69 loc) 2.83 kB
import { __assign, __spreadArray } from 'tslib'; import '../../types/models.js'; import '../../types/events.js'; import { AccountListActionType } from './actions.js'; var createInitialState = function () { return ({ fetchingRequest: null, accounts: [] }); }; var createAccountListReducer = function () { return function (state, action) { if (state === void 0) { state = createInitialState(); } switch (action.type) { case AccountListActionType.ACCOUNT_FETCHED: { return handleAccountFetched(state, action.payload); } case AccountListActionType.FETCHING_ACCOUNT_LIST: { return handleFetchingAccountList(state, action.payload); } case AccountListActionType.ACCOUNT_LIST_FETCHED: { return handleAccountListFetched(state, action.payload); } case AccountListActionType.ERROR_FETCHING_ACCOUNT_LIST: { return __assign(__assign({}, state), { fetchingRequest: null }); } default: return state; } }; }; var handleAccountFetched = function (state, payload) { var accounts = state.accounts; var idx = accounts.findIndex(function (it) { return it.id === payload.id; }); if (idx < 0) { accounts.push(payload); } else { accounts[idx] = __assign(__assign({}, accounts[idx]), payload); } accounts.sort(function (a, b) { return b.created_at - a.created_at; }); accounts = __spreadArray([], accounts, true); return __assign(__assign({}, state), { accounts: accounts }); }; var handleFetchingAccountList = function (state, payload) { return __assign(__assign({}, state), { fetchingRequest: payload }); }; var handleAccountListFetched = function (state, payload) { var accounts = state.accounts; var request = payload.request, response = payload.response; var offset = request.offset; var data = response.data; var accountIndexes = {}; accounts.forEach(function (it, idx) { return accountIndexes[it.id] = idx; }); // 有offset是查询更多,追加结果;没有offset是重新查询,重置结果 var results = !!offset ? __spreadArray([], accounts, true) : []; data.forEach(function (it) { var idx = accountIndexes[it.id]; var acct = idx === undefined ? it : __assign(__assign({}, accounts[idx]), it); if (!!offset && idx !== undefined) { results[idx] = acct; } else { results.push(acct); } }); // 排序 results.sort(function (a, b) { return b.created_at - a.created_at; }); return __assign(__assign({}, state), { fetchingRequest: null, accounts: results }); }; var AccountListReducer = createAccountListReducer(); export { AccountListReducer, createAccountListReducer }; //# sourceMappingURL=reducers.js.map