Sha256: 46499d227bf7549c00af3f6d9d1c786be6e7977157378c6189173208afe20ff4
Contents?: true
Size: 1.15 KB
Versions: 2
Compression:
Stored size: 1.15 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, removeMany: adapter.removeMany, 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
jason-rails-0.4.1 | client/src/createJasonReducers.ts |
jason-rails-0.4.0 | client/src/createJasonReducers.ts |