@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.
Files changed (81) hide show
  1. package/build/index.js +2 -5
  2. package/build/sdk.js +2 -2
  3. package/package.json +4 -5
  4. package/readme.md +11 -90
  5. package/server.js +220 -224
  6. package/src/libraries/localization/getLocale.js +17 -17
  7. package/src/libraries/localization/locales/cs.js +21 -23
  8. package/src/libraries/localization/locales/en.js +21 -23
  9. package/src/libraries/localization/locales/pl.js +21 -23
  10. package/src/libraries/localization/locales/ro.js +21 -23
  11. package/src/libraries/localization/locales/ru.js +21 -22
  12. package/src/libraries/localization/locales/uk.js +21 -23
  13. package/src/sdk/channels/facebook.js +1 -1
  14. package/src/sdk/channels/factory.js +33 -33
  15. package/src/sdk/channels/skype.js +1 -1
  16. package/src/sdk/channels/telegram.js +2 -2
  17. package/src/sdk/channels/viber.js +1 -1
  18. package/src/sdk/channels/vk.js +147 -158
  19. package/src/sdk/channels/whatsapp.js +21 -27
  20. package/src/sdk/sdk.js +5 -42
  21. package/src/sdk/utils/appInsights.js +2 -2
  22. package/src/sdk/utils/cookies.js +1 -18
  23. package/src/sdk/utils/loadDeepLink.js +13 -40
  24. package/src/sdk/widget/widget.js +107 -159
  25. package/src/widget/components/index.js +48 -52
  26. package/src/widget/components/tb-notification-button/facebook.js +48 -55
  27. package/src/widget/components/tb-notification-button/skype.js +47 -0
  28. package/src/widget/components/tb-notification-button/styles.scss +16 -240
  29. package/src/widget/components/tb-notification-button/telegram.js +48 -55
  30. package/src/widget/components/tb-notification-button/viber.js +49 -56
  31. package/src/widget/components/tb-notification-button/vk.js +83 -92
  32. package/src/widget/components/tb-notification-button/whatsapp.js +51 -58
  33. package/src/widget/components/tb-notification-widget/index.js +473 -694
  34. package/src/widget/components/tb-notification-widget/normalize.scss +1 -2
  35. package/src/widget/components/tb-notification-widget/styles.scss +180 -543
  36. package/src/widget/config.js +1 -1
  37. package/src/widget/icons/icon_facebook_circle.svg +2 -0
  38. package/src/widget/icons/icon_tg_circle.svg +10 -0
  39. package/src/widget/icons/icon_viber_circle.svg +10 -0
  40. package/src/widget/icons/icon_viber_new.svg +1 -1
  41. package/src/widget/icons/icon_vk_circle.svg +1 -1
  42. package/src/widget/icons/icon_whatsapp.svg +4 -4
  43. package/src/widget/icons/icon_whatsapp_circle.svg +2 -2
  44. package/src/widget/icons/icon_whatsapp_new.svg +2 -2
  45. package/src/widget/icons/text-back-badge.png +0 -0
  46. package/src/widget/locales/cz.js +20 -0
  47. package/src/widget/locales/en.js +20 -42
  48. package/src/widget/locales/index.js +8 -8
  49. package/src/widget/locales/pl.js +20 -42
  50. package/src/widget/locales/ro.js +19 -40
  51. package/src/widget/locales/ru.js +20 -41
  52. package/src/widget/locales/uk.js +20 -41
  53. package/src/widget/utils/getLocale.js +14 -16
  54. package/src/widget/utils/stringifyAttributes.js +1 -1
  55. package/src/widget/utils/text.js +8 -9
  56. package/src/widget/widget.entry.js +1 -0
  57. package/tests/gf.html +2 -2
  58. package/v8-compile-cache-0/5.1.281.102/zSvstszSagentzS_workzS5zSszSnode_moduleszSwebpack-clizSbinzScli.js.BLOB +0 -0
  59. package/v8-compile-cache-0/5.1.281.102/zSvstszSagentzS_workzS5zSszSnode_moduleszSwebpack-clizSbinzScli.js.MAP +1 -0
  60. package/views/examples.ejs +47 -51
  61. package/views/sdk.html +17 -35
  62. package/webpack.dev.js +2 -2
  63. package/src/sdk/channels/whatsappb.js +0 -27
  64. package/src/widget/components/tb-notification-button/whatsappb.js +0 -58
  65. package/src/widget/components/tb-nw-wahunter/index.js +0 -261
  66. package/src/widget/components/tb-nw-wahunter/styles.scss +0 -471
  67. package/src/widget/icons/icon_chat_window.svg +0 -1
  68. package/src/widget/icons/icon_close.svg +0 -1
  69. package/src/widget/icons/icon_whatsapp_hollow.svg +0 -128
  70. package/src/widget/icons/icon_whatsappb.svg +0 -147
  71. package/src/widget/icons/icon_whatsappb_circle.svg +0 -4
  72. package/src/widget/icons/icon_whatsappb_new.svg +0 -127
  73. package/src/widget/icons/paper-plane-arrow.svg +0 -3
  74. package/src/widget/icons/tb-logo-dark-en.svg +0 -17
  75. package/src/widget/icons/tb-logo-dark-ru.svg +0 -17
  76. package/src/widget/icons/tb-logo-dark.svg +0 -16
  77. package/src/widget/icons/tb-logo-light-en.svg +0 -17
  78. package/src/widget/icons/tb-logo-light-ru.svg +0 -17
  79. package/src/widget/icons/tb-logo-white.svg +0 -16
  80. package/src/widget/icons/tb-logo.svg +0 -16
  81. package/src/widget/locales/cs.js +0 -42
