+104
-0
lines changedFilter options
+104
-0
lines changed Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
1
+
import {
2
+
EDIT_ITEM_EXISTING,
3
+
EDIT_ITEM_UPDATE,
4
+
EDIT_ITEM_STOP
5
+
} from "./editingConstants";
6
+
7
+
8
+
export function editExistingItem(itemType, itemID) {
9
+
return {
10
+
type : EDIT_ITEM_EXISTING,
11
+
payload : {
12
+
itemType,
13
+
itemID
14
+
},
15
+
};
16
+
}
17
+
18
+
export function editItemAttributes(itemType, itemID, newItemAttributes) {
19
+
return {
20
+
type : EDIT_ITEM_UPDATE,
21
+
payload : {
22
+
itemType,
23
+
itemID,
24
+
newItemAttributes,
25
+
},
26
+
};
27
+
}
28
+
29
+
export function stopEditingItem(itemType, itemID) {
30
+
return {
31
+
type : EDIT_ITEM_STOP,
32
+
payload : {
33
+
itemType,
34
+
itemID
35
+
},
36
+
};
37
+
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
1
+
export const EDIT_ITEM_EXISTING = "EDIT_ITEM_EXISTING";
2
+
export const EDIT_ITEM_UPDATE = "EDIT_ITEM_UPDATE";
3
+
export const EDIT_ITEM_STOP = "EDIT_ITEM_STOP";
Original file line number Diff line number Diff line change
@@ -1,7 +1,70 @@
1
1
import {createReducer} from "common/utils/reducerUtils";
2
2
3
+
import {
4
+
createEntity,
5
+
updateEntity,
6
+
deleteEntity
7
+
} from "features/entities/entityReducer";
8
+
9
+
import {
10
+
EDIT_ITEM_EXISTING,
11
+
EDIT_ITEM_UPDATE,
12
+
EDIT_ITEM_STOP
13
+
} from "./editingConstants";
14
+
15
+
16
+
import {selectEntities} from "features/entities/entitySelectors";
17
+
import {selectEditingEntities} from "./editingSelectors";
18
+
import {
19
+
readEntityData,
20
+
updateEditingEntitiesState,
21
+
} from "./editingUtils";
22
+
23
+
24
+
25
+
export function copyEntity(sourceEntities, destinationEntities, payload) {
26
+
const {itemID, itemType} = payload;
27
+
28
+
const newItemAttributes = readEntityData(sourceEntities, itemType, itemID);
29
+
const creationPayload = {itemType, itemID, newItemAttributes}
30
+
31
+
const updatedEntities = createEntity(destinationEntities, creationPayload);
32
+
return updatedEntities;
33
+
}
34
+
35
+
36
+
37
+
38
+
export function editItemExisting(state, payload) {
39
+
const entities = selectEntities(state);
40
+
const editingEntities = selectEditingEntities(state);
41
+
42
+
const updatedEditingEntities = copyEntity(entities, editingEntities, payload);
43
+
44
+
return updateEditingEntitiesState(state, updatedEditingEntities);
45
+
}
46
+
47
+
export function editItemUpdate(state, payload) {
48
+
const editingEntities = selectEditingEntities(state);
49
+
50
+
const updatedEditingEntities = updateEntity(editingEntities, payload);
51
+
return updateEditingEntitiesState(state, updatedEditingEntities);
52
+
}
53
+
54
+
export function editItemStop(state, payload) {
55
+
const editingEntities = selectEditingEntities(state);
56
+
57
+
const updatedEditingEntities = deleteEntity(editingEntities, payload);
58
+
return updateEditingEntitiesState(state, updatedEditingEntities);
59
+
}
60
+
61
+
62
+
3
63
4
64
const editingFeatureReducer = createReducer({}, {
65
+
[EDIT_ITEM_EXISTING] : editItemExisting,
66
+
[EDIT_ITEM_UPDATE] : editItemUpdate,
67
+
[EDIT_ITEM_STOP] : editItemStop,
5
68
});
6
69
7
70
export default editingFeatureReducer;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1
+
export const selectEditingEntities = state => state.editingEntities;
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4