Compare commits
No commits in common. "fec81b11a3ae63d467faa24029c4ec5989197df2" and "313d24d8086b3834040c26d80a7c2c9b31d21798" have entirely different histories.
fec81b11a3
...
313d24d808
71
src/App.tsx
71
src/App.tsx
@ -12,20 +12,15 @@ import Menu from '@mui/material/Menu';
|
|||||||
import MenuItem from '@mui/material/MenuItem';
|
import MenuItem from '@mui/material/MenuItem';
|
||||||
import Snackbar from '@mui/material/Snackbar';
|
import Snackbar from '@mui/material/Snackbar';
|
||||||
import { useState } from 'react';
|
import { useState } from 'react';
|
||||||
import useToast from './hooks/use-toast';
|
import useToast from './hooks/useToast';
|
||||||
import {
|
|
||||||
deleteCookie as gmDeleteCookie,
|
|
||||||
getCookie as gmGetCookie,
|
|
||||||
setCookie as gmSetCookie,
|
|
||||||
} from './utils/gm-cookie';
|
|
||||||
|
|
||||||
const MAX_Z_INDEX = 2 ** 31 - 1;
|
const Z_INDEX_MAX = 2 ** 31 - 1;
|
||||||
|
|
||||||
const ToolButton = styled(IconButton)`
|
const CustomButton = styled(IconButton)`
|
||||||
position: fixed;
|
position: fixed;
|
||||||
right: 20px;
|
right: 20px;
|
||||||
bottom: 20px;
|
bottom: 20px;
|
||||||
z-index: ${MAX_Z_INDEX};
|
z-index: ${Z_INDEX_MAX - 1};
|
||||||
opacity: 0.75;
|
opacity: 0.75;
|
||||||
transition: all 225ms linear;
|
transition: all 225ms linear;
|
||||||
background-color: #c2e0ff;
|
background-color: #c2e0ff;
|
||||||
@ -35,8 +30,8 @@ const ToolButton = styled(IconButton)`
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const ToolMenu = styled(Menu)`
|
const CustomMenu = styled(Menu)`
|
||||||
z-index: ${MAX_Z_INDEX};
|
z-index: ${Z_INDEX_MAX};
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
@ -62,9 +57,46 @@ const App = () => {
|
|||||||
GM_setClipboard(text);
|
GM_setClipboard(text);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const getCookie = () =>
|
||||||
|
new Promise<TampermonkeyBeta.Cookie[]>((resolve, reject) => {
|
||||||
|
GM_cookie('list', {}, (cookie, error) => {
|
||||||
|
if (error) {
|
||||||
|
reject(error);
|
||||||
|
} else {
|
||||||
|
resolve(cookie);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const setCookie = (cookieObj: TampermonkeyBeta.Cookie) =>
|
||||||
|
new Promise<TampermonkeyBeta.Cookie[]>((resolve, reject) => {
|
||||||
|
GM_cookie('set', cookieObj, (cookie, error) => {
|
||||||
|
if (error) {
|
||||||
|
reject(error);
|
||||||
|
} else {
|
||||||
|
resolve(cookie);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
const deleteCookie = async () => {
|
||||||
|
const currentCookie = await getCookie();
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
currentCookie.forEach((cookieRecord) => {
|
||||||
|
GM_cookie('delete', { name: cookieRecord.name }, (cookie, error) => {
|
||||||
|
if (error) {
|
||||||
|
reject(error);
|
||||||
|
} else {
|
||||||
|
resolve(cookie);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const getSession = async () => {
|
const getSession = async () => {
|
||||||
try {
|
try {
|
||||||
const cookie = await gmGetCookie();
|
const cookie = await getCookie();
|
||||||
const exportSessionData = JSON.stringify(cookie);
|
const exportSessionData = JSON.stringify(cookie);
|
||||||
copyToClipboard(exportSessionData);
|
copyToClipboard(exportSessionData);
|
||||||
handleToastOpen('Session 数据已复制到剪贴板', 'success');
|
handleToastOpen('Session 数据已复制到剪贴板', 'success');
|
||||||
@ -79,7 +111,7 @@ const App = () => {
|
|||||||
prompt('在此处粘贴你的 Session 数据', '[{}]') || '[{}]';
|
prompt('在此处粘贴你的 Session 数据', '[{}]') || '[{}]';
|
||||||
const cookie = JSON.parse(importSessionData) as TampermonkeyBeta.Cookie[];
|
const cookie = JSON.parse(importSessionData) as TampermonkeyBeta.Cookie[];
|
||||||
cookie.forEach(async (item) => {
|
cookie.forEach(async (item) => {
|
||||||
await gmSetCookie(item);
|
await setCookie(item);
|
||||||
});
|
});
|
||||||
handleToastOpen('Session 数据已导入', 'success');
|
handleToastOpen('Session 数据已导入', 'success');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@ -89,7 +121,7 @@ const App = () => {
|
|||||||
|
|
||||||
const deleteSession = async () => {
|
const deleteSession = async () => {
|
||||||
try {
|
try {
|
||||||
await gmDeleteCookie();
|
await deleteCookie();
|
||||||
handleToastOpen('Session 数据已删除', 'success');
|
handleToastOpen('Session 数据已删除', 'success');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
handleToastOpen('删除 Cookie 失败', 'error');
|
handleToastOpen('删除 Cookie 失败', 'error');
|
||||||
@ -113,7 +145,8 @@ const App = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<ToolButton
|
{/* 工具按钮 */}
|
||||||
|
<CustomButton
|
||||||
color="primary"
|
color="primary"
|
||||||
id="custom-button"
|
id="custom-button"
|
||||||
aria-controls={menuOpen ? 'custom-menu' : undefined}
|
aria-controls={menuOpen ? 'custom-menu' : undefined}
|
||||||
@ -122,9 +155,10 @@ const App = () => {
|
|||||||
onClick={handleMenuOpen}
|
onClick={handleMenuOpen}
|
||||||
>
|
>
|
||||||
<AutoFixHighIcon />
|
<AutoFixHighIcon />
|
||||||
</ToolButton>
|
</CustomButton>
|
||||||
|
|
||||||
<ToolMenu
|
{/* 工具菜单 */}
|
||||||
|
<CustomMenu
|
||||||
id="custom-menu"
|
id="custom-menu"
|
||||||
anchorEl={anchorEl}
|
anchorEl={anchorEl}
|
||||||
open={menuOpen}
|
open={menuOpen}
|
||||||
@ -155,8 +189,9 @@ const App = () => {
|
|||||||
</ListItemIcon>
|
</ListItemIcon>
|
||||||
<ListItemText>清除 Session 数据</ListItemText>
|
<ListItemText>清除 Session 数据</ListItemText>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</ToolMenu>
|
</CustomMenu>
|
||||||
|
|
||||||
|
{/* 提示 */}
|
||||||
<Snackbar
|
<Snackbar
|
||||||
anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}
|
anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }}
|
||||||
open={toastOpen}
|
open={toastOpen}
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
const getCookie = () =>
|
|
||||||
new Promise<TampermonkeyBeta.Cookie[]>((resolve, reject) => {
|
|
||||||
GM_cookie('list', {}, (cookie, error) => {
|
|
||||||
if (error) {
|
|
||||||
reject(error);
|
|
||||||
} else {
|
|
||||||
resolve(cookie);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const setCookie = (cookieObj: TampermonkeyBeta.Cookie) =>
|
|
||||||
new Promise<TampermonkeyBeta.Cookie[]>((resolve, reject) => {
|
|
||||||
GM_cookie('set', cookieObj, (cookie, error) => {
|
|
||||||
if (error) {
|
|
||||||
reject(error);
|
|
||||||
} else {
|
|
||||||
resolve(cookie);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
const deleteCookie = async () => {
|
|
||||||
const currentCookie = await getCookie();
|
|
||||||
if (currentCookie.length === 0) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
return new Promise<TampermonkeyBeta.Cookie[]>((resolve, reject) => {
|
|
||||||
currentCookie.forEach((cookieRecord) => {
|
|
||||||
GM_cookie('delete', { name: cookieRecord.name }, (cookie, error) => {
|
|
||||||
if (error) {
|
|
||||||
reject(error);
|
|
||||||
} else {
|
|
||||||
resolve(cookie);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export { getCookie, setCookie, deleteCookie };
|
|
@ -9,15 +9,14 @@ export default defineConfig({
|
|||||||
monkey({
|
monkey({
|
||||||
entry: 'src/main.tsx',
|
entry: 'src/main.tsx',
|
||||||
userscript: {
|
userscript: {
|
||||||
name: 'Cookie Magician',
|
name: 'Session Magician',
|
||||||
namespace: 'https://www.imbytecat.com/',
|
namespace: 'https://www.imbytecat.com/',
|
||||||
icon: 'https://vitejs.dev/logo.svg',
|
icon: 'https://vitejs.dev/logo.svg',
|
||||||
version: '3.1.2',
|
version: '3.1.0',
|
||||||
description: 'Cookie Magician & Cookie Tools & Export/Import Cookies',
|
description: 'Session Magician & Session Tools & Export/Import Sessions',
|
||||||
author: 'imbytecat',
|
author: 'imbytecat',
|
||||||
match: ['*://*/*'],
|
match: ['*://*/*'],
|
||||||
grant: ['GM_setClipboard'],
|
grant: ['GM_registerMenuCommand', 'GM_setClipboard', 'GM_notification'],
|
||||||
license: 'GPL-3.0-or-later',
|
|
||||||
$extra: {
|
$extra: {
|
||||||
grant: ['GM_cookie'],
|
grant: ['GM_cookie'],
|
||||||
},
|
},
|
||||||
|
Loading…
x
Reference in New Issue
Block a user