@@ -107,12 +107,16 @@ browser.contextMenus.create({ id: "redirectTab", title: 'Redirect', contexts: ["
107107browser . contextMenus . create ( { id : "reverseTab" , title : 'Redirect To Original' , contexts : [ "browser_action" ] } )
108108
109109browser . contextMenus . create ( { id : "redirectLink" , title : 'Redirect' , contexts : [ "link" ] } )
110+ browser . contextMenus . create ( { id : "redirectLinkInNewTab" , title : 'Redirect In New Tab' , contexts : [ "link" ] } )
110111browser . contextMenus . create ( { id : "reverseLink" , title : 'Redirect To Original' , contexts : [ "link" ] } )
112+ browser . contextMenus . create ( { id : "reverseLinkInNewTab" , title : 'Redirect To Original In New Tab' , contexts : [ "link" ] } )
111113browser . contextMenus . create ( { id : "copyReverseLink" , title : 'Copy Original' , contexts : [ "link" ] } )
112114
113115if ( ! isChrome ) {
114116 browser . contextMenus . create ( { id : "redirectBookmark" , title : 'Redirect' , contexts : [ "bookmark" ] } )
117+ browser . contextMenus . create ( { id : "redirectBookmarkInNewTab" , title : 'Redirect In New Tab' , contexts : [ "bookmark" ] } )
115118 browser . contextMenus . create ( { id : "reverseBookmark" , title : 'Redirect To Original' , contexts : [ "bookmark" ] } )
119+ browser . contextMenus . create ( { id : "reverseBookmarkInNewTab" , title : 'Redirect To Original In New Tab' , contexts : [ "bookmark" ] } )
116120 browser . contextMenus . create ( { id : "copyReverseBookmark" , title : 'Copy Original' , contexts : [ "bookmark" ] } )
117121}
118122
@@ -175,19 +179,30 @@ browser.contextMenus.onClicked.addListener(async (info) => {
175179 await servicesHelper . copyRaw ( url )
176180 return
177181 }
178- case 'redirectLink' : {
182+ case 'redirectLink' :
183+ case 'redirectLinkInNewTab' : {
179184 const url = new URL ( info . linkUrl )
180185 const newUrl = servicesHelper . redirect ( url , "main_frame" , null , true )
181- if ( newUrl ) browser . tabs . create ( { url : newUrl } )
186+ if ( newUrl ) {
187+ if ( info . menuItemId == "redirectLink" ) browser . tabs . update ( { url : newUrl } )
188+ else browser . tabs . create ( { url : newUrl } )
189+ }
182190 return
183191 }
184- case 'reverseLink' : {
192+ case 'reverseLink' :
193+ case 'reverseLinkInNewTab' : {
185194 const url = new URL ( info . linkUrl )
186195 const newUrl = await servicesHelper . reverse ( url )
187196 if ( newUrl ) {
188- browser . tabs . create ( { url : newUrl } , tab => {
189- tabIdRedirects [ tab . id ] = false
190- } )
197+ if ( info . menuItemId == "reverseLink" ) {
198+ browser . tabs . update ( { url : newUrl } , tab => {
199+ tabIdRedirects [ tab . id ] = false
200+ } )
201+ } else {
202+ browser . tabs . create ( { url : newUrl } , tab => {
203+ tabIdRedirects [ tab . id ] = false
204+ } )
205+ }
191206 }
192207 return
193208 }
@@ -199,22 +214,34 @@ browser.contextMenus.onClicked.addListener(async (info) => {
199214 } ) ;
200215 return
201216 }
202- case 'redirectBookmark' : {
217+ case 'redirectBookmark' :
218+ case 'redirectBookmarkInNewTab' : {
203219 browser . bookmarks . get ( info . bookmarkId , bookmarks => {
204220 const url = new URL ( bookmarks [ 0 ] . url )
205221 const newUrl = servicesHelper . redirect ( url , "main_frame" , null , true )
206- if ( newUrl ) browser . tabs . create ( { url : newUrl } )
222+ if ( newUrl ) {
223+ if ( info . menuItemId == 'redirectBookmark' ) browser . tabs . update ( { url : newUrl } )
224+ else browser . tabs . create ( { url : newUrl } )
225+ }
207226 } )
227+
208228 return
209229 }
210- case 'reverseBookmark' : {
230+ case 'reverseBookmark' :
231+ case 'reverseBookmarkInNewTab' : {
211232 browser . bookmarks . get ( info . bookmarkId , async bookmarks => {
212233 const url = new URL ( bookmarks [ 0 ] . url )
213234 const newUrl = await servicesHelper . reverse ( url )
214235 if ( newUrl ) {
215- browser . tabs . create ( { url : newUrl } , tab => {
216- tabIdRedirects [ tab . id ] = false
217- } )
236+ if ( info . menuItemId == "reverseBookmark" ) {
237+ browser . tabs . update ( { url : newUrl } , tab => {
238+ tabIdRedirects [ tab . id ] = false
239+ } )
240+ } else {
241+ browser . tabs . create ( { url : newUrl } , tab => {
242+ tabIdRedirects [ tab . id ] = false
243+ } )
244+ }
218245 }
219246 } )
220247 return
0 commit comments