@subiz/widget-v4 4.1.147 → 4.1.149

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 (107) hide show
  1. package/assets/less/message.less +11 -0
  2. package/assets/less/reboot.less +1 -1
  3. package/compiled_src/chatbox/Event.js +2 -1
  4. package/compiled_src/chatbox/block.js +15 -0
  5. package/compiled_src/store/api.js +19 -24
  6. package/compiled_src/store/store.js +1 -1
  7. package/dist/127.js +273 -0
  8. package/dist/132.js +2802 -0
  9. package/dist/185.js +1827 -0
  10. package/dist/197bb8b9cf8.127.js +1 -0
  11. package/dist/197bb8b9cf8.132.js +1 -0
  12. package/dist/197bb8b9cf8.185.js +1 -0
  13. package/dist/197bb8b9cf8.27.js +1 -0
  14. package/dist/197bb8b9cf8.278.js +1 -0
  15. package/dist/197bb8b9cf8.339.js +1 -0
  16. package/dist/197bb8b9cf8.459.js +1 -0
  17. package/dist/197bb8b9cf8.490.js +1 -0
  18. package/dist/197bb8b9cf8.74.js +1 -0
  19. package/dist/197bb8b9cf8.997.js +1 -0
  20. package/dist/197bb8b9cf8.app.js +1 -0
  21. package/dist/197bb8b9cf8.chat.html +1 -0
  22. package/dist/197bb8b9cf8.chat.js +1 -0
  23. package/dist/197bb8b9cf8.form.html +1 -0
  24. package/dist/197bb8b9cf8.form.js +1 -0
  25. package/dist/197bb8b9cf8.index.html +71 -0
  26. package/dist/197bb8b9cf8.library.html +71 -0
  27. package/dist/197bb8b9cf8.library.js +1 -0
  28. package/dist/197bb8b9cf8.preview.html +759 -0
  29. package/dist/197bb8b9cf8.preview.js +1 -0
  30. package/dist/197bb8b9cf8.webview.js +1 -0
  31. package/dist/27.js +107 -0
  32. package/dist/278.js +417 -0
  33. package/dist/459.js +107 -0
  34. package/dist/490.js +305 -0
  35. package/dist/74.js +372 -0
  36. package/dist/997.js +107 -0
  37. package/dist/HASH +1 -0
  38. package/dist/assets/img/Facebook.64607ec.png +0 -0
  39. package/dist/assets/img/Zalo.6845707.png +0 -0
  40. package/dist/assets/img/award1a.1a58e10.png +0 -0
  41. package/dist/assets/img/award3a.3b74423.png +0 -0
  42. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  43. package/dist/assets/img/award5.39eb7ae.png +0 -0
  44. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  45. package/dist/assets/img/caret.998eb8f.svg +1 -0
  46. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  47. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  48. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  49. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  50. package/dist/assets/img/done_green.b817fd4.svg +4 -0
  51. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  52. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  53. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  54. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  55. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  56. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  57. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  58. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  59. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  60. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  61. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  62. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  63. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  64. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  65. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  66. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  67. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  68. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  69. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  70. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  71. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  72. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  73. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  74. package/dist/assets/img/empty.29bed2d.svg +23 -0
  75. package/dist/assets/img/empty_1.0b98af0.svg +11 -0
  76. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  77. package/dist/assets/img/external-link.90577cc.svg +1 -0
  78. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  79. package/dist/assets/img/ghn.070f8e3.svg +17 -0
  80. package/dist/assets/img/ghtk.326eac1.svg +18 -0
  81. package/dist/assets/img/image_default.be0698b.png +0 -0
  82. package/dist/assets/img/info.ebce7ea.svg +1 -0
  83. package/dist/assets/img/loader.37000a7.svg +1 -0
  84. package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
  85. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  86. package/dist/assets/img/main-service2.9b99549.png +0 -0
  87. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  88. package/dist/assets/img/package.8d37d0f.svg +5 -0
  89. package/dist/assets/img/package_fade.763c001.svg +1 -0
  90. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  91. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  92. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  93. package/dist/assets/img/search.f9705ff.svg +1 -0
  94. package/dist/assets/img/send.6db52a9.svg +3 -0
  95. package/dist/assets/img/shop.f7dc7d8.svg +1 -0
  96. package/dist/assets/img/shop_faded.df7845a.svg +1 -0
  97. package/dist/assets/img/stars_v2.79cf728.png +0 -0
  98. package/dist/assets/img/subiz-mono.8fbc067.svg +3 -0
  99. package/dist/assets/img/x.26fdfa3.svg +5 -0
  100. package/dist/malicious-app.js +15 -0
  101. package/dist/screenshoot.html +7 -0
  102. package/dist/screenshoot.js +11634 -0
  103. package/package.json +3 -4
  104. package/src/chatbox/Event.js +7 -6
  105. package/src/chatbox/block.js +15 -0
  106. package/src/store/api.js +29 -16
  107. package/src/store/store.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.1.147",
