@subiz/widget-v4 4.1.156 → 4.1.158

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.
Files changed (106) hide show
  1. package/assets/less/message.less +6 -0
  2. package/compiled_src/chatbox/ChatButton.js +1 -1
  3. package/compiled_src/chatbox/Event.js +6 -1
  4. package/compiled_src/store/kv.js +0 -2
  5. package/compiled_src/store/store.js +7 -1
  6. package/package.json +1 -1
  7. package/src/chatbox/ChatButton.js +1 -1
  8. package/src/chatbox/Event.js +6 -0
  9. package/src/store/kv.js +11 -14
  10. package/src/store/store.js +5 -1
  11. package/dist/127.js +0 -273
  12. package/dist/132.js +0 -2802
  13. package/dist/185.js +0 -1827
  14. package/dist/1986e37f014.127.js +0 -1
  15. package/dist/1986e37f014.132.js +0 -1
  16. package/dist/1986e37f014.185.js +0 -1
  17. package/dist/1986e37f014.27.js +0 -1
  18. package/dist/1986e37f014.278.js +0 -1
  19. package/dist/1986e37f014.339.js +0 -1
  20. package/dist/1986e37f014.459.js +0 -1
  21. package/dist/1986e37f014.490.js +0 -1
  22. package/dist/1986e37f014.74.js +0 -1
  23. package/dist/1986e37f014.997.js +0 -1
  24. package/dist/1986e37f014.app.js +0 -1
  25. package/dist/1986e37f014.chat.html +0 -1
  26. package/dist/1986e37f014.chat.js +0 -1
  27. package/dist/1986e37f014.form.html +0 -1
  28. package/dist/1986e37f014.form.js +0 -1
  29. package/dist/1986e37f014.index.html +0 -71
  30. package/dist/1986e37f014.library.html +0 -71
  31. package/dist/1986e37f014.library.js +0 -1
  32. package/dist/1986e37f014.preview.html +0 -759
  33. package/dist/1986e37f014.preview.js +0 -1
  34. package/dist/1986e37f014.webview.js +0 -1
  35. package/dist/27.js +0 -107
  36. package/dist/278.js +0 -417
  37. package/dist/459.js +0 -107
  38. package/dist/490.js +0 -305
  39. package/dist/74.js +0 -372
  40. package/dist/997.js +0 -107
  41. package/dist/HASH +0 -1
  42. package/dist/assets/img/Facebook.64607ec.png +0 -0
  43. package/dist/assets/img/Zalo.6845707.png +0 -0
  44. package/dist/assets/img/award1a.1a58e10.png +0 -0
  45. package/dist/assets/img/award3a.3b74423.png +0 -0
  46. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  47. package/dist/assets/img/award5.39eb7ae.png +0 -0
  48. package/dist/assets/img/bubble_default.7d5e4ab.svg +0 -20
  49. package/dist/assets/img/caret.998eb8f.svg +0 -1
  50. package/dist/assets/img/convos_empty.2353007.svg +0 -72
  51. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  52. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  53. package/dist/assets/img/done_gray.d7e8203.svg +0 -4
  54. package/dist/assets/img/done_green.b817fd4.svg +0 -4
  55. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  56. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  57. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  58. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  59. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  60. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  61. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  62. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  63. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  64. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  65. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  66. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  67. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  68. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  69. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  70. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  71. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  72. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  73. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  74. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  75. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  76. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  77. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  78. package/dist/assets/img/empty.29bed2d.svg +0 -23
  79. package/dist/assets/img/empty_1.0b98af0.svg +0 -11
  80. package/dist/assets/img/examplte_logo.f86535f.svg +0 -1
  81. package/dist/assets/img/external-link.90577cc.svg +0 -1
  82. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  83. package/dist/assets/img/ghn.070f8e3.svg +0 -17
  84. package/dist/assets/img/ghtk.326eac1.svg +0 -18
  85. package/dist/assets/img/image_default.be0698b.png +0 -0
  86. package/dist/assets/img/info.ebce7ea.svg +0 -1
  87. package/dist/assets/img/loader.37000a7.svg +0 -1
  88. package/dist/assets/img/loading_static.a27f0ac.svg +0 -10
  89. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  90. package/dist/assets/img/main-service2.9b99549.png +0 -0
  91. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  92. package/dist/assets/img/package.8d37d0f.svg +0 -5
  93. package/dist/assets/img/package_fade.763c001.svg +0 -1
  94. package/dist/assets/img/rating--average.1ea492c.svg +0 -12
  95. package/dist/assets/img/rating--great.e3d712e.svg +0 -16
  96. package/dist/assets/img/rating--poor.2938a25.svg +0 -12
  97. package/dist/assets/img/search.f9705ff.svg +0 -1
  98. package/dist/assets/img/send.6db52a9.svg +0 -3
  99. package/dist/assets/img/shop.f7dc7d8.svg +0 -1
  100. package/dist/assets/img/shop_faded.df7845a.svg +0 -1
  101. package/dist/assets/img/stars_v2.79cf728.png +0 -0
  102. package/dist/assets/img/subiz-mono.8fbc067.svg +0 -3
  103. package/dist/assets/img/x.26fdfa3.svg +0 -5
  104. package/dist/malicious-app.js +0 -17
  105. package/dist/screenshoot.html +0 -7
  106. package/dist/screenshoot.js +0 -11708
