@capillarytech/cap-ui-utils 1.2.8 → 1.3.1
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/index.js +2 -0
- package/package.json +1 -1
- package/utils/multipleOrgSwitch.js +70 -0
- package/utils/utilsLocalStorageApi.js +29 -0
- package/utils/utilsSessionStorageApi.js +38 -0
package/index.js
CHANGED
package/package.json
CHANGED
|
@@ -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,38 @@
|
|
|
1
|
+
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
|
+
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
|
+
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
|
+
};
|
|
33
|
+
|
|
34
|
+
module.exports = {
|
|
35
|
+
loadSessionItem,
|
|
36
|
+
saveSessionItem,
|
|
37
|
+
clearSessionItem
|
|
38
|
+
}
|