Scope site connection permissions per address
Some checks failed
check / check (push) Has been cancelled

allowedSites and deniedSites are now objects keyed by address instead
of flat arrays, so approving a site for one address no longer grants
access for all addresses. Old flat-array data is discarded on load.
Settings view collects unique hostnames across all addresses and
deleting removes the site from every address.
This commit is contained in:
2026-02-26 03:54:52 +07:00
parent 21ccecab46
commit 980fdda694
3 changed files with 51 additions and 22 deletions

View File

@@ -15,8 +15,8 @@ const DEFAULT_STATE = {
blockscoutUrl: DEFAULT_BLOCKSCOUT_URL,
lastBalanceRefresh: 0,
activeAddress: null,
allowedSites: [],
deniedSites: [],
allowedSites: {},
deniedSites: {},
rememberSiteChoice: true,
};
@@ -54,8 +54,14 @@ async function loadState() {
saved.blockscoutUrl || DEFAULT_STATE.blockscoutUrl;
state.lastBalanceRefresh = saved.lastBalanceRefresh || 0;
state.activeAddress = saved.activeAddress || null;
state.allowedSites = saved.allowedSites || [];
state.deniedSites = saved.deniedSites || [];
state.allowedSites =
saved.allowedSites && !Array.isArray(saved.allowedSites)
? saved.allowedSites
: {};
state.deniedSites =
saved.deniedSites && !Array.isArray(saved.deniedSites)
? saved.deniedSites
: {};
state.rememberSiteChoice =
saved.rememberSiteChoice !== undefined
? saved.rememberSiteChoice