@alexsab-ru/scripts 0.4.5 → 0.5.0

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/lib/analytics.js CHANGED
@@ -47,39 +47,27 @@ export function ymPage(pageName,goalParams) {
47
47
  ym(me.id, "hit", pageName, goalParams||{})
48
48
  })
49
49
  } catch (err) {
50
- console.error(goalName + ' - error send page to Metrika');
50
+ console.error(pageName + ' - error send page to Metrika');
51
51
  }
52
52
  }
53
53
 
54
- export function addPhoneGoals(item) {
54
+ export function addClickCopyContextmenuGoals(item, prefix) {
55
55
  item.addEventListener('click', function(evt) {
56
- reachGoal('phone_click');
56
+ reachGoal(prefix + '_click');
57
57
  });
58
58
  item.addEventListener('copy', function(evt) {
59
- reachGoal('phone_copy');
59
+ reachGoal(prefix + '_copy');
60
60
  });
61
61
  item.addEventListener('contextmenu', function(evt) {
62
- reachGoal('phone_contextmenu');
63
- });
64
- }
65
-
66
- export function addEmailGoals(item) {
67
- item.addEventListener('click', function(evt) {
68
- reachGoal('email_click');
69
- });
70
- item.addEventListener('copy', function(evt) {
71
- reachGoal('email_copy');
72
- });
73
- item.addEventListener('contextmenu', function(evt) {
74
- reachGoal('email_contextmenu');
62
+ reachGoal(prefix + '_contextmenu');
75
63
  });
76
64
  }
77
65
 
78
66
  document.querySelectorAll('a[href^\="tel:"]').forEach((tel)=>{
79
- addPhoneGoals(tel);
67
+ addClickCopyContextmenuGoals(tel, "phone");
80
68
  });
81
69
  document.querySelectorAll('a[href^\="mailto:"]').forEach((tel)=>{
82
- addEmailGoals(tel);
70
+ addClickCopyContextmenuGoals(tel, "email");
83
71
  });
84
72
 
85
73
  let goals = [
package/lib/calltouch.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export const createRequest = (routeKey, phoneValue, verbose = false) => {
2
-
2
+ return new Promise((resolve, reject) => {
3
+ let errorText = '';
3
4
  if(window.ctw) {
4
5
  window.ctw.getRouteKeyData(routeKey, function(success, data){
5
6
  verbose && console.log(success, data);
@@ -27,34 +28,47 @@ export const createRequest = (routeKey, phoneValue, verbose = false) => {
27
28
  function (success, data) {
28
29
  verbose && console.log(success, data)
29
30
  if (success) {
30
- verbose && console.log('Создана заявка на колбек, идентификатор: ' + data.callbackRequestId)
31
+ verbose && console.log('Создана заявка на колбек, идентификатор: ' + data.callbackRequestId);
32
+ resolve(data); // Разрешаем Promise данными от createRequest
31
33
  }
32
34
  else {
35
+ errorText = 'Error in createRequest';
33
36
  switch (data.type) {
34
37
  case "request_throttle_timeout":
35
38
  case "request_throttle_count":
36
- verbose && console.log('Достигнут лимит создания заявок, попробуйте позже');
39
+ errorText = 'Достигнут лимит создания заявок, попробуйте позже';
40
+ verbose && console.log(errorText);
37
41
  break;
38
42
  case "request_phone_blacklisted":
39
- verbose && console.log('номер телефона находится в черном списке');
43
+ errorText = 'номер телефона находится в черном списке';
44
+ verbose && console.log(errorText);
40
45
  break;
41
46
  case "validation_error":
42
- verbose && console.log('были переданы некорректные данные');
47
+ errorText = 'были переданы некорректные данные';
48
+ verbose && console.log(errorText);
43
49
  break;
44
50
  default:
45
- verbose && console.log('Во время выполнения запроса произошла ошибка: ' + data.type);
51
+ errorText = 'Во время выполнения запроса произошла ошибка: ' + data.type;
52
+ verbose && console.log(errorText);
46
53
  }
54
+ reject(errorText); // Отклоняем Promise в случае ошибки
47
55
  }
48
56
  }
49
57
  );
50
58
  } else {
51
- verbose && console.log('не найден включенный виджет '+routeKey+', либо услуга обратного звонка не активна');
59
+ errorText = 'не найден включенный виджет '+routeKey+', либо услуга обратного звонка не активна';
60
+ verbose && console.log(errorText);
61
+ reject(errorText);
52
62
  }
53
63
  } else {
54
- verbose && console.log('во время обработки произошла ошибка');
64
+ errorText = 'во время обработки произошла ошибка';
65
+ verbose && console.log(errorText);
55
66
  verbose && console.log(data)
67
+ reject(errorText);
56
68
  }
57
69
  });
70
+ } else {
71
+ reject("window.ctw is not defined");
58
72
  }
59
-
73
+ });
60
74
  };
package/lib/form.js CHANGED
@@ -153,17 +153,14 @@ document.querySelectorAll("form").forEach((form) => {
153
153
  // Отпрвка цели что форма submit только после всех проверок
154
154
  reachGoal("form_submit");
155
155
 
156
- // Отправка заявки на обратный возов в CallTouch
157
- createRequest(ct_routeKey, phone.value, verbose);
158
-
159
156
  let formData = new FormData(form);
160
157
  if(getCookie('fta')) {
161
158
  formData.append("fta", true);
162
159
  }
163
160
  if(getCookie('__gtm_campaign_url')) {
164
- var source = new URL(getCookie('__gtm_campaign_url'));
161
+ let source = new URL(getCookie('__gtm_campaign_url'));
165
162
  source.search.slice(1).split("&").forEach(function(pair) {
166
- var param = pair.split("=");
163
+ let param = pair.split("=");
167
164
  formData.append(param[0], param[1]);
168
165
  });
169
166
  }
@@ -180,7 +177,7 @@ document.querySelectorAll("form").forEach((form) => {
180
177
  .slice(1)
181
178
  .split("&")
182
179
  .forEach(function (pair) {
183
- var param = pair.split("=");
180
+ let param = pair.split("=");
184
181
  if(formData.get(param[0])){
185
182
  formData.set(param[0], decodeURIComponent(param[1]));
186
183
  } else {
@@ -189,7 +186,15 @@ document.querySelectorAll("form").forEach((form) => {
189
186
  });
190
187
 
191
188
  const params = new URLSearchParams([...formData]);
192
- var formDataObj = getFormDataObject(formData, form.id);
189
+
190
+ let formDataObj = {};
191
+ try {
192
+ // Отправка заявки на обратный возов в CallTouch
193
+ const requestData = await createRequest(ct_routeKey, phone.value, verbose);
194
+ } catch (error) {
195
+ verbose && console.error("Error during request Calltouch callback:", error);
196
+ formDataObj = getFormDataObject(formData, form.id);
197
+ }
193
198
 
194
199
  await fetch(url, {
195
200
  method: "POST",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alexsab-ru/scripts",
3
- "version": "0.4.5",
3
+ "version": "0.5.0",
4
4
  "description": "common libs for websites",
5
5
  "main": "index.js",
6
6
  "scripts": {