@subiz/widget-v4 4.1.2 → 4.1.5

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 (108) hide show
  1. package/compiled_src/chatbox/ChatButton.js +25 -0
  2. package/compiled_src/lib.js +18 -3
  3. package/compiled_src/notif/notif.js +17 -11
  4. package/compiled_src/store/api.js +116 -108
  5. package/compiled_src/store/api_fake.js +4 -5
  6. package/compiled_src/store/store.js +51 -35
  7. package/dist/132.js +6611 -0
  8. package/dist/178.js +406 -0
  9. package/dist/18575b13d4f.132.js +1 -0
  10. package/dist/18575b13d4f.178.js +1 -0
  11. package/dist/18575b13d4f.213.js +1 -0
  12. package/dist/18575b13d4f.335.js +1 -0
  13. package/dist/18575b13d4f.362.js +1 -0
  14. package/dist/18575b13d4f.441.js +1 -0
  15. package/dist/18575b13d4f.605.js +1 -0
  16. package/dist/18575b13d4f.678.js +1 -0
  17. package/dist/18575b13d4f.782.js +1 -0
  18. package/dist/18575b13d4f.app.js +1 -0
  19. package/dist/18575b13d4f.index.html +26 -0
  20. package/dist/18575b13d4f.library.html +26 -0
  21. package/dist/18575b13d4f.library.js +1 -0
  22. package/dist/18575b13d4f.preview.html +759 -0
  23. package/dist/18575b13d4f.preview.js +1 -0
  24. package/dist/18575b13d4f.screenshoot.js +1 -0
  25. package/dist/18575b13d4f.webview.js +1 -0
  26. package/dist/213.js +2774 -0
  27. package/dist/335.js +372 -0
  28. package/dist/362.js +107 -0
  29. package/dist/441.js +2855 -0
  30. package/dist/605.js +303 -0
  31. package/dist/678.js +107 -0
  32. package/dist/782.js +107 -0
  33. package/dist/HASH +1 -0
  34. package/dist/assets/img/Facebook.64607ec.png +0 -0
  35. package/dist/assets/img/Zalo.6845707.png +0 -0
  36. package/dist/assets/img/award1a.1a58e10.png +0 -0
  37. package/dist/assets/img/award3a.3b74423.png +0 -0
  38. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  39. package/dist/assets/img/award5.39eb7ae.png +0 -0
  40. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  41. package/dist/assets/img/caret.998eb8f.svg +1 -0
  42. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  43. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  44. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  45. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  46. package/dist/assets/img/done_green.b817fd4.svg +4 -0
  47. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  48. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  49. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  50. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  51. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  52. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  53. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  54. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  55. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  56. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  57. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  58. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  59. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  60. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  61. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  62. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  63. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  64. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  65. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  66. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  67. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  68. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  69. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  70. package/dist/assets/img/empty.29bed2d.svg +23 -0
  71. package/dist/assets/img/empty_1.0b98af0.svg +11 -0
  72. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  73. package/dist/assets/img/external-link.90577cc.svg +1 -0
  74. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  75. package/dist/assets/img/ghn.070f8e3.svg +17 -0
  76. package/dist/assets/img/ghtk.326eac1.svg +18 -0
  77. package/dist/assets/img/image_default.be0698b.png +0 -0
  78. package/dist/assets/img/info.ebce7ea.svg +1 -0
  79. package/dist/assets/img/loader.37000a7.svg +1 -0
  80. package/dist/assets/img/loading_static.8f403ae.svg +10 -0
  81. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  82. package/dist/assets/img/main-service2.9b99549.png +0 -0
  83. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  84. package/dist/assets/img/package.8d37d0f.svg +5 -0
  85. package/dist/assets/img/package_fade.763c001.svg +1 -0
  86. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  87. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  88. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  89. package/dist/assets/img/search.f9705ff.svg +1 -0
  90. package/dist/assets/img/send.6db52a9.svg +3 -0
  91. package/dist/assets/img/shop.f7dc7d8.svg +1 -0
  92. package/dist/assets/img/shop_faded.df7845a.svg +1 -0
  93. package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
  94. package/dist/assets/img/x.26fdfa3.svg +5 -0
  95. package/dist/malicious-app.js +13 -0
  96. package/dist/screenshoot.html +7 -0
  97. package/dist/screenshoot.js +5608 -0
  98. package/inject.js +2 -6
  99. package/package.json +9 -8
  100. package/src/chatbox/ChatButton.js +30 -0
  101. package/src/lib.js +23 -3
  102. package/src/notif/notif.js +40 -30
  103. package/src/store/api.js +139 -114
  104. package/src/store/api_fake.js +1 -2
  105. package/src/store/store.js +53 -44
  106. package/webpack.dev.js +1 -0
  107. package/webpack.prod.js +1 -0
  108. package/webview.js +43 -0
