@@ -228,6 +228,82 @@ export const copyStorageToClipboard = (
228228 return false ; // do not expect a response
229229}
230230
231+ const addMessageListener = (
232+ message : IChromeMessage ,
233+ sender : chrome . runtime . MessageSender ,
234+ response : TResponse
235+ ) => {
236+ if ( validateSender ( Sender . Extension , Action . Add , message , sender ) ) {
237+ try {
238+ const itemKey = new Date ( ) . getTime ( ) . toString ( ) ;
239+ sessionStorage . setItem ( itemKey , '{}' ) ;
240+
241+ const data = {
242+ obj : Object . assign ( { } , sessionStorage ) ,
243+ itemKey : itemKey ,
244+ }
245+
246+ response ( { error : null , data : data } ) ;
247+ } catch {
248+ response ( {
249+ error : 'Error adding session storage item' ,
250+ data : null ,
251+ } ) ;
252+ }
253+ return true ; // we will eventually return a response
254+ }
255+ return false ; // do not expect a response
256+ } ;
257+
258+ const deleteMessageListener = (
259+ message : IChromeMessage ,
260+ sender : chrome . runtime . MessageSender ,
261+ response : TResponse
262+ ) => {
263+ if ( validateSender ( Sender . Extension , Action . Delete , message , sender ) ) {
264+ try {
265+ console . log ( 'deleteMessageListener' , message ) ;
266+ message . message ?. data . forEach ( ( k : string ) => {
267+ sessionStorage . removeItem ( k ) ;
268+ } ) ;
269+
270+ const data = Object . assign ( { } , sessionStorage ) ;
271+ response ( { error : null , data : data } ) ;
272+ } catch {
273+ response ( {
274+ error : 'Error adding session storage item' ,
275+ data : null ,
276+ } ) ;
277+ }
278+ return true ; // we will eventually return a response
279+ }
280+ return false ; // do not expect a response
281+ } ;
282+
283+ const updateKeyMessageListener = (
284+ message : IChromeMessage ,
285+ sender : chrome . runtime . MessageSender ,
286+ response : TResponse
287+ ) => {
288+ if ( validateSender ( Sender . Extension , Action . UpdateKey , message , sender ) ) {
289+ try {
290+ const { newKey, oldKey } = message . message ;
291+
292+ sessionStorage . setItem ( newKey , sessionStorage . getItem ( oldKey ) as string ) ;
293+ sessionStorage . removeItem ( oldKey ) ;
294+
295+ response ( { error : null , data : Object . assign ( { } , sessionStorage ) } ) ;
296+ } catch {
297+ response ( {
298+ error : 'Error updating session storage data' ,
299+ data : null ,
300+ } ) ;
301+ }
302+ return true ; // we will eventually return a response
303+ }
304+ return false ; // do not expect a response
305+ } ;
306+
231307const main = ( ) => {
232308 // prevent duplicate listeners
233309 chrome . runtime . onMessage . removeListener ( requestMessageListener ) ;
@@ -237,6 +313,9 @@ const main = () => {
237313 chrome . runtime . onMessage . removeListener ( fillStorageMessageListener ) ;
238314 chrome . runtime . onMessage . removeListener ( checkReleaseListener ) ;
239315 chrome . runtime . onMessage . removeListener ( copyStorageToClipboard ) ;
316+ chrome . runtime . onMessage . removeListener ( addMessageListener ) ;
317+ chrome . runtime . onMessage . removeListener ( deleteMessageListener ) ;
318+ chrome . runtime . onMessage . removeListener ( updateKeyMessageListener ) ;
240319
241320 // Fired when a message is sent from either an extension process or a content script.
242321 chrome . runtime . onMessage . addListener ( requestMessageListener ) ;
@@ -246,6 +325,9 @@ const main = () => {
246325 chrome . runtime . onMessage . addListener ( fillStorageMessageListener ) ;
247326 chrome . runtime . onMessage . addListener ( checkReleaseListener ) ;
248327 chrome . runtime . onMessage . addListener ( copyStorageToClipboard ) ;
328+ chrome . runtime . onMessage . addListener ( addMessageListener ) ;
329+ chrome . runtime . onMessage . addListener ( deleteMessageListener ) ;
330+ chrome . runtime . onMessage . addListener ( updateKeyMessageListener ) ;
249331} ;
250332
251333main ( ) ;
0 commit comments