mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2026-10-29 17:02:28 +00:00
Persist NIP-07 permissions between sessions
This commit is contained in:
1 parent
1f2161c789
commit
8393283cf8
2 files changed
+42
-1
No files matched your search
+17
-1
@@ -3175,7 +3175,23 @@ export class NostrClient {
|
||||
this.watchHistoryLastCreatedAt = 0;
|
||||
this.countRequestCounter = 0;
|
||||
this.countUnsupportedRelays = new Set();
|
||||
const storedPermissions = readStoredNip07Permissions();
|
||||
let storedPermissions = null;
|
||||
const hasLocalStorage =
|
||||
(typeof window !== "undefined" &&
|
||||
window &&
|
||||
typeof window.localStorage !== "undefined") ||
|
||||
(typeof globalThis !== "undefined" &&
|
||||
globalThis &&
|
||||
typeof globalThis.localStorage !== "undefined");
|
||||
|
||||
if (hasLocalStorage) {
|
||||
try {
|
||||
storedPermissions = readStoredNip07Permissions();
|
||||
} catch (error) {
|
||||
storedPermissions = null;
|
||||
}
|
||||
}
|
||||
|
||||
this.extensionPermissionCache =
|
||||
storedPermissions instanceof Set ? storedPermissions : new Set();
|
||||
}
|
||||
|
||||
@@ -968,7 +968,18 @@ async function testEnsureExtensionPermissionCaching() {
|
||||
const actor = "permission-actor";
|
||||
const extension = installExtensionCrypto({ actor });
|
||||
const previousCache = nostrClient.extensionPermissionCache;
|
||||
let previousStoredPermissions = null;
|
||||
if (typeof localStorage !== "undefined" && localStorage) {
|
||||
try {
|
||||
previousStoredPermissions = localStorage.getItem(
|
||||
NIP07_PERMISSIONS_STORAGE_KEY,
|
||||
);
|
||||
} catch (error) {
|
||||
previousStoredPermissions = null;
|
||||
}
|
||||
}
|
||||
nostrClient.extensionPermissionCache = new Set();
|
||||
clearStoredExtensionPermissions();
|
||||
|
||||
try {
|
||||
const first = await nostrClient.ensureExtensionPermissions([
|
||||
@@ -998,6 +1009,20 @@ async function testEnsureExtensionPermissionCaching() {
|
||||
} finally {
|
||||
extension.restore();
|
||||
nostrClient.extensionPermissionCache = previousCache;
|
||||
if (typeof localStorage !== "undefined" && localStorage) {
|
||||
try {
|
||||
if (previousStoredPermissions && previousStoredPermissions.length) {
|
||||
localStorage.setItem(
|
||||
NIP07_PERMISSIONS_STORAGE_KEY,
|
||||
previousStoredPermissions,
|
||||
);
|
||||
} else {
|
||||
clearStoredExtensionPermissions();
|
||||
}
|
||||
} catch (error) {
|
||||
// ignore restore errors in tests
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user