Skip to content

Commit 376ce4c

Browse files
committed
updated Cosync Storage asset listener
1 parent d73649b commit 376ce4c

File tree

1 file changed

+57
-7
lines changed
  • CosyncStorage/ReactNative-Expo/CosyncStorageExpo/screens

1 file changed

+57
-7
lines changed

CosyncStorage/ReactNative-Expo/CosyncStorageExpo/screens/Asset.js

Lines changed: 57 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ const Asset = props => {
7878

7979
console.log('loadAllAssets .... sortedAssetsPublic ', sortedAssetsPublic.length);
8080

81-
assetsPublic.removeListener(assetsEventListener);
82-
assetsPublic.addListener(assetsEventListener);
81+
assetsPublic.removeListener(changeAssetEvent);
82+
assetsPublic.addListener(changeAssetEvent);
8383

8484
sortedAssetsPublic.forEach(element => {
8585
if(element.status == "active"){
@@ -95,8 +95,8 @@ const Asset = props => {
9595
console.log('loadAllAssets .... assetsPrivate ', assetsPrivate.length);
9696

9797
let sortedResult = assetsPrivate.sorted("createdAt", false);
98-
assetsPrivate.removeListener(assetsEventListener);
99-
assetsPrivate.addListener(assetsEventListener);
98+
assetsPrivate.removeListener(changeAssetEvent);
99+
assetsPrivate.addListener(changeAssetEvent);
100100

101101
sortedResult.forEach(element => {
102102
if(element.status == "active"){
@@ -112,6 +112,28 @@ const Asset = props => {
112112
setLoading(false);
113113

114114

115+
}
116+
117+
function changeAssetEvent(assets, changes){
118+
119+
if(changes.insertions.length || changes.modifications.length || changes.deletions.length){
120+
121+
setAssetList(prevItems => {
122+
return [];
123+
});
124+
125+
assets.forEach(element => {
126+
127+
if(element.status == "active"){
128+
let item = element;
129+
item.id = element._id.toString();
130+
131+
setAssetList(prevItems => {
132+
return [item, ...prevItems];
133+
});
134+
}
135+
});
136+
}
115137
}
116138

117139
function assetsEventListener(assets, changes) {
@@ -130,12 +152,29 @@ const Asset = props => {
130152
});
131153

132154
changes.modifications.forEach((index) => {
155+
133156
let item = assets[index];
134157
console.log("modifications ", item.status);
158+
console.log("modifications: id ", item._id)
159+
console.log("modifications: assetList ", assetList.length)
160+
135161
if(item.status != 'active'){
136-
item.id = item._id.toString();
137-
assetList = assetList.filter(asset => asset._id != item._id);
138-
setAssetList(assetList);
162+
let itemId = item._id.toString();
163+
setAssetList(existingItems => {
164+
165+
console.log("existingItems ", existingItems.length);
166+
167+
return existingItems.filter((asset) => {
168+
169+
170+
console.log("existingItems asset ", asset._id);
171+
172+
173+
asset._id !== itemId
174+
});
175+
});
176+
177+
139178
}
140179
else if(item.status == 'active'){
141180
item.id = item._id.toString();
@@ -145,6 +184,17 @@ const Asset = props => {
145184
}
146185

147186
});
187+
188+
changes.deletions.forEach((index) => {
189+
190+
191+
setAssetList(existingItems => {
192+
console.log("existingItems ", existingItems.length);
193+
194+
return existingItems.filter((item, i) => i !== index);
195+
})
196+
197+
});
148198

149199
}
150200

0 commit comments

Comments
 (0)