@@ -1,23 +1,21 @@
1
- module.exports = {
2
- facebook: 'Facebook',
3
- 'facebookExtended': 'Abonează-te Facebook',
4
- skype: 'Skype',
5
- 'sign-skype': 'Abonează-te Skype',
6
- telegram: 'Telegram',
7
- 'telegramExtended': 'Abonează-te Telegram',
8
- viber: 'Viber',
9
- 'viberExtended': 'Abonează-te Viber',
10
- vkontakte: 'VK',
11
- 'vkontakteLogin': 'VK Login',
12
- 'sign-vk': 'Abonează-te VK',
13
- whatsapp: 'WhatsApp',
14
- whatsappb: 'WhatsApp',
15
- 'whatsappExtended': 'Abonează-te WhatsApp',
16
- 'whatsappbExtended': 'Abonează-te WhatsApp',
17
- 'telegramTip': 'Нажмите <strong>"Start"</strong></br>в приложении Telegram',
18
- 'facebookTip': 'Нажмите <strong>"Начать"</strong><br/>в Facebook Messenger',
19
- 'viberTip': ' У вас должно быть установлено<br/><strong>Viber Desktop приложение</strong>',
20
- 'vkontakteTip': 'Нажмите <strong>"Разрешить"</strong><br/>во всплывающем окне',
21
- 'whatsappTip': 'Отправьте <strong>предзаполненный текст</strong><br/>в WhatsApp без изменений',
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
- 'facebookExtended': 'Подписаться в Facebook',
4
- skype: 'Skype',
5
- 'sign-skype': 'Подписаться в Skype',
6
- telegram: 'Telegram',
7
- 'telegramExtended': 'Подписаться в Telegram',
8
- viber: 'Viber',
9
- 'viberExtended': 'Подписаться в Viber',
10
- vkontakte: 'VK',
11
- 'vkontakteLogin': 'VK Login',
12
- 'sign-vk': 'Подписаться ВКонтакте',
13
- whatsapp: 'WhatsApp',
14
- 'whatsappExtended': 'Подписаться в WhatsApp',
15
- 'whatsappbExtended': 'Подписаться в WhatsApp',
16
- 'telegramTip': 'Нажмите <strong>"Start"</strong></br приложении Telegram',
17
- 'facebookTip': 'Нажмите <strong>"Начать"</strong><br/>в Facebook Messenger',
18
- 'viberTip': ' У вас должно быть установлено<br/><strong>Viber Desktop приложение</strong>',
19
- 'vkontakteTip': 'Нажмите <strong>"Разрешить"</strong><br/>во всплывающем окне',
20
- 'whatsappTip': 'Отправьте <strong>предзаполненный текст</strong><br/>в WhatsApp без изменений',
21
- 'whatsapp_prefixtext': 'Отправьте не изменяя это сообщение'
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
- 'facebookExtended': 'Підписатися на Facebook',
4
- skype: 'Skype',
5
- 'sign-skype': 'Підписатися на Skype',
6
- telegram: 'Telegram',
7
- 'telegramExtended': 'Підписатися на Telegram',
8
- viber: 'Viber',
9
- 'viberExtended': 'Підписатися на Viber',
10
- vkontakte: 'VK',
11
- 'vkontakteLogin': 'VK Login',
12
- 'sign-vk': 'Підписатися на VK',
13
- whatsapp: 'WhatsApp',
14
- whatsappb: 'WA Business',
15
- 'whatsappExtended': 'Підписатися на WhatsApp',
16
- 'whatsappbExtended': 'Підписатися на WhatsApp Business',
17
- 'telegramTip': 'Нажмите <strong>"Start"</strong></br>в приложении Telegram',
18
- 'facebookTip': 'Нажмите <strong>"Начать"</strong><br/>в Facebook Messenger',
19
- 'viberTip': ' У вас должно быть установлено<br/><strong>Viber Desktop приложение</strong>',
20
- 'vkontakteTip': 'Нажмите <strong>"Разрешить"</strong><br/>во всплывающем окне',
21
- 'whatsappTip': 'Отправьте <strong>предзаполненный текст</strong><br/>в WhatsApp без изменений',
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 TelegramChannel from './telegram.js';
3
- import ViberChanel from './viber.js';
4
- import VKChannel from './vk.js';
5
- import WhatsappChannel from './whatsapp.js';
6
- import WhatsappbChannel from './whatsappb.js';
7
-
8
- function getConstructor(channel) {
9
- switch(channel) {
10
- case 'facebook':
11
- return FacebookChannel;
12
- case 'tg':
13
- return TelegramChannel;
14
- case 'viber':
15
- return ViberChanel;
16
- case 'vk':
17
- return VKChannel;
18
- case 'whatsapp':
19
- return WhatsappChannel;
20
- case 'whatsappb':
21
- return WhatsappbChannel;
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
  }
@@ -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.131';
10
+ const VK_API_VERSION = '5.73';
11
11
  const LOGIN_TIMEOUT = 4096;
12
12
 
13
13
  function loadVkLib(){
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
- });
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
- 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
- });
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
- console.error('Failed to load VK openapi.js. VK channel will be unavailable');
44
- return null;
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
- return config.useVkApp
50
- ? config.useVkApp
51
- : false;
49
+ return config.useVkApp
50
+ ? config.useVkApp
51
+ : false;
52
52
  };