@@ -897,12 +897,18 @@ a.product_attachment__title {
897
897
  .message-event-action-btn-svg.dislike {
898
898
  background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9IiM2Yzc1N2QiICBzdHJva2Utd2lkdGg9IjIiICBzdHJva2UtbGluZWNhcD0icm91bmQiICBzdHJva2UtbGluZWpvaW49InJvdW5kIiAgY2xhc3M9Imljb24gaWNvbi10YWJsZXIgaWNvbnMtdGFibGVyLW91dGxpbmUgaWNvbi10YWJsZXItdGh1bWItZG93biI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTcgMTN2LThhMSAxIDAgMCAwIC0xIC0xaC0yYTEgMSAwIDAgMCAtMSAxdjdhMSAxIDAgMCAwIDEgMWgzYTQgNCAwIDAgMSA0IDR2MWEyIDIgMCAwIDAgNCAwdi01aDNhMiAyIDAgMCAwIDIgLTJsLTEgLTVhMiAzIDAgMCAwIC0yIC0yaC03YTMgMyAwIDAgMCAtMyAzIiAvPjwvc3ZnPgo=');
899
899
  }
900
+ .message-event-action-btn-svg.info {
901
+ background-image: url('data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiM2Yzc1N2QiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgMTJhOSA5IDAgMSAwIDE4IDBhOSA5IDAgMCAwIC0xOCAwIiAvPgogIDxwYXRoIGQ9Ik0xMiA5aC4wMSIgLz4KICA8cGF0aCBkPSJNMTEgMTJoMXY0aDEiIC8+Cjwvc3ZnPgo=');
902
+ }
900
903
  .message-event-action-btn:hover .message-event-action-btn-svg.like {
901
904
  background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9ImJsYWNrIiAgc3Ryb2tlLXdpZHRoPSIyIiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLXRodW1iLXVwIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNNyAxMXY4YTEgMSAwIDAgMSAtMSAxaC0yYTEgMSAwIDAgMSAtMSAtMXYtN2ExIDEgMCAwIDEgMSAtMWgzYTQgNCAwIDAgMCA0IC00di0xYTIgMiAwIDAgMSA0IDB2NWgzYTIgMiAwIDAgMSAyIDJsLTEgNWEyIDMgMCAwIDEgLTIgMmgtN2EzIDMgMCAwIDEgLTMgLTMiIC8+PC9zdmc+Cg==');
902
905
  }
903
906
  .message-event-action-btn:hover .message-event-action-btn-svg.dislike {
904
907
  background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9Im5vbmUiICBzdHJva2U9ImJsYWNrIiAgc3Ryb2tlLXdpZHRoPSIyIiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiAgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIgIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb25zLXRhYmxlci1vdXRsaW5lIGljb24tdGFibGVyLXRodW1iLWRvd24iPjxwYXRoIHN0cm9rZT0ibm9uZSIgZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPjxwYXRoIGQ9Ik03IDEzdi04YTEgMSAwIDAgMCAtMSAtMWgtMmExIDEgMCAwIDAgLTEgMXY3YTEgMSAwIDAgMCAxIDFoM2E0IDQgMCAwIDEgNCA0djFhMiAyIDAgMCAwIDQgMHYtNWgzYTIgMiAwIDAgMCAyIC0ybC0xIC01YTIgMyAwIDAgMCAtMiAtMmgtN2EzIDMgMCAwIDAgLTMgMyIgLz48L3N2Zz4K');
905
908
  }
909
+ .message-event-action-btn:hover .message-event-action-btn-svg.info {
910
+ background-image: url('data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iMjQiCiAgaGVpZ2h0PSIyNCIKICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgZmlsbD0ibm9uZSIKICBzdHJva2U9IiMwMDAiCiAgc3Ryb2tlLXdpZHRoPSIyIgogIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICBzdHJva2UtbGluZWpvaW49InJvdW5kIgo+CiAgPHBhdGggZD0iTTMgMTJhOSA5IDAgMSAwIDE4IDBhOSA5IDAgMCAwIC0xOCAwIiAvPgogIDxwYXRoIGQ9Ik0xMiA5aC4wMSIgLz4KICA8cGF0aCBkPSJNMTEgMTJoMXY0aDEiIC8+Cjwvc3ZnPgo=');
911
+ }
906
912
  .message-event-action-btn.active .message-event-action-btn-svg.like {
907
913
  background-image: url('data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgd2lkdGg9IjI0IiAgaGVpZ2h0PSIyNCIgIHZpZXdCb3g9IjAgMCAyNCAyNCIgIGZpbGw9IiMzNEM3NTkiICBjbGFzcz0iaWNvbiBpY29uLXRhYmxlciBpY29ucy10YWJsZXItZmlsbGVkIGljb24tdGFibGVyLXRodW1iLXVwIj48cGF0aCBzdHJva2U9Im5vbmUiIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNMTMgM2EzIDMgMCAwIDEgMi45OTUgMi44MjRsLjAwNSAuMTc2djRoMmEzIDMgMCAwIDEgMi45OCAyLjY1bC4wMTUgLjE3NGwuMDA1IC4xNzZsLS4wMiAuMTk2bC0xLjAwNiA1LjAzMmMtLjM4MSAxLjYyNiAtMS41MDIgMi43OTYgLTIuODEgMi43OGwtLjE2NCAtLjAwOGgtOGExIDEgMCAwIDEgLS45OTMgLS44ODNsLS4wMDcgLS4xMTdsLjAwMSAtOS41MzZhMSAxIDAgMCAxIC41IC0uODY1YTIuOTk4IDIuOTk4IDAgMCAwIDEuNDkyIC0yLjM5N2wuMDA3IC0uMjAydi0xYTMgMyAwIDAgMSAzIC0zeiIgLz48cGF0aCBkPSJNNSAxMGExIDEgMCAwIDEgLjk5MyAuODgzbC4wMDcgLjExN3Y5YTEgMSAwIDAgMSAtLjg4MyAuOTkzbC0uMTE3IC4wMDdoLTFhMiAyIDAgMCAxIC0xLjk5NSAtMS44NWwtLjAwNSAtLjE1di03YTIgMiAwIDAgMSAxLjg1IC0xLjk5NWwuMTUgLS4wMDVoMXoiIC8+PC9zdmc+Cg==');
908
914
  }
@@ -193,7 +193,7 @@ class ChatButton extends _common.Com {
193
193
  if (!agent) agent = this.props.store.matchAgent('*')[byid] || {};
194
194
  agent = _index.default.cloneDeep(agent);
195
195
  agent.fullname = agent.fullname || _index.default.get(account, 'name') || this.props.t('agent');
196
- agent.avatar_url = agent.avatar_url || defaultAvatar;
196
+ agent.avatar_url = agent.avatar_url || account.logo_url || require('../../assets/img/image_default.png');
197
197
  let position = _index.default.get(accountSetting, 'desktop_button.position') || 'right';
198
198
  if (this.props.store.isMobile()) {
199
199
  position = _index.default.get(accountSetting, 'mobile_button.position') || position;
@@ -480,7 +480,12 @@ class Event extends _common.Com {
480
480
  onClick: () => this.onSendReaction(hasDislike ? 'remove_dislike' : 'dislike')
481
481
  }, (0, _preact.h)("div", {
482
482
  class: "message-event-action-btn-svg dislike"
483
- }), " Bad"));
483
+ }), " Bad"), (0, _preact.h)("div", {
484
+ class: "message-event-action-btn message-event-action-btn__dev",
485
+ onClick: () => this.props.store.onShowMessageInfo(ev.id)
486
+ }, (0, _preact.h)("div", {
487
+ class: "message-event-action-btn-svg info"
488
+ }), " Info"));
484
489
  }
