From b283d6aa33ad27559de961a898f1320d053a7263 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Fri, 30 Jun 2023 09:03:17 -0400 Subject: [PATCH] Add support to remove values in `set-local-storage-item` scriptlet Related feedback: - https://github.com/uBlockOrigin/uBlock-issues/discussions/2697#discussioncomment-6278359 When using the special value `$remove$`, the scriptlet will remove the item from the local storage. --- assets/resources/scriptlets.js | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/assets/resources/scriptlets.js b/assets/resources/scriptlets.js index c0ea19a2c..aac81a245 100644 --- a/assets/resources/scriptlets.js +++ b/assets/resources/scriptlets.js @@ -2838,7 +2838,8 @@ function setLocalStorageItem( 'undefined', 'null', 'false', 'true', 'yes', 'no', - '{}', '[]', "''", + '{}', '[]', '""', + '$remove$', ]; let actualValue; if ( validValues.includes(value) ) { @@ -2851,10 +2852,10 @@ function setLocalStorageItem( } try { - if ( actualValue !== undefined ) { - self.localStorage.setItem(key, `${actualValue}`); - } else { + if ( actualValue === '$remove$' ) { self.localStorage.removeItem(key); + } else { + self.localStorage.setItem(key, `${actualValue}`); } } catch(ex) { } @@ -3024,7 +3025,6 @@ function trustedSetLocalStorageItem( value = '' ) { if ( key === '' ) { return; } - if ( value === '' ) { return; } let actualValue = value; if ( value === '$now$' ) { @@ -3034,7 +3034,11 @@ function trustedSetLocalStorageItem( } try { - self.localStorage.setItem(key, `${actualValue}`); + if ( actualValue === '$remove$' ) { + self.localStorage.removeItem(key); + } else { + self.localStorage.setItem(key, `${actualValue}`); + } } catch(ex) { } }