display params for immediate action on prompt window.
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
@@ -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',
|
||||||
|
|||||||
Reference in New Issue
Block a user