Skip to content

Commit b8c753d

Browse files
authored
Merge pull request #88 from cmolisee/86
86
2 parents 96b2003 + bbd1b8a commit b8c753d

File tree

22 files changed

+435
-275
lines changed

22 files changed

+435
-275
lines changed

dist/assets/content.ts-98fbb95d.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

dist/assets/content.ts-loader-f965fd53.js

Lines changed: 0 additions & 13 deletions
This file was deleted.

dist/assets/index-568fba15.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

dist/assets/index.html-013a8090.js

Lines changed: 0 additions & 79 deletions
This file was deleted.

dist/assets/types-68586616.js

Lines changed: 0 additions & 1 deletion
This file was deleted.

dist/index.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
<meta charset="UTF-8" />
66
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
77
<title>Session Storage Hub</title>
8-
<script type="module" crossorigin src="/assets/index.html-013a8090.js"></script>
9-
<link rel="modulepreload" crossorigin href="/assets/types-68586616.js">
10-
<link rel="stylesheet" href="/assets/index-568fba15.css">
8+
<script type="module" crossorigin src="/assets/index.html-c74d6bec.js"></script>
9+
<link rel="modulepreload" crossorigin href="/assets/types-6c8bde6f.js">
10+
<link rel="stylesheet" href="/assets/index-8cde6963.css">
1111
</head>
1212

1313
<body>

dist/manifest.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"content_scripts": [
2020
{
2121
"js": [
22-
"assets/content.ts-loader-f965fd53.js"
22+
"assets/content.ts-loader-f2f3d1d2.js"
2323
],
2424
"matches": [
2525
"<all_urls>"
@@ -41,8 +41,8 @@
4141
"<all_urls>"
4242
],
4343
"resources": [
44-
"assets/types-68586616.js",
45-
"assets/content.ts-98fbb95d.js"
44+
"assets/types-6c8bde6f.js",
45+
"assets/content.ts-3d49c860.js"
4646
],
4747
"use_dynamic_url": true
4848
}

src/chromeServices/content.ts

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
231307
const 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

251333
main();
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { HTMLProps, forwardRef } from "react";
2+
3+
interface ICheckboxProps extends HTMLProps<HTMLInputElement> {
4+
className?: string;
5+
label?: string;
6+
}
7+
8+
const Checkbox = forwardRef(function checkbox(props: ICheckboxProps, ref: any) {
9+
return (
10+
<label className={`flex items-center justify-around ${props.className}`} htmlFor={props.label}>
11+
{props.label ?? 'checkbox'}
12+
<input ref={ref} id={props.label} type={'checkbox'} />
13+
</label>
14+
);
15+
});
16+
17+
export default Checkbox;

src/components/Control/Control.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ interface IControlProps {
77

88
const Control = ({ className, children, onClickCallback }: IControlProps) => {
99
const styleClassNames = 'border-none bg-transparent cursor-pointer';
10-
const spacingClassNames = 'py-1 px-4 my-0.5 mx-2';
10+
const spacingClassNames = 'py-1 my-0.5 mx-2';
1111
const hoverClassNames =
1212
'hover:no-underline hover:text-[var(--buttonHoverColor)] hover:border-[var(--buttonHoverColor)]';
1313

0 commit comments

Comments
 (0)