@subiz/widget-v4 4.1.93 → 4.1.95

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 (100) hide show
  1. package/compiled_src/chatbox/ChatButton.js +3 -1
  2. package/compiled_src/chatbox/Rating.js +17 -5
  3. package/compiled_src/chatbox/Widget.js +2 -2
  4. package/dist/127.js +273 -0
  5. package/dist/132.js +2796 -0
  6. package/dist/185.js +1885 -0
  7. package/dist/191a1529972.127.js +1 -0
  8. package/dist/191a1529972.132.js +1 -0
  9. package/dist/191a1529972.185.js +1 -0
  10. package/dist/191a1529972.27.js +1 -0
  11. package/dist/191a1529972.278.js +1 -0
  12. package/dist/191a1529972.459.js +1 -0
  13. package/dist/191a1529972.490.js +1 -0
  14. package/dist/191a1529972.74.js +1 -0
  15. package/dist/191a1529972.997.js +1 -0
  16. package/dist/191a1529972.app.js +1 -0
  17. package/dist/191a1529972.index.html +57 -0
  18. package/dist/191a1529972.library.html +57 -0
  19. package/dist/191a1529972.library.js +1 -0
  20. package/dist/191a1529972.preview.html +759 -0
  21. package/dist/191a1529972.preview.js +1 -0
  22. package/dist/191a1529972.screenshoot.js +1 -0
  23. package/dist/191a1529972.webview.js +1 -0
  24. package/dist/27.js +107 -0
  25. package/dist/278.js +406 -0
  26. package/dist/459.js +107 -0
  27. package/dist/490.js +305 -0
  28. package/dist/74.js +372 -0
  29. package/dist/997.js +107 -0
  30. package/dist/HASH +1 -0
  31. package/dist/assets/img/Facebook.64607ec.png +0 -0
  32. package/dist/assets/img/Zalo.6845707.png +0 -0
  33. package/dist/assets/img/award1a.1a58e10.png +0 -0
  34. package/dist/assets/img/award3a.3b74423.png +0 -0
  35. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  36. package/dist/assets/img/award5.39eb7ae.png +0 -0
  37. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  38. package/dist/assets/img/caret.998eb8f.svg +1 -0
  39. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  40. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  41. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  42. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  43. package/dist/assets/img/done_green.b817fd4.svg +4 -0
  44. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  45. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  46. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  47. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  48. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  49. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  50. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  51. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  52. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  53. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  54. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  55. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  56. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  57. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  58. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  59. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  60. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  61. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  62. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  63. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  64. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  65. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  66. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  67. package/dist/assets/img/empty.29bed2d.svg +23 -0
  68. package/dist/assets/img/empty_1.0b98af0.svg +11 -0
  69. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  70. package/dist/assets/img/external-link.90577cc.svg +1 -0
  71. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  72. package/dist/assets/img/ghn.070f8e3.svg +17 -0
  73. package/dist/assets/img/ghtk.326eac1.svg +18 -0
  74. package/dist/assets/img/image_default.be0698b.png +0 -0
  75. package/dist/assets/img/info.ebce7ea.svg +1 -0
  76. package/dist/assets/img/loader.37000a7.svg +1 -0
  77. package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
  78. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  79. package/dist/assets/img/main-service2.9b99549.png +0 -0
  80. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  81. package/dist/assets/img/package.8d37d0f.svg +5 -0
  82. package/dist/assets/img/package_fade.763c001.svg +1 -0
  83. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  84. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  85. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  86. package/dist/assets/img/search.f9705ff.svg +1 -0
  87. package/dist/assets/img/send.6db52a9.svg +3 -0
  88. package/dist/assets/img/shop.f7dc7d8.svg +1 -0
  89. package/dist/assets/img/shop_faded.df7845a.svg +1 -0
  90. package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
  91. package/dist/assets/img/x.26fdfa3.svg +5 -0
  92. package/dist/malicious-app.js +15 -0
  93. package/dist/screenshoot.html +7 -0
  94. package/dist/screenshoot.js +10661 -0
  95. package/package.json +8 -7
  96. package/screenshoot.js +1 -1
  97. package/src/chatbox/ChatButton.js +5 -1
  98. package/src/chatbox/Rating.js +17 -5
  99. package/src/chatbox/Widget.js +6 -2
  100. package/src/plugin.js +0 -1
