Skip to content
This repository was archived by the owner on Aug 23, 2022. It is now read-only.

Commit 9f777c4

Browse files
authored
Merge pull request #970 from TLadd/master
Split find-key.js to a plain javascript and immutable version
2 parents 5be3ca4 + 4c8fe29 commit 9f777c4

File tree

4 files changed

+36
-16
lines changed

4 files changed

+36
-16
lines changed

src/immutable.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import getValue from './utils/get-value';
1515
import immutableGetFromState from './utils/get-from-immutable-state';
1616
import getForm, { getFormStateKey } from './utils/get-form';
1717
import isPlainObject from './utils/is-plain-object';
18+
import immutableFindKey from './utils/find-key-immutable';
1819
import Immutable from 'immutable';
1920

2021
import {
@@ -73,6 +74,7 @@ const immutableStrategy = {
7374
...baseStrategy,
7475
getForm: immutableGetForm,
7576
getFieldFromState: immutableGetFieldFromState,
77+
findKey: immutableFindKey,
7678
};
7779

7880
function transformAction(action) {

src/utils/find-key-immutable.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import { List } from 'immutable';
2+
3+
export default function findKey(object, predicate) {
4+
let resultKey;
5+
6+
if (List.isList(object)) {
7+
resultKey = object.findKey(predicate);
8+
} else {
9+
Object.keys(object).some((key) => {
10+
const isKey = predicate(object[key], key, object);
11+
12+
if (isKey) {
13+
resultKey = key;
14+
return true;
15+
}
16+
17+
return false;
18+
});
19+
}
20+
21+
return resultKey;
22+
}

src/utils/find-key.js

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
1-
import { List } from 'immutable';
21

32
export default function findKey(object, predicate) {
43
let resultKey;
54

6-
if (List.isList(object)) {
7-
resultKey = object.findKey(predicate);
8-
} else {
9-
Object.keys(object).some((key) => {
10-
const isKey = predicate(object[key], key, object);
5+
Object.keys(object).some((key) => {
6+
const isKey = predicate(object[key], key, object);
117

12-
if (isKey) {
13-
resultKey = key;
14-
return true;
15-
}
8+
if (isKey) {
9+
resultKey = key;
10+
return true;
11+
}
1612

17-
return false;
18-
});
19-
}
13+
return false;
14+
});
2015

2116
return resultKey;
2217
}

src/utils/track.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import findKey from '../utils/find-key';
1+
import _findKey from '../utils/find-key';
22
import _get from '../utils/get';
33
import { createIteratee } from '../utils/iteratee';
44
import isMulti from '../utils/is-multi';
55

66
const defaultStrategy = {
7+
findKey: _findKey,
78
get: _get,
89
};
910

@@ -34,8 +35,8 @@ function createTrack(s = defaultStrategy) {
3435
const predicateIteratee = iteratee(predicate);
3536

3637
const subPath = childModelPath
37-
? `${findKey(subState, predicateIteratee)}.${childModelPath}`
38-
: `${findKey(subState, predicateIteratee)}`;
38+
? `${s.findKey(subState, predicateIteratee)}.${childModelPath}`
39+
: `${s.findKey(subState, predicateIteratee)}`;
3940

4041
subState = s.get(subState, subPath);
4142
fullPath += `.${subPath}`;

0 commit comments

Comments
 (0)