Skip to content

Commit 8889f64

Browse files
committed
🐞 fix: 修复GM.cookie不存在
1 parent 535c09b commit 8889f64

1 file changed

Lines changed: 54 additions & 9 deletions

File tree

src/app/service/content/utils.ts

Lines changed: 54 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,26 +73,71 @@ export function createContext(scriptRes: ScriptRunResouce, GMInfo: any, envPrefi
7373
window: {},
7474
};
7575
if (scriptRes.metadata.grant) {
76+
const GM_cookie = function (action: string) {
77+
let default_details: GMTypes.CookieDetails = {
78+
url: window.location.href,
79+
};
80+
return (
81+
details: GMTypes.CookieDetails,
82+
done: (cookie: GMTypes.Cookie[] | any, error: any | undefined) => void
83+
) => {
84+
let queryDetails = { ...default_details, ...details };
85+
return context["GM_cookie"](action, queryDetails, done);
86+
};
87+
};
7688
scriptRes.metadata.grant.forEach((val) => {
7789
const api = GMContext.apis.get(val);
7890
if (!api) {
7991
return;
8092
}
8193
if (/^(GM|window)\./.test(val)) {
8294
const [n, t] = val.split(".");
83-
(<{ [key: string]: any }>context[n])[t] = api.api.bind(context);
95+
if (t === "cookie") {
96+
context[n][t] = {
97+
list(details: GMTypes.CookieDetails = {}) {
98+
return new Promise((resolve, reject) => {
99+
let fn = GM_cookie("list");
100+
fn(details, function (cookie, error) {
101+
if (error) {
102+
reject(error);
103+
} else {
104+
resolve(cookie);
105+
}
106+
});
107+
});
108+
},
109+
delete(details: GMTypes.CookieDetails) {
110+
return new Promise((resolve, reject) => {
111+
let fn = GM_cookie("delete");
112+
fn(details, function (cookie, error) {
113+
if (error) {
114+
reject(error);
115+
} else {
116+
resolve(cookie);
117+
}
118+
});
119+
});
120+
},
121+
set(details: GMTypes.CookieDetails) {
122+
return new Promise((resolve, reject) => {
123+
let fn = GM_cookie("set");
124+
fn(details, function (cookie, error) {
125+
if (error) {
126+
reject(error);
127+
} else {
128+
resolve(cookie);
129+
}
130+
});
131+
});
132+
},
133+
};
134+
} else {
135+
(<{ [key: string]: any }>context[n])[t] = api.api.bind(context);
136+
}
84137
} else if (val === "GM_cookie") {
85138
// 特殊处理GM_cookie.list之类
86139
context[val] = api.api.bind(context);
87140

88-
const GM_cookie = function (action: string) {
89-
return (
90-
details: GMTypes.CookieDetails,
91-
done: (cookie: GMTypes.Cookie[] | any, error: any | undefined) => void
92-
) => {
93-
return context[val](action, details, done);
94-
};
95-
};
96141
context[val].list = GM_cookie("list");
97142
context[val].delete = GM_cookie("delete");
98143
context[val].set = GM_cookie("set");

0 commit comments

Comments
 (0)