Skip to content

Commit

Permalink
Support for ImmutableJS
Browse files Browse the repository at this point in the history
Related to #278.
  • Loading branch information
zalmoxisus committed Jan 10, 2017
1 parent cd589f4 commit b03991c
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 5 deletions.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,9 @@
"redux": "^3.5.2",
"redux-devtools": "^3.3.1",
"redux-devtools-instrument": "^1.3.3",
"remotedev-app": "^0.10.3",
"remotedev-app": "^0.10.4",
"remotedev-monitor-components": "^0.0.4",
"remotedev-serialize": "^0.1.0",
"remotedev-slider": "^1.1.1",
"remotedev-utils": "0.0.1"
}
Expand Down
11 changes: 10 additions & 1 deletion src/app/api/importState.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
import mapValues from 'lodash/mapValues';
import jsan from 'jsan';
import seralizeImmutable from 'remotedev-serialize/immutable/serialize';

export default function importState(state, { deserializeState, deserializeAction, serialize }) {
if (!state) return undefined;
let parse = serialize ? v => jsan.parse(v, serialize.reviver) : jsan.parse;
let parse = jsan.parse;
if (serialize) {
if (serialize.immutable) {
parse = v => jsan.parse(v, seralizeImmutable(serialize.immutable, serialize.refs).reviver);
} else if (serialize.reviver) {
parse = v => jsan.parse(v, serialize.reviver);
}
}

let preloadedState;
let nextLiftedState = parse(state);
if (nextLiftedState.payload) {
Expand Down
14 changes: 11 additions & 3 deletions src/app/api/index.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import jsan from 'jsan';
import seralizeImmutable from 'remotedev-serialize/immutable/serialize';
import importState from './importState';
import generateId from './generateInstanceId';

Expand All @@ -24,9 +25,16 @@ function stringify(obj, serialize) {
}

export function getSeralizeParameter(config, param) {
if (config.serialize) {
if (!config.serialize.replacer) return { options: config.serialize.options };
return { replacer: config.serialize.replacer, options: config.serialize.options || true };
const serialize = config.serialize;
if (serialize) {
if (serialize.immutable) {
return {
replacer: seralizeImmutable(serialize.immutable, serialize.refs).replacer,
options: serialize.options || true
};
}
if (!serialize.replacer) return { options: serialize.options };
return { replacer: serialize.replacer, options: serialize.options || true };
}

const value = config[param];
Expand Down

0 comments on commit b03991c

Please sign in to comment.