@@ -15,6 +15,9 @@ const page_loaded = sb.Date.now()
15
15
 
16
16
  // available localstorage key mask, user, hasManuallyClosed, isopen, close_preview_at, lastview, bot_run_logs, plugin_run_logs
17
17
  export default class Store {
18
+ inmem = false
19
+ cookie = cookie
20
+
18
21
  constructor(ApiURL, FileURL, RealtimeURL, inmem, fakeapi) {
19
22
  this.g_sync = {}
20
23
  this.forceDevice = null
@@ -28,6 +31,17 @@ export default class Store {
28
31
  if (this.fake) this.api = new APIFake(ApiURL, FileURL)
29
32
  else this.api = new API(ApiURL, FileURL)
30
33
 
34
+ // test cookie
35
+ if (!inmem) {
36
+ try {
37
+ document.cookie
38
+ localStorage
39
+ } catch (e) {
40
+ // cookie and localstorage is disable => must inmem
41
+ inmem = true
42
+ }
43
+ }
44
+
31
45
  if (inmem) {
32
46
  this.inmem = inmem
33
47
  this.cookie = inmemCookie
@@ -75,9 +89,6 @@ export default class Store {
75
89
  }, 2000)
76
90
  }
77
91
 
78
- inmem = false
79
- cookie = cookie
80
-
81
92
  // inmem
82
93
  _currentViewingProduct = {}
83
94
  linkProduct(p) {
@@ -350,68 +361,65 @@ export default class Store {
350
361
 
351
362
  now = () => sb.Date.now() + this.timeDiff // millisecond on server
352
363
 
353
- async init(accid, mask) {
364
+ async init(accid, mask, userRef) {
354
365
  this.readyGate.close()
355
366
  accid = (accid || '').trim()
356
367
  this.api.setAuth({accid: accid})
357
-
358
368
  this.g_sync = {}
359
- // try to find mask in cookie
360
- if (!mask) {
369
+ if (!userRef) {
370
+ // try to find userRef in cookie
361
371
  try {
362
- mask = this.cookie.get('__sbmask', '')
372
+ userRef = this.cookie.get('__sbref', '')
363
373
  } catch (e) {}
364
- }
365
374
 
366
- let localstorageMask = this.kv.match('mask')
367
- // cookie is deleted, fallback to local storage
368
- if (!mask && localstorageMask) mask = localstorageMask
369
-
370
- // check mask integrity, mask in cookie should match mask in localstorate
371
- // trust cookie, remove localstorage
372
- if (mask && localstorageMask && mask !== localstorageMask) this.clearBrowserData()
373
-
374
- var userId = ''
375
- if (mask) {
376
- let parts = mask.split('@')
377
- if (parts[0] != accid) {
378
- // invalid account (may be user has changed their injected code), must recreate user
379
- mask = ''
380
- this.clearBrowserData()
381
- } else userId = parts[1]
382
- }
375
+ if (!userRef) {
376
+ // try to find mask in cookie
377
+ if (!mask) {
378
+ try {
379
+ mask = this.cookie.get('__sbmask', '')
380
+ } catch (e) {}
381
+ }
382
+
383
+ if (mask) {
384
+ let parts = mask.split('@')
385
+ if (parts[0] != accid) {
386
+ userRef = sb.randomString(40)
387
+ this.new_visitor = true
388
+ }
383
389
 
384
- if (!mask) {
385
- let user = await this.api.createUser(accid)
386
- this.new_visitor = true
387
- mask = user.mask
388
- userId = user.id
389
- } else {
390
- this.new_visitor = false // for checking returning or new visitor
390
+ this.new_visitor = false // for checking returning or new visitor
391
+ // set cookie forever
392
+ this.cookie.set('__sbmask', mask)
393
+ } else {
394
+ // random
395
+ userRef = sb.randomString(40)
396
+ this.new_visitor = true
397
+ }
398
+ }
391
399
  }
392
400
 
393
401
  // set cookie forever
394
- this.cookie.set('__sbmask', mask)
395
- this.kv.put('mask', mask)
402
+ if (userRef) this.cookie.set('__sbref', userRef)
403
+
404
+ let user = await this.api.setAuth({accid: accid, mask: mask, ref: userRef})
405
+ if (user.error) return
396
406
 
397
407
  if (this.realtime) this.realtime.stop()
398
408
  if (this.fake) this.realtime = new RealtimeFake()
399
- else this.realtime = new Realtime(this.RealtimeURL, {user_mask: mask})
409
+ else this.realtime = new Realtime(this.RealtimeURL, {account_id: accid, user_ref: userRef, user_mask: mask})
400
410
 
401
411
  this.realtime.onEvent(this.onWs.bind(this))
402
- this.realtime.onInterrupted(() => this.reconnectWs(accid, userId))
412
+ this.realtime.onInterrupted(() => this.reconnectWs(accid, user.id))
403
413
 
404
- this.api.setAuth({accid: accid, uid: userId, mask: mask})
405
414
  this.seenLoop()
406
415
  await this.reconnect()
407
416
  this.readyGate.open()
408
- this.reconnectWs(accid, userId)
409
-
410
- return mask
417
+ this.reconnectWs(accid, user.id)
418
+ return user
411
419
  }
412
420
 
413
421
  async login(accid, user_id, tokenGenerator) {
414
- let user = await this.api.setTokenGenerator(accid, user_id, tokenGenerator)
422
+ let user = await this.api.setAuth({accid: accid, profile_id: user_id, tokenGenerator: tokenGenerator})
415
423
  if (user.error) return user
416
424
 
417
425
  this.clearBrowserData()
@@ -436,8 +444,9 @@ export default class Store {
436
444
  return user
437
445
  }
438
446
 
439
- logout(user_id) {
440
- this.api.setTokenGenerator(undefined, undefined, undefined)
447
+ logout(userRef) {
448
+ return this.api.setAuth({ref: userRef})
449
+ // this.api.setTokenGenerator({})
441
450
  }
442
451
 
443
452
  seenQueue = [] // convoid will be seen
package/webpack.dev.js CHANGED
@@ -3,6 +3,7 @@ var HtmlWebpackPlugin = require('html-webpack-plugin')
3
3
  module.exports = {
4
4
  mode: 'development',
5
5
  entry: {
6
+ webview: './webview.js',
6
7
  app: './app.js',
7
8
  inject: './inject.js',
8
9
  preview: './preview.js',
package/webpack.prod.js CHANGED
@@ -6,6 +6,7 @@ var fs = require('fs')
6
6
  webpackconfig.output.publicPath = 'https://vcdn.subiz-cdn.com/widget-v4/public/'
7
7
 
8
8
  webpackconfig.entry = {
9
+ webview: './webview.js',
9
10
  app: './app.js',
10
11
  preview: './preview.js',
11
12
  library: './library.js',
package/webview.js ADDED
@@ -0,0 +1,43 @@
1
+ import ApiV4 from './src/lib.js'
2
+ import RunBot from './src/bot.js'
3
+
4
+ var ajax = require('@subiz/ajax/src/ajax.js')
5
+ var config = require('./config.js')
6
+
7
+ var VERSION = '4.3'
8
+
9
+ var apiV4 = new ApiV4(config.ApiURL, config.FileURL, config.RealtimeURL)
10
+
11
+ function callV2(args) {
12
+ args = args || []
13
+ var out = []
14
+ if (Array.isArray(args)) out = args
15
+ else if (typeof args === 'object') {
16
+ var keys = Object.keys(args)
17
+ for (var i = 0; i < keys.length; i++) out.push(args[keys[i]])
18
+ } else return
19
+ args = out
20
+ if (args.length < 1) return
21
+ var method = args.shift()
22
+
23
+ if (typeof apiV4[method] !== 'function') return
24
+ return apiV4[method](...args)
25
+ }
26
+
27
+ function init() {
28
+ let queue = (window.subiz && window.subiz.q) || []
29
+ window.subiz = function () {
30
+ // DO NOT CONVERT TO ARROW FUNCTION, ARGUMENTS WILL BE NULL
31
+ return callV2(arguments)
32
+ }
33
+ queue.forEach(callV2)
34
+
35
+ apiV4.store.readyGate.entry().then(function () {
36
+ apiV4.store.track()
37
+ RunBot(apiV4.store)
38
+ })
39
+ }
40
+
41
+ init()
42
+
43
+ // TODO: should print example v4_1, v4_2, v4_3, ...