@subiz/widget-v4 4.1.77 → 4.1.79

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 (145) hide show
  1. package/assets/less/message_input.less +1 -0
  2. package/assets/less/widget.less +2 -2
  3. package/compiled_src/bot.js +1 -1
  4. package/compiled_src/call/call.js +2 -2
  5. package/compiled_src/chatbox/AgentsAvatar.js +1 -1
  6. package/compiled_src/chatbox/AudioAttachments.js +1 -1
  7. package/compiled_src/chatbox/ButtonAttachments.js +1 -1
  8. package/compiled_src/chatbox/Buttons.js +1 -1
  9. package/compiled_src/chatbox/ChatButton.js +6 -5
  10. package/compiled_src/chatbox/DropdownSelect.js +2 -2
  11. package/compiled_src/chatbox/Emoji.js +1 -1
  12. package/compiled_src/chatbox/Event.js +1 -1
  13. package/compiled_src/chatbox/Events.js +1 -1
  14. package/compiled_src/chatbox/FileAttachments.js +1 -1
  15. package/compiled_src/chatbox/FormAttachment.js +1 -1
  16. package/compiled_src/chatbox/FormAttachments.js +1 -1
  17. package/compiled_src/chatbox/FormSubmitAttachments.js +1 -1
  18. package/compiled_src/chatbox/GenericTemplateAttachments.js +1 -1
  19. package/compiled_src/chatbox/Header.js +1 -1
  20. package/compiled_src/chatbox/ImageAttachments.js +2 -2
  21. package/compiled_src/chatbox/InfoMessage.js +1 -1
  22. package/compiled_src/chatbox/ListField.js +1 -1
  23. package/compiled_src/chatbox/MessageInput.js +2 -2
  24. package/compiled_src/chatbox/Order.js +2 -2
  25. package/compiled_src/chatbox/OrderAttachments.js +1 -1
  26. package/compiled_src/chatbox/ProductAttachments.js +1 -1
  27. package/compiled_src/chatbox/QuickReplies.js +1 -1
  28. package/compiled_src/chatbox/Rating.js +2 -2
  29. package/compiled_src/chatbox/TextMessage.js +1 -1
  30. package/compiled_src/chatbox/Typing.js +1 -1
  31. package/compiled_src/chatbox/VideoAttachments.js +1 -1
  32. package/compiled_src/chatbox/Widget.js +2 -2
  33. package/compiled_src/chatbox/main.js +1 -1
  34. package/compiled_src/chatbox/releaseAnimation.js +1 -1
  35. package/compiled_src/chatbox/time.js +1 -1
  36. package/compiled_src/common.js +1 -1
  37. package/compiled_src/contact/contact.js +2 -2
  38. package/compiled_src/lib.js +2 -2
  39. package/compiled_src/notif/notif.js +2 -2
  40. package/compiled_src/order/address_picker.js +2 -2
  41. package/compiled_src/order/icon.js +1 -1
  42. package/compiled_src/order/index.js +1 -1
  43. package/compiled_src/order/order.js +2 -2
  44. package/compiled_src/plugin.js +1 -1
  45. package/compiled_src/popup/countdown.js +2 -2
  46. package/compiled_src/popup/popup.js +2 -2
  47. package/compiled_src/popup/tick.core.commonjs.js +1 -1
  48. package/compiled_src/store/api.js +2 -2
  49. package/compiled_src/store/api_fake.js +2 -2
  50. package/compiled_src/store/store.js +35 -19
  51. package/dist/127.js +273 -0
  52. package/dist/132.js +2796 -0
  53. package/dist/185.js +1885 -0
  54. package/dist/18ffe1df25b.127.js +1 -0
  55. package/dist/18ffe1df25b.132.js +1 -0
  56. package/dist/18ffe1df25b.185.js +1 -0
  57. package/dist/18ffe1df25b.27.js +1 -0
  58. package/dist/18ffe1df25b.278.js +1 -0
  59. package/dist/18ffe1df25b.459.js +1 -0
  60. package/dist/18ffe1df25b.490.js +1 -0
  61. package/dist/18ffe1df25b.74.js +1 -0
  62. package/dist/18ffe1df25b.997.js +1 -0
  63. package/dist/18ffe1df25b.app.js +1 -0
  64. package/dist/18ffe1df25b.index.html +33 -0
  65. package/dist/18ffe1df25b.library.html +33 -0
  66. package/dist/18ffe1df25b.library.js +1 -0
  67. package/dist/18ffe1df25b.preview.html +759 -0
  68. package/dist/18ffe1df25b.preview.js +1 -0
  69. package/dist/18ffe1df25b.screenshoot.js +1 -0
  70. package/dist/18ffe1df25b.webview.js +1 -0
  71. package/dist/27.js +107 -0
  72. package/dist/278.js +406 -0
  73. package/dist/459.js +107 -0
  74. package/dist/490.js +304 -0
  75. package/dist/74.js +372 -0
  76. package/dist/997.js +107 -0
  77. package/dist/HASH +1 -0
  78. package/dist/assets/img/Facebook.64607ec.png +0 -0
  79. package/dist/assets/img/Zalo.6845707.png +0 -0
  80. package/dist/assets/img/award1a.1a58e10.png +0 -0
  81. package/dist/assets/img/award3a.3b74423.png +0 -0
  82. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  83. package/dist/assets/img/award5.39eb7ae.png +0 -0
  84. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  85. package/dist/assets/img/caret.998eb8f.svg +1 -0
  86. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  87. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  88. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  89. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  90. package/dist/assets/img/done_green.b817fd4.svg +4 -0
  91. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  92. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  93. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  94. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  95. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  96. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  97. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  98. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  99. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  100. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  101. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  102. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  103. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  104. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  105. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  106. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  107. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  108. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  109. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  110. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  111. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  112. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  113. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  114. package/dist/assets/img/empty.29bed2d.svg +23 -0
  115. package/dist/assets/img/empty_1.0b98af0.svg +11 -0
  116. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  117. package/dist/assets/img/external-link.90577cc.svg +1 -0
  118. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  119. package/dist/assets/img/ghn.070f8e3.svg +17 -0
  120. package/dist/assets/img/ghtk.326eac1.svg +18 -0
  121. package/dist/assets/img/image_default.be0698b.png +0 -0
  122. package/dist/assets/img/info.ebce7ea.svg +1 -0
  123. package/dist/assets/img/loader.37000a7.svg +1 -0
  124. package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
  125. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  126. package/dist/assets/img/main-service2.9b99549.png +0 -0
  127. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  128. package/dist/assets/img/package.8d37d0f.svg +5 -0
  129. package/dist/assets/img/package_fade.763c001.svg +1 -0
  130. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  131. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  132. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  133. package/dist/assets/img/search.f9705ff.svg +1 -0
  134. package/dist/assets/img/send.6db52a9.svg +3 -0
  135. package/dist/assets/img/shop.f7dc7d8.svg +1 -0
  136. package/dist/assets/img/shop_faded.df7845a.svg +1 -0
  137. package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
  138. package/dist/assets/img/x.26fdfa3.svg +5 -0
  139. package/dist/malicious-app.js +15 -0
  140. package/dist/screenshoot.html +7 -0
  141. package/dist/screenshoot.js +10415 -0
  142. package/package.json +6 -6
  143. package/src/chatbox/ChatButton.js +9 -4
  144. package/src/chatbox/Events.js +1 -1
  145. package/src/store/store.js +40 -20
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.1.77",
3
+ "version": "4.1.79",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
@@ -22,15 +22,15 @@
22
22
  "preact": "10.19.3"
