display params for immediate action on prompt window.

This commit is contained in:
fiatjaf
2022-02-14 21:15:55 -03:00
parent 31606fd5cc
commit 3eba55a80d
2 changed files with 23 additions and 4 deletions

View File

@@ -29,7 +29,7 @@ async function handleContentScriptMessage({type, params, host}) {
} else { } else {
// ask for authorization // ask for authorization
try { try {
await promptPermission(host, PERMISSIONS_REQUIRED[type]) await promptPermission(host, PERMISSIONS_REQUIRED[type], params)
// authorized, proceed // authorized, proceed
} catch (_) { } catch (_) {
// not authorized, stop here // not authorized, stop here
@@ -99,16 +99,21 @@ function handlePromptMessage({id, condition, host, level}, sender) {
browser.windows.remove(sender.tab.windowId) browser.windows.remove(sender.tab.windowId)
} }
function promptPermission(host, level) { function promptPermission(host, level, params) {
let id = Math.random().toString().slice(4) let id = Math.random().toString().slice(4)
let qs = new URLSearchParams({host, level, id}) let qs = new URLSearchParams({
host,
level,
id,
params: JSON.stringify(params)
})
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
browser.windows.create({ browser.windows.create({
url: `${browser.runtime.getURL('prompt.html')}?${qs.toString()}`, url: `${browser.runtime.getURL('prompt.html')}?${qs.toString()}`,
type: 'popup', type: 'popup',
width: 340, width: 340,
height: 230 height: 330
}) })
prompts[id] = {resolve, reject} prompts[id] = {resolve, reject}

View File

@@ -9,6 +9,12 @@ function Prompt() {
let id = qs.get('id') let id = qs.get('id')
let host = qs.get('host') let host = qs.get('host')
let level = parseInt(qs.get('level')) let level = parseInt(qs.get('level'))
let params
try {
params = JSON.parse(qs.get('params'))
} catch (err) {
params = null
}
return ( return (
<> <>
@@ -25,6 +31,14 @@ function Prompt() {
))} ))}
</ul> </ul>
</div> </div>
{params && (
<>
<p>now acting on</p>
<pre style={{overflow: 'auto', maxHeight: '100px'}}>
<code>{JSON.stringify(params, null, 2)}</code>
</pre>
</>
)}
<div <div
style={{ style={{
display: 'flex', display: 'flex',