@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.
@@ -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
- // generate required events etc, do job
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() {
@@ -119,6 +119,7 @@ export class AppDataService extends DataService {
119
119
  ]);
120
120
 
121
121
 
122
+ //TODO check this for AppHttpService, seems isnt necessary
122
123
  // this.gudhub.triggerAppChange(id, cachedVersion, sentData);
123
124
 
124
125
 
@@ -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 newVersion = await appDataService.getApp(e.data.id);
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(newVersion.items_list, cached.items_list);
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({id: e.data.id, compareRes: comparison, newVersion, type: e.data.type});
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);// here is a problem. IndexedDB App service has Data service AppHttpService
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);
@@ -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);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gudhub/core",
3
- "version": "1.2.4-beta.20",
3
+ "version": "1.2.4-beta.22",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {