Sha256: 0ddb79eab13cced7a052bd642a5d07df22ff40144438148474d42ebfdcd03ecd
Contents?: true
Size: 1.12 KB
Versions: 1
Compression:
Stored size: 1.12 KB
Contents
import { createEntityAdapter, createSlice } from '@reduxjs/toolkit' import pluralize from 'pluralize' import _ from 'lodash' function generateSlices(schema) { const sliceNames = schema.map(k => pluralize(k)) const adapter = createEntityAdapter() return _.fromPairs(_.map(sliceNames, name => { return [name, createSlice({ name, initialState: adapter.getInitialState(), reducers: { upsert: adapter.upsertOne, upsertMany: adapter.upsertMany, add: adapter.addOne, setAll: adapter.setAll, remove: adapter.removeOne, movePriority: (s, { payload: { id, priority, parentFilter } }) => { // Get IDs and insert our item at the new index var affectedIds = _.orderBy(_.filter(_.values(s.entities), parentFilter).filter(e => e.id !== id), 'priority').map(e => e.id) affectedIds.splice(priority, 0, id) // Apply update affectedIds.forEach((id, i) => (s.entities[id] as any).priority = i) } } }).reducer] })) } export default function createJasonReducers(schema) { return generateSlices(_.keys(schema)) }
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jason-rails-0.3.0 | client/src/createJasonReducers.ts |