package/package.json CHANGED
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.1.93",
3
+ "version": "4.1.95",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
7
7
  "build": "rm -rf dist && npx webpack --config webpack.screenshoot.js && npx webpack --config webpack.prod.js",
8
8
  "report": "npx webpack --config webpack.report.js",
9
- "lib": "rm -rf compiled_src && npx babel --out-dir=compiled_src src"
9
+ "lib": "rm -rf compiled_src && npx babel --out-dir=compiled_src src",
10
+ "publish": "npm run build && npm publish"
10
11
  },
11
12
  "dependencies": {
12
13
  "@subiz/ajax": "^3.0.18",
@@ -14,7 +15,7 @@
14
15
  "@subiz/storage": "0.0.8",
15
16
  "@subiz/wsclient": "^4.0.27",
16
17
  "cookie_js": "1.4.2",
17
- "core-js": "^3.37.1",
18
+ "core-js": "^3.38.1",
18
19
  "css-loader": "5.2.7",
19
20
  "file-loader": "^6.2.0",
20
21
  "less": "^4.2.0",
@@ -22,16 +23,16 @@
22
23
  "preact": "10.19.3"
23
24
  },
24
25
  "devDependencies": {
25
- "@babel/cli": "^7.24.8",
26
+ "@babel/cli": "^7.25.6",
26
27
  "@babel/core": "^7.25.2",
27
28
  "@babel/plugin-proposal-class-properties": "^7.18.6",
28
29
  "@babel/plugin-transform-react-jsx": "^7.25.2",
29
- "@babel/preset-env": "^7.25.2",
30
+ "@babel/preset-env": "^7.25.4",
30
31
  "babel-loader": "^9.1.3",
31
32
  "babel-plugin-syntax-jsx": "^6.18.0",
32
33
  "html-webpack-plugin": "^5.6.0",
33
- "puppeteer": "^22.14.0",
34
- "webpack": "^5.93.0",
34
+ "puppeteer": "^23.2.1",
35
+ "webpack": "^5.94.0",
35
36
  "webpack-bundle-analyzer": "^4.10.2",
36
37
  "webpack-cli": "^5.1.4",
37
38
  "webpack-dev-server": "^5.0.4"
package/screenshoot.js CHANGED
@@ -49,7 +49,7 @@ function main() {
49
49
  ]
50
50
  }
51
51
  }
52
-
52
+ plugin.enabled = true
53
53
  plugin.account_id = accid
54
54
  widget._overridePlugin([plugin])
55
55
  // widget._overrideDeviceType('mobile')