23
23
  },
24
24
  "devDependencies": {
25
- "@babel/cli": "^7.24.5",
26
- "@babel/core": "^7.24.5",
25
+ "@babel/cli": "^7.24.7",
26
+ "@babel/core": "^7.24.7",
27
27
  "@babel/plugin-proposal-class-properties": "^7.18.6",
28
- "@babel/plugin-transform-react-jsx": "^7.23.4",
29
- "@babel/preset-env": "^7.24.5",
28
+ "@babel/plugin-transform-react-jsx": "^7.24.7",
29
+ "@babel/preset-env": "^7.24.7",
30
30
  "babel-loader": "^9.1.3",
31
31
  "babel-plugin-syntax-jsx": "^6.18.0",
32
32
  "html-webpack-plugin": "^5.6.0",
33
- "puppeteer": "^22.9.0",
33
+ "puppeteer": "^22.10.0",
34
34
  "webpack": "^5.91.0",
35
35
  "webpack-bundle-analyzer": "^4.10.2",
36
36
  "webpack-cli": "^5.1.4",
@@ -32,7 +32,12 @@ export default class ChatButton extends Com {
32
32
  })
33
33
  if (isquickreplies) return
34
34
 
35
- this.setState({displayPreview: true, previewEvent: ev})
35
+ // only set preview have content ev
36
+ var tags = sb.filter(
37
+ sb.map(this.renderMessagePreview(ev), (tag) => sb.trim(tag)),
38
+ (a) => a,
39
+ )
40
+ if (sb.size(tags) > 0) this.setState({displayPreview: true, previewEvent: ev})
36
41
  })
