From fec81b11a3ae63d467faa24029c4ec5989197df2 Mon Sep 17 00:00:00 2001 From: imbytecat Date: Wed, 22 Mar 2023 15:45:04 +0800 Subject: [PATCH] feat: decoupling GM_Cookie utility class --- src/App.tsx | 74 ++++++------------------- src/hooks/{useToast.ts => use-toast.ts} | 0 src/utils/gm-cookie.ts | 41 ++++++++++++++ vite.config.ts | 9 +-- 4 files changed, 64 insertions(+), 60 deletions(-) rename src/hooks/{useToast.ts => use-toast.ts} (100%) create mode 100644 src/utils/gm-cookie.ts diff --git a/src/App.tsx b/src/App.tsx index bbd1253..1c30a6a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -12,15 +12,20 @@ import Menu from '@mui/material/Menu'; import MenuItem from '@mui/material/MenuItem'; import Snackbar from '@mui/material/Snackbar'; import { useState } from 'react'; -import useToast from './hooks/useToast'; +import useToast from './hooks/use-toast'; +import { + deleteCookie as gmDeleteCookie, + getCookie as gmGetCookie, + setCookie as gmSetCookie, +} from './utils/gm-cookie'; -const Z_INDEX_MAX = 2 ** 31 - 1; +const MAX_Z_INDEX = 2 ** 31 - 1; -const CustomButton = styled(IconButton)` +const ToolButton = styled(IconButton)` position: fixed; right: 20px; bottom: 20px; - z-index: ${Z_INDEX_MAX - 1}; + z-index: ${MAX_Z_INDEX}; opacity: 0.75; transition: all 225ms linear; background-color: #c2e0ff; @@ -30,8 +35,8 @@ const CustomButton = styled(IconButton)` } `; -const CustomMenu = styled(Menu)` - z-index: ${Z_INDEX_MAX}; +const ToolMenu = styled(Menu)` + z-index: ${MAX_Z_INDEX}; `; const App = () => { @@ -57,49 +62,9 @@ const App = () => { GM_setClipboard(text); }; - const getCookie = () => - new Promise((resolve, reject) => { - GM_cookie('list', {}, (cookie, error) => { - if (error) { - reject(error); - } else { - resolve(cookie); - } - }); - }); - - const setCookie = (cookieObj: TampermonkeyBeta.Cookie) => - new Promise((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((resolve, reject) => { - currentCookie.forEach((cookieRecord) => { - GM_cookie('delete', { name: cookieRecord.name }, (cookie, error) => { - if (error) { - reject(error); - } else { - resolve(cookie); - } - }); - }); - }); - }; - const getSession = async () => { try { - const cookie = await getCookie(); + const cookie = await gmGetCookie(); const exportSessionData = JSON.stringify(cookie); copyToClipboard(exportSessionData); handleToastOpen('Session 数据已复制到剪贴板', 'success'); @@ -114,7 +79,7 @@ const App = () => { prompt('在此处粘贴你的 Session 数据', '[{}]') || '[{}]'; const cookie = JSON.parse(importSessionData) as TampermonkeyBeta.Cookie[]; cookie.forEach(async (item) => { - await setCookie(item); + await gmSetCookie(item); }); handleToastOpen('Session 数据已导入', 'success'); } catch (error) { @@ -124,7 +89,7 @@ const App = () => { const deleteSession = async () => { try { - await deleteCookie(); + await gmDeleteCookie(); handleToastOpen('Session 数据已删除', 'success'); } catch (error) { handleToastOpen('删除 Cookie 失败', 'error'); @@ -148,8 +113,7 @@ const App = () => { return ( <> - {/* 工具按钮 */} - { onClick={handleMenuOpen} > - + - {/* 工具菜单 */} - { 清除 Session 数据 - + - {/* 提示 */} + new Promise((resolve, reject) => { + GM_cookie('list', {}, (cookie, error) => { + if (error) { + reject(error); + } else { + resolve(cookie); + } + }); + }); + +const setCookie = (cookieObj: TampermonkeyBeta.Cookie) => + new Promise((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((resolve, reject) => { + currentCookie.forEach((cookieRecord) => { + GM_cookie('delete', { name: cookieRecord.name }, (cookie, error) => { + if (error) { + reject(error); + } else { + resolve(cookie); + } + }); + }); + }); +}; + +export { getCookie, setCookie, deleteCookie }; diff --git a/vite.config.ts b/vite.config.ts index 610ff5a..2c03be5 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -9,14 +9,15 @@ export default defineConfig({ monkey({ entry: 'src/main.tsx', userscript: { - name: 'Session Magician', + name: 'Cookie Magician', namespace: 'https://www.imbytecat.com/', icon: 'https://vitejs.dev/logo.svg', - version: '3.1.0', - description: 'Session Magician & Session Tools & Export/Import Sessions', + version: '3.1.2', + description: 'Cookie Magician & Cookie Tools & Export/Import Cookies', author: 'imbytecat', match: ['*://*/*'], - grant: ['GM_registerMenuCommand', 'GM_setClipboard', 'GM_notification'], + grant: ['GM_setClipboard'], + license: 'GPL-3.0-or-later', $extra: { grant: ['GM_cookie'], },