53
53
 
54
54
  export default class VKChannel extends Channel {
55
- constructor(channelData = {}, deeplink, widget) {
56
- super(channelData, deeplink, widget);
57
-
58
- this.isDoubleCheck = widget.config.isDoubleCheck;
59
- this.vkApiId = this.widget.config.vkApiId;
60
- this.initPromise = null;
61
- this.vkPluginContainerId = null;
62
- this.authorized = false;
63
- this.landingUrl = this.config.additionalProperties ? this.config.additionalProperties.landingUrl : undefined;
64
-
65
- if (this.enabled) {
66
- this.vkPluginContainerId = UUID.create(4).hex;
67
-
68
- if (!this.widget.useVKApi) {
69
- this.initPromise = loadVkLib()
70
- .catch(err => this.__handleVKLoadingError(err));
71
- } else {
72
- this.initPromise = loadVkLib()
73
- .then(() => initVK(this.vkApiId))
74
- .then(() => {
75
- this.authorized = !!(window.VK.Auth.getSession());
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
- subscribe() {
83
- super.subscribe();
84
- return this.landingUrl ?
85
- window.open(this.landingUrl, '_blank')
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
- return promise;
101
- }
102
-
103
- __allowMessagesFromGroup () {
104
- window.VK.Api.call(
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
- console.log('VK res error:', res);
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
- __handleVKLoadingError(err) {
162
- super.reportError('Failed to load VK openapi.js. VK channel will be unavailable.', err);
163
- return null;
164
- }
165
-
166
- subscribeViaPlugin() {
167
- const modal = new VKModal(this.vkPluginContainerId);
168
- this.renderVKSubscriptionButton();
169
-
170
- modal.onClose = () => {
171
- if (this.vkSubscribeHandler) {
172
- window.VK.Observer.unsubscribe('widgets.allowMessagesFromCommunity.allowed', this.vkSubscribeHandler);
173
- this.vkSubscribeHandler = null;
174
- }
175
- };
176
- }
177
-
178
- renderVKSubscriptionButton(height = 30, containerId = this.vkPluginContainerId) {
179
- if (this.vkSubscribeHandler) {
180
- window.VK.Observer.unsubscribe('widgets.allowMessagesFromCommunity.allowed', this.vkSubscribeHandler);
181
- this.vkSubscribeHandler = null;
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
- const options = {
185
- height,
186
- key: this.deeplink
187
- };
155
+ subscribeViaPlugin() {
156
+ const modal = new VKModal(this.vkPluginContainerId);
157
+ this.renderVKSubscriptionButton();
188
158
 
189
- window.VK.Widgets.AllowMessagesFromCommunity(containerId, options, this.id);
190
- if (!this.config.disableAllowMessageEvents) {
191
- this.vkSubscribeHandler = this.__textbackSubscribe.bind(this);
192
- window.VK.Observer.subscribe('widgets.allowMessagesFromCommunity.allowed', this.vkSubscribeHandler);
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 getLocale from '../../libraries/localization/getLocale.js';
4
- import text from '../../libraries/localization/text.js';
5
-
6
- export default class WhatsappChannel extends Channel {
7
- constructor(channelData = {}, deeplink, widget) {
8
- super(channelData, deeplink, widget);
9
-
10
- this.domainPrefix = browserInfo.isMobile() ? 'api' : 'web';
11
-
12
- if(channelData.hasOwnProperty('additionalProperties') && channelData.additionalProperties.hasOwnProperty('customDeeplinkValue')) {
13
- this.customText = channelData.additionalProperties.customDeeplinkValue;
14
- } else {
15
- this.customText = null;
16
- }
17
- }
18
-
19
- subscribe() {
20
- super.subscribe();
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
+ }