37
42
  }
38
43
 
@@ -195,7 +200,7 @@ export default class ChatButton extends Com {
195
200
  let cls = 'widget-preview widget-preview--' + position
196
201
  if (!this.state.displayPreview) cls += ' widget-preview--hidden'
197
202
 
198
- var tags = this.renderMessagePreview(this.state.previewEvent, this.props.t('sent_you_a_message'))
203
+ var tags = this.renderMessagePreview(this.state.previewEvent)
199
204
  if (sb.size(tags) === 0) cls += ' widget-preview--hidden'
200
205
 
201
206
  return (
@@ -371,7 +376,7 @@ export default class ChatButton extends Com {
371
376
  }
372
377
 
373
378
  renderMessagePreview(ev, defmsg) {
374
- defmsg = defmsg || 'Sent you a message'
379
+ defmsg = defmsg || this.props.t('sent_you_a_message')
375
380
 
376
381
  let message = sb.get(ev, 'data.message.text')
377
382
  var format = sb.get(ev, 'data.message.format')
@@ -394,7 +399,7 @@ export default class ChatButton extends Com {
394
399
  }
395
400
 
396
401
  renderDeltaMessagePreview(ev, defmsg) {
397
- defmsg = defmsg || 'Sent you a message'
402
+ defmsg = defmsg || this.props.t('sent_you_a_message')
398
403
 
399
404
  let message = sb.get(ev, 'data.message.quill_delta')
400
405
  if (!message && sb.size(sb.get(ev, 'data.message.attachments')) > 0) message = defmsg
@@ -161,6 +161,7 @@ export default class Events extends Com {
161
161
  let events = this.props.store.listEvents(this.props.cid)
162
162
  if (sb.size(events) === 0) {
163
163
  let cid = this.props.cid
164
+
164
165
  let {error} = await this.props.store.fetchMoreEvents(cid)
165
166
  this.setState({loading: false})
166
167
  if (cid !== this.props.cid) return // out dated
@@ -173,7 +174,6 @@ export default class Events extends Com {
173
174
  this.props.store.fetchMoreEvents(this.props.cid)
174
175
  this.setState({error: false})
175
176
  this.scrollToBottom()
176
-
177
177
  sb.setTimeout(() => this.setState({loading: false}), 50)
178
178
  }
179
179
 
@@ -316,26 +316,39 @@ export default class Store {
316
316
  list_districts = (p) => this.api.list_districts(p)
317
317
  list_wards = (p) => this.api.list_wards(p)
318
318
 
319
+ outofmsgM = {}
320
+
319
321
  listEvents = (id) => {
320
322
  if (!id || id === '*' || typeof id !== 'string') return
321
- if (!this.isInsync('events' + id)) {
322
- sb.setTimeout(async () => {
323
- await this.readyGate.entry()
324
- await this.reconnectGate.entry(undefined, true)
325
- if (this.isInsync('events' + id)) return this.reconnectGate.open()
326
- this.markSync('events' + id)
327
- await this.chain.reload(id, (type, anchor, limit) => this.listmessageapi(type, anchor, limit))
328
- this.pubsub.publish('account')
329
- return this.reconnectGate.open()
330
- }, 10)
331
- }
332
323
  return this.chain.listM(id)
333
324
  }
334
325
 
335
326
  fetchMoreEvents = async (convoid) => {
336
- let {error} = await this.chain.fetchMore(convoid, 50, (type, anchor, limit) =>
337
- this.listmessageapi(type, anchor, limit),
338
- )
327
+ if (!this.isInsync('events' + convoid)) {
328
+ await this.readyGate.entry()
329
+ await this.reconnectGate.entry(undefined, true)
330
+ if (this.isInsync('events' + convoid)) return this.reconnectGate.open()
331
+ this.markSync('events' + convoid)
332
+
333
+ // reset anchor
334
+ await this.chain.reload(convoid, () => {
335
+ return [[], '']
336
+ })
337
+ let out = await this._doFetchMsg(convoid)
338
+ this.reconnectGate.open()
339
+ return out
340
+ }
341
+
342
+ return this._doFetchMsg(convoid)
343
+ }
344
+
345
+ _doFetchMsg = async (convoid) => {
346
+ let {error} = await this.chain.fetchMore(convoid, 150, async (type, anchor, limit) => {
347
+ if (this.outofmsgM[convoid]) return [[], '']
348
+ let [events, newanchor, error, outofmsg] = await this.listmessageapi(type, anchor, limit)
349
+ if (outofmsg) this.outofmsgM[convoid] = true
350
+ return [events, newanchor, error]
351
+ })
339
352
  this.pubsub.publish('account')
340
353
  return {error}
341
354
  }
@@ -754,8 +767,8 @@ export default class Store {
754
767
  let members = sb.get(ev, 'data.conversation.members', [])
755
768
  let me = sb.find(members, (m) => m.id === this.cache.match('user').id)
756
769
  if (me) {
757
- await this.chain.reload(cid, (type, anchor, limit) => this.listmessageapi(type, anchor, limit))
758
- this.markSync('events' + cid)
770
+ // await this.chain.reload(cid, (type, anchor, limit) => this.listmessageapi(type, anchor, limit)) // ?
771
+ // this.markSync('events' + cid)
759
772
  if (!alreadyFetched) {
760
773
  let {body: apiconvo} = await this.api.getConversation(cid)
761
774
  if (apiconvo) {
@@ -769,7 +782,10 @@ export default class Store {
769
782
 
770
783
  if (ev.type === 'message_sent') {
771
784
  if (sb.get(ev, 'by.id') !== user.id) {
772
- this.api.markAsReceived(cid, ev.id)
785
+ if (!this._alreadyReceived[ev.id]) {
786
+ this._alreadyReceived[ev.id] = true
787
+ this.api.markAsReceived(cid, ev.id)
788
+ }
773
789
  }
774
790
  }
775
791
 
@@ -782,6 +798,7 @@ export default class Store {
782
798
  }
783
799
  }
784
800
 
801
+ _alreadyReceived = {} // dont dup receive
785
802
  async restConvoEvent(ev) {
786
803
  let user = this.cache.match('user')
787
804
  let cid = sb.convoOfEv(ev)
@@ -1068,11 +1085,15 @@ export default class Store {
1068
1085
 
1069
1086
  let pongbyme = sb.find(sb.get(ev, 'data.message.pongs'), (p) => p.member_id === user.id)
1070
1087
  if (pongbyme) break
1071
- this.api.markAsReceived(convoid, ev.id)
1088
+ if (!this._alreadyReceived[ev.id]) {
1089
+ this._alreadyReceived[ev.id] = true
1090
+ this.api.markAsReceived(convoid, ev.id)
1091
+ }
1072
1092
  break
1073
1093
  }
1074
1094
 
1075
- return [events, anchor]
1095
+ let outofmsg = sb.size(events) < limit
1096
+ return [events, anchor, undefined, outofmsg]
1076
1097
  }
1077
1098
 
1078
1099
  timeDiff = 0
@@ -1244,7 +1265,6 @@ function getGaTrackingIds() {
1244
1265
 
1245
1266
  function sendToFBPixel(category, action, label) {
1246
1267
  if (!window.fbq) return
1247
-
1248
1268
  window.fbq('trackCustom', category, {action: action, label: label})
1249
1269
  }
1250
1270