@subiz/widget-v4 4.1.74 → 4.1.76

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 (102) hide show
  1. package/compiled_src/chatbox/Event.js +2 -2
  2. package/compiled_src/chatbox/Events.js +1 -1
  3. package/compiled_src/store/api_fake.js +26 -54
  4. package/compiled_src/store/store.js +3 -3
  5. package/compiled_src/util/common.js +3 -34
  6. package/dist/127.js +273 -0
  7. package/dist/132.js +2796 -0
  8. package/dist/185.js +1885 -0
  9. package/dist/18f3763d12b.127.js +1 -0
  10. package/dist/18f3763d12b.132.js +1 -0
  11. package/dist/18f3763d12b.185.js +1 -0
  12. package/dist/18f3763d12b.27.js +1 -0
  13. package/dist/18f3763d12b.278.js +1 -0
  14. package/dist/18f3763d12b.459.js +1 -0
  15. package/dist/18f3763d12b.490.js +1 -0
  16. package/dist/18f3763d12b.74.js +1 -0
  17. package/dist/18f3763d12b.997.js +1 -0
  18. package/dist/18f3763d12b.app.js +1 -0
  19. package/dist/18f3763d12b.index.html +33 -0
  20. package/dist/18f3763d12b.library.html +33 -0
  21. package/dist/18f3763d12b.library.js +1 -0
  22. package/dist/18f3763d12b.preview.html +759 -0
  23. package/dist/18f3763d12b.preview.js +1 -0
  24. package/dist/18f3763d12b.screenshoot.js +1 -0
  25. package/dist/18f3763d12b.webview.js +1 -0
  26. package/dist/27.js +107 -0
  27. package/dist/278.js +406 -0
  28. package/dist/459.js +107 -0
  29. package/dist/490.js +304 -0
  30. package/dist/74.js +372 -0
  31. package/dist/997.js +107 -0
  32. package/dist/HASH +1 -0
  33. package/dist/assets/img/Facebook.64607ec.png +0 -0
  34. package/dist/assets/img/Zalo.6845707.png +0 -0
  35. package/dist/assets/img/award1a.1a58e10.png +0 -0
  36. package/dist/assets/img/award3a.3b74423.png +0 -0
  37. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  38. package/dist/assets/img/award5.39eb7ae.png +0 -0
  39. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  40. package/dist/assets/img/caret.998eb8f.svg +1 -0
  41. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  42. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  43. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  44. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  45. package/dist/assets/img/done_green.b817fd4.svg +4 -0
  46. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  47. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  48. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  49. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  50. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  51. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  52. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  53. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  54. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  55. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  56. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  57. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  58. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  59. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  60. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  61. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  62. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  63. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  64. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  65. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  66. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  67. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  68. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  69. package/dist/assets/img/empty.29bed2d.svg +23 -0
  70. package/dist/assets/img/empty_1.0b98af0.svg +11 -0
  71. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  72. package/dist/assets/img/external-link.90577cc.svg +1 -0
  73. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  74. package/dist/assets/img/ghn.070f8e3.svg +17 -0
  75. package/dist/assets/img/ghtk.326eac1.svg +18 -0
  76. package/dist/assets/img/image_default.be0698b.png +0 -0
  77. package/dist/assets/img/info.ebce7ea.svg +1 -0
  78. package/dist/assets/img/loader.37000a7.svg +1 -0
  79. package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
  80. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  81. package/dist/assets/img/main-service2.9b99549.png +0 -0
  82. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  83. package/dist/assets/img/package.8d37d0f.svg +5 -0
  84. package/dist/assets/img/package_fade.763c001.svg +1 -0
  85. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  86. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  87. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  88. package/dist/assets/img/search.f9705ff.svg +1 -0
  89. package/dist/assets/img/send.6db52a9.svg +3 -0
  90. package/dist/assets/img/shop.f7dc7d8.svg +1 -0
  91. package/dist/assets/img/shop_faded.df7845a.svg +1 -0
  92. package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
  93. package/dist/assets/img/x.26fdfa3.svg +5 -0
  94. package/dist/malicious-app.js +15 -0
  95. package/dist/screenshoot.html +7 -0
  96. package/dist/screenshoot.js +10423 -0
  97. package/package.json +6 -6
  98. package/src/chatbox/Event.js +2 -2
  99. package/src/chatbox/Events.js +2 -1
  100. package/src/store/api_fake.js +22 -63
  101. package/src/store/store.js +3 -3
  102. package/src/util/common.js +2 -29
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.1.74",
3
+ "version": "4.1.76",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
@@ -14,7 +14,7 @@
14
14
  "@subiz/storage": "0.0.8",
