@gudhub/core 1.2.4-beta.20 → 1.2.4-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/GUDHUB/AppProcessor/AppProcessor.js +12 -2
- package/GUDHUB/DataService/AppDataService.js +1 -0
- package/GUDHUB/DataService/IndexedDB/IndexedDBAppService.js +15 -1
- package/GUDHUB/DataService/IndexedDB/appRequestWorker.js +26 -3
- package/GUDHUB/DataService/httpService/AppHttpService.js +1 -1
- package/GUDHUB/ItemProcessor/ItemProcessor.js +5 -0
- package/GUDHUB/Utils/Utils.js +15 -0
- package/GUDHUB/Utils/merge_chunks/merge_chunks.js +4 -0
- package/GUDHUB/gudhub.js +4 -0
- package/package.json +1 -1
- package/umd/appRequestWorker.js +1 -1
- package/umd/library.min.js +1 -1
|
@@ -235,7 +235,7 @@ export class AppProcessor {
|
|
|
235
235
|
// Here we get default user's app
|
|
236
236
|
// We do it here to do it only once
|
|
237
237
|
// We do it because we need to initialize WebSockets, which we do in getApp method
|
|
238
|
-
this.getApp(this.storage.getUser().app_init);
|
|
238
|
+
// this.getApp(this.storage.getUser().app_init); // commented due to unfinished app_init development, its shape causes exceptions
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
return app_list;
|
|
@@ -288,6 +288,8 @@ export class AppProcessor {
|
|
|
288
288
|
// This code for trash must be changed
|
|
289
289
|
// return trash ? app : {...app, items_list: app.items_list.filter(item => !item.trash)};
|
|
290
290
|
let filtered = trash ? app : {...app, items_list: app.items_list.filter(item => !item.trash)};
|
|
291
|
+
filtered = trash ? filtered : {...filtered, field_list: filtered.field_list.filter(f => !f.trash)};
|
|
292
|
+
|
|
291
293
|
resolve(filtered);
|
|
292
294
|
|
|
293
295
|
self.saveAppInStorage(filtered);
|
|
@@ -344,7 +346,15 @@ export class AppProcessor {
|
|
|
344
346
|
}
|
|
345
347
|
|
|
346
348
|
async handleAppChange(id, prevVersion, nextVersion) {
|
|
347
|
-
|
|
349
|
+
let res1 = this.util.areViewListsEqual(prevVersion.views_list, nextVersion.views_list);
|
|
350
|
+
let res2 = this.util.areFieldListsEqual(prevVersion.field_list, nextVersion.field_list);
|
|
351
|
+
|
|
352
|
+
if (
|
|
353
|
+
res1 ||
|
|
354
|
+
res2
|
|
355
|
+
) {
|
|
356
|
+
this.updateAppFieldsAndViews({id, views_list: nextVersion.views_list, field_list: nextVersion.field_list});
|
|
357
|
+
}
|
|
348
358
|
}
|
|
349
359
|
|
|
350
360
|
clearAppProcessor() {
|
|
@@ -486,7 +486,7 @@ export class IndexedDBAppService extends AppDataService {
|
|
|
486
486
|
constructor(req, conf, gudhub) {
|
|
487
487
|
super(req, conf, gudhub);
|
|
488
488
|
|
|
489
|
-
this.dataService = new AppHttpService(req, conf, gudhub)
|
|
489
|
+
this.dataService = new AppHttpService(req, conf, gudhub);// TODO isnt used in class. Why?
|
|
490
490
|
|
|
491
491
|
// let indexDBService = new IndexedDBService(conf);
|
|
492
492
|
|
|
@@ -553,6 +553,20 @@ export class IndexedDBAppService extends AppDataService {
|
|
|
553
553
|
) {
|
|
554
554
|
// if (id == e.data.id) {
|
|
555
555
|
self.gudhub.itemProcessor.handleDiff(e.data.id, e.data.compareRes);
|
|
556
|
+
|
|
557
|
+
|
|
558
|
+
if (
|
|
559
|
+
e.data.viewListChanged ||
|
|
560
|
+
e.data.fieldListChanged
|
|
561
|
+
) {
|
|
562
|
+
self.gudhub.appProcessor.updateAppFieldsAndViews(e.data.newVersion);
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
//here
|
|
569
|
+
|
|
556
570
|
// }
|
|
557
571
|
}
|
|
558
572
|
|
|
@@ -17,6 +17,9 @@ let appDataService = {};
|
|
|
17
17
|
self.onmessage = async function(e) {
|
|
18
18
|
if (e.data.type === 'init') {
|
|
19
19
|
|
|
20
|
+
|
|
21
|
+
e.data.gudhubSerialized.options.initWebsocket = false;
|
|
22
|
+
|
|
20
23
|
gudhub = new GudHub(e.data.gudhubSerialized.authKey, e.data.gudhubSerialized.options);
|
|
21
24
|
appDataService = new IndexedDBAppServiceForWorker(gudhub.req, appsConf, gudhub);
|
|
22
25
|
|
|
@@ -30,18 +33,38 @@ self.onmessage = async function(e) {
|
|
|
30
33
|
|
|
31
34
|
let cached = await appDataService.getCached(e.data.id);
|
|
32
35
|
|
|
33
|
-
let
|
|
36
|
+
let nextVersion = await appDataService.getApp(e.data.id);
|
|
34
37
|
|
|
35
38
|
|
|
36
39
|
|
|
37
40
|
|
|
38
41
|
|
|
39
42
|
// let comparison = gudhub.compareItems(cached.items_list, newVersion.items_list);
|
|
40
|
-
let comparison = gudhub.compareItems(
|
|
43
|
+
let comparison = gudhub.compareItems(nextVersion.items_list, cached.items_list);
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
// async handleAppChange(id, prevVersion, nextVersion) {
|
|
47
|
+
let flag1 = gudhub.util.areViewListsEqual(cached.views_list, nextVersion.views_list);
|
|
48
|
+
let flag2 = gudhub.util.areFieldListsEqual(cached.field_list, nextVersion.field_list);
|
|
49
|
+
|
|
50
|
+
// if (
|
|
51
|
+
// res1 ||
|
|
52
|
+
// res2
|
|
53
|
+
// ) {
|
|
54
|
+
// this.updateAppFieldsAndViews({id, views_list: nextVersion.views_list, field_list: nextVersion.field_list});
|
|
55
|
+
// }
|
|
56
|
+
// }
|
|
41
57
|
|
|
42
58
|
|
|
43
59
|
|
|
44
|
-
this.postMessage({
|
|
60
|
+
this.postMessage({
|
|
61
|
+
id: e.data.id,
|
|
62
|
+
compareRes: comparison,
|
|
63
|
+
newVersion: nextVersion,
|
|
64
|
+
type: e.data.type,
|
|
65
|
+
viewListChanged: flag1,
|
|
66
|
+
fieldListChanged: flag2,
|
|
67
|
+
});
|
|
45
68
|
|
|
46
69
|
|
|
47
70
|
|
|
@@ -21,7 +21,7 @@ export class AppHttpService extends AppDataService {
|
|
|
21
21
|
|
|
22
22
|
async getApp(id) {
|
|
23
23
|
let sentData = await this.appApi.getApp(id);
|
|
24
|
-
return this.processRequestedApp(id, sentData)
|
|
24
|
+
return this.processRequestedApp(id, sentData); //TODO check is it ok to trigger change isnide method for AppHttpService
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
//TODO should be getApp and getAppAndProcessData - refactor whole code to use them
|
|
@@ -119,6 +119,8 @@ export class ItemProcessor {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
//here
|
|
122
|
+
|
|
123
|
+
/////
|
|
122
124
|
handleItemsChange(id, prevVersion, nextVersion) {
|
|
123
125
|
let compareRes = this.util.compareItems(prevVersion.items_list, nextVersion.items_list);
|
|
124
126
|
|
|
@@ -126,11 +128,14 @@ export class ItemProcessor {
|
|
|
126
128
|
this.addItemsToStorage(id, compareRes.new_src_items);
|
|
127
129
|
}
|
|
128
130
|
|
|
131
|
+
|
|
132
|
+
//
|
|
129
133
|
triggerItemsChange(id, compareRes) {
|
|
130
134
|
this.updateItemsInStorage(id, compareRes.diff_src_items);
|
|
131
135
|
this.addItemsToStorage(id, compareRes.new_src_items);
|
|
132
136
|
}
|
|
133
137
|
|
|
138
|
+
//
|
|
134
139
|
handleDiff(id, compare) {
|
|
135
140
|
this.updateItemsInStorage(id, compare.diff_src_items);
|
|
136
141
|
this.addItemsToStorage(id, compare.new_src_items);
|
package/GUDHUB/Utils/Utils.js
CHANGED
|
@@ -207,10 +207,25 @@ export class Utils {
|
|
|
207
207
|
return this.AppsTemplateService.createItems(create_apps, maxNumberOfInsstalledItems);
|
|
208
208
|
}
|
|
209
209
|
|
|
210
|
+
areViewListsEqual(list1, list2) {
|
|
211
|
+
let sortedList1 = list1.sort((e1, e2) => e1.view_id - e2.view_id);
|
|
212
|
+
let sortedList2 = list2.sort((e1, e2) => e1.view_id - e2.view_id);
|
|
213
|
+
|
|
214
|
+
return this.compareObjects(sortedList1, sortedList2);
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
areFieldListsEqual(list1, list2) {
|
|
218
|
+
let sortedList1 = list1.sort((e1, e2) => e1.field_id - e2.field_id);
|
|
219
|
+
let sortedList2 = list2.sort((e1, e2) => e1.field_id - e2.field_id);
|
|
220
|
+
|
|
221
|
+
return this.compareObjects(sortedList1, sortedList2);
|
|
222
|
+
}
|
|
223
|
+
|
|
210
224
|
compareObjects(obj1, obj2) {
|
|
211
225
|
return compareObjects(obj1, obj2);
|
|
212
226
|
}
|
|
213
227
|
|
|
228
|
+
//
|
|
214
229
|
compareAppsItemsLists(items_list1, items_list2, callback) {
|
|
215
230
|
const chunkWorkerBlob = new Blob([compare_items_lists_Worker()], {
|
|
216
231
|
type: "application/javascript",
|
|
@@ -5,6 +5,10 @@ import { mergeChunks as mergeChunksByMainThread, mergeChunksWorker } from "./mer
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
export function mergeChunks(chunks) {
|
|
8
|
+
//dont launch new thread because already used in worker.
|
|
9
|
+
// Main reason is that renderer process allocates memory for structured clones for communication between trheads
|
|
10
|
+
return mergeChunksByMainThread(chunks);
|
|
11
|
+
|
|
8
12
|
if (
|
|
9
13
|
typeof Worker !== 'undefined'
|
|
10
14
|
) {
|
package/GUDHUB/gudhub.js
CHANGED
|
@@ -242,12 +242,16 @@ export class GudHub {
|
|
|
242
242
|
return this.util.sortItems(items, options);
|
|
243
243
|
}
|
|
244
244
|
|
|
245
|
+
|
|
246
|
+
//
|
|
245
247
|
//here
|
|
246
248
|
triggerAppChange(id, prevVersion, newVersion) {
|
|
247
249
|
this.itemProcessor.handleItemsChange(id, prevVersion, newVersion);
|
|
248
250
|
this.appProcessor.handleAppChange(id, prevVersion, newVersion);
|
|
249
251
|
}
|
|
250
252
|
|
|
253
|
+
|
|
254
|
+
//
|
|
251
255
|
//TODO handleAppChange
|
|
252
256
|
triggerIemsChange(id, compareRes) {
|
|
253
257
|
this.itemProcessor.triggerItemsChange(id, compareRes);
|