@textback/notification-widget 2.0.1-110361 → 2.0.1-13997
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/build/index.js +2 -5
- package/build/sdk.js +2 -2
- package/package.json +4 -5
- package/readme.md +11 -90
- package/server.js +220 -224
- package/src/libraries/localization/getLocale.js +17 -17
- package/src/libraries/localization/locales/cs.js +21 -23
- package/src/libraries/localization/locales/en.js +21 -23
- package/src/libraries/localization/locales/pl.js +21 -23
- package/src/libraries/localization/locales/ro.js +21 -23
- package/src/libraries/localization/locales/ru.js +21 -22
- package/src/libraries/localization/locales/uk.js +21 -23
- package/src/sdk/channels/facebook.js +1 -1
- package/src/sdk/channels/factory.js +33 -33
- package/src/sdk/channels/skype.js +1 -1
- package/src/sdk/channels/telegram.js +2 -2
- package/src/sdk/channels/viber.js +1 -1
- package/src/sdk/channels/vk.js +147 -158
- package/src/sdk/channels/whatsapp.js +21 -27
- package/src/sdk/sdk.js +5 -42
- package/src/sdk/utils/appInsights.js +2 -2
- package/src/sdk/utils/cookies.js +1 -18
- package/src/sdk/utils/loadDeepLink.js +13 -40
- package/src/sdk/widget/widget.js +107 -159
- package/src/widget/components/index.js +48 -52
- package/src/widget/components/tb-notification-button/facebook.js +48 -55
- package/src/widget/components/tb-notification-button/skype.js +47 -0
- package/src/widget/components/tb-notification-button/styles.scss +16 -240
- package/src/widget/components/tb-notification-button/telegram.js +48 -55
- package/src/widget/components/tb-notification-button/viber.js +49 -56
- package/src/widget/components/tb-notification-button/vk.js +83 -92
- package/src/widget/components/tb-notification-button/whatsapp.js +51 -58
- package/src/widget/components/tb-notification-widget/index.js +473 -694
- package/src/widget/components/tb-notification-widget/normalize.scss +1 -2
- package/src/widget/components/tb-notification-widget/styles.scss +180 -543
- package/src/widget/config.js +1 -1
- package/src/widget/icons/icon_facebook_circle.svg +2 -0
- package/src/widget/icons/icon_tg_circle.svg +10 -0
- package/src/widget/icons/icon_viber_circle.svg +10 -0
- package/src/widget/icons/icon_viber_new.svg +1 -1
- package/src/widget/icons/icon_vk_circle.svg +1 -1
- package/src/widget/icons/icon_whatsapp.svg +4 -4
- package/src/widget/icons/icon_whatsapp_circle.svg +2 -2
- package/src/widget/icons/icon_whatsapp_new.svg +2 -2
- package/src/widget/icons/text-back-badge.png +0 -0
- package/src/widget/locales/cz.js +20 -0
- package/src/widget/locales/en.js +20 -42
- package/src/widget/locales/index.js +8 -8
- package/src/widget/locales/pl.js +20 -42
- package/src/widget/locales/ro.js +19 -40
- package/src/widget/locales/ru.js +20 -41
- package/src/widget/locales/uk.js +20 -41
- package/src/widget/utils/getLocale.js +14 -16
- package/src/widget/utils/stringifyAttributes.js +1 -1
- package/src/widget/utils/text.js +8 -9
- package/src/widget/widget.entry.js +1 -0
- package/tests/gf.html +2 -2
- package/v8-compile-cache-0/5.1.281.102/zSvstszSagentzS_workzS5zSszSnode_moduleszSwebpack-clizSbinzScli.js.BLOB +0 -0
- package/v8-compile-cache-0/5.1.281.102/zSvstszSagentzS_workzS5zSszSnode_moduleszSwebpack-clizSbinzScli.js.MAP +1 -0
- package/views/examples.ejs +47 -51
- package/views/sdk.html +17 -35
- package/webpack.dev.js +2 -2
- package/src/sdk/channels/whatsappb.js +0 -27
- package/src/widget/components/tb-notification-button/whatsappb.js +0 -58
- package/src/widget/components/tb-nw-wahunter/index.js +0 -261
- package/src/widget/components/tb-nw-wahunter/styles.scss +0 -471
- package/src/widget/icons/icon_chat_window.svg +0 -1
- package/src/widget/icons/icon_close.svg +0 -1
- package/src/widget/icons/icon_whatsapp_hollow.svg +0 -128
- package/src/widget/icons/icon_whatsappb.svg +0 -147
- package/src/widget/icons/icon_whatsappb_circle.svg +0 -4
- package/src/widget/icons/icon_whatsappb_new.svg +0 -127
- package/src/widget/icons/paper-plane-arrow.svg +0 -3
- package/src/widget/icons/tb-logo-dark-en.svg +0 -17
- package/src/widget/icons/tb-logo-dark-ru.svg +0 -17
- package/src/widget/icons/tb-logo-dark.svg +0 -16
- package/src/widget/icons/tb-logo-light-en.svg +0 -17
- package/src/widget/icons/tb-logo-light-ru.svg +0 -17
- package/src/widget/icons/tb-logo-white.svg +0 -16
- package/src/widget/icons/tb-logo.svg +0 -16
- package/src/widget/locales/cs.js +0 -42
@@ -1,23 +1,21 @@
|
|
1
|
-
module.exports = {
|
2
|
-
facebook: 'Facebook',
|
3
|
-
'
|
4
|
-
skype: 'Skype',
|
5
|
-
'sign-skype': 'Abonează-te Skype',
|
6
|
-
telegram: 'Telegram',
|
7
|
-
'
|
8
|
-
viber: 'Viber',
|
9
|
-
'
|
10
|
-
vkontakte: '
|
11
|
-
'
|
12
|
-
'sign-vk': 'Abonează-te
|
13
|
-
whatsapp: 'WhatsApp',
|
14
|
-
|
15
|
-
'
|
16
|
-
'
|
17
|
-
'
|
18
|
-
'
|
19
|
-
'
|
20
|
-
'
|
21
|
-
|
22
|
-
'whatsapp_prefixtext': 'Trimiteți fără a schimba acest mesaj'
|
23
|
-
};
|
1
|
+
module.exports = {
|
2
|
+
facebook: 'Facebook',
|
3
|
+
'sign-facebook': 'Abonează-te Facebook',
|
4
|
+
skype: 'Skype',
|
5
|
+
'sign-skype': 'Abonează-te Skype',
|
6
|
+
telegram: 'Telegram',
|
7
|
+
'sign-telegram': 'Abonează-te Telegram',
|
8
|
+
viber: 'Viber',
|
9
|
+
'sign-viber': 'Abonează-te Viber',
|
10
|
+
vkontakte: 'VKontakte',
|
11
|
+
'vkontakte login': 'VK Login',
|
12
|
+
'sign-vk': 'Abonează-te VKontakte',
|
13
|
+
whatsapp: 'WhatsApp',
|
14
|
+
'sign-whatsapp': 'Abonează-te WhatsApp',
|
15
|
+
'telegram_tip': 'Нажмите <strong>"Start"</strong></br>в приложении Telegram',
|
16
|
+
'facebook_tip': 'Нажмите <strong>"Начать"</strong><br/>в Facebook Messenger',
|
17
|
+
'viber_tip': ' У вас должно быть установлено<br/><strong>Viber Desktop приложение</strong>',
|
18
|
+
'vkontakte_tip': 'Нажмите <strong>"Разрешить"</strong><br/>во всплывающем окне',
|
19
|
+
'whatsapp_tip': 'Отправьте <strong>предзаполненный текст</strong><br/>в WhatsApp без изменений',
|
20
|
+
'whatsapp_prefixtext': 'Trimiteți fără a schimba acest mesaj'
|
21
|
+
};
|
@@ -1,22 +1,21 @@
|
|
1
|
-
module.exports = {
|
2
|
-
facebook: 'Facebook',
|
3
|
-
'
|
4
|
-
skype: 'Skype',
|
5
|
-
'sign-skype': 'Подписаться в Skype',
|
6
|
-
telegram: 'Telegram',
|
7
|
-
'
|
8
|
-
viber: 'Viber',
|
9
|
-
'
|
10
|
-
vkontakte: '
|
11
|
-
'
|
12
|
-
'sign-vk': 'Подписаться
|
13
|
-
whatsapp: 'WhatsApp',
|
14
|
-
'
|
15
|
-
'
|
16
|
-
'
|
17
|
-
'
|
18
|
-
'
|
19
|
-
'
|
20
|
-
'
|
21
|
-
|
22
|
-
};
|
1
|
+
module.exports = {
|
2
|
+
facebook: 'Facebook',
|
3
|
+
'sign-facebook': 'Подписаться в Facebook',
|
4
|
+
skype: 'Skype',
|
5
|
+
'sign-skype': 'Подписаться в Skype',
|
6
|
+
telegram: 'Telegram',
|
7
|
+
'sign-telegram': 'Подписаться в Telegram',
|
8
|
+
viber: 'Viber',
|
9
|
+
'sign-viber': 'Подписаться в Viber',
|
10
|
+
vkontakte: 'VKontakte',
|
11
|
+
'vkontakte login': 'VK Login',
|
12
|
+
'sign-vk': 'Подписаться VKontakte',
|
13
|
+
whatsapp: 'WhatsApp',
|
14
|
+
'sign-whatsapp': 'Подписаться в WhatsApp',
|
15
|
+
'telegram_tip': 'Нажмите <strong>"Start"</strong></br>в приложении Telegram',
|
16
|
+
'facebook_tip': 'Нажмите <strong>"Начать"</strong><br/>в Facebook Messenger',
|
17
|
+
'viber_tip': ' У вас должно быть установлено<br/><strong>Viber Desktop приложение</strong>',
|
18
|
+
'vkontakte_tip': 'Нажмите <strong>"Разрешить"</strong><br/>во всплывающем окне',
|
19
|
+
'whatsapp_tip': 'Отправьте <strong>предзаполненный текст</strong><br/>в WhatsApp без изменений',
|
20
|
+
'whatsapp_prefixtext': 'Отправьте не изменяя это сообщение'
|
21
|
+
};
|
@@ -1,23 +1,21 @@
|
|
1
|
-
module.exports = {
|
2
|
-
facebook: 'Facebook',
|
3
|
-
'
|
4
|
-
skype: 'Skype',
|
5
|
-
'sign-skype': 'Підписатися на Skype',
|
6
|
-
telegram: 'Telegram',
|
7
|
-
'
|
8
|
-
viber: 'Viber',
|
9
|
-
'
|
10
|
-
vkontakte: '
|
11
|
-
'
|
12
|
-
'sign-vk': 'Підписатися на
|
13
|
-
whatsapp: 'WhatsApp',
|
14
|
-
|
15
|
-
'
|
16
|
-
'
|
17
|
-
'
|
18
|
-
'
|
19
|
-
'
|
20
|
-
'
|
21
|
-
|
22
|
-
'whatsapp_prefixtext': 'Надішліть не зраджуючи це повідомлення'
|
23
|
-
};
|
1
|
+
module.exports = {
|
2
|
+
facebook: 'Facebook',
|
3
|
+
'sign-facebook': 'Підписатися на Facebook',
|
4
|
+
skype: 'Skype',
|
5
|
+
'sign-skype': 'Підписатися на Skype',
|
6
|
+
telegram: 'Telegram',
|
7
|
+
'sign-telegram': 'Підписатися на Telegram',
|
8
|
+
viber: 'Viber',
|
9
|
+
'sign-viber': 'Підписатися на Viber',
|
10
|
+
vkontakte: 'VKontakte',
|
11
|
+
'vkontakte login': 'VK Login',
|
12
|
+
'sign-vk': 'Підписатися на VKontakte',
|
13
|
+
whatsapp: 'WhatsApp',
|
14
|
+
'sign-whatsapp': 'Підписатися на WhatsApp',
|
15
|
+
'telegram_tip': 'Нажмите <strong>"Start"</strong></br>в приложении Telegram',
|
16
|
+
'facebook_tip': 'Нажмите <strong>"Начать"</strong><br/>в Facebook Messenger',
|
17
|
+
'viber_tip': ' У вас должно быть установлено<br/><strong>Viber Desktop приложение</strong>',
|
18
|
+
'vkontakte_tip': 'Нажмите <strong>"Разрешить"</strong><br/>во всплывающем окне',
|
19
|
+
'whatsapp_tip': 'Отправьте <strong>предзаполненный текст</strong><br/>в WhatsApp без изменений',
|
20
|
+
'whatsapp_prefixtext': 'Надішліть не зраджуючи це повідомлення'
|
21
|
+
};
|
@@ -8,6 +8,6 @@ export default class FacebookChannel extends Channel {
|
|
8
8
|
|
9
9
|
subscribe() {
|
10
10
|
super.subscribe();
|
11
|
-
window.open(`https://m.me/${this.id}?ref=${this.deeplink}`, 'tb_facebook');
|
11
|
+
window.open(`https://m.me/${this.id}?ref=${this.deeplink}`, 'tb_facebook', windowHelper.getRatioPropString(90));
|
12
12
|
}
|
13
13
|
}
|
@@ -1,34 +1,34 @@
|
|
1
|
-
import FacebookChannel from './facebook.js';
|
2
|
-
import
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
|
8
|
-
function getConstructor(channel) {
|
9
|
-
switch(channel) {
|
10
|
-
case 'facebook':
|
11
|
-
return FacebookChannel;
|
12
|
-
case '
|
13
|
-
return
|
14
|
-
case '
|
15
|
-
return
|
16
|
-
case '
|
17
|
-
return
|
18
|
-
case '
|
19
|
-
return
|
20
|
-
case '
|
21
|
-
return
|
22
|
-
default:
|
23
|
-
return null;
|
24
|
-
}
|
25
|
-
}
|
26
|
-
|
27
|
-
const channelsFactory = {
|
28
|
-
create(channelObj, deeplink, widget) {
|
29
|
-
const constructor = getConstructor(channelObj.channel);
|
30
|
-
return (constructor ? new constructor(channelObj, deeplink, widget) : null);
|
31
|
-
}
|
32
|
-
}
|
33
|
-
|
1
|
+
import FacebookChannel from './facebook.js';
|
2
|
+
import SkypeChannel from './skype.js';
|
3
|
+
import TelegramChannel from './telegram.js';
|
4
|
+
import ViberChanel from './viber.js';
|
5
|
+
import VKChannel from './vk.js';
|
6
|
+
import WhatsappChannel from './whatsapp.js';
|
7
|
+
|
8
|
+
function getConstructor(channel) {
|
9
|
+
switch(channel) {
|
10
|
+
case 'facebook':
|
11
|
+
return FacebookChannel;
|
12
|
+
case 'skype':
|
13
|
+
return SkypeChannel;
|
14
|
+
case 'tg':
|
15
|
+
return TelegramChannel;
|
16
|
+
case 'viber':
|
17
|
+
return ViberChanel;
|
18
|
+
case 'vk':
|
19
|
+
return VKChannel;
|
20
|
+
case 'whatsapp':
|
21
|
+
return WhatsappChannel;
|
22
|
+
default:
|
23
|
+
return null;
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
const channelsFactory = {
|
28
|
+
create(channelObj, deeplink, widget) {
|
29
|
+
const constructor = getConstructor(channelObj.channel);
|
30
|
+
return (constructor ? new constructor(channelObj, deeplink, widget) : null);
|
31
|
+
}
|
32
|
+
}
|
33
|
+
|
34
34
|
export default channelsFactory;
|
@@ -8,6 +8,6 @@ export default class SkypeChannel extends Channel {
|
|
8
8
|
|
9
9
|
subscribe() {
|
10
10
|
super.subscribe();
|
11
|
-
window.open(`https://join.skype.com/bot/${this.id}?add`, 'tb_skype');
|
11
|
+
window.open(`https://join.skype.com/bot/${this.id}?add`, 'tb_skype', constants.SUBSCRIPTION_WINDOW_PROPS);
|
12
12
|
}
|
13
13
|
}
|
@@ -10,9 +10,9 @@ export default class TelegramChannel extends Channel {
|
|
10
10
|
super.subscribe();
|
11
11
|
|
12
12
|
if (this.widget.config.tgRedirector) {
|
13
|
-
return window.open(`${this.widget.config.tgRedirector}${this.id}?start=${this.deeplink}`, 'tb_tg');
|
13
|
+
return window.open(`${this.widget.config.tgRedirector}${this.id}?start=${this.deeplink}`, 'tb_tg', constants.SUBSCRIPTION_WINDOW_PROPS);
|
14
14
|
}
|
15
15
|
|
16
|
-
return window.open(`https://telegram.me/${this.id}?start=${this.deeplink}`, 'tb_tg');
|
16
|
+
return window.open(`https://telegram.me/${this.id}?start=${this.deeplink}`, 'tb_tg', constants.SUBSCRIPTION_WINDOW_PROPS);
|
17
17
|
}
|
18
18
|
}
|
@@ -8,6 +8,6 @@ export default class ViberChannel extends Channel {
|
|
8
8
|
|
9
9
|
subscribe() {
|
10
10
|
super.subscribe();
|
11
|
-
window.open(`viber://pa?chatURI=${this.id}&context=${this.deeplink}`, 'viber');
|
11
|
+
window.open(`viber://pa?chatURI=${this.id}&context=${this.deeplink}`, 'viber', constants.SUBSCRIPTION_WINDOW_PROPS);
|
12
12
|
}
|
13
13
|
}
|
package/src/sdk/channels/vk.js
CHANGED
@@ -7,189 +7,178 @@ import Channel from './channel.js';
|
|
7
7
|
import VKModal from './vk-modal/vk-modal.js';
|
8
8
|
import constants from "../utils/constants";
|
9
9
|
|
10
|
-
const VK_API_VERSION = '5.
|
10
|
+
const VK_API_VERSION = '5.73';
|
11
11
|
const LOGIN_TIMEOUT = 4096;
|
12
12
|
|
13
13
|
function loadVkLib(){
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
return new Promise((resolve, reject) => {
|
15
|
+
if (window.VK && window.VK.Auth) {
|
16
|
+
resolve('vk cache')
|
17
|
+
}
|
18
|
+
else {
|
19
|
+
loadScript('//vk.com/js/api/openapi.js')
|
20
|
+
.then(function () {
|
21
|
+
resolve('vk load')
|
22
|
+
}, function (err) {
|
23
|
+
reject(err)
|
24
|
+
})
|
25
|
+
}
|
26
|
+
});
|
27
27
|
}
|
28
28
|
|
29
29
|
function initVK(apiId) {
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
30
|
+
return new Promise((resolve, reject) => {
|
31
|
+
if (apiId) {
|
32
|
+
if (!window.VK._apiId) {
|
33
|
+
window.VK.init({apiId});
|
34
|
+
}
|
35
|
+
window.VK.Auth.getLoginStatus(resolve)
|
36
|
+
} else {
|
37
|
+
reject('noVKApiId')
|
38
|
+
}
|
39
|
+
})
|
40
40
|
}
|
41
41
|
|
42
42
|
function handleVKLoadingError(error) {
|
43
|
-
|
44
|
-
|
43
|
+
console.error('Failed to load VK openapi.js. VK channel will be unavailable');
|
44
|
+
return null;
|
45
45
|
}
|
46
46
|
|
47
47
|
// isVkAppUsed :: Object -> Boolean
|
48
48
|
const isVkAppUsed = config => {
|
49
|
-
|
50
|
-
|
51
|
-
|
49
|
+
return config.useVkApp
|
50
|
+
? config.useVkApp
|
51
|
+
: false;
|
52
52
|
};
|
53
53
|
|
54
54
|
export default class VKChannel extends Channel {
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
.catch(err => this.__handleVKLoadingError(err));
|
78
|
-
}
|
55
|
+
constructor(channelData = {}, deeplink, widget) {
|
56
|
+
super(channelData, deeplink, widget);
|
57
|
+
|
58
|
+
this.vkApiId = this.widget.config.vkApiId;
|
59
|
+
this.initPromise = null;
|
60
|
+
this.vkPluginContainerId = null;
|
61
|
+
this.authorized = false;
|
62
|
+
|
63
|
+
if (this.enabled) {
|
64
|
+
if (!this.widget.useVKApi) {
|
65
|
+
this.vkPluginContainerId = UUID.create(4).hex;
|
66
|
+
this.initPromise = loadVkLib()
|
67
|
+
.catch(err => this.__handleVKLoadingError(err));
|
68
|
+
} else {
|
69
|
+
this.initPromise = loadVkLib()
|
70
|
+
.then(() => initVK(this.vkApiId))
|
71
|
+
.then(() => {
|
72
|
+
this.authorized = !!(window.VK.Auth.getSession());
|
73
|
+
})
|
74
|
+
.catch(err => this.__handleVKLoadingError(err));
|
75
|
+
}
|
76
|
+
}
|
79
77
|
}
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
:
|
87
|
-
(isVkAppUsed(this.widget.config)
|
88
|
-
? window.open(`https://vk.com/app${this.widget.config.vkApiId}_-${this.config.id}#r=subscribe_${this.deeplink}&accountId=${this.widget.config.accountId}&channelId=${this.channelId}`, 'vk')
|
89
|
-
: this.subscribeViaPlugin());
|
90
|
-
}
|
91
|
-
|
92
|
-
subscribeViaApi() {
|
93
|
-
let promise = null;
|
94
|
-
|
95
|
-
if (!this.authorized) {
|
96
|
-
promise = this.__login().then( res => this.__allowMessagesFromGroup() );
|
97
|
-
} else {
|
98
|
-
promise = this.__allowMessagesFromGroup();
|
78
|
+
|
79
|
+
subscribe() {
|
80
|
+
super.subscribe();
|
81
|
+
return isVkAppUsed(this.widget.config)
|
82
|
+
? window.open(`https://vk.com/app${this.widget.config.vkApiId}_-${this.config.id}#r=subscribe_${this.deeplink}&accountId=${this.widget.config.accountId}&channelId=${this.channelId}`, 'vk',constants.SUBSCRIPTION_WINDOW_PROPS)
|
83
|
+
: this.subscribeViaPlugin();
|
99
84
|
}
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
'messages.allowMessagesFromGroup',
|
106
|
-
{
|
107
|
-
group_id: this.id,
|
108
|
-
v: VK_API_VERSION,
|
109
|
-
},
|
110
|
-
res => {
|
111
|
-
const vkSession = window.VK.Auth.getSession();
|
112
|
-
const vkUserId = vkSession.mid;
|
113
|
-
|
114
|
-
if (res.response === 1) {
|
115
|
-
this.__textbackSubscribe(vkUserId);
|
85
|
+
|
86
|
+
subscribeViaApi() {
|
87
|
+
let promise = null;
|
88
|
+
if (!this.authorized) {
|
89
|
+
promise = this.__login().then( res => this.__allowMessagesFromGroup() );
|
116
90
|
} else {
|
117
|
-
|
91
|
+
promise = this.__allowMessagesFromGroup();
|
118
92
|
}
|
119
|
-
|
120
|
-
|
121
|
-
}
|
93
|
+
return promise;
|
94
|
+
}
|
122
95
|
|
96
|
+
__allowMessagesFromGroup () {
|
97
|
+
window.VK.Api.call(
|
98
|
+
'messages.allowMessagesFromGroup',
|
99
|
+
{
|
100
|
+
group_id: this.id,
|
101
|
+
v: VK_API_VERSION,
|
102
|
+
},
|
103
|
+
res => {
|
104
|
+
const vkSession = window.VK.Auth.getSession();
|
105
|
+
const vkUserId = vkSession.mid;
|
106
|
+
|
107
|
+
if (res.response === 1) {
|
108
|
+
this.__textbackSubscribe(vkUserId);
|
109
|
+
} else {
|
110
|
+
console.log('VK res error:', res)
|
111
|
+
}
|
112
|
+
}
|
113
|
+
);
|
114
|
+
}
|
123
115
|
|
124
|
-
__login () {
|
125
|
-
return new Promise(resolve => {
|
126
|
-
window.VK.Auth.login(res => {
|
127
|
-
resolve(res);
|
128
|
-
}, LOGIN_TIMEOUT);
|
129
|
-
});
|
130
|
-
}
|
131
|
-
|
132
|
-
__textbackSubscribe (vkUserId, channelWidgetIdx) {
|
133
|
-
//we shall parse deeplink from server webhook. This method looks like artifact from age without webhhoks.
|
134
|
-
if(!this.isDoubleCheck) return null;
|
135
|
-
|
136
|
-
return fetch(`${this.widget.initialConfig.apiPath}/endUserNotifications/subscriptions`, {
|
137
|
-
method: 'POST',
|
138
|
-
headers: {
|
139
|
-
'Content-Type': 'application/json'
|
140
|
-
},
|
141
|
-
body: JSON.stringify({
|
142
|
-
'accountId': this.widget.config.accountId,
|
143
|
-
'insecureContext': this.widget.insecureContext,
|
144
|
-
'secureContextToken': this.widget.secureContextToken,
|
145
|
-
'address': {
|
146
|
-
'channel': 'vk',
|
147
|
-
'channelId': this.config.channelId,
|
148
|
-
'accountId': this.widget.config.accountId,
|
149
|
-
'remoteAddress': vkUserId,
|
150
|
-
'chatId': vkUserId
|
151
|
-
},
|
152
|
-
deepLinkId: this.deeplink.replace('subscribe_',''),
|
153
|
-
widgetId: this.widget.id,
|
154
|
-
'user': {
|
155
|
-
'id': this.widget.widgetUserId
|
156
|
-
}
|
157
|
-
})
|
158
|
-
}).then(apiErrorHandler);
|
159
|
-
}
|
160
116
|
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
117
|
+
__login () {
|
118
|
+
return new Promise(resolve => {
|
119
|
+
window.VK.Auth.login(res => {
|
120
|
+
resolve(res)
|
121
|
+
}, LOGIN_TIMEOUT)
|
122
|
+
})
|
123
|
+
}
|
124
|
+
|
125
|
+
__textbackSubscribe (vkUserId) {
|
126
|
+
return fetch(`${this.widget.initialConfig.apiPath}/endUserNotifications/subscriptions`, {
|
127
|
+
method: 'POST',
|
128
|
+
headers: {
|
129
|
+
'Content-Type': 'application/json'
|
130
|
+
},
|
131
|
+
body: JSON.stringify({
|
132
|
+
'accountId': this.widget.config.accountId,
|
133
|
+
'insecureContext': this.widget.insecureContext,
|
134
|
+
'secureContextToken': this.widget.secureContextToken,
|
135
|
+
'address': {
|
136
|
+
'channel': 'vk',
|
137
|
+
'channelId': this.config.channelId,
|
138
|
+
'accountId': this.widget.config.accountId,
|
139
|
+
'remoteAddress': vkUserId,
|
140
|
+
'chatId': vkUserId
|
141
|
+
},
|
142
|
+
widgetId: this.widget.id,
|
143
|
+
'user': {
|
144
|
+
'id': this.widget.widgetUserId
|
145
|
+
}
|
146
|
+
})
|
147
|
+
}).then(apiErrorHandler);
|
148
|
+
}
|
149
|
+
|
150
|
+
__handleVKLoadingError(err) {
|
151
|
+
super.reportError('Failed to load VK openapi.js. VK channel will be unavailable.', err);
|
152
|
+
return null;
|
182
153
|
}
|
183
154
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
};
|
155
|
+
subscribeViaPlugin() {
|
156
|
+
const modal = new VKModal(this.vkPluginContainerId);
|
157
|
+
this.renderVKSubscriptionButton();
|
188
158
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
159
|
+
modal.onClose = () => {
|
160
|
+
if (this.vkSubscribeHandler) {
|
161
|
+
window.VK.Observer.unsubscribe('widgets.allowMessagesFromCommunity.allowed', this.vkSubscribeHandler);
|
162
|
+
this.vkSubscribeHandler = null;
|
163
|
+
}
|
164
|
+
};
|
165
|
+
}
|
166
|
+
|
167
|
+
renderVKSubscriptionButton(height = 30, containerId = this.vkPluginContainerId) {
|
168
|
+
if (this.vkSubscribeHandler) {
|
169
|
+
window.VK.Observer.unsubscribe('widgets.allowMessagesFromCommunity.allowed', this.vkSubscribeHandler);
|
170
|
+
this.vkSubscribeHandler = null;
|
171
|
+
}
|
172
|
+
|
173
|
+
const options = {
|
174
|
+
height,
|
175
|
+
key: this.deeplink
|
176
|
+
};
|
177
|
+
|
178
|
+
window.VK.Widgets.AllowMessagesFromCommunity(containerId, options, this.id);
|
179
|
+
if (!this.config.disableAllowMessageEvents) {
|
180
|
+
this.vkSubscribeHandler = this.__textbackSubscribe.bind(this);
|
181
|
+
window.VK.Observer.subscribe('widgets.allowMessagesFromCommunity.allowed', this.vkSubscribeHandler);
|
182
|
+
}
|
193
183
|
}
|
194
|
-
}
|
195
184
|
}
|
@@ -1,27 +1,21 @@
|
|
1
|
-
import Channel from './channel.js';
|
2
|
-
import browserInfo from '../utils/browserInfo.js';
|
3
|
-
import
|
4
|
-
import
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
let prefixText = text('whatsapp_prefixtext', getLocale());
|
23
|
-
let deeplink = this.customText ? this.customText : `${prefixText} ${this.deeplink}`;
|
24
|
-
|
25
|
-
window.open(`https://api.whatsapp.com/send/?phone=+${this.id}&text=${encodeURIComponent(deeplink)}&app_absent=0`, 'whatsapp');
|
26
|
-
}
|
27
|
-
}
|
1
|
+
import Channel from './channel.js';
|
2
|
+
import browserInfo from '../utils/browserInfo.js';
|
3
|
+
import constants from '../utils/constants.js';
|
4
|
+
import getLocale from '../../libraries/localization/getLocale.js';
|
5
|
+
import text from '../../libraries/localization/text.js';
|
6
|
+
|
7
|
+
export default class WhatsappChannel extends Channel {
|
8
|
+
constructor(channelData = {}, deeplink, widget) {
|
9
|
+
super(channelData, deeplink, widget);
|
10
|
+
|
11
|
+
this.domainPrefix = browserInfo.isMobile() ? 'api' : 'web';
|
12
|
+
}
|
13
|
+
|
14
|
+
subscribe() {
|
15
|
+
super.subscribe();
|
16
|
+
|
17
|
+
let prefixText = encodeURIComponent(text('whatsapp_prefixtext', getLocale()));
|
18
|
+
|
19
|
+
window.open(`https://${this.domainPrefix}.whatsapp.com/send?phone=${this.id}&text=${prefixText} ${this.deeplink}`, 'whatsapp', constants.SUBSCRIPTION_WINDOW_PROPS);
|
20
|
+
}
|
21
|
+
}
|