@subiz/widget-v4 4.0.92 → 4.0.94
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/assets/less/chatbox.less +8 -0
- package/assets/less/message.less +8 -3
- package/assets/less/order.less +10 -0
- package/compiled_src/bot.js +0 -11
- package/compiled_src/call/call.js +0 -61
- package/compiled_src/call/css.js +0 -2
- package/compiled_src/chatbox/AgentsAvatar.js +0 -16
- package/compiled_src/chatbox/AudioAttachments.js +0 -14
- package/compiled_src/chatbox/ButtonAttachments.js +1 -14
- package/compiled_src/chatbox/Buttons.js +0 -13
- package/compiled_src/chatbox/ChatButton.js +1 -78
- package/compiled_src/chatbox/DropdownSelect.js +3 -44
- package/compiled_src/chatbox/Emoji.js +0 -7
- package/compiled_src/chatbox/Event.js +0 -59
- package/compiled_src/chatbox/Events.js +4 -44
- package/compiled_src/chatbox/FileAttachments.js +0 -14
- package/compiled_src/chatbox/FormAttachment.js +1 -52
- package/compiled_src/chatbox/FormAttachments.js +0 -14
- package/compiled_src/chatbox/FormSubmitAttachments.js +0 -11
- package/compiled_src/chatbox/GenericTemplateAttachments.js +1 -20
- package/compiled_src/chatbox/Header.js +1 -46
- package/compiled_src/chatbox/ImageAttachments.js +0 -16
- package/compiled_src/chatbox/InfoMessage.js +0 -13
- package/compiled_src/chatbox/ListField.js +0 -16
- package/compiled_src/chatbox/MessageInput.js +1 -47
- package/compiled_src/chatbox/Order.js +0 -35
- package/compiled_src/chatbox/OrderAttachments.js +98 -39
- package/compiled_src/chatbox/PoweredBy.js +0 -7
- package/compiled_src/chatbox/ProductAttachments.js +0 -19
- package/compiled_src/chatbox/QuickReplies.js +0 -18
- package/compiled_src/chatbox/Rating.js +0 -37
- package/compiled_src/chatbox/ShadowDomRoot.js +0 -9
- package/compiled_src/chatbox/TextMessage.js +0 -64
- package/compiled_src/chatbox/Typing.js +0 -15
- package/compiled_src/chatbox/VideoAttachments.js +0 -14
- package/compiled_src/chatbox/Widget.js +6 -167
- package/compiled_src/chatbox/css.js +0 -2
- package/compiled_src/chatbox/dragscroll.js +1 -5
- package/compiled_src/chatbox/main.js +1 -40
- package/compiled_src/chatbox/releaseAnimation.js +0 -11
- package/compiled_src/chatbox/spinner.js +0 -10
- package/compiled_src/chatbox/time.js +0 -22
- package/compiled_src/chatbox/touchscroll.js +0 -7
- package/compiled_src/common.js +0 -22
- package/compiled_src/contact/contact.js +2 -52
- package/compiled_src/contact/css.js +0 -2
- package/compiled_src/lib.js +19 -46
- package/compiled_src/notif/css.js +0 -2
- package/compiled_src/notif/notif.js +0 -63
- package/compiled_src/order/address_picker.js +4 -38
- package/compiled_src/order/icon.js +0 -16
- package/compiled_src/order/index.js +1 -34
- package/compiled_src/order/order.js +2 -156
- package/compiled_src/plugin.js +1 -77
- package/compiled_src/popup/countdown.js +2 -33
- package/compiled_src/popup/css.js +0 -2
- package/compiled_src/popup/popup.js +2 -165
- package/compiled_src/popup/tick.core.commonjs.js +72 -222
- package/compiled_src/popup/tick.view.flip.commonjs.js +23 -31
- package/compiled_src/store/api.js +99 -65
- package/compiled_src/store/api_fake.js +3 -39
- package/compiled_src/store/realtime_fake.js +0 -6
- package/compiled_src/store/store.js +46 -249
- package/compiled_src/util/campaign.js +0 -13
- package/compiled_src/util/common.js +15 -185
- package/compiled_src/util/common.test.js +0 -4
- package/compiled_src/util/extractor.js +1 -21
- package/compiled_src/util/extractor.test.js +0 -3
- package/compiled_src/util/gate.js +0 -7
- package/compiled_src/util/gate.test.js +1 -2
- package/compiled_src/util/index.js +3 -7
- package/compiled_src/util/mutex.js +31 -0
- package/compiled_src/util/op.js +1 -14
- package/compiled_src/util/order.js +118 -0
- package/compiled_src/util/pubsub.js +0 -6
- package/compiled_src/util/pubsub.test.js +0 -2
- package/package.json +12 -13
- package/src/chatbox/OrderAttachments.js +111 -18
- package/src/lib.js +24 -2
- package/src/store/api.js +110 -21
- package/src/store/api_fake.js +5 -6
- package/src/store/store.js +47 -17
- package/src/util/index.js +4 -0
- package/src/util/mutex.js +27 -0
- package/src/util/order.js +120 -0
- package/dist/132.js +0 -7092
- package/dist/178.js +0 -406
- package/dist/18364d15f37.132.js +0 -1
- package/dist/18364d15f37.178.js +0 -1
- package/dist/18364d15f37.213.js +0 -1
- package/dist/18364d15f37.335.js +0 -1
- package/dist/18364d15f37.362.js +0 -1
- package/dist/18364d15f37.441.js +0 -1
- package/dist/18364d15f37.605.js +0 -1
- package/dist/18364d15f37.678.js +0 -1
- package/dist/18364d15f37.782.js +0 -1
- package/dist/18364d15f37.app.js +0 -1
- package/dist/18364d15f37.index.html +0 -26
- package/dist/18364d15f37.library.html +0 -26
- package/dist/18364d15f37.library.js +0 -1
- package/dist/18364d15f37.preview.html +0 -759
- package/dist/18364d15f37.preview.js +0 -1
- package/dist/18364d15f37.screenshoot.js +0 -1
- package/dist/213.js +0 -3215
- package/dist/335.js +0 -411
- package/dist/362.js +0 -107
- package/dist/441.js +0 -2834
- package/dist/605.js +0 -328
- package/dist/678.js +0 -107
- package/dist/782.js +0 -107
- package/dist/HASH +0 -1
- 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 +0 -20
- package/dist/assets/img/caret.998eb8f.svg +0 -1
- package/dist/assets/img/convos_empty.2353007.svg +0 -72
- 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 +0 -4
- package/dist/assets/img/done_green.b817fd4.svg +0 -4
- 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 +0 -23
- package/dist/assets/img/empty_1.0b98af0.svg +0 -11
- package/dist/assets/img/examplte_logo.f86535f.svg +0 -1
- package/dist/assets/img/external-link.90577cc.svg +0 -1
- package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
- package/dist/assets/img/ghn.070f8e3.svg +0 -17
- package/dist/assets/img/ghtk.326eac1.svg +0 -18
- package/dist/assets/img/image_default.be0698b.png +0 -0
- package/dist/assets/img/info.ebce7ea.svg +0 -1
- package/dist/assets/img/loader.37000a7.svg +0 -1
- package/dist/assets/img/loading_static.8f403ae.svg +0 -10
- 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 +0 -5
- package/dist/assets/img/package_fade.763c001.svg +0 -1
- package/dist/assets/img/rating--average.1ea492c.svg +0 -12
- package/dist/assets/img/rating--great.e3d712e.svg +0 -16
- package/dist/assets/img/rating--poor.2938a25.svg +0 -12
- package/dist/assets/img/search.f9705ff.svg +0 -1
- package/dist/assets/img/send.6db52a9.svg +0 -3
- package/dist/assets/img/shop.f7dc7d8.svg +0 -1
- package/dist/assets/img/shop_faded.df7845a.svg +0 -1
- package/dist/assets/img/subiz-mono.877e9f5.svg +0 -3
- package/dist/assets/img/x.26fdfa3.svg +0 -5
- package/dist/malicious-app.js +0 -13
- package/dist/screenshoot.html +0 -7
- package/dist/screenshoot.js +0 -5953
|
@@ -4,16 +4,13 @@ module.exports = function () {
|
|
|
4
4
|
if (!module) {
|
|
5
5
|
var module = {};
|
|
6
6
|
}
|
|
7
|
-
|
|
8
7
|
;
|
|
9
8
|
'use strict';
|
|
10
|
-
|
|
11
9
|
var classCallCheck = function (instance, Constructor) {
|
|
12
10
|
if (!(instance instanceof Constructor)) {
|
|
13
11
|
throw new TypeError('Cannot call a class as a function');
|
|
14
12
|
}
|
|
15
13
|
};
|
|
16
|
-
|
|
17
14
|
var createClass = function () {
|
|
18
15
|
function defineProperties(target, props) {
|
|
19
16
|
for (var i = 0; i < props.length; i++) {
|
|
@@ -24,37 +21,37 @@ module.exports = function () {
|
|
|
24
21
|
Object.defineProperty(target, descriptor.key, descriptor);
|
|
25
22
|
}
|
|
26
23
|
}
|
|
27
|
-
|
|
28
24
|
return function (Constructor, protoProps, staticProps) {
|
|
29
25
|
if (protoProps) defineProperties(Constructor.prototype, protoProps);
|
|
30
26
|
if (staticProps) defineProperties(Constructor, staticProps);
|
|
31
27
|
return Constructor;
|
|
32
28
|
};
|
|
33
29
|
}();
|
|
34
|
-
|
|
35
30
|
var index = function (_ref) {
|
|
36
31
|
var DOM = _ref.DOM,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
32
|
+
animate = _ref.Animation.animate,
|
|
33
|
+
Extension = _ref.Extension,
|
|
34
|
+
performance = _ref.Date.performance,
|
|
35
|
+
_ref$View = _ref.View,
|
|
36
|
+
rooter = _ref$View.rooter,
|
|
37
|
+
destroyer = _ref$View.destroyer,
|
|
38
|
+
drawer = _ref$View.drawer,
|
|
39
|
+
updater = _ref$View.updater,
|
|
40
|
+
styler = _ref$View.styler;
|
|
46
41
|
var easeOutCubic = Extension.getExtension(Extension.Type.EASING_FUNCTION, 'ease-out-cubic');
|
|
47
42
|
var easeOutSine = Extension.getExtension(Extension.Type.EASING_FUNCTION, 'ease-out-sine');
|
|
48
|
-
|
|
49
43
|
var draw = function draw(state) {
|
|
50
44
|
if (state.isInitialValue()) {
|
|
51
45
|
state.root.textContent = '';
|
|
46
|
+
|
|
52
47
|
state.spacer = DOM.create('span', 'tick-flip-spacer');
|
|
53
48
|
state.root.appendChild(state.spacer);
|
|
49
|
+
|
|
54
50
|
var shadowTop = DOM.create('span', 'tick-flip-shadow-top tick-flip-shadow tick-flip-front');
|
|
55
51
|
var shadowBottom = DOM.create('span', 'tick-flip-shadow-bottom tick-flip-shadow tick-flip-back');
|
|
56
52
|
state.root.appendChild(shadowTop);
|
|
57
53
|
state.root.appendChild(shadowBottom);
|
|
54
|
+
|
|
58
55
|
state.shadowCard = DOM.create('span', 'tick-flip-card-shadow');
|
|
59
56
|
state.root.appendChild(state.shadowCard);
|
|
60
57
|
}
|
|
@@ -70,7 +67,6 @@ module.exports = function () {
|
|
|
70
67
|
}
|
|
71
68
|
|
|
72
69
|
var turningCard = state.cards[state.cards.length - 1];
|
|
73
|
-
|
|
74
70
|
if (turningCard) {
|
|
75
71
|
turningCard.waiting = false;
|
|
76
72
|
turningCard.offset = performance();
|
|
@@ -93,18 +89,16 @@ module.exports = function () {
|
|
|
93
89
|
topCard.waiting = true;
|
|
94
90
|
topCard.front = state.value;
|
|
95
91
|
topCard.rotate(0);
|
|
92
|
+
|
|
96
93
|
state.root.insertBefore(topCard.root, state.root.firstChild);
|
|
97
94
|
state.cards.push(topCard);
|
|
98
|
-
|
|
99
95
|
if (!state.animating) {
|
|
100
96
|
state.animating = true;
|
|
101
97
|
var ease = Extension.getExtension(Extension.Type.EASING_FUNCTION, state.style.flipEasing);
|
|
102
|
-
|
|
103
98
|
var tick = function tick() {
|
|
104
99
|
var cardsToAnimate = state.cards.filter(function (card) {
|
|
105
100
|
return !card.done && !card.waiting;
|
|
106
101
|
});
|
|
107
|
-
|
|
108
102
|
if (cardsToAnimate.length === 0) {
|
|
109
103
|
state.animating = false;
|
|
110
104
|
return;
|
|
@@ -114,50 +108,49 @@ module.exports = function () {
|
|
|
114
108
|
if (card.offset !== null) {
|
|
115
109
|
card.progress = (performance() - card.offset) / state.style.flipDuration;
|
|
116
110
|
}
|
|
117
|
-
|
|
118
111
|
if (card.progress >= 1) {
|
|
119
112
|
card.progress = 1;
|
|
120
113
|
card.done = true;
|
|
121
114
|
}
|
|
122
|
-
|
|
123
115
|
card.visual_progress = ease(card.progress);
|
|
124
116
|
});
|
|
117
|
+
|
|
125
118
|
var cardDistance = 0.01;
|
|
126
119
|
cardsToAnimate.reverse().forEach(function (card, index) {
|
|
127
120
|
var previousCard = cardsToAnimate[index - 1];
|
|
128
|
-
|
|
129
121
|
if (previousCard && card.visual_progress <= previousCard.visual_progress) {
|
|
130
122
|
card.visual_progress = previousCard.visual_progress + cardDistance;
|
|
131
123
|
}
|
|
132
124
|
});
|
|
133
125
|
cardsToAnimate.reverse();
|
|
126
|
+
|
|
134
127
|
state.cards.forEach(function (card, index) {
|
|
135
128
|
var shadowFrontProgress = 1 - Math.abs(card.visual_progress - 0.5) * 2;
|
|
136
129
|
var highlightBackProgress = 1 - (card.visual_progress - 0.5) / 0.5;
|
|
137
130
|
card.shadowFront = shadowFrontProgress;
|
|
138
131
|
card.highlightBack = highlightBackProgress;
|
|
132
|
+
|
|
139
133
|
var cardAbove = state.cards[index + 1];
|
|
140
134
|
|
|
141
135
|
if (cardAbove && card.visual_progress > 0.5 && card.visual_progress > 0) {
|
|
142
136
|
card.shadowBack = easeOutCubic(cardAbove.visual_progress);
|
|
143
137
|
}
|
|
144
138
|
});
|
|
139
|
+
|
|
145
140
|
cardsToAnimate.forEach(function (card, index) {
|
|
146
141
|
var p = card.visual_progress;
|
|
147
|
-
|
|
148
142
|
if (p > 0.5 && !card.done) {
|
|
149
143
|
card.root.style.setProperty('z-index', 10 + index, 'important');
|
|
150
144
|
} else {
|
|
151
145
|
card.root.style.removeProperty('z-index');
|
|
152
146
|
}
|
|
153
|
-
|
|
154
147
|
card.rotate(p * -180);
|
|
155
148
|
});
|
|
149
|
+
|
|
156
150
|
var shadowProgress = 0;
|
|
157
151
|
var dist = 1;
|
|
158
152
|
cardsToAnimate.forEach(function (card) {
|
|
159
153
|
var d = Math.abs(card.visual_progress - 0.5);
|
|
160
|
-
|
|
161
154
|
if (d < dist) {
|
|
162
155
|
dist = d;
|
|
163
156
|
shadowProgress = card.visual_progress;
|
|
@@ -166,9 +159,11 @@ module.exports = function () {
|
|
|
166
159
|
var s = shadowProgress < 0.5 ? easeOutSine(shadowProgress / 0.5) : easeOutSine((1 - shadowProgress) / 0.5);
|
|
167
160
|
state.shadowCard.style.setProperty('opacity', s, 'important');
|
|
168
161
|
DOM.transform(state.shadowCard, 'scaleY', s);
|
|
162
|
+
|
|
169
163
|
state.cards.filter(function (card) {
|
|
170
164
|
return card.done;
|
|
171
165
|
}).slice(0, -1).forEach(function (card) {
|
|
166
|
+
|
|
172
167
|
state.cards = state.cards.filter(function (c) {
|
|
173
168
|
return c !== card;
|
|
174
169
|
});
|
|
@@ -179,15 +174,14 @@ module.exports = function () {
|
|
|
179
174
|
});
|
|
180
175
|
requestAnimationFrame(tick);
|
|
181
176
|
};
|
|
182
|
-
|
|
183
177
|
tick();
|
|
184
178
|
}
|
|
185
179
|
};
|
|
186
|
-
|
|
187
180
|
var FlipCard = function () {
|
|
188
181
|
function FlipCard() {
|
|
189
182
|
classCallCheck(this, FlipCard);
|
|
190
183
|
this._root = DOM.create('span', 'tick-flip-card');
|
|
184
|
+
|
|
191
185
|
var front = DOM.create('span', 'tick-flip-panel-front tick-flip-front tick-flip-panel');
|
|
192
186
|
var textFront = DOM.create('span', 'tick-flip-panel-front-text');
|
|
193
187
|
var textFrontWrapper = DOM.create('span', 'tick-flip-panel-text-wrapper');
|
|
@@ -206,7 +200,6 @@ module.exports = function () {
|
|
|
206
200
|
back.appendChild(shadowBack);
|
|
207
201
|
|
|
208
202
|
this._root.appendChild(front);
|
|
209
|
-
|
|
210
203
|
this._root.appendChild(back);
|
|
211
204
|
|
|
212
205
|
this._front = front;
|
|
@@ -214,17 +207,17 @@ module.exports = function () {
|
|
|
214
207
|
this._shadowFront = shadowFront;
|
|
215
208
|
this._shadowBack = shadowBack;
|
|
216
209
|
this._highlightBack = highlightBack;
|
|
210
|
+
|
|
217
211
|
this._textBack = textBackWrapper;
|
|
218
212
|
this._textFront = textFrontWrapper;
|
|
213
|
+
|
|
219
214
|
this._frontValue = null;
|
|
220
215
|
this._backValue = null;
|
|
221
216
|
}
|
|
222
|
-
|
|
223
217
|
createClass(FlipCard, [{
|
|
224
218
|
key: 'rotate',
|
|
225
219
|
value: function rotate(degrees) {
|
|
226
220
|
this._front.style.setProperty('transform', 'rotateX(' + degrees + 'deg)', 'important');
|
|
227
|
-
|
|
228
221
|
this._back.style.setProperty('transform', 'rotateX(' + (-180 + degrees) + 'deg)', 'important');
|
|
229
222
|
}
|
|
230
223
|
}, {
|
|
@@ -288,7 +281,6 @@ module.exports = function () {
|
|
|
288
281
|
}), drawer(state, draw), destroyer(state));
|
|
289
282
|
};
|
|
290
283
|
};
|
|
291
|
-
|
|
292
284
|
module.exports = index;
|
|
293
285
|
module.exports.identifier = {
|
|
294
286
|
name: 'flip',
|
|
@@ -4,33 +4,22 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _index = _interopRequireDefault(require("../util/index.js"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
|
-
|
|
14
10
|
const ajax = require('@subiz/ajax/src/ajax.js');
|
|
15
|
-
|
|
16
11
|
ajax.env.XMLHttpRequest = window.XMLHttpRequest;
|
|
17
|
-
|
|
18
12
|
const findAnswer = challenge => challenge.answer;
|
|
19
|
-
|
|
20
13
|
function jsonifyTextPlain(param, done) {
|
|
21
14
|
let req = param.request;
|
|
22
15
|
if (req.content_type === 'text/plain' && req.body !== undefined) req.body = _index.default.stringify(req.body);
|
|
23
16
|
done(true);
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
class _default {
|
|
27
19
|
constructor(ApiURL, FileURL) {
|
|
28
20
|
_defineProperty(this, "listConversations", _ => this.apireq.addQuery('user_id', this.uid).addQuery('integration_id', `${this.accid}.subizv4.subikon`).get('/conversations'));
|
|
29
|
-
|
|
30
21
|
_defineProperty(this, "listMessages", (cid, limit, start_id) => this.apireq.addQuery('limit', limit).addQuery('start_id', start_id).get(`/conversations/${cid}/messages`));
|
|
31
|
-
|
|
32
22
|
_defineProperty(this, "ajax", ajax);
|
|
33
|
-
|
|
34
23
|
_defineProperty(this, "start", extraData => {
|
|
35
24
|
let data = {
|
|
36
25
|
starter_id: this.uid,
|
|
@@ -40,30 +29,19 @@ class _default {
|
|
|
40
29
|
source: 'web'
|
|
41
30
|
}
|
|
42
31
|
};
|
|
43
|
-
|
|
44
32
|
_index.default.each(extraData, (v, k) => {
|
|
45
33
|
data[k] = v;
|
|
46
34
|
});
|
|
47
|
-
|
|
48
35
|
return this.apireq.post('/conversations', data);
|
|
49
36
|
});
|
|
50
|
-
|
|
51
37
|
_defineProperty(this, "sendConvoEvent", (cid, ev) => this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/events`, ev));
|
|
52
|
-
|
|
53
38
|
_defineProperty(this, "createPostback", (cid, p) => this.apireq.post(`/accounts/${this.accid}/conversations/${cid}/postbacks`, p));
|
|
54
|
-
|
|
55
39
|
_defineProperty(this, "markAsReceived", (cid, messageId) => this.apireq.post(`/conversations/${cid}/messages/${messageId}/receive`));
|
|
56
|
-
|
|
57
40
|
_defineProperty(this, "markAsSeen", (cid, messageId) => this.apireq.post(`/conversations/${cid}/messages/${messageId}/seen`));
|
|
58
|
-
|
|
59
41
|
_defineProperty(this, "getConversation", cid => this.apireq.get(`/conversations/${cid}`));
|
|
60
|
-
|
|
61
42
|
_defineProperty(this, "getLocaleContent", locale => this.apireq.get(`/accounts/${this.accid}/locales/${locale}`));
|
|
62
|
-
|
|
63
43
|
_defineProperty(this, "sendEvent", data => this.apireq.post(`/users/${this.uid}/events`, data));
|
|
64
|
-
|
|
65
44
|
_defineProperty(this, "sendTyping", cid => this.apireq.post(`/conversations/${cid}/typing`));
|
|
66
|
-
|
|
67
45
|
_defineProperty(this, "sendPresence", (device, is_focused, productid, source_id, sku) => this.sendEvent({
|
|
68
46
|
by: {
|
|
69
47
|
id: this.uid,
|
|
@@ -80,7 +58,6 @@ class _default {
|
|
|
80
58
|
}
|
|
81
59
|
}
|
|
82
60
|
}));
|
|
83
|
-
|
|
84
61
|
_defineProperty(this, "uploadToS3", async file => {
|
|
85
62
|
let {
|
|
86
63
|
body: signed,
|
|
@@ -102,6 +79,7 @@ class _default {
|
|
|
102
79
|
if (error) return {
|
|
103
80
|
error
|
|
104
81
|
};
|
|
82
|
+
|
|
105
83
|
let body;
|
|
106
84
|
({
|
|
107
85
|
body,
|
|
@@ -116,46 +94,41 @@ class _default {
|
|
|
116
94
|
url: this.FileURL + body.url
|
|
117
95
|
};
|
|
118
96
|
});
|
|
119
|
-
|
|
120
97
|
_defineProperty(this, "getChallenge", accid => this.apireq.post(`/accounts/${accid}/scrypt-challenges`));
|
|
121
|
-
|
|
122
98
|
_defineProperty(this, "time", _ => this.apireq.get('/time'));
|
|
123
|
-
|
|
124
99
|
_defineProperty(this, "updateUser", data => this.apireq.post(`/users/${this.uid}`, data));
|
|
125
|
-
|
|
126
100
|
_defineProperty(this, "getUser", _ => this.apireq.get(`/accounts/${this.accid}/users/${this.uid}`));
|
|
127
|
-
|
|
128
101
|
_defineProperty(this, "getAccountSetting", () => this.apireq.get(`/accounts/${this.accid}/settings`));
|
|
129
|
-
|
|
130
102
|
_defineProperty(this, "getIsOnline", () => this.apireq.get(`/accounts/${this.accid}/is_online`));
|
|
131
|
-
|
|
132
103
|
_defineProperty(this, "sendImpression", impression => this.apireq.post(`/accounts/${this.accid}/campaigns/${impression.campaign_id}/impressions`, impression));
|
|
133
|
-
|
|
134
104
|
_defineProperty(this, "sendConversion", conversion => this.apireq.post(`/accounts/${this.accid}/campaigns/${conversion.campaign_id}/conversions`, conversion));
|
|
135
|
-
|
|
136
105
|
_defineProperty(this, "lookupOrder", key => ajax.setBaseUrl(this.ApiURL).setContentType('text/plain').beforeHook(jsonifyTextPlain).setParser('json').addQuery('x-signed-key', key).get(`/orders/123`));
|
|
137
|
-
|
|
138
106
|
_defineProperty(this, "getOrder", id => this.apireq.get(`/accounts/${this.accid}/orders/` + id));
|
|
139
|
-
|
|
140
107
|
_defineProperty(this, "updateOrder", order => this.apireq.post(`/accounts/${this.accid}/orders/` + order.id, order));
|
|
141
|
-
|
|
142
108
|
_defineProperty(this, "fetchShippingAddresses", () => this.apireq.get(`/accounts/${this.accid}/users/${this.uid}/shipping-addresses`));
|
|
143
|
-
|
|
144
109
|
_defineProperty(this, "createShippingAddress", addr => this.apireq.post(`/accounts/${this.accid}/users/${this.uid}/shipping-addresses`, addr));
|
|
145
|
-
|
|
146
110
|
_defineProperty(this, "list_provinces", () => this.apireq.get(`/accounts/${this.accid}/provinces`));
|
|
147
|
-
|
|
148
111
|
_defineProperty(this, "list_districts", p => this.apireq.setQuery(p).get(`/accounts/${this.accid}/districts`));
|
|
149
|
-
|
|
150
112
|
_defineProperty(this, "list_wards", p => this.apireq.setQuery(p).get(`/accounts/${this.accid}/wards`));
|
|
151
|
-
|
|
152
113
|
_defineProperty(this, "suggest_address", keyword => this.apireq.setQuery({
|
|
153
114
|
keyword: keyword
|
|
154
115
|
}).get(`/accounts/${this.accid}/addresses`));
|
|
155
|
-
|
|
116
|
+
this.refreshLock = new _index.default.Mutex();
|
|
156
117
|
this.FileURL = FileURL;
|
|
157
118
|
this.ApiURL = ApiURL;
|
|
158
119
|
this.apireq = ajax.setBaseUrl(ApiURL).withCredentials(true).addQuery('v', '6').setContentType('text/plain').beforeHook(jsonifyTextPlain).setParser('json').beforeHook((param, done) => {
|
|
120
|
+
if (this.token_generator) {
|
|
121
|
+
let user_id = this.profile_id;
|
|
122
|
+
this.token_generator().then(token => {
|
|
123
|
+
if (user_id != this.profile_id) return done(true);
|
|
124
|
+
|
|
125
|
+
if (!token) return done(false);
|
|
126
|
+
if (token == 'error') return done(false);
|
|
127
|
+
param.request = param.request.addQuery('x-access-token', token);
|
|
128
|
+
return done(true);
|
|
129
|
+
});
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
159
132
|
if (this.mask) param.request = param.request.addQuery('x-user-mask', this.mask);
|
|
160
133
|
return done(true);
|
|
161
134
|
});
|
|
@@ -164,13 +137,97 @@ class _default {
|
|
|
164
137
|
setAgentId(agid) {
|
|
165
138
|
this.agentid = agid;
|
|
166
139
|
}
|
|
167
|
-
|
|
168
140
|
setAuth(obj) {
|
|
169
141
|
this.accid = obj.accid;
|
|
170
142
|
this.mask = obj.mask;
|
|
171
143
|
this.uid = obj.uid;
|
|
172
144
|
}
|
|
145
|
+
async setTokenGenerator(accid, uid, tokenGenerator) {
|
|
146
|
+
this.tokensession = this.tokensession || 0;
|
|
147
|
+
this.tokensession++;
|
|
148
|
+
let tokensession = this.tokensession;
|
|
149
|
+
if (!accid || !_index.default.startsWith(accid, 'ac')) return {
|
|
150
|
+
error: 'invalid_account_id'
|
|
151
|
+
};
|
|
152
|
+
if (!uid) return {
|
|
153
|
+
error: 'invalid_user_id'
|
|
154
|
+
};
|
|
155
|
+
if (typeof tokenGenerator !== 'function') return {
|
|
156
|
+
error: 'invalid_token_generator'
|
|
157
|
+
};
|
|
158
|
+
this.accid = accid;
|
|
159
|
+
this.profile_id = uid;
|
|
160
|
+
this.token_generator = async force => {
|
|
161
|
+
await this.refreshLock.lock();
|
|
162
|
+
if (tokensession != this.tokensession) {
|
|
163
|
+
this.refreshLock.unlock();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
let age = (_index.default.Date.now() - (this.last_token_at || 0)) / 1000;
|
|
173
168
|
|
|
169
|
+
if (!force && this.last_token && age < 1800) {
|
|
170
|
+
this.refreshLock.unlock();
|
|
171
|
+
return this.last_token;
|
|
172
|
+
}
|
|
173
|
+
if (!force && this.last_token && age < 3000) {
|
|
174
|
+
if (this.token_generator) setTimeout(async () => {
|
|
175
|
+
let token, err;
|
|
176
|
+
try {
|
|
177
|
+
token = await tokenGenerator(uid);
|
|
178
|
+
} catch (e) {
|
|
179
|
+
err = e;
|
|
180
|
+
}
|
|
181
|
+
if (tokensession != this.tokensession) {
|
|
182
|
+
this.refreshLock.unlock();
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
if (err) this.last_token = 'error';else this.last_token = token;
|
|
187
|
+
this.last_token_at = _index.default.Date.now();
|
|
188
|
+
this.refreshLock.unlock();
|
|
189
|
+
});
|
|
190
|
+
return this.last_token;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
let token;
|
|
194
|
+
let err;
|
|
195
|
+
try {
|
|
196
|
+
token = await tokenGenerator(uid);
|
|
197
|
+
} catch (e) {
|
|
198
|
+
err = e;
|
|
199
|
+
}
|
|
200
|
+
if (tokensession != this.tokensession) {
|
|
201
|
+
this.refreshLock.unlock();
|
|
202
|
+
return;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (err) this.last_token = 'error';else this.last_token = token;
|
|
206
|
+
this.last_token_at = _index.default.Date.now();
|
|
207
|
+
this.refreshLock.unlock();
|
|
208
|
+
return this.last_token;
|
|
209
|
+
};
|
|
210
|
+
let outuser;
|
|
211
|
+
for (let i = 0; true; i++) {
|
|
212
|
+
await this.token_generator(true);
|
|
213
|
+
if (tokensession != this.tokensession) break;
|
|
214
|
+
outuser = await ajax.setBaseUrl(this.ApiURL).withCredentials(true).addQuery('v', '6').addQuery('x-access-token', this.last_token).setParser('json').get(`/accounts/${accid}/users/${uid}`);
|
|
215
|
+
if (!_index.default.get(outuser, 'body.id')) {
|
|
216
|
+
let sleeptime = Math.min(2000 + i * 100, 120000);
|
|
217
|
+
await _index.default.sleep(sleeptime);
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
break;
|
|
221
|
+
}
|
|
222
|
+
if (outuser.error) {
|
|
223
|
+
if (_index.default.get(outuser.body.code)) return {
|
|
224
|
+
error: outuser.body.code
|
|
225
|
+
};
|
|
226
|
+
return outuser;
|
|
227
|
+
}
|
|
228
|
+
this.uid = outuser.body.id;
|
|
229
|
+
return outuser.body;
|
|
230
|
+
}
|
|
174
231
|
sendContentView(device, pageUrl, pageTitle, id, source_id, sku) {
|
|
175
232
|
if (!id) id = undefined;
|
|
176
233
|
if (!source_id) source_id = undefined;
|
|
@@ -192,25 +249,6 @@ class _default {
|
|
|
192
249
|
}
|
|
193
250
|
});
|
|
194
251
|
}
|
|
195
|
-
|
|
196
|
-
async createAgentUser(agenttoken) {
|
|
197
|
-
for (var i = 0; i < 10; i++) {
|
|
198
|
-
let {
|
|
199
|
-
body,
|
|
200
|
-
error
|
|
201
|
-
} = await ajax.setBaseUrl(this.ApiURL).setContentType('text/plain').beforeHook(jsonifyTextPlain).setParser('json').addQuery('x-access-token', agenttoken).post(`/agent-users`);
|
|
202
|
-
|
|
203
|
-
if (error) {
|
|
204
|
-
await _index.default.sleep(1000);
|
|
205
|
-
continue;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
let userid = body ? body.id || '' : '';
|
|
209
|
-
if (!userid) return '';
|
|
210
|
-
return body.account_id + '@' + userid;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
252
|
async createUser(accid) {
|
|
215
253
|
for (var i = 0; i < 10; i++) {
|
|
216
254
|
const {
|
|
@@ -225,16 +263,12 @@ class _default {
|
|
|
225
263
|
body: user,
|
|
226
264
|
error
|
|
227
265
|
} = await this.apireq.post(`/accounts/${accid}/scrypt-challenges/users`, data);
|
|
228
|
-
|
|
229
266
|
if (error) {
|
|
230
267
|
await _index.default.sleep(1000);
|
|
231
268
|
continue;
|
|
232
269
|
}
|
|
233
|
-
|
|
234
270
|
return user;
|
|
235
271
|
}
|
|
236
272
|
}
|
|
237
|
-
|
|
238
273
|
}
|
|
239
|
-
|
|
240
274
|
exports.default = _default;
|
|
@@ -4,29 +4,20 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _index = _interopRequireDefault(require("../util/index.js"));
|
|
9
|
-
|
|
10
8
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
|
-
|
|
12
9
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
13
|
-
|
|
14
10
|
const ajax = require('@subiz/ajax/src/ajax.js');
|
|
15
|
-
|
|
16
11
|
ajax.env.XMLHttpRequest = window.XMLHttpRequest;
|
|
17
|
-
|
|
18
12
|
const findAnswer = challenge => challenge.answer;
|
|
19
|
-
|
|
20
13
|
function jsonifyTextPlain(param, done) {
|
|
21
14
|
let req = param.request;
|
|
22
15
|
if (req.content_type === 'text/plain' && req.body !== undefined) req.body = _index.default.stringify(req.body);
|
|
23
16
|
done(true);
|
|
24
17
|
}
|
|
25
|
-
|
|
26
18
|
const OK200 = Promise.resolve({
|
|
27
19
|
code: 200
|
|
28
20
|
});
|
|
29
|
-
|
|
30
21
|
class _default {
|
|
31
22
|
constructor(ApiURL, FileURL) {
|
|
32
23
|
_defineProperty(this, "listConversations", _ => {
|
|
@@ -39,7 +30,6 @@ class _default {
|
|
|
39
30
|
code: 200
|
|
40
31
|
});
|
|
41
32
|
});
|
|
42
|
-
|
|
43
33
|
_defineProperty(this, "listMessages", (cid, limit, start_id) => {
|
|
44
34
|
let messages = makeFakeMessages(this.accid, 'csqwudlkftltnbebvq', this.uid, this.agentid);
|
|
45
35
|
return Promise.resolve({
|
|
@@ -47,68 +37,43 @@ class _default {
|
|
|
47
37
|
code: 200
|
|
48
38
|
});
|
|
49
39
|
});
|
|
50
|
-
|
|
51
40
|
_defineProperty(this, "ajax", ajax);
|
|
52
|
-
|
|
53
41
|
_defineProperty(this, "start", extraData => OK200);
|
|
54
|
-
|
|
55
42
|
_defineProperty(this, "sendConvoEvent", (cid, ev) => OK200);
|
|
56
|
-
|
|
57
43
|
_defineProperty(this, "createPostback", (cid, p) => OK200);
|
|
58
|
-
|
|
59
44
|
_defineProperty(this, "markAsReceived", (cid, messageId) => OK200);
|
|
60
|
-
|
|
61
45
|
_defineProperty(this, "markAsSeen", (cid, messageId) => OK200);
|
|
62
|
-
|
|
63
46
|
_defineProperty(this, "getConversation", cid => Promise.resolve({
|
|
64
47
|
body: makeFakeConvo(this.accid, 'csqwudlkftltnbebvq', this.uid, this.agentid),
|
|
65
48
|
code: 200
|
|
66
49
|
}));
|
|
67
|
-
|
|
68
50
|
_defineProperty(this, "getLocaleContent", locale => this.apireq.get(`/accounts/${this.accid}/locales/${locale}`));
|
|
69
|
-
|
|
70
51
|
_defineProperty(this, "sendEvent", data => OK200);
|
|
71
|
-
|
|
72
52
|
_defineProperty(this, "sendTyping", cid => OK200);
|
|
73
|
-
|
|
74
53
|
_defineProperty(this, "sendPresence", data => OK200);
|
|
75
|
-
|
|
76
54
|
_defineProperty(this, "sendContent", data => OK200);
|
|
77
|
-
|
|
78
55
|
_defineProperty(this, "uploadToS3", async file => OK200);
|
|
79
|
-
|
|
80
56
|
_defineProperty(this, "getChallenge", accid => OK200);
|
|
81
|
-
|
|
82
57
|
_defineProperty(this, "createUser", accid => Promise.resolve({
|
|
83
58
|
account_id: accid,
|
|
84
59
|
id: 'usqzgtgfake',
|
|
85
60
|
mask: 'fakemask'
|
|
86
61
|
}));
|
|
87
|
-
|
|
88
|
-
_defineProperty(this, "createAgentUser", agenttoken => Promise.resolve('fakemask'));
|
|
89
|
-
|
|
90
62
|
_defineProperty(this, "time", _ => Promise.resolve({
|
|
91
63
|
code: 200,
|
|
92
64
|
body: new _index.default.Date().toISOString()
|
|
93
65
|
}));
|
|
94
|
-
|
|
95
66
|
_defineProperty(this, "updateUser", data => OK200);
|
|
96
|
-
|
|
97
67
|
_defineProperty(this, "getUser", _ => Promise.resolve({
|
|
98
68
|
code: 200,
|
|
99
69
|
body: {
|
|
100
70
|
id: '-'
|
|
101
71
|
}
|
|
102
72
|
}));
|
|
103
|
-
|
|
104
73
|
_defineProperty(this, "getAccountSetting", () => this.apireq.get(`/accounts/${this.accid}/settings`));
|
|
105
|
-
|
|
106
74
|
_defineProperty(this, "getIsOnline", () => this.apireq.get(`/accounts/${this.accid}/is_online`));
|
|
107
|
-
|
|
108
75
|
_defineProperty(this, "sendImpression", impression => OK200);
|
|
109
|
-
|
|
110
76
|
_defineProperty(this, "sendConversion", conversion => OK200);
|
|
111
|
-
|
|
112
77
|
this.FileURL = FileURL;
|
|
113
78
|
this.apireq = ajax.setBaseUrl(ApiURL).setContentType('text/plain').beforeHook(jsonifyTextPlain).setParser('json');
|
|
114
79
|
}
|
|
@@ -116,17 +81,17 @@ class _default {
|
|
|
116
81
|
setAgentId(agid) {
|
|
117
82
|
this.agentid = agid;
|
|
118
83
|
}
|
|
119
|
-
|
|
84
|
+
setTokenGenerator(accid, uid, tokenGenerator) {
|
|
85
|
+
this.accid = accid;
|
|
86
|
+
}
|
|
120
87
|
setAuth(obj) {
|
|
121
88
|
this.accid = obj.accid;
|
|
122
89
|
this.mask = obj.mask;
|
|
123
90
|
this.uid = obj.uid;
|
|
124
91
|
}
|
|
125
|
-
|
|
126
92
|
}
|
|
127
93
|
|
|
128
94
|
exports.default = _default;
|
|
129
|
-
|
|
130
95
|
function makeFakeConvo(accid, convoid, userid, agentid) {
|
|
131
96
|
let inteid = accid + '.subizv4.subikon';
|
|
132
97
|
return {
|
|
@@ -192,7 +157,6 @@ function makeFakeConvo(accid, convoid, userid, agentid) {
|
|
|
192
157
|
source: 'https://subiz.com.vn/'
|
|
193
158
|
};
|
|
194
159
|
}
|
|
195
|
-
|
|
196
160
|
function makeFakeMessages(accid, convoid, userid, agentid) {
|
|
197
161
|
let inteid = accid + '.subizv4.subikon';
|
|
198
162
|
return [{
|