[mv3][firefox] Fix instanceof quirk; fine tune picker CSS

Related feedback:
https://github.com/uBlockOrigin/uBOL-home/discussions/548
This commit is contained in:
Raymond Hill 2025-11-14 09:29:28 -05:00
parent 801b4679e9
commit d8fb800f30
No known key found for this signature in database
GPG key ID: F5630CAE62A14316
2 changed files with 18 additions and 23 deletions

View file

@ -38,6 +38,7 @@
#ubol-picker textarea {
border: 0;
box-sizing: border-box;
font-size: var(--monospace-size);
min-height: 5em;
resize: none;
width: 100%;
@ -49,7 +50,7 @@
color: var(--ink-2);
display: flex;
flex-direction: column;
font-size: small;
font-size: var(--monospace-size);
gap: 0.25em;
}
#ubol-picker .resultsetWidgets > span:first-of-type {
@ -75,7 +76,7 @@
#ubol-picker #candidateFilters {
font-family: monospace;
font-size: small;
font-size: var(--monospace-size);
max-height: min(20em, 30vh);
min-height: 6em;
overflow-y: auto;
@ -111,7 +112,7 @@
color: var(--ink-2);
column-gap: 0;
display: grid;
font-size: small;
font-size: var(--font-size-smaller);
grid-template: auto / 1fr 1fr;
justify-items: stretch;
user-select: none;

View file

@ -33,6 +33,8 @@ export const webextFlavor = (( ) => {
return extURL.startsWith('moz-extension:') ? 'firefox' : 'chromium';
})();
const notAnObject = a => typeof a !== 'object' || a === null;
/******************************************************************************/
// The extension's service worker can be evicted at any time, so when we
@ -47,72 +49,64 @@ export function sendMessage(msg) {
/******************************************************************************/
export async function localRead(key) {
if ( browser.storage instanceof Object === false ) { return; }
if ( browser.storage.local instanceof Object === false ) { return; }
if ( notAnObject(browser?.storage?.local) ) { return; }
try {
const bin = await browser.storage.local.get(key);
if ( bin instanceof Object === false ) { return; }
if ( notAnObject(bin) ) { return; }
return bin[key] ?? undefined;
} catch {
}
}
export async function localWrite(key, value) {
if ( browser.storage instanceof Object === false ) { return; }
if ( browser.storage.local instanceof Object === false ) { return; }
if ( notAnObject(browser?.storage?.local) ) { return; }
return browser.storage.local.set({ [key]: value });
}
export async function localRemove(key) {
if ( browser.storage instanceof Object === false ) { return; }
if ( browser.storage.local instanceof Object === false ) { return; }
if ( notAnObject(browser?.storage?.local) ) { return; }
return browser.storage.local.remove(key);
}
export async function localKeys() {
if ( browser.storage instanceof Object === false ) { return; }
if ( browser.storage.local instanceof Object === false ) { return; }
if ( notAnObject(browser?.storage?.local) ) { return; }
if ( browser.storage.local.getKeys ) {
return browser.storage.local.getKeys();
}
const bin = await browser.storage.local.get(null);
if ( bin instanceof Object === false ) { return; }
if ( notAnObject(bin) ) { return; }
return Object.keys(bin);
}
/******************************************************************************/
export async function sessionRead(key) {
if ( browser.storage instanceof Object === false ) { return; }
if ( browser.storage.session instanceof Object === false ) { return; }
if ( notAnObject(browser?.storage?.session) ) { return; }
try {
const bin = await browser.storage.session.get(key);
if ( bin instanceof Object === false ) { return; }
if ( notAnObject(bin) ) { return; }
return bin[key] ?? undefined;
} catch {
}
}
export async function sessionWrite(key, value) {
if ( browser.storage instanceof Object === false ) { return; }
if ( browser.storage.session instanceof Object === false ) { return; }
if ( notAnObject(browser?.storage?.session) ) { return; }
return browser.storage.session.set({ [key]: value });
}
export async function sessionRemove(key) {
if ( browser.storage instanceof Object === false ) { return; }
if ( browser.storage.session instanceof Object === false ) { return; }
if ( notAnObject(browser?.storage?.session) ) { return; }
return browser.storage.session.remove(key);
}
/******************************************************************************/
export async function adminRead(key) {
if ( browser.storage instanceof Object === false ) { return; }
if ( browser.storage.managed instanceof Object === false ) { return; }
if ( browser?.storage?.managed instanceof Object === false ) { return; }
try {
const bin = await browser.storage.managed.get(key);
if ( bin instanceof Object === false ) { return; }
if ( notAnObject(bin) ) { return; }
return bin[key] ?? undefined;
} catch {
}