15
15
  "@subiz/wsclient": "^4.0.24",
16
16
  "cookie_js": "1.4.2",
17
- "core-js": "^3.36.1",
17
+ "core-js": "^3.37.1",
18
18
  "css-loader": "5.2.7",
19
19
  "file-loader": "^6.2.0",
20
20
  "less": "^4.2.0",
@@ -22,15 +22,15 @@
22
22
  "preact": "10.19.3"
23
23
  },
24
24
  "devDependencies": {
25
- "@babel/cli": "^7.24.1",
26
- "@babel/core": "^7.24.4",
25
+ "@babel/cli": "^7.24.5",
26
+ "@babel/core": "^7.24.5",
27
27
  "@babel/plugin-proposal-class-properties": "^7.18.6",
28
28
  "@babel/plugin-transform-react-jsx": "^7.23.4",
29
- "@babel/preset-env": "^7.24.4",
29
+ "@babel/preset-env": "^7.24.5",
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.6.4",
33
+ "puppeteer": "^22.8.2",
34
34
  "webpack": "^5.91.0",
35
35
  "webpack-bundle-analyzer": "^4.10.2",
36
36
  "webpack-cli": "^5.1.4",
@@ -185,14 +185,14 @@ export default class Event extends Com {
185
185
  )
186
186
  }
187
187
 
