@subiz/widget-v4 4.1.26 → 4.1.28
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/Header.js +12 -7
- package/compiled_src/chatbox/Widget.js +12 -0
- package/compiled_src/chatbox/main.js +24 -2
- package/compiled_src/util/campaign.js +17 -8
- package/dist/132.js +52 -11
- package/dist/18754d60df1.132.js +1 -0
- package/dist/18754d60df1.441.js +1 -0
- package/dist/18754d60df1.app.js +1 -0
- package/dist/{186bfd5b9ef.index.html → 18754d60df1.index.html} +9 -2
- package/dist/{186bfd5b9ef.library.html → 18754d60df1.library.html} +9 -2
- package/dist/18754d60df1.library.js +1 -0
- package/dist/{186bfd5b9ef.preview.html → 18754d60df1.preview.html} +1 -1
- package/dist/18754d60df1.preview.js +1 -0
- package/dist/18754d60df1.screenshoot.js +1 -0
- package/dist/18754d60df1.webview.js +1 -0
- package/dist/441.js +216 -152
- package/dist/HASH +1 -1
- package/dist/screenshoot.html +1 -1
- package/dist/screenshoot.js +43 -15
- package/index.html +8 -0
- package/package.json +10 -10
- package/src/chatbox/Header.js +12 -9
- package/src/chatbox/Widget.js +14 -0
- package/src/chatbox/main.js +24 -1
- package/src/util/campaign.js +29 -8
- package/dist/186bfd5b9ef.132.js +0 -1
- package/dist/186bfd5b9ef.441.js +0 -1
- package/dist/186bfd5b9ef.app.js +0 -1
- package/dist/186bfd5b9ef.library.js +0 -1
- package/dist/186bfd5b9ef.preview.js +0 -1
- package/dist/186bfd5b9ef.screenshoot.js +0 -1
- package/dist/186bfd5b9ef.webview.js +0 -1
- /package/dist/{186bfd5b9ef.178.js → 18754d60df1.178.js} +0 -0
- /package/dist/{186bfd5b9ef.213.js → 18754d60df1.213.js} +0 -0
- /package/dist/{186bfd5b9ef.335.js → 18754d60df1.335.js} +0 -0
- /package/dist/{186bfd5b9ef.362.js → 18754d60df1.362.js} +0 -0
- /package/dist/{186bfd5b9ef.605.js → 18754d60df1.605.js} +0 -0
- /package/dist/{186bfd5b9ef.678.js → 18754d60df1.678.js} +0 -0
- /package/dist/{186bfd5b9ef.782.js → 18754d60df1.782.js} +0 -0
|
@@ -19,21 +19,22 @@ class Header extends _common.Com {
|
|
|
19
19
|
let cls = 'widget-header';
|
|
20
20
|
let renderSocial = false;
|
|
21
21
|
let renderTeam = false;
|
|
22
|
-
let renderCollapsed = this.props.view !== 'list' && headerMode === 'collapsed';
|
|
23
22
|
let accSetting = this.props.plugin.chatbox || {};
|
|
24
23
|
let layout = _index.default.get(accSetting, 'header.layout');
|
|
25
|
-
|
|
24
|
+
let renderCollapsed = this.props.view !== 'list' && headerMode === 'collapsed';
|
|
25
|
+
let renderClassic = !renderCollapsed && layout === 'classic';
|
|
26
|
+
if (renderCollapsed || layout == 'classic') {
|
|
26
27
|
cls += ' widget-header--collapsed';
|
|
27
28
|
} else {
|
|
28
29
|
cls += ' widget-header--convo-expanded';
|
|
29
30
|
renderSocial = layout === 'social';
|
|
30
|
-
renderTeam = !renderSocial;
|
|
31
|
+
renderTeam = !(renderSocial || renderClassic);
|
|
31
32
|
}
|
|
32
33
|
return (0, _preact.h)("div", {
|
|
33
34
|
class: cls
|
|
34
|
-
}, this.renderCollapsedHeader(renderCollapsed), this.renderSocial(renderSocial), this.renderTeam(renderTeam));
|
|
35
|
+
}, this.renderCollapsedHeader(renderCollapsed || renderClassic, renderClassic), this.renderSocial(renderSocial), this.renderTeam(renderTeam));
|
|
35
36
|
}
|
|
36
|
-
renderCollapsedHeader(show) {
|
|
37
|
+
renderCollapsedHeader(show, classic) {
|
|
37
38
|
let accSetting = this.props.plugin.chatbox || {};
|
|
38
39
|
let acc = this.props.store.matchAccount() || {};
|
|
39
40
|
let state = acc.is_online ? this.props.t('agent_online') : this.props.t('agent_offline');
|
|
@@ -42,9 +43,13 @@ class Header extends _common.Com {
|
|
|
42
43
|
let agentIdsJoined = _index.default.map(this.getAgentJoined(this.props.cid), agent => agent.id);
|
|
43
44
|
let cls = 'widget-header--inner widget-header--inner--collapsed';
|
|
44
45
|
if (!show) cls += ' widget-header--inner--hidden';
|
|
46
|
+
let $back = null;
|
|
47
|
+
let style = '';
|
|
48
|
+
if (!classic) $back = this.renderBackButton();else style = 'padding-bottom: 75px !important;';
|
|
45
49
|
return (0, _preact.h)("div", {
|
|
46
|
-
class: cls
|
|
47
|
-
|
|
50
|
+
class: cls,
|
|
51
|
+
style: style
|
|
52
|
+
}, $back, (0, _preact.h)(_AgentsAvatar.default, {
|
|
48
53
|
plugin: this.props.plugin,
|
|
49
54
|
store: this.props.store,
|
|
50
55
|
mode: "secondary",
|
|
@@ -86,6 +86,7 @@ class Widget extends _common.Com {
|
|
|
86
86
|
this.focusInput();
|
|
87
87
|
});
|
|
88
88
|
this.userSent = {};
|
|
89
|
+
this.wasFormInputed = false;
|
|
89
90
|
this.setState({
|
|
90
91
|
creating: false,
|
|
91
92
|
clickedJoin: false,
|
|
@@ -289,6 +290,7 @@ class Widget extends _common.Com {
|
|
|
289
290
|
if (!this.props.store.isMobile()) this.focusInput();
|
|
290
291
|
}
|
|
291
292
|
onBooleanChange(key, e) {
|
|
293
|
+
this.wasFormInputed = true;
|
|
292
294
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
293
295
|
let field = _index.default.find(formData, (_, fkkey) => fkkey === key);
|
|
294
296
|
if (!field) return;
|
|
@@ -298,6 +300,7 @@ class Widget extends _common.Com {
|
|
|
298
300
|
});
|
|
299
301
|
}
|
|
300
302
|
onInputChange(key, val) {
|
|
303
|
+
this.wasFormInputed = true;
|
|
301
304
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
302
305
|
let field = _index.default.find(formData, (_, fkkey) => fkkey === key);
|
|
303
306
|
if (!field) return;
|
|
@@ -307,6 +310,7 @@ class Widget extends _common.Com {
|
|
|
307
310
|
});
|
|
308
311
|
}
|
|
309
312
|
onListAddItem(key, val) {
|
|
313
|
+
this.wasFormInputed = true;
|
|
310
314
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
311
315
|
let field = _index.default.find(formData, (_, fkkey) => fkkey === key);
|
|
312
316
|
if (!field) return;
|
|
@@ -317,6 +321,7 @@ class Widget extends _common.Com {
|
|
|
317
321
|
});
|
|
318
322
|
}
|
|
319
323
|
onListRemoveItem(key, index) {
|
|
324
|
+
this.wasFormInputed = true;
|
|
320
325
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
321
326
|
let field = _index.default.find(formData, (_, fkkey) => fkkey === key);
|
|
322
327
|
if (!field) return;
|
|
@@ -348,6 +353,7 @@ class Widget extends _common.Com {
|
|
|
348
353
|
}));
|
|
349
354
|
}
|
|
350
355
|
toggleCheckboxField(key, v) {
|
|
356
|
+
this.wasFormInputed = true;
|
|
351
357
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
352
358
|
let field = _index.default.find(formData, (f, fkkey) => f.key === key);
|
|
353
359
|
if (!field) return;
|
|
@@ -385,6 +391,7 @@ class Widget extends _common.Com {
|
|
|
385
391
|
}));
|
|
386
392
|
}
|
|
387
393
|
toggleRadioField(key, v) {
|
|
394
|
+
this.wasFormInputed = true;
|
|
388
395
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
389
396
|
let field = _index.default.find(formData, (f, fkkey) => f.key === key);
|
|
390
397
|
if (!field) return;
|
|
@@ -394,6 +401,7 @@ class Widget extends _common.Com {
|
|
|
394
401
|
});
|
|
395
402
|
}
|
|
396
403
|
selectDropdownField(key, v) {
|
|
404
|
+
this.wasFormInputed = true;
|
|
397
405
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
398
406
|
let field = _index.default.find(formData, (f, fkkey) => f.key === key);
|
|
399
407
|
if (!field) return;
|
|
@@ -690,11 +698,15 @@ class Widget extends _common.Com {
|
|
|
690
698
|
createPostback(postback) {
|
|
691
699
|
this.props.store.createPostback(this.props.cid, postback);
|
|
692
700
|
}
|
|
701
|
+
onChangeMessageInput() {
|
|
702
|
+
this.wasFormInputed = true;
|
|
703
|
+
}
|
|
693
704
|
renderChat() {
|
|
694
705
|
let $input = (0, _preact.h)(_MessageInput.default, {
|
|
695
706
|
store: this.props.store,
|
|
696
707
|
ref: this.msgInput,
|
|
697
708
|
cid: this.props.cid,
|
|
709
|
+
onChange: this.onChangeMessageInput,
|
|
698
710
|
onSend: this.sendMessage,
|
|
699
711
|
t: this.props.t
|
|
700
712
|
});
|
|
@@ -17,6 +17,7 @@ class Main extends _common.Com {
|
|
|
17
17
|
constructor(props) {
|
|
18
18
|
super(props);
|
|
19
19
|
this.refButton = (0, _preact.createRef)();
|
|
20
|
+
this.refWidget = (0, _preact.createRef)();
|
|
20
21
|
}
|
|
21
22
|
async refreshCSS() {
|
|
22
23
|
let plugins = this.props.store.matchPlugin();
|
|
@@ -45,7 +46,7 @@ class Main extends _common.Com {
|
|
|
45
46
|
});
|
|
46
47
|
this.checkExpand();
|
|
47
48
|
this.props.store.onResetCSS(this, () => this.refreshCSS());
|
|
48
|
-
this.props.store.onConvoEvent(this,
|
|
49
|
+
this.props.store.onConvoEvent(this, ev => this.onConvoEvent(ev));
|
|
49
50
|
this.props.store.onUpdate(this, _ => this.checkExpand());
|
|
50
51
|
await this.refreshCSS();
|
|
51
52
|
this.setState({
|
|
@@ -83,9 +84,30 @@ class Main extends _common.Com {
|
|
|
83
84
|
isShow: this.state.isShowWidget,
|
|
84
85
|
onClose: a => this.onWidgetClose(a),
|
|
85
86
|
onGo: a => this.showWidget(a),
|
|
86
|
-
t: this.props.t
|
|
87
|
+
t: this.props.t,
|
|
88
|
+
ref: this.refWidget
|
|
87
89
|
}));
|
|
88
90
|
}
|
|
91
|
+
onConvoEvent(ev) {
|
|
92
|
+
this.checkExpand();
|
|
93
|
+
this.checkShowBotConvo(ev);
|
|
94
|
+
}
|
|
95
|
+
checkShowBotConvo(ev) {
|
|
96
|
+
let $widget = this.refWidget.current;
|
|
97
|
+
if (!$widget) return;
|
|
98
|
+
if ($widget.wasFormInputed) return;
|
|
99
|
+
if (ev.type !== 'message_sent') return;
|
|
100
|
+
if (!this.state.isShowWidget) return;
|
|
101
|
+
let byType = _index.default.get(ev, 'by.type');
|
|
102
|
+
let byid = _index.default.get(ev, 'by.id') || '';
|
|
103
|
+
if (!byid.startsWith('bb') || byType !== 'agent') return;
|
|
104
|
+
let cid = _index.default.get(ev, 'data.message.conversation_id');
|
|
105
|
+
if (!cid) return;
|
|
106
|
+
this.showWidget({
|
|
107
|
+
cid,
|
|
108
|
+
view: 'chat'
|
|
109
|
+
});
|
|
110
|
+
}
|
|
89
111
|
checkExpand() {
|
|
90
112
|
if (this.props.store.isMobile()) return;
|
|
91
113
|
if (this.props.plugin._no_auto_expand) return;
|
|
@@ -34,14 +34,7 @@ function trackAreaClicked(selector, cb) {
|
|
|
34
34
|
common.map(selector.split('\n'), selector => {
|
|
35
35
|
selector = common.trim(selector);
|
|
36
36
|
if (!selector) return;
|
|
37
|
-
|
|
38
|
-
try {
|
|
39
|
-
doms = document.querySelectorAll(selector);
|
|
40
|
-
} catch (e) {}
|
|
41
|
-
common.map(doms, dom => {
|
|
42
|
-
if (!dom) return;
|
|
43
|
-
dom.addEventListener('click', cb, false);
|
|
44
|
-
});
|
|
37
|
+
on('click', selector, cb);
|
|
45
38
|
});
|
|
46
39
|
}
|
|
47
40
|
function trackInactivity(seconds = 0, cb) {
|
|
@@ -78,4 +71,20 @@ function trackTimeOnPage(seconds = 0, cb) {
|
|
|
78
71
|
if (cb) cb(timeOnPage);
|
|
79
72
|
common.clearInterval(timer);
|
|
80
73
|
}, 1000);
|
|
74
|
+
}
|
|
75
|
+
function on(eventName, selector, fn) {
|
|
76
|
+
document.addEventListener(eventName, function (event) {
|
|
77
|
+
let possibleTargets = document.querySelectorAll(selector);
|
|
78
|
+
let target = event.target;
|
|
79
|
+
for (let i = 0, l = possibleTargets.length; i < l; i++) {
|
|
80
|
+
let el = target;
|
|
81
|
+
let p = possibleTargets[i];
|
|
82
|
+
while (el && el !== document) {
|
|
83
|
+
if (el === p) {
|
|
84
|
+
return fn.call(p, event);
|
|
85
|
+
}
|
|
86
|
+
el = el.parentNode;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
});
|
|
81
90
|
}
|
package/dist/132.js
CHANGED
|
@@ -576,21 +576,22 @@ class Header extends common/* Com */.up {
|
|
|
576
576
|
let cls = 'widget-header';
|
|
577
577
|
let renderSocial = false;
|
|
578
578
|
let renderTeam = false;
|
|
579
|
-
let renderCollapsed = this.props.view !== 'list' && headerMode === 'collapsed';
|
|
580
579
|
let accSetting = this.props.plugin.chatbox || {};
|
|
581
580
|
let layout = util/* default.get */.Z.get(accSetting, 'header.layout');
|
|
582
|
-
|
|
581
|
+
let renderCollapsed = this.props.view !== 'list' && headerMode === 'collapsed';
|
|
582
|
+
let renderClassic = !renderCollapsed && layout === 'classic';
|
|
583
|
+
if (renderCollapsed || layout == 'classic') {
|
|
583
584
|
cls += ' widget-header--collapsed';
|
|
584
585
|
} else {
|
|
585
586
|
cls += ' widget-header--convo-expanded';
|
|
586
587
|
renderSocial = layout === 'social';
|
|
587
|
-
renderTeam = !renderSocial;
|
|
588
|
+
renderTeam = !(renderSocial || renderClassic);
|
|
588
589
|
}
|
|
589
590
|
return (0,preact_module.h)("div", {
|
|
590
591
|
class: cls
|
|
591
|
-
}, this.renderCollapsedHeader(renderCollapsed), this.renderSocial(renderSocial), this.renderTeam(renderTeam));
|
|
592
|
+
}, this.renderCollapsedHeader(renderCollapsed || renderClassic, renderClassic), this.renderSocial(renderSocial), this.renderTeam(renderTeam));
|
|
592
593
|
}
|
|
593
|
-
renderCollapsedHeader(show) {
|
|
594
|
+
renderCollapsedHeader(show, classic) {
|
|
594
595
|
let accSetting = this.props.plugin.chatbox || {};
|
|
595
596
|
let acc = this.props.store.matchAccount() || {};
|
|
596
597
|
let state = acc.is_online ? this.props.t('agent_online') : this.props.t('agent_offline');
|
|
@@ -599,9 +600,13 @@ class Header extends common/* Com */.up {
|
|
|
599
600
|
let agentIdsJoined = util/* default.map */.Z.map(this.getAgentJoined(this.props.cid), agent => agent.id);
|
|
600
601
|
let cls = 'widget-header--inner widget-header--inner--collapsed';
|
|
601
602
|
if (!show) cls += ' widget-header--inner--hidden';
|
|
603
|
+
let $back = null;
|
|
604
|
+
let style = '';
|
|
605
|
+
if (!classic) $back = this.renderBackButton();else style = 'padding-bottom: 75px !important;';
|
|
602
606
|
return (0,preact_module.h)("div", {
|
|
603
|
-
class: cls
|
|
604
|
-
|
|
607
|
+
class: cls,
|
|
608
|
+
style: style
|
|
609
|
+
}, $back, (0,preact_module.h)(AgentsAvatar, {
|
|
605
610
|
plugin: this.props.plugin,
|
|
606
611
|
store: this.props.store,
|
|
607
612
|
mode: "secondary",
|
|
@@ -2793,13 +2798,15 @@ class Event extends common/* Com */.up {
|
|
|
2793
2798
|
});
|
|
2794
2799
|
let $error = null;
|
|
2795
2800
|
if (ev._error && ev.type === 'message_sent') {
|
|
2801
|
+
let msg = this.props.t('error_send_message');
|
|
2802
|
+
if (ev._error_message) msg = this.props.t(ev._error_message);
|
|
2796
2803
|
$error = (0,preact_module.h)("a", {
|
|
2797
2804
|
class: "message_error",
|
|
2798
2805
|
src: "javascript:;",
|
|
2799
2806
|
onClick: e => this.resendMessage()
|
|
2800
2807
|
}, (0,preact_module.h)("div", {
|
|
2801
2808
|
class: "message_error__text"
|
|
2802
|
-
},
|
|
2809
|
+
}, msg), (0,preact_module.h)("div", {
|
|
2803
2810
|
class: "message_error__icon"
|
|
2804
2811
|
}));
|
|
2805
2812
|
}
|
|
@@ -5336,6 +5343,7 @@ class Widget extends common/* Com */.up {
|
|
|
5336
5343
|
this.focusInput();
|
|
5337
5344
|
});
|
|
5338
5345
|
this.userSent = {};
|
|
5346
|
+
this.wasFormInputed = false;
|
|
5339
5347
|
this.setState({
|
|
5340
5348
|
creating: false,
|
|
5341
5349
|
clickedJoin: false,
|
|
@@ -5539,6 +5547,7 @@ class Widget extends common/* Com */.up {
|
|
|
5539
5547
|
if (!this.props.store.isMobile()) this.focusInput();
|
|
5540
5548
|
}
|
|
5541
5549
|
onBooleanChange(key, e) {
|
|
5550
|
+
this.wasFormInputed = true;
|
|
5542
5551
|
let formData = util/* default.cloneDeep */.Z.cloneDeep(this.state.formData);
|
|
5543
5552
|
let field = util/* default.find */.Z.find(formData, (_, fkkey) => fkkey === key);
|
|
5544
5553
|
if (!field) return;
|
|
@@ -5548,6 +5557,7 @@ class Widget extends common/* Com */.up {
|
|
|
5548
5557
|
});
|
|
5549
5558
|
}
|
|
5550
5559
|
onInputChange(key, val) {
|
|
5560
|
+
this.wasFormInputed = true;
|
|
5551
5561
|
let formData = util/* default.cloneDeep */.Z.cloneDeep(this.state.formData);
|
|
5552
5562
|
let field = util/* default.find */.Z.find(formData, (_, fkkey) => fkkey === key);
|
|
5553
5563
|
if (!field) return;
|
|
@@ -5557,6 +5567,7 @@ class Widget extends common/* Com */.up {
|
|
|
5557
5567
|
});
|
|
5558
5568
|
}
|
|
5559
5569
|
onListAddItem(key, val) {
|
|
5570
|
+
this.wasFormInputed = true;
|
|
5560
5571
|
let formData = util/* default.cloneDeep */.Z.cloneDeep(this.state.formData);
|
|
5561
5572
|
let field = util/* default.find */.Z.find(formData, (_, fkkey) => fkkey === key);
|
|
5562
5573
|
if (!field) return;
|
|
@@ -5567,6 +5578,7 @@ class Widget extends common/* Com */.up {
|
|
|
5567
5578
|
});
|
|
5568
5579
|
}
|
|
5569
5580
|
onListRemoveItem(key, index) {
|
|
5581
|
+
this.wasFormInputed = true;
|
|
5570
5582
|
let formData = util/* default.cloneDeep */.Z.cloneDeep(this.state.formData);
|
|
5571
5583
|
let field = util/* default.find */.Z.find(formData, (_, fkkey) => fkkey === key);
|
|
5572
5584
|
if (!field) return;
|
|
@@ -5598,6 +5610,7 @@ class Widget extends common/* Com */.up {
|
|
|
5598
5610
|
}));
|
|
5599
5611
|
}
|
|
5600
5612
|
toggleCheckboxField(key, v) {
|
|
5613
|
+
this.wasFormInputed = true;
|
|
5601
5614
|
let formData = util/* default.cloneDeep */.Z.cloneDeep(this.state.formData);
|
|
5602
5615
|
let field = util/* default.find */.Z.find(formData, (f, fkkey) => f.key === key);
|
|
5603
5616
|
if (!field) return;
|
|
@@ -5635,6 +5648,7 @@ class Widget extends common/* Com */.up {
|
|
|
5635
5648
|
}));
|
|
5636
5649
|
}
|
|
5637
5650
|
toggleRadioField(key, v) {
|
|
5651
|
+
this.wasFormInputed = true;
|
|
5638
5652
|
let formData = util/* default.cloneDeep */.Z.cloneDeep(this.state.formData);
|
|
5639
5653
|
let field = util/* default.find */.Z.find(formData, (f, fkkey) => f.key === key);
|
|
5640
5654
|
if (!field) return;
|
|
@@ -5644,6 +5658,7 @@ class Widget extends common/* Com */.up {
|
|
|
5644
5658
|
});
|
|
5645
5659
|
}
|
|
5646
5660
|
selectDropdownField(key, v) {
|
|
5661
|
+
this.wasFormInputed = true;
|
|
5647
5662
|
let formData = util/* default.cloneDeep */.Z.cloneDeep(this.state.formData);
|
|
5648
5663
|
let field = util/* default.find */.Z.find(formData, (f, fkkey) => f.key === key);
|
|
5649
5664
|
if (!field) return;
|
|
@@ -5835,7 +5850,7 @@ class Widget extends common/* Com */.up {
|
|
|
5835
5850
|
let convoM = this.props.store.matchConvo('*');
|
|
5836
5851
|
var convos = util/* default.map */.Z.map(convoM, convo => this.props.store.matchConvo(convo.id));
|
|
5837
5852
|
convos = util/* default.filter */.Z.filter(convos, convo => !!convo);
|
|
5838
|
-
convos = util/* default.
|
|
5853
|
+
convos = util/* default.orderByF */.Z.orderByF(convos, convo => util/* default.get */.Z.get(convo, 'last_message_sent.created', convo.actived), 'desc');
|
|
5839
5854
|
var $convos = util/* default.map */.Z.map(convos, convo => {
|
|
5840
5855
|
let ags = util/* default.filter */.Z.filter(convo.members, m => {
|
|
5841
5856
|
return (m.type === 'agent' || m.type === 'bot') && m.membership === 'active';
|
|
@@ -5940,11 +5955,15 @@ class Widget extends common/* Com */.up {
|
|
|
5940
5955
|
createPostback(postback) {
|
|
5941
5956
|
this.props.store.createPostback(this.props.cid, postback);
|
|
5942
5957
|
}
|
|
5958
|
+
onChangeMessageInput() {
|
|
5959
|
+
this.wasFormInputed = true;
|
|
5960
|
+
}
|
|
5943
5961
|
renderChat() {
|
|
5944
5962
|
let $input = (0,preact_module.h)(MessageInput, {
|
|
5945
5963
|
store: this.props.store,
|
|
5946
5964
|
ref: this.msgInput,
|
|
5947
5965
|
cid: this.props.cid,
|
|
5966
|
+
onChange: this.onChangeMessageInput,
|
|
5948
5967
|
onSend: this.sendMessage,
|
|
5949
5968
|
t: this.props.t
|
|
5950
5969
|
});
|
|
@@ -6247,6 +6266,7 @@ class Main extends common/* Com */.up {
|
|
|
6247
6266
|
constructor(props) {
|
|
6248
6267
|
super(props);
|
|
6249
6268
|
this.refButton = (0,preact_module/* createRef */.Vf)();
|
|
6269
|
+
this.refWidget = (0,preact_module/* createRef */.Vf)();
|
|
6250
6270
|
}
|
|
6251
6271
|
async refreshCSS() {
|
|
6252
6272
|
let plugins = this.props.store.matchPlugin();
|
|
@@ -6275,7 +6295,7 @@ class Main extends common/* Com */.up {
|
|
|
6275
6295
|
});
|
|
6276
6296
|
this.checkExpand();
|
|
6277
6297
|
this.props.store.onResetCSS(this, () => this.refreshCSS());
|
|
6278
|
-
this.props.store.onConvoEvent(this,
|
|
6298
|
+
this.props.store.onConvoEvent(this, ev => this.onConvoEvent(ev));
|
|
6279
6299
|
this.props.store.onUpdate(this, _ => this.checkExpand());
|
|
6280
6300
|
await this.refreshCSS();
|
|
6281
6301
|
this.setState({
|
|
@@ -6313,9 +6333,30 @@ class Main extends common/* Com */.up {
|
|
|
6313
6333
|
isShow: this.state.isShowWidget,
|
|
6314
6334
|
onClose: a => this.onWidgetClose(a),
|
|
6315
6335
|
onGo: a => this.showWidget(a),
|
|
6316
|
-
t: this.props.t
|
|
6336
|
+
t: this.props.t,
|
|
6337
|
+
ref: this.refWidget
|
|
6317
6338
|
}));
|
|
6318
6339
|
}
|
|
6340
|
+
onConvoEvent(ev) {
|
|
6341
|
+
this.checkExpand();
|
|
6342
|
+
this.checkShowBotConvo(ev);
|
|
6343
|
+
}
|
|
6344
|
+
checkShowBotConvo(ev) {
|
|
6345
|
+
let $widget = this.refWidget.current;
|
|
6346
|
+
if (!$widget) return;
|
|
6347
|
+
if ($widget.wasFormInputed) return;
|
|
6348
|
+
if (ev.type !== 'message_sent') return;
|
|
6349
|
+
if (!this.state.isShowWidget) return;
|
|
6350
|
+
let byType = util/* default.get */.Z.get(ev, 'by.type');
|
|
6351
|
+
let byid = util/* default.get */.Z.get(ev, 'by.id') || '';
|
|
6352
|
+
if (!byid.startsWith('bb') || byType !== 'agent') return;
|
|
6353
|
+
let cid = util/* default.get */.Z.get(ev, 'data.message.conversation_id');
|
|
6354
|
+
if (!cid) return;
|
|
6355
|
+
this.showWidget({
|
|
6356
|
+
cid,
|
|
6357
|
+
view: 'chat'
|
|
6358
|
+
});
|
|
6359
|
+
}
|
|
6319
6360
|
checkExpand() {
|
|
6320
6361
|
if (this.props.store.isMobile()) return;
|
|
6321
6362
|
if (this.props.plugin._no_auto_expand) return;
|