3
+ "version": "4.1.149",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
@@ -22,15 +22,14 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@babel/cli": "^7.27.2",
25
- "@babel/core": "^7.27.4",
25
+ "@babel/core": "^7.27.7",
26
26
  "@babel/plugin-proposal-class-properties": "^7.18.6",
27
27
  "@babel/plugin-transform-react-jsx": "^7.27.1",
28
28
  "@babel/preset-env": "^7.27.2",
29
29
  "babel-loader": "^10.0.0",
30
30
  "babel-plugin-syntax-jsx": "^6.18.0",
31
31
  "html-webpack-plugin": "^5.6.3",
32
- "prettier": "^3.5.3",
33
- "puppeteer": "^24.10.1",
32
+ "puppeteer": "^24.11.1",
34
33
  "webpack": "^5.99.9",
35
34
  "webpack-bundle-analyzer": "^4.10.2",
36
35
  "webpack-cli": "^6.0.1",
@@ -232,9 +232,9 @@ export default class Event extends Com {
232
232
 
233
233
  renderMessageSent() {
234
234
  let ev = this.props.event.ev
235
- let attachments = sb.get(ev, 'data.message.attachments')
236
- let hasForm = sb.find(attachments, att => att.type === 'form')
237
- if (ev.id === 'evshpgaeetsplfqprzmynrvrl') hasForm = true
235
+ let attachments = sb.get(ev, 'data.message.attachments')
236
+ let hasForm = sb.find(attachments, (att) => att.type === 'form')
237
+ if (ev.id === 'evshpgaeetsplfqprzmynrvrl') hasForm = true
238
238
  this.tryLoadOrder(ev)
239
239
  let t = new sb.Date(ev.created).toLocaleString()
240
240
  // message of agent
@@ -244,8 +244,8 @@ export default class Event extends Com {
244
244
  let innercls = 'agent-convo-event-inner'
245
245
  if (this.props.isLast) innercls += ' last'
246
246
 
247
- let wrappercls = 'agent-convo-event-wrapper'
248
- if (hasForm) wrappercls += ' full'
247
+ let wrappercls = 'agent-convo-event-wrapper'
248
+ if (hasForm) wrappercls += ' full'
249
249
  return (
250
250
  <div class='convo-event agent-message'>
251
251
  {$sender}
@@ -446,10 +446,11 @@ export default class Event extends Com {
446
446
 
447
447
  getSenderName(ev) {
448
448
  let bytype = sb.get(ev, 'by.type')
449
- let byid = sb.get(ev, 'by.display_id', sb.get(ev, 'by.id'))
449
+ let byid = sb.get(ev, 'by.display_id', sb.get(ev, 'by.id')) || ''
450
450
  if (bytype === 'user') return sb.getUserDisplayName(this.props.store.matchUser())
451
451
  let acc = this.props.store.matchAccount()
452
452
  if (bytype === 'agent') return sb.getAgentDisplayName(acc, this.props.store.matchAgent(byid))
453
+ if (byid.startsWith('at')) return sb.getAgentDisplayName(acc, this.props.store.matchAgent(byid))
453
454
  if (bytype === 'bot') {
454
455
  let bot = this.props.store.matchBot()[byid]
455
456
  if (!bot) return 'Bot'
@@ -106,6 +106,11 @@ export default class Block extends Com {
106
106
  if (block.type == 'table') {
107
107
  return null
108
108
  }
109
+ if (block.type === 'image') {
110
+ ele.tag = 'img'
111
+ ele.attrs['src'] = sb.get(block, 'image.url')
112
+ ele.attrs['alt'] = block.alt_text
113
+ }
109
114
 
110
115
  let $body = null
111
116
  if (sb.size(block.content)) {
@@ -138,6 +143,16 @@ export default class Block extends Com {
138
143
  $body = ele.text
139
144
  }
140
145
  switch (ele.tag) {
146
+ case 'img':
147
+ return (
148
+ <a class='message-text-inline-image-wrapper' href={sb.get(ele, 'attrs.src')} target='_blank'>
149
+ <img
150
+ class='message-text-inline-image'
151
+ src={sb.get(ele, 'attrs.src')}
152
+ alt={sb.get(ele, 'attrs.alt') || ''}
153
+ />
154
+ </a>
155
+ )
141
156
  case 'div':
142
157
  return <div>{$body}</div>
143
158
  case 'h1':
package/src/store/api.js CHANGED
@@ -270,25 +270,38 @@ export default class {
270
270
  }
271
271
 
272
272
  uploadToS3 = async (file) => {
273
- let {body: signed, error} = await this.apireq.post(`/accounts/${this.accid}/files`, {
274
- account_id: this.accid,
275
- description: 'upload\n user-client: web-widget',
276
- name: file.name.replace(/\s+/g, '_'),
277
- size: file.size,
278
- type: file.type,
279
- })
280
- if (error) return {body: signed, error}
273
+ var {body, error} = await ajax
274
+ .setBaseUrl('https://api5.subiz.com.vn/4.1')
275
+ .withCredentials(true)
276
+ .setQuery({
277
+ description: 'upload\n user-client: web-widget',
278
+ name: file.name.replace(/\s+/g, '_'),
279
+ size: file.size,
280
+ type: file.type,
281
+ })
282
+ .setParser('json')
283
+ .beforeHook((param, done) => {
284
+ if (this.token_generator) {
285
+ let user_id = this.profile_id
286
+ this.token_generator().then((token) => {
287
+ if (user_id != this.profile_id) return done(true) // outdated
281
288
 
282
- let contentType = file.type || 'application/octet-stream'
283
- ;({error} = await ajax.setContentType(contentType).put(signed.signed_url, file))
284
- if (error) return {error}
289
+ if (!token) return done(false)
290
+ if (token == 'error') return done(false)
291
+ param.request = param.request.addQuery('x-access-token', token)
292
+ return done(true)
293
+ })
294
+ return
295
+ }
285
296
 
286
- // finish uploading
287
- let body
288
- ;({body, error} = await this.apireq.post(`/accounts/${this.accid}/files/${signed.id}`, {account_id: this.accid}))
289
- if (error) return {body, error}
297
+ if (this.ref) param.request = param.request.addQuery('x-user-ref', this.ref)
298
+ else if (this.mask) param.request = param.request.addQuery('x-user-mask', this.mask) // deprecating
290
299
 
291
- return {url: body.url}
300
+ return done(true)
301
+ })
302
+ .post('/files', file)
303
+ if (error) return {body, error}
304
+ return {url: sb.get(body, 'file.url')}
292
305
  }
293
306
 
294
307
  time = (_) => ajax.setBaseUrl(this.ApiURL).withCredentials(true).setParser('json').get('/time')
@@ -1250,7 +1250,7 @@ export default class Store {
1250
1250
 
1251
1251
  src = src.replace('https://file.mysubiz.com/', this.FileURL)
1252
1252
  src = src.replace('http://file.mysubiz.com/', this.FileURL)
1253
- return src
1253
+ return src.replace('vcdn.subiz-cdn.com', 'cdn.subiz.net')
1254
1254
  }
1255
1255
 
1256
1256
  clearBrowserData() {