188
- if (sb.getMsgField(ev, 'idempotency') === ev.id && this.props.store.now() - ev.created < 900) {
188
+ if (sb.get(ev, 'data.message.idempotency_key') === ev.id && this.props.store.now() - ev.created < 900) {
189
189
  sb.setTimeout(() => this.setState({refresh: this.state.refresh}), 1000)
190
190
  }
191
191
 
192
192
  // only show sending while the message is send too long (>300ms) but haven't returned from
193
193
  // the server
194
194
  let $dot = <div class='sending_dot'></div>
195
- if (this.props.store.now() - ev.created < 900 || sb.getMsgField(ev, 'idempotency') !== ev.id) {
195
+ if (this.props.store.now() - ev.created < 900 || sb.get(ev, 'data.message.idempotency_key') !== ev.id) {
196
196
  $dot = <div class='sending_dot sending_dot__hide'></div>
197
197
  }
198
198
 
@@ -146,7 +146,8 @@ export default class Events extends Com {
146
146
  let isBottom = this.isBottom()
147
147
 
148
148
  var byme = false
149
- if (sb.get(newev, 'type') === 'message_sent' && newev.id === sb.getMsgField(newev, 'idempotency')) byme = true
149
+ if (sb.get(newev, 'type') === 'message_sent' && newev.id === sb.get(newev, 'data.message.idempotency_key'))
150
+ byme = true
150
151
  // scroll to bottom when message is sent by me
151
152
  // auto scroll to bottom on new message when we are at the bottom
152
153
  if (byme || isBottom) this.scrollToBottom()
@@ -3,8 +3,6 @@ import sb from '../util/index.js'
3
3
  const ajax = require('@subiz/ajax/src/ajax.js')
4
4
  ajax.env.XMLHttpRequest = window.XMLHttpRequest
5
5
 
6
- const findAnswer = (challenge) => challenge.answer
7
-
8
6
  function jsonifyTextPlain(param, done) {
9
7
  let req = param.request
10
8
  if (req.content_type === 'text/plain' && req.body !== undefined) req.body = sb.stringify(req.body)
@@ -31,12 +29,7 @@ export default class {
31
29
  return {
32
30
  account_id: this.accid,
33
31
  id: 'usqzgtgfake',
34
- attributes: [
35
- {
36
- key: 'fullname',
37
- text: 'Kiều Thanh',
38
- },
39
- ],
32
+ attributes: [{key: 'fullname', text: 'Kiều Thanh'}],
40
33
  }
41
34
  }
42
35
 
@@ -75,7 +68,6 @@ export default class {
75
68
  sendContentView = (data) => OK200
76
69
 
77
70
  uploadToS3 = async (file) => OK200
78
- getChallenge = (accid) => OK200
79
71
 
80
72
  time = (_) => Promise.resolve({code: 200, body: new sb.Date().toISOString()})
81
73
  updateUser = (data) => OK200
@@ -124,14 +116,6 @@ function makeFakeConvo(accid, convoid, userid, agentid) {
124
116
  ],
125
117
  ended: 1610454875505,
126
118
  state: 'ended',
127
- integration: {
128
- account_id: accid,
129
- connector_id: 'subikon',
130
- name: 'Subiz Widget',
131
- connector_type: 'subiz',
132
- state: 'activated',
133
- id: inteid,
134
- },
135
119
  actived: 1610453070259,
136
120
  last_message_sent: {
137
121
  id: 'evqyiykaoizbwnkaecwphttwk',
@@ -158,6 +142,22 @@ function makeFakeConvo(accid, convoid, userid, agentid) {
158
142
 
159
143
  function makeFakeMessages(accid, convoid, userid, agentid) {
160
144
  let inteid = accid + '.subizv4.subikon'
145
+ let usermember = {
146
+ type: 'user',
147
+ id: userid,
148
+ last_page_view_url: 'https://subiz.com.vn/',
149
+ conversation_id: convoid,
150
+ membership: 'active',
151
+ invited_by: {id: userid, type: 'user'},
152
+ }
153
+
154
+ let agentmember = {
155
+ type: 'agent',
156
+ conversation_id: convoid,
157
+ id: agentid,
158
+ membership: 'active',
159
+ invited_by: {id: userid, type: 'user'},
160
+ }
161
161
  return [
162
162
  {
163
163
  id: 'evqyiyjmxrjsylftvnrghrfmq',
@@ -169,15 +169,7 @@ function makeFakeMessages(accid, convoid, userid, agentid) {
169
169
  conversation: {
170
170
  id: convoid,
171
171
  account_id: accid,
172
- members: [
173
- {
174
- type: 'user',
175
- id: userid,
176
- last_page_view_url: 'https://subiz.com.vn/',
177
- membership: 'observer',
178
- invited_by: {id: userid, type: 'user'},
179
- },
180
- ],
172
+ members: [usermember],
181
173
  state: 'pending',
182
174
  },
183
175
  },
@@ -192,15 +184,7 @@ function makeFakeMessages(accid, convoid, userid, agentid) {
192
184
  conversation: {
193
185
  id: convoid,
194
186
  account_id: accid,
195
- members: [
196
- {
197
- type: 'agent',
198
- id: agentid,
199
- conversation_id: convoid,
200
- membership: 'observer',
201
- invited_by: {id: userid, type: 'user'},
202
- },
203
- ],
187
+ members: [agentmember],
204
188
  state: 'pending',
205
189
  source: 'https://subiz.com.vn/vi/',
206
190
  },
@@ -214,7 +198,6 @@ function makeFakeMessages(accid, convoid, userid, agentid) {
214
198
  by: {id: userid, type: 'user'},
215
199
  data: {conversation: {id: convoid, account_id: accid, state: 'active'}},
216
200
  },
217
-
218
201
  {
219
202
  id: 'evqyiyjmzaozvqgbkljbwywdl',
220
203
  account_id: accid,
@@ -222,18 +205,7 @@ function makeFakeMessages(accid, convoid, userid, agentid) {
222
205
  type: 'conversation_joined',
223
206
  by: {id: userid, type: 'user'},
224
207
  data: {
225
- conversation: {
226
- id: convoid,
227
- members: [
228
- {
229
- type: 'user',
230
- id: userid,
231
- last_page_view_url: 'https://subiz.com.vn/',
232
- membership: 'active',
233
- invited_by: {id: userid, type: 'user'},
234
- },
235
- ],
236
- },
208
+ conversation: {id: convoid, members: [usermember]},
237
209
  },
238
210
  },
239
211
  {
@@ -247,7 +219,7 @@ function makeFakeMessages(accid, convoid, userid, agentid) {
247
219
  conversation_id: convoid,
248
220
  text: 'Xin chào',
249
221
  format: 'plaintext',
250
- fields: [{key: 'idempotency', value: '"wrueysyjbhqrkiwhsejpqrwqrdkkyaibajdw"'}],
222
+ idempotency_key: 'wrueysyjbhqrkiwhsejpqrwqrdkkyaibajdw',
251
223
  integration_id: inteid,
252
224
  pongs: [{member_id: userid, type: 'seen', created: 1616213203068}],
253
225
  },
@@ -259,20 +231,7 @@ function makeFakeMessages(accid, convoid, userid, agentid) {
259
231
  created: 1616213237491,
260
232
  type: 'conversation_joined',
261
233
  by: {id: userid, type: 'user'},
262
- data: {
263
- conversation: {
264
- id: convoid,
265
- members: [
266
- {
267
- type: 'agent',
268
- id: agentid,
269
- conversation_id: convoid,
270
- membership: 'active',
271
- invited_by: {id: userid, type: 'user'},
272
- },
273
- ],
274
- },
275
- },
234
+ data: {conversation: {id: convoid, members: [agentmember]}},
276
235
  },
277
236
  {
278
237
  id: 'evqyiyjrhtroknjyakrlrwhgr',
@@ -505,7 +505,7 @@ export default class Store {
505
505
  if (this.g_haveSentSeenM[lastmsgsent.id]) return
506
506
 
507
507
  // ignore sending message
508
- if (lastmsgsent.id === sb.getMsgField(lastmsgsent, 'idempotency')) return
508
+ if (lastmsgsent.id === lastmsgsent.data.message.idempotency_key) return
509
509
 
510
510
  // send seen
511
511
  this.api.markAsSeen(id, lastmsgsent.id)
@@ -813,7 +813,7 @@ export default class Store {
813
813
  }
814
814
 
815
815
  if (ev.type === 'message_sent') {
816
- let idemkey = sb.getMsgField(ev, 'idempotency')
816
+ let idemkey = sb.get(ev, 'data.message.idempotency_key')
817
817
  let found = sb.find(this.listEvents(cid), (oldev) => oldev.id === idemkey)
818
818
  if (found) {
819
819
  // keeping old created so the ui can be static
@@ -884,7 +884,7 @@ export default class Store {
884
884
  sb.convoToEv(cid, event)
885
885
  let files = []
886
886
  if (type === 'message_sent') {
887
- sb.setMsgField(event, 'idempotency', idempotency)
887
+ event.data.message.idempotency_key = idempotency
888
888
  event.data.message.conversation_id = cid
889
889
 
890
890
  // pre upload image files
@@ -30,16 +30,6 @@ export function convoOfEv(ev) {
30
30
  export function convoToEv(convoid, ev) {
31
31
  if (!ev) return ''
32
32
  switch (ev.type) {
33
- case 'conversation_state_updated':
34
- case 'conversation_joined':
35
- case 'conversation_invited':
36
- case 'conversation_left':
37
- case 'conversation_tagged':
38
- case 'conversation_untagged':
39
- case 'conversation_typing':
40
- case 'conversation_rating_requested':
41
- case 'conversation_rated':
42
- return op.set(ev, 'data.conversation.id', convoid)
43
33
  case 'message_sent':
44
34
  case 'message_updated':
45
35
  case 'message_pong':
@@ -47,27 +37,10 @@ export function convoToEv(convoid, ev) {
47
37
  case 'ticket_updated':
48
38
  return op.set(ev, 'data.ticket.conversation_id', convoid)
49
39
  default:
50
- return ''
40
+ return op.set(ev, 'data.conversation.id', convoid)
51
41
  }
52
42
  }
53
43
 
54
- export function setMsgField(ev, key, value) {
55
- var fields = op.get(ev, 'data.message.fields') || []
56
- fields = filter(fields, (field) => field.key !== key)
57
- fields.push({key: key, value: stringify(value)})
58
- op.set(ev, 'data.message.fields', fields)
59
- }
60
-
61
- export function getMsgField(ev, fieldName) {
62
- var fields = op.get(ev, 'data.message.fields')
63
- if (size(fields) === 0) return undefined
64
- let f = fields.find((f) => f.key === fieldName)
65
- try {
66
- if (f) return parse(f.value)
67
- return undefined
68
- } catch (e) {}
69
- }
70
-
71
44
  function isObject(item) {
72
45
  return item && typeof item === 'object' && !Array.isArray(item)
73
46
  }
@@ -1124,7 +1097,7 @@ function replaceFileUrl(src) {
1124
1097
  export function unicodeToAscii(str) {
1125
1098
  str = str + ''
1126
1099
  // worka round Đ not work
1127
- str = str.replace('đ', 'd').replace('Đ', 'D')
1100
+ str = str.replaceAll('đ', 'd').replaceAll('Đ', 'D')
1128
1101
  return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '')
1129
1102
  }
1130
1103