@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.
- package/compiled_src/chatbox/Event.js +2 -2
- package/compiled_src/chatbox/Events.js +1 -1
- package/compiled_src/store/api_fake.js +26 -54
- package/compiled_src/store/store.js +3 -3
- package/compiled_src/util/common.js +3 -34
- package/dist/127.js +273 -0
- package/dist/132.js +2796 -0
- package/dist/185.js +1885 -0
- package/dist/18f3763d12b.127.js +1 -0
- package/dist/18f3763d12b.132.js +1 -0
- package/dist/18f3763d12b.185.js +1 -0
- package/dist/18f3763d12b.27.js +1 -0
- package/dist/18f3763d12b.278.js +1 -0
- package/dist/18f3763d12b.459.js +1 -0
- package/dist/18f3763d12b.490.js +1 -0
- package/dist/18f3763d12b.74.js +1 -0
- package/dist/18f3763d12b.997.js +1 -0
- package/dist/18f3763d12b.app.js +1 -0
- package/dist/18f3763d12b.index.html +33 -0
- package/dist/18f3763d12b.library.html +33 -0
- package/dist/18f3763d12b.library.js +1 -0
- package/dist/18f3763d12b.preview.html +759 -0
- package/dist/18f3763d12b.preview.js +1 -0
- package/dist/18f3763d12b.screenshoot.js +1 -0
- package/dist/18f3763d12b.webview.js +1 -0
- package/dist/27.js +107 -0
- package/dist/278.js +406 -0
- package/dist/459.js +107 -0
- package/dist/490.js +304 -0
- package/dist/74.js +372 -0
- package/dist/997.js +107 -0
- package/dist/HASH +1 -0
- package/dist/assets/img/Facebook.64607ec.png +0 -0
- package/dist/assets/img/Zalo.6845707.png +0 -0
- package/dist/assets/img/award1a.1a58e10.png +0 -0
- package/dist/assets/img/award3a.3b74423.png +0 -0
- package/dist/assets/img/award4a.ed6ccd4.png +0 -0
- package/dist/assets/img/award5.39eb7ae.png +0 -0
- package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
- package/dist/assets/img/caret.998eb8f.svg +1 -0
- package/dist/assets/img/convos_empty.2353007.svg +72 -0
- package/dist/assets/img/default.06e6ee0.jpg +0 -0
- package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
- package/dist/assets/img/done_gray.d7e8203.svg +4 -0
- package/dist/assets/img/done_green.b817fd4.svg +4 -0
- package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
- package/dist/assets/img/empty.29bed2d.svg +23 -0
- package/dist/assets/img/empty_1.0b98af0.svg +11 -0
- package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
- package/dist/assets/img/external-link.90577cc.svg +1 -0
- package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
- package/dist/assets/img/ghn.070f8e3.svg +17 -0
- package/dist/assets/img/ghtk.326eac1.svg +18 -0
- package/dist/assets/img/image_default.be0698b.png +0 -0
- package/dist/assets/img/info.ebce7ea.svg +1 -0
- package/dist/assets/img/loader.37000a7.svg +1 -0
- package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
- package/dist/assets/img/main-service1.d536cc2.png +0 -0
- package/dist/assets/img/main-service2.9b99549.png +0 -0
- package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
- package/dist/assets/img/package.8d37d0f.svg +5 -0
- package/dist/assets/img/package_fade.763c001.svg +1 -0
- package/dist/assets/img/rating--average.1ea492c.svg +12 -0
- package/dist/assets/img/rating--great.e3d712e.svg +16 -0
- package/dist/assets/img/rating--poor.2938a25.svg +12 -0
- package/dist/assets/img/search.f9705ff.svg +1 -0
- package/dist/assets/img/send.6db52a9.svg +3 -0
- package/dist/assets/img/shop.f7dc7d8.svg +1 -0
- package/dist/assets/img/shop_faded.df7845a.svg +1 -0
- package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
- package/dist/assets/img/x.26fdfa3.svg +5 -0
- package/dist/malicious-app.js +15 -0
- package/dist/screenshoot.html +7 -0
- package/dist/screenshoot.js +10423 -0
- package/package.json +6 -6
- package/src/chatbox/Event.js +2 -2
- package/src/chatbox/Events.js +2 -1
- package/src/store/api_fake.js +22 -63
- package/src/store/store.js +3 -3
- 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.
|
|
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.
|
|
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.
|
|
26
|
-
"@babel/core": "^7.24.
|
|
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.
|
|
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.
|
|
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",
|
package/src/chatbox/Event.js
CHANGED
|
@@ -185,14 +185,14 @@ export default class Event extends Com {
|
|
|
185
185
|
)
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
if (sb.
|
|
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.
|
|
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
|
|
package/src/chatbox/Events.js
CHANGED
|
@@ -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.
|
|
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()
|
package/src/store/api_fake.js
CHANGED
|
@@ -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
|
-
|
|
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',
|
package/src/store/store.js
CHANGED
|
@@ -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 ===
|
|
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.
|
|
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
|
-
|
|
887
|
+
event.data.message.idempotency_key = idempotency
|
|
888
888
|
event.data.message.conversation_id = cid
|
|
889
889
|
|
|
890
890
|
// pre upload image files
|
package/src/util/common.js
CHANGED
|
@@ -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.
|
|
1100
|
+
str = str.replaceAll('đ', 'd').replaceAll('Đ', 'D')
|
|
1128
1101
|
return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '')
|
|
1129
1102
|
}
|
|
1130
1103
|
|