mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2026-10-29 08:03:05 +00:00
deploy: c793bea0c3
This commit is contained in:
1 parent
55907d39f9
commit
80a0145cb4
6686 files changed
+469404
-412054
No files matched your search
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* Copyright 2014-2025 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
|
||||
*/
|
||||
/** When Dokka is viewed via iframe, local storage could be inaccessible (see https://github.com/Kotlin/dokka/issues/3323)
|
||||
* This is a wrapper around local storage to prevent errors in such cases
|
||||
* */
|
||||
const safeLocalStorage = (() => {
|
||||
let isLocalStorageAvailable = false;
|
||||
try {
|
||||
const testKey = '__testLocalStorageKey__';
|
||||
localStorage.setItem(testKey, testKey);
|
||||
localStorage.removeItem(testKey);
|
||||
isLocalStorageAvailable = true;
|
||||
} catch (e) {
|
||||
console.error('Local storage is not available', e);
|
||||
}
|
||||
|
||||
return {
|
||||
getItem: (key) => {
|
||||
if (!isLocalStorageAvailable) {
|
||||
return null;
|
||||
}
|
||||
return localStorage.getItem(key);
|
||||
},
|
||||
setItem: (key, value) => {
|
||||
if (!isLocalStorageAvailable) {
|
||||
return;
|
||||
}
|
||||
localStorage.setItem(key, value);
|
||||
},
|
||||
removeItem: (key) => {
|
||||
if (!isLocalStorageAvailable) {
|
||||
return;
|
||||
}
|
||||
localStorage.removeItem(key);
|
||||
},
|
||||
getKeys: () => {
|
||||
if (!isLocalStorageAvailable) {
|
||||
return [];
|
||||
}
|
||||
return Object.keys(localStorage);
|
||||
},
|
||||
};
|
||||
})();
|
||||
|
||||
/** When Dokka is viewed via iframe, session storage could be inaccessible (see https://github.com/Kotlin/dokka/issues/3323)
|
||||
* This is a wrapper around session storage to prevent errors in such cases
|
||||
* */
|
||||
const safeSessionStorage = (() => {
|
||||
let isSessionStorageAvailable = false;
|
||||
try {
|
||||
const testKey = '__testSessionStorageKey__';
|
||||
sessionStorage.setItem(testKey, testKey);
|
||||
sessionStorage.removeItem(testKey);
|
||||
isSessionStorageAvailable = true;
|
||||
} catch (e) {
|
||||
console.error('Session storage is not available', e);
|
||||
}
|
||||
|
||||
return {
|
||||
getItem: (key) => {
|
||||
if (!isSessionStorageAvailable) {
|
||||
return null;
|
||||
}
|
||||
return sessionStorage.getItem(key);
|
||||
},
|
||||
setItem: (key, value) => {
|
||||
if (!isSessionStorageAvailable) {
|
||||
return;
|
||||
}
|
||||
sessionStorage.setItem(key, value);
|
||||
},
|
||||
removeItem: (key) => {
|
||||
if (!isSessionStorageAvailable) {
|
||||
return;
|
||||
}
|
||||
sessionStorage.removeItem(key);
|
||||
},
|
||||
getKeys: () => {
|
||||
if (!isSessionStorageAvailable) {
|
||||
return [];
|
||||
}
|
||||
return Object.keys(sessionStorage);
|
||||
},
|
||||
};
|
||||
})();
|
||||
Reference in new issue
Block a user