485
490
  renderUpdateConvo(ev) {
486
491
  var state = _index.default.get(ev, 'data.conversation.state');
@@ -27,7 +27,6 @@ class _default {
27
27
  init() {
28
28
  if (this.initialized) return;
29
29
  let inmemItemM = {};
30
- console.time('KV' + this.name);
31
30
  let allitems = this.db.all('items');
32
31
  allitems.forEach(function (item) {
33
32
  inmemItemM[item.key] = item.value;
@@ -47,7 +46,6 @@ class _default {
47
46
  this.db.removes('items', [removekeys]);
48
47
  }
49
48
  this.initialized = true;
50
- console.timeEnd('KV' + this.name);
51
49
  }
52
50
  all() {
53
51
  if (this.dead) return [];
@@ -345,6 +345,12 @@ class Store {
345
345
  await this.reconnect();
346
346
  _index.default.setTimeout(this.pubsub.publish('resetCSS'), 10);
347
347
  }
348
+ onShowMessageInfo(evid) {
349
+ this.pubsub.publish('events', {
350
+ type: 'show_event_info',
351
+ id: evid
352
+ });
353
+ }
348
354
  getDeviceInfo() {
349
355
  let device = {
350
356
  screen_resolution: window.screen.width + 'x' + window.screen.height,
@@ -892,9 +898,9 @@ class Store {
892
898
  traffic_source: 'direct',
893
899
  events: [ev]
894
900
  };
895
- this.pubsub.publish('events', ev);
896
901
  this.lightConvos[convoid] = newconvo;
897
902
  this.kv.put('light_convos', this.lightConvos);
903
+ this.pubsub.publish('events', ev);
898
904
  return {
899
905
  convo: newconvo
900
906
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.1.156",
3
+ "version": "4.1.158",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
@@ -208,7 +208,7 @@ export default class ChatButton extends Com {
208
208
  if (!agent) agent = this.props.store.matchAgent('*')[byid] || {}
209
209
  agent = sb.cloneDeep(agent)
210
210
  agent.fullname = agent.fullname || sb.get(account, 'name') || this.props.t('agent')
211
- agent.avatar_url = agent.avatar_url || defaultAvatar
211
+ agent.avatar_url = agent.avatar_url || account.logo_url || require('../../assets/img/image_default.png')
212
212
  let position = sb.get(accountSetting, 'desktop_button.position') || 'right'
213
213
  if (this.props.store.isMobile()) {
214
214
  position = sb.get(accountSetting, 'mobile_button.position') || position
@@ -427,6 +427,12 @@ export default class Event extends Com {
427
427
  <div class={dislikecls} onClick={() => this.onSendReaction(hasDislike ? 'remove_dislike' : 'dislike')}>
428
428
  <div class='message-event-action-btn-svg dislike' /> Bad
429
429
  </div>
430
+ <div
431
+ class='message-event-action-btn message-event-action-btn__dev'
432
+ onClick={() => this.props.store.onShowMessageInfo(ev.id)}
433
+ >
434
+ <div class='message-event-action-btn-svg info' /> Info
435
+ </div>
430
436
  </div>
431
437
  )
432
438
  }
package/src/store/kv.js CHANGED
@@ -1,7 +1,7 @@
1
1
  let KvMaxSize = 500
2
2
  // A key-value database with a cache layer
3
3
  export default class {
4
- constructor (db, schema) {
4
+ constructor(db, schema) {
5
5
  this.name = schema
6
6
  schema += '_kv'
7
7
  this.dead = false
@@ -12,23 +12,22 @@ export default class {
12
12
  this.init()
13
13
  }
14
14
 
15
- refreshCache () {
15
+ refreshCache() {
16
16
  if (this.dead) return
17
17
  let inmemItemM = {}
18
18
  let allitems = this.db.all('items')
19
- allitems.forEach(function(item) {
19
+ allitems.forEach(function (item) {
20
20
  inmemItemM[item.key] = item.value
21
21
  })
22
22
  this.cache = inmemItemM
23
23
  }
24
24
 
25
- init () {
25
+ init() {
26
26
  if (this.initialized) return
27
27
  let inmemItemM = {}
28
28
 
29
- console.time('KV' + this.name)
30
29
  let allitems = this.db.all('items')
31
- allitems.forEach(function(item) {
30
+ allitems.forEach(function (item) {
32
31
  inmemItemM[item.key] = item.value
33
32
  })
34
33
  this.cache = inmemItemM
@@ -51,20 +50,18 @@ export default class {
51
50
  }
52
51
 
53
52
  this.db.removes('items', [removekeys])
54
-
55
53
  }
56
54
 
57
55
  this.initialized = true
58
- console.timeEnd('KV' + this.name)
59
56
  }
60
57
 
61
- all () {
58
+ all() {
62
59
  if (this.dead) return []
63
60
  if (!this.initialized) return []
64
61
  return this.cache
65
62
  }
66
63
 
67
- match (key) {
64
+ match(key) {
68
65
  if (this.dead || !this.initialized) return
69
66
  if (!key) return
70
67
  return this.cache[key]
@@ -74,24 +71,24 @@ export default class {
74
71
  // put('1', {id: '1', name: 'thanh'})
75
72
  // put({id: '1', name: 'thanh'}, 'id')
76
73
  // put([{id: '1', name: 'thanh'},{id: '2', name: 'van'}], 'id')
77
- put (key, value) {
74
+ put(key, value) {
78
75
  if (!key) return
79
76
  if (this.dead) return []
80
77
  if (!this.initialized) throw new Error('uninitialized')
81
78
  // if multiple key
82
79
  this.cache[key] = value
83
- this.db.put('items', key, { key, value })
80
+ this.db.put('items', key, {key, value})
84
81
  }
85
82
 
86
83
  // delete an record in a schema
87
- del (key) {
84
+ del(key) {
88
85
  if (this.dead) return
89
86
  if (!this.initialized) throw new Error('uninitialized')
90
87
  delete this.cache[key]
91
88
  this.db.removes('items', [key])
92
89
  }
93
90
 
94
- destroy () {
91
+ destroy() {
95
92
  // clear all data
96
93
  this.db.clear('items')
97
94
 
@@ -213,6 +213,10 @@ export default class Store {
213
213
  sb.setTimeout(this.pubsub.publish('resetCSS'), 10)
214
214
  }
215
215
 
216
+ onShowMessageInfo(evid) {
217
+ this.pubsub.publish('events', {type: 'show_event_info', id: evid})
218
+ }
219
+
216
220
  getDeviceInfo() {
217
221
  let device = {
218
222
  screen_resolution: window.screen.width + 'x' + window.screen.height,
@@ -1032,9 +1036,9 @@ export default class Store {
1032
1036
  traffic_source: 'direct',
1033
1037
  events: [ev],
1034
1038
  }
1035
- this.pubsub.publish('events', ev)
1036
1039
  this.lightConvos[convoid] = newconvo
1037
1040
  this.kv.put('light_convos', this.lightConvos)
1041
+ this.pubsub.publish('events', ev)
1038
1042
  return {convo: newconvo}
1039
1043
  }
1040
1044
 
package/dist/127.js DELETED
@@ -1,273 +0,0 @@
1
- "use strict";
2
- (self["webpackChunk_subiz_widget_v4"] = self["webpackChunk_subiz_widget_v4"] || []).push([[127],{
3
-
4
- /***/ 6127:
5
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
6
-
7
- __webpack_require__.r(__webpack_exports__);
8
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
9
- /* harmony export */ "default": () => (/* binding */ ProductAttachments)
10
- /* harmony export */ });
11
- /* harmony import */ var _util_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(8150);
12
- /* harmony import */ var _common_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2840);
13
- /* harmony import */ var preact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(172);
14
-
15
-
16
-
17
- class ProductAttachments extends _common_js__WEBPACK_IMPORTED_MODULE_1__/* .Com */ .Mw {
18
- render() {
19
- let byType = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.props.ev, 'by.type');
20
- if (byType === 'user') return null;
21
- let acc = this.props.store.matchAccount();
22
- var attachments = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(this.props.ev, 'data.message.attachments', []);
23
- let orders = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.filter(attachments, att => att.type === 'order' && att.order).map(att => att.order);
24
- if (orders.length === 0) return null;
25
- let $orders = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.map(orders, (order, index) => {
26
- calcOrderTotal(order);
27
- let $note = null;
28
- if (order.note) {
29
- $note = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
30
- class: "order_attachment__label"
31
- }, this.props.t('note')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
32
- class: "order_attachment__note",
33
- title: order.note
34
- }, order.note));
35
- }
36
- let $products = null;
37
- if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.size(order.items) > 0) {
38
- $products = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
39
- class: "order_attachment__label"
40
- }, this.props.t('product')), _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.map(order.items, item => {
41
- let product = item.product || {};
42
- return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
43
- class: "order_attachment__product"
44
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("img", {
45
- class: "order_attachment__product_img",
46
- alt: '' + _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(product, 'id'),
47
- src: _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(product, 'image', __webpack_require__(2876))
48
- }), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
49
- style: "overflow: hidden !important;"
50
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
51
- class: "order_attachment__product_name",
52
- title: this.props.t.i18n(product.i18n_name) || product.name
53
- }, this.props.t.i18n(product.i18n_name) || product.name), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
54
- class: "order_attachment__product_desc"
55
- }, getProductPropName(product, ' / ')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
56
- class: "order_attachment__product_desc"
57
- }, this.props.t('qty'), " ", item.quantity, "\xA0\xB7\xA0", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(product.price))));
58
- }));
59
- }
60
- let $total = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
61
- class: "order_attachment__footer"
62
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
63
- class: "d-flex align-items-center justify-content-between"
64
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, this.props.t('total')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("b", {
65
- class: "order_attachment__total"
66
- }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.total)))));
67
- let phoneattr = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.find(_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'user.attributes', []), attr => attr.key === 'phones') || {
68
- key: 'phones',
69
- text: ''
70
- };
71
- let phone = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.address.phone', '').trim();
72
- phone = phone || _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.trim(phoneattr.text);
73
- if (phone) phone = this.props.t('phn') + ': ' + phone;
74
- let $shipto = null;
75
- if (displayOrderShippingAddress(order) || phone) {
76
- $shipto = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
77
- class: "order_attachment__label"
78
- }, this.props.t('ship_to')), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, displayOrderShippingAddress(order)), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
79
- class: "order_attachment__text_truncate"
80
- }, phone));
81
- }
82
- let $beforeTax = null;
83
- if (order._discount_before_tax) {
84
- $beforeTax = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
85
- class: "order_attachment__footer"
86
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
87
- class: "d-flex align-items-center justify-content-between"
88
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
89
- class: "order_attachment__label no_margin"
90
- }, this.props.t('subtotal_before_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._order_value))), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
91
- class: "d-flex align-items-center justify-content-between"
92
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
93
- class: "order_attachment__label no_margin"
94
- }, this.props.t('discount_before_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", null, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._discount_before_tax))));
95
- }
96
- let $subtotal = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
97
- class: "d-flex align-items-center justify-content-between"
98
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
99
- class: "order_attachment__label no_margin"
100
- }, this.props.t('subtotal')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
101
- style: ""
102
- }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.subtotal)));
103
- let $tax = null;
104
- if (order.total_tax) {
105
- let taxname = '';
106
- if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.size(order._taxM) === 1) {
107
- let tax = _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order._taxM, '0.tax', {});
108
- if (tax.name && tax.percentage) taxname = `(${tax.name} ${Math.round(tax.percentage || 0) / 100}%)`;
109
- }
110
- $tax = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
111
- class: "d-flex align-items-center justify-content-between"
112
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
113
- class: "order_attachment__label no_margin"
114
- }, this.props.t('tax'), " ", taxname), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
115
- style: ""
116
- }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.total_tax)));
117
- }
118
- let $discount = null;
119
- if (order.discount_type === 'percentage' && order.discount_percentage) {
120
- $discount = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
121
- class: "d-flex align-items-center justify-content-between"
122
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
123
- class: "order_attachment__label no_margin"
124
- }, this.props.t('discount_after_tax'), " (", Math.round(order.discount_percentage / 100), "%)"), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
125
- style: ""
126
- }, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._computed_discount)));
127
- }
128
- if (order.discount_type === 'amount' && order.discount_amount) {
129
- $discount = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
130
- class: "d-flex align-items-center justify-content-between"
131
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
132
- class: "order_attachment__label no_margin"
133
- }, this.props.t('discount_after_tax')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
134
- class: "no-shrink"
135
- }, "-", _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order._computed_discount)));
136
- }
137
- let $shipping = null;
138
- if (_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.nominal_fee')) {
139
- $shipping = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
140
- class: "d-flex align-items-center justify-content-between"
141
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
142
- class: "order_attachment__label no_margin"
143
- }, this.props.t('shipping_fee')), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
144
- style: ""
145
- }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(_util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.get(order, 'shipping.nominal_fee', 0))));
146
- }
147
- let $adjustment = null;
148
- if (order.adjustment) {
149
- $adjustment = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
150
- class: "d-flex align-items-center justify-content-between"
151
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
152
- class: "order_attachment__label no_margin"
153
- }, order.adjustment_description), ' ', (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
154
- class: "no-shrink"
155
- }, _util_index_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .A.formatCurrency(order.adjustment)));
156
- }
157
- $subtotal = (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
158
- class: "order_attachment__footer"
159
- }, $subtotal, $tax, $shipping, $discount, $adjustment);
160
- if (!$shipping && !$adjustment && !$discount && !$tax) {
161
- $subtotal = null;
162
- }
163
- return (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
164
- class: `order_attachment order_attachment__${byType}`
165
- }, (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("div", {
166
- class: "order_attachment__header"
167
- }, this.props.t('order'), (0,preact__WEBPACK_IMPORTED_MODULE_2__.h)("span", {
168
- class: "order_attachment__text_muted order_attachment__text_sm"
169
- }, getOrderDisplayName(order))), $products, $shipto, $note, $beforeTax, $subtotal, $total);
170
- });
171
- return $orders;
172
- }
173
- }
174
- function getProductPropName(product, seperator = ' - ') {
175
- let options = op.get(product, 'options', []);
176
- let props = op.get(product, 'props', []);
177
- let multiPropsOptions = op.filter(options, option => op.size(option.values) > 1);
178
- let names = [];
179
- op.each(multiPropsOptions, option => {
180
- let prop = op.find(props, prop => prop.key === option.key) || {};
181
- if (prop.value) names.push(prop.value);
182
- });
183
- return names.join(seperator);
184
- }
185
- function getOrderDisplayName(order = {}) {
186
- return order.number || order.id || '';
187
- }
188
- function displayOrderShippingAddress(order, isShorten) {
189
- let addr = op.get(order, 'shipping.address', {});
190
- let fulladdr = [addr.address, addr.ward, addr.district, addr.province].filter(a => a).join(', ').trim();
191
- if (isShorten) fulladdr = shortenAddr(fulladdr);
192
- return fulladdr;
193
- }
194
- function shortenAddr(str) {
195
- str = str || '';
196
- str = str.replace(/Hà Nội/gi, 'HN');
197
- str = str.replace(/Hồ Chí Minh/gi, 'HCM');
198
- str = str.replace(/Thành Phố/gi, 'TP');
199
- return str;
200
- }
201
- function calcOrderTotal(order) {
202
- let subtotal = 0;
203
- let beforeTaxDiscount = 0;
204
- let ordervalue = 0;
205
- op.map(order.items, item => {
206
- if (!item.product) return 0;
207
- let price = op.get(item, 'product.price', 0) * (item.quantity || 0);
208
- ordervalue += price;
209
- if (item.discount_type == 'percentage') {
210
- if (item.discount_percentage > 0) {
211
- beforeTaxDiscount += price * item.discount_percentage / 10000;
212
- price = price * (1 - (item.discount_percentage || 0) / 10000);
213
- }
214
- } else if (item.discount_type == 'amount') {
215
- if (item.discount_amount > 0) {
216
- beforeTaxDiscount += item.discount_amount;
217
- price = price - (item.discount_amount || 0);
218
- if (price <= 0) price = 0;
219
- }
220
- }
221
- item.total = price;
222
- subtotal += price;
223
- });
224
- let taxM = {};
225
- op.map(order.items, (item, i) => {
226
- if (!item.product) return;
227
- let tax = item.product.tax;
228
- if (!tax) return;
229
- if (!tax.id) return;
230
- let taxprice = item.total * tax.percentage / 10000;
231
- item.total_tax = taxprice;
232
- taxM[i] = {
233
- tax: tax,
234
- taxprice: taxprice
235
- };
236
- });
237
- let totaltax = 0;
238
- op.map(taxM, t => totaltax += t.taxprice);
239
- let computed_discount = 0;
240
- if (order.discount_type == 'percentage' && order.discount_percentage > 0) {
241
- computed_discount = (subtotal + totaltax) * order.discount_percentage / 10000;
242
- } else if (order.discount_type == 'amount') {
243
- computed_discount = order.discount_amount || 0;
244
- }
245
- let shippingfee = op.get(order, 'shipping.nominal_fee', 0);
246
- if (shippingfee > 0) {
247
- if (op.get(order, 'shipping.tax.id')) {
248
- let tax = order.shipping.tax;
249
- let taxprice = shippingfee * (tax.percentage / 10000);
250
- taxM['ship'] = {
251
- tax: tax,
252
- taxprice: taxprice
253
- };
254
- order.shipping.total_tax = taxprice;
255
- }
256
- }
257
- totaltax = 0;
258
- op.map(taxM, t => totaltax += t.taxprice);
259
- let total = subtotal + totaltax - computed_discount + shippingfee;
260
- total += order.adjustment || 0;
261
- if (total < 0) total = 0;
262
- order.subtotal = subtotal;
263
- order._computed_discount = computed_discount;
264
- order._taxM = taxM;
265
- order.total = total;
266
- order.total_tax = totaltax;
267
- order._discount_before_tax = beforeTaxDiscount;
268
- order._order_value = ordervalue;
269
- }
270
-
271
- /***/ })
272
-
273
- }]);