mirror of
https://github.com/gorhill/uBlock.git
synced 2024-11-09 12:22:33 +01:00
Allow filter list subscription through context menu
Related issue/feedback: - https://github.com/uBlockOrigin/uBlock-issues/issues/763#issuecomment-841582704
This commit is contained in:
parent
a5f6dc5e47
commit
001094580c
@ -1043,6 +1043,10 @@
|
|||||||
"message": "Block element in frame...",
|
"message": "Block element in frame...",
|
||||||
"description": "An entry in the browser's contextual menu"
|
"description": "An entry in the browser's contextual menu"
|
||||||
},
|
},
|
||||||
|
"contextMenuSubscribeToList": {
|
||||||
|
"message": "Subscribe to filter list...",
|
||||||
|
"description": "An entry in the browser's contextual menu"
|
||||||
|
},
|
||||||
"contextMenuTemporarilyAllowLargeMediaElements": {
|
"contextMenuTemporarilyAllowLargeMediaElements": {
|
||||||
"message": "Temporarily allow large media elements",
|
"message": "Temporarily allow large media elements",
|
||||||
"description": "A context menu entry, present when large media elements have been blocked on the current site"
|
"description": "A context menu entry, present when large media elements have been blocked on the current site"
|
||||||
|
@ -72,6 +72,32 @@ const onBlockElementInFrame = function(details, tab) {
|
|||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
const onSubscribeToList = function(details) {
|
||||||
|
let parsedURL;
|
||||||
|
try {
|
||||||
|
parsedURL = new URL(details.linkUrl);
|
||||||
|
}
|
||||||
|
catch(ex) {
|
||||||
|
}
|
||||||
|
if ( parsedURL instanceof URL === false ) { return; }
|
||||||
|
const url = parsedURL.searchParams.get('location');
|
||||||
|
if ( url === null ) { return; }
|
||||||
|
const title = parsedURL.searchParams.get('title') || '?';
|
||||||
|
const hash = µBlock.selectedFilterLists.indexOf(parsedURL) !== -1
|
||||||
|
? '#subscribed'
|
||||||
|
: '';
|
||||||
|
vAPI.tabs.open({
|
||||||
|
url:
|
||||||
|
`/asset-viewer.html` +
|
||||||
|
`?url=${encodeURIComponent(url)}` +
|
||||||
|
`&title=${encodeURIComponent(title)}` +
|
||||||
|
`&subscribe=1${hash}`,
|
||||||
|
select: true,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/******************************************************************************/
|
||||||
|
|
||||||
const onTemporarilyAllowLargeMediaElements = function(details, tab) {
|
const onTemporarilyAllowLargeMediaElements = function(details, tab) {
|
||||||
if ( tab === undefined ) { return; }
|
if ( tab === undefined ) { return; }
|
||||||
let pageStore = µBlock.pageStoreFromTabId(tab.id);
|
let pageStore = µBlock.pageStoreFromTabId(tab.id);
|
||||||
@ -88,6 +114,9 @@ const onEntryClicked = function(details, tab) {
|
|||||||
if ( details.menuItemId === 'uBlock0-blockElementInFrame' ) {
|
if ( details.menuItemId === 'uBlock0-blockElementInFrame' ) {
|
||||||
return onBlockElementInFrame(details, tab);
|
return onBlockElementInFrame(details, tab);
|
||||||
}
|
}
|
||||||
|
if ( details.menuItemId === 'uBlock0-subscribeToList' ) {
|
||||||
|
return onSubscribeToList(details);
|
||||||
|
}
|
||||||
if ( details.menuItemId === 'uBlock0-temporarilyAllowLargeMediaElements' ) {
|
if ( details.menuItemId === 'uBlock0-temporarilyAllowLargeMediaElements' ) {
|
||||||
return onTemporarilyAllowLargeMediaElements(details, tab);
|
return onTemporarilyAllowLargeMediaElements(details, tab);
|
||||||
}
|
}
|
||||||
@ -106,6 +135,12 @@ const menuEntries = {
|
|||||||
title: vAPI.i18n('contextMenuBlockElementInFrame'),
|
title: vAPI.i18n('contextMenuBlockElementInFrame'),
|
||||||
contexts: ['frame'],
|
contexts: ['frame'],
|
||||||
},
|
},
|
||||||
|
subscribeToList: {
|
||||||
|
id: 'uBlock0-subscribeToList',
|
||||||
|
title: vAPI.i18n('contextMenuSubscribeToList'),
|
||||||
|
contexts: ['link'],
|
||||||
|
targetUrlPatterns: [ 'abp:*' ],
|
||||||
|
},
|
||||||
temporarilyAllowLargeMediaElements: {
|
temporarilyAllowLargeMediaElements: {
|
||||||
id: 'uBlock0-temporarilyAllowLargeMediaElements',
|
id: 'uBlock0-temporarilyAllowLargeMediaElements',
|
||||||
title: vAPI.i18n('contextMenuTemporarilyAllowLargeMediaElements'),
|
title: vAPI.i18n('contextMenuTemporarilyAllowLargeMediaElements'),
|
||||||
@ -134,6 +169,7 @@ const update = function(tabId = undefined) {
|
|||||||
if ( newBits & 0x01 ) {
|
if ( newBits & 0x01 ) {
|
||||||
usedEntries.push(menuEntries.blockElement);
|
usedEntries.push(menuEntries.blockElement);
|
||||||
usedEntries.push(menuEntries.blockElementInFrame);
|
usedEntries.push(menuEntries.blockElementInFrame);
|
||||||
|
usedEntries.push(menuEntries.subscribeToList);
|
||||||
}
|
}
|
||||||
if ( newBits & 0x02 ) {
|
if ( newBits & 0x02 ) {
|
||||||
usedEntries.push(menuEntries.temporarilyAllowLargeMediaElements);
|
usedEntries.push(menuEntries.temporarilyAllowLargeMediaElements);
|
||||||
|
Loading…
Reference in New Issue
Block a user