@@ -183,7 +183,11 @@ export default class ChatButton extends Com {
183
183
  let account = this.props.store.matchAccount()
184
184
  let accountSetting = this.props.plugin.chatbox
185
185
  let byid = sb.get(this.state.previewEvent, 'by.display_id', sb.get(this.state.previewEvent, 'by.id'))
186
- let agent = sb.cloneDeep(this.props.store.matchAgent(byid)) || {}
186
+ // let agent = sb.cloneDeep(this.props.store.matchAgent(byid)) || {}
187
+ // somehow store.matchAgent(id) return undefined so we try to backup with store.matchAgent('*')[id]
188
+ let agent = this.props.store.matchAgent(byid)
189
+ if (!agent) agent = this.props.store.matchAgent('*')[byid] || {}
190
+ agent = sb.cloneDeep(agent)
187
191
  agent.fullname = agent.fullname || sb.get(account, 'name') || this.props.t('agent')
188
192
  agent.avatar_url = agent.avatar_url || defaultAvatar
189
193
  let position = sb.get(accountSetting, 'desktop_button.position') || 'right'
@@ -5,6 +5,7 @@ import ReleaseAnimation from './releaseAnimation.js'
5
5
  const POPUP_MAX_HEIGHT = 400
6
6
  const POPUP_HARD_MAX_HEIGHT = 500
7
7
  const POPUP_MIN_HEIGHT = 0
8
+ const RATING_EXPIRED_TIME = 15 * 60_000
8
9
 
9
10
  import {Com} from '../common.js'
10
11
  import {h, createRef} from 'preact'
@@ -112,16 +113,20 @@ export default class Rating extends Com {
112
113
  shoudDisplay() {
113
114
  if (!this.props.cid) return false
114
115
 
115
- var requested
116
- var rated
117
- var ended
116
+ let requested
117
+ let rated
118
+ let ended
119
+ let lastMessageSentAt = 0
118
120
 
119
121
  let user = this.props.store.matchUser()
120
122
  // user must send message
121
123
  let foundUser = false
122
124
  sb.map(this.props.store.listEvents(this.props.cid), (ev) => {
123
125
  if (!ev || !ev.by) return
124
- if (ev.by.type == 'user' && ev.type == 'message_sent') foundUser = true
126
+ if (ev.type === 'message_sent') {
127
+ if (sb.get(ev, 'by.type') === 'user') foundUser = true
128
+ if (ev.created > lastMessageSentAt) lastMessageSentAt = ev.created
129
+ }
125
130
  if (ev.type === 'conversation_state_updated' && sb.get(ev, 'data.conversation.state') === 'ended') {
126
131
  ended = ev
127
132
  }
@@ -131,7 +136,14 @@ export default class Rating extends Com {
131
136
  if (!foundUser) return false
132
137
  if (rated) return false
133
138
  let accountSetting = this.props.plugin.chatbox
134
- var auto = accountSetting.auto_request_rating && ended
139
+ let auto = accountSetting.auto_request_rating && ended
140
+ if (auto) {
141
+ if (lastMessageSentAt) {
142
+ auto = auto && Date.now() - lastMessageSentAt < RATING_EXPIRED_TIME
143
+ } else {
144
+ auto = false
145
+ }
146
+ }
135
147
  return requested || auto
136
148
  }
137
149
 
@@ -636,7 +636,9 @@ export default class Widget extends Com {
636
636
 
637
637
  var $convos = sb.map(convos, (convo) => {
638
638
  let ags = sb.filter(convo.members, (m) => {
639
- return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active'
639
+ //return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active'
640
+ // somehow bot send greeting but membership is observer
641
+ return m.type === 'agent' || m.type === 'bot'
640
642
  })
641
643
  let agentids = sb.map(ags, (m) => m.id)
642
644
  agentids = agentids || sb.agentsOfConvo(convo)[0]
@@ -929,7 +931,9 @@ export default class Widget extends Com {
929
931
  let agentM = this.props.store.matchAgent('*')
930
932
 
931
933
  let ags = sb.filter(convo.members, (m) => {
932
- return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active'
934
+ //return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active'
935
+ // somehow bot send greeting but membership is observer
936
+ return m.type === 'agent' || m.type === 'bot'
933
937
  })
934
938
  let agentids = sb.map(ags, (m) => m.id)
935
939
  agentids = agentids || sb.agentsOfConvo(convo)[0]
package/src/plugin.js CHANGED
@@ -33,7 +33,6 @@ function Plugin(plugin, store, $container, lib) {
33
33
  var run = async function () {
34
34
  if (_destroy) return
35
35
  if (state !== 'hold') return
36
- // dont run converted plugin twice
37
36
  if (plugin.type === 'popup' && store.isConverted(plugin.id)) return
38
37
 
39
38
  let lastrun = store.matchLastPluginRun(plugin.id)