@capillarytech/cap-ui-utils 1.2.6 → 1.3.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/GA/index.js CHANGED
@@ -67,11 +67,12 @@ const loadPerformanceTracking = module =>{
67
67
  // Time to Interactive metric is essentially how long it takes for a user to be able to interact with your site.
68
68
  // Time to Interactive is defined as the point at which the layout has stabilized, key webfonts are visible,
69
69
  // and the main thread is available enough to handle user input.
70
- ttiPolyfill.getFirstConsistentlyInteractive().then((tti = 0) => {
70
+ ttiPolyfill.getFirstConsistentlyInteractive().then(tti => {
71
+ const val = !tti ? 0 : tti;
71
72
  ReactGA.timing({
72
73
  category: "Time to Interactive",
73
74
  variable: module,
74
- value: Math.round(tti.toFixed(2))
75
+ value: Math.round((val).toFixed(2))
75
76
  })
76
77
  });
77
78
  }catch(e){
@@ -144,8 +145,6 @@ const getCallerName = () => {
144
145
  return nameTrace !== null ? nameTrace[1] || nameTrace[2] : '';
145
146
  }
146
147
 
147
-
148
-
149
148
  export default{
150
149
  initialize,
151
150
  timeTracker,
@@ -153,4 +152,4 @@ export default{
153
152
  routeTrackerWrapper,
154
153
  setCustomDimension,
155
154
  getCallerName,
156
- }
155
+ }
package/index.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export { default as Auth } from './auth';
2
2
  export { default as GA } from './GA';
3
+ export { default as multipleOrgSwitch } from './utils/multipleOrgSwitch';
4
+ export * as utilsSessionStorageApi from './utils/utilsSessionStorageApi';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capillarytech/cap-ui-utils",
3
- "version": "1.2.6",
3
+ "version": "1.3.0",
4
4
  "description": "Utility functions shared accross all the modules",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1,70 @@
1
+ import { saveSessionItem, clearSessionItem } from './utilsSessionStorageApi';
2
+ import {saveItem, clearItem} from './utilsLocalStorageApi';
3
+
4
+ const logNewTab = (BugsnagClient) => {
5
+ //adding new tab entry into storage
6
+ const sessionTabs = filterObjectByKeyName('tab_', sessionStorage);
7
+ if (Object.keys(sessionTabs).length > 0)
8
+ removeTabsFromStorage(sessionTabs, BugsnagClient);
9
+ const hash = Date.now();
10
+ saveSessionItem(`tab_${hash}`, true, BugsnagClient);
11
+ saveItem(`tab_${hash}`, true);
12
+ };
13
+
14
+ const removeTabsFromStorage = (tabs, BugsnagClient) => {
15
+ for (const key in tabs) {
16
+ if (tabs.hasOwnProperty(key)) {
17
+ clearItem(key);
18
+ clearSessionItem(key, BugsnagClient);
19
+ }
20
+ }
21
+ };
22
+
23
+ const filterObjectByKeyName = (substring, object) => {
24
+ const filteredObject = Object.keys(object)
25
+ .filter(function(key) {
26
+ return key.indexOf(substring) === 0;
27
+ })
28
+ .reduce(function(newData, key) {
29
+ newData[key] = object[key];
30
+ return newData;
31
+ }, {});
32
+ return filteredObject;
33
+ };
34
+
35
+ const getOrgNameFromId = (orgId, proxyOrgList) => {
36
+ const orgObj = proxyOrgList.find(proxyOrg => proxyOrg['orgID'] == orgId);
37
+ const orgName = (orgObj && orgObj.orgName) || orgId;
38
+ return orgName;
39
+ };
40
+
41
+ const tabBeforeUnloadEventHandler = () => {
42
+ const sessionTabs = filterObjectByKeyName('tab_', sessionStorage);
43
+ removeTabsFromStorage(sessionTabs);
44
+ };
45
+
46
+ const utilsHandleStorageChange = (e, requiredKey) => {
47
+ const { oldValue, newValue, key: changedKey} = e;
48
+ if( changedKey === requiredKey && oldValue && newValue && oldValue !== newValue ){
49
+ return true;
50
+ }
51
+ return false;
52
+ }
53
+
54
+ const isMultipleTabsOpen = () => {
55
+ const openTabs = filterObjectByKeyName('tab_', localStorage);
56
+ if (Object.keys(openTabs).length > 1){
57
+ return true;
58
+ }
59
+ return false;
60
+ }
61
+
62
+ export default {
63
+ logNewTab,
64
+ removeTabsFromStorage,
65
+ filterObjectByKeyName,
66
+ getOrgNameFromId,
67
+ tabBeforeUnloadEventHandler,
68
+ utilsHandleStorageChange,
69
+ isMultipleTabsOpen
70
+ }
@@ -0,0 +1,29 @@
1
+ export const loadItem = key => {
2
+ try {
3
+ const serializedState = localStorage.getItem(key);
4
+ if (serializedState === null) {
5
+ return undefined;
6
+ }
7
+ return JSON.parse(serializedState);
8
+ } catch (err) {
9
+ return undefined;
10
+ }
11
+ };
12
+
13
+ export const saveItem = (key, value) => {
14
+ try {
15
+ const serializedState = JSON.stringify(value);
16
+ localStorage.setItem(key, serializedState);
17
+ } catch (err) {
18
+ // Ignoring write error as of now
19
+ }
20
+ };
21
+
22
+ export const clearItem = key => {
23
+ try {
24
+ localStorage.removeItem(key);
25
+ return true;
26
+ } catch (err) {
27
+ return false;
28
+ }
29
+ };
@@ -0,0 +1,32 @@
1
+ export const loadSessionItem = (key, BugsnagClient) => {
2
+ try {
3
+ const serializedState = sessionStorage.getItem(key);
4
+ if (serializedState === null) {
5
+ return undefined;
6
+ }
7
+ return JSON.parse(serializedState);
8
+ } catch (err) {
9
+
10
+ BugsnagClient.notify(err);
11
+ }
12
+ };
13
+
14
+ export const saveSessionItem = (key, value, BugsnagClient) => {
15
+ try {
16
+ const serializedState = JSON.stringify(value);
17
+ sessionStorage.setItem(key, serializedState);
18
+ } catch (err) {
19
+ BugsnagClient.notify(err);
20
+ // Ignoring write error as of now
21
+ }
22
+ };
23
+
24
+ export const clearSessionItem = (key, BugsnagClient) => {
25
+ try {
26
+ sessionStorage.removeItem(key);
27
+ return true;
28
+ } catch (err) {
29
+ BugsnagClient.notify(err);
30
+ return false;
31
+ }
32
+ };