@@ -60,6 +60,7 @@ const storage = {
6060const log = msg => console . log ( 'Background: ' , msg ) ;
6161const validations = { } ;
6262let prompt = { mutex : new Mutex ( ) , release : null , tabId : null } ;
63+ let pendingQueue = { total : 0 , processed : 0 } ;
6364
6465/**
6566 * Helper: run an async function and deliver the result via sendResponse.
@@ -1006,6 +1007,10 @@ api.runtime.onMessage.addListener((message, _sender, sendResponse) => {
10061007 case 'nip44.decrypt' :
10071008 case 'getRelays' :
10081009 validations [ uuid ] = sendResponse ;
1010+ if ( Object . keys ( validations ) . length === 1 ) {
1011+ pendingQueue = { total : 0 , processed : 0 } ;
1012+ }
1013+ pendingQueue . total ++ ;
10091014 ask ( uuid , message ) ;
10101015 setTimeout ( ( ) => {
10111016 // H4 fix: deny pending request on timeout instead of silently releasing
@@ -1074,6 +1079,10 @@ async function ask(uuid, { kind, host, payload }) {
10741079 await forceRelease ( ) ; // Clean up previous tab if it closed without cleaning itself up
10751080 prompt . release = await prompt . mutex . acquire ( ) ;
10761081
1082+ pendingQueue . processed ++ ;
1083+ const queuePosition = pendingQueue . processed ;
1084+ const queueTotal = pendingQueue . total ;
1085+
10771086 let mKind = kind === 'signEvent' ? `signEvent:${ payload . kind } ` : kind ;
10781087 let permission = await getPermission ( host , mKind ) ;
10791088 if ( permission === 'allow' ) {
@@ -1102,6 +1111,8 @@ async function ask(uuid, { kind, host, payload }) {
11021111 kind : 'showPermissionSheet' ,
11031112 host,
11041113 permissionKind : kind ,
1114+ queuePosition,
1115+ queueTotal,
11051116 } ) ;
11061117
11071118 if ( result ) {
@@ -1137,6 +1148,8 @@ async function ask(uuid, { kind, host, payload }) {
11371148 kind,
11381149 host,
11391150 payload : JSON . stringify ( payload || false ) ,
1151+ queuePosition,
1152+ queueTotal,
11401153 } ) ;
11411154 let tab = await api . tabs . getCurrent ( ) ;
11421155 let p = await api . tabs . create ( {
@@ -1150,6 +1163,9 @@ async function ask(uuid, { kind, host, payload }) {
11501163function complete ( { payload, origKind, event, remember, host } ) {
11511164 const sendResponse = validations [ payload ] ;
11521165 delete validations [ payload ] ;
1166+ if ( Object . keys ( validations ) . length === 0 ) {
1167+ pendingQueue = { total : 0 , processed : 0 } ;
1168+ }
11531169
11541170 if ( remember ) {
11551171 let mKind =
@@ -1192,6 +1208,9 @@ function complete({ payload, origKind, event, remember, host }) {
11921208function deny ( { origKind, host, payload, remember, event } ) {
11931209 const sendResponse = validations [ payload ] ;
11941210 delete validations [ payload ] ;
1211+ if ( Object . keys ( validations ) . length === 0 ) {
1212+ pendingQueue = { total : 0 , processed : 0 } ;
1213+ }
11951214
11961215 if ( remember ) {
11971216 let mKind =
0 commit comments