Skip to content

Commit d4a47bc

Browse files
committed
调整
1 parent 939f268 commit d4a47bc

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

src/app/service/content/gm_api/gm_api.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1430,8 +1430,8 @@ export default class GMApi extends GM_Base {
14301430
con.disconnect();
14311431
};
14321432
con.onDisconnect(onDisconnected);
1433-
con.onMessage((data) => {
1434-
switch (data.action) {
1433+
con.onMessage((msg) => {
1434+
switch (msg.action) {
14351435
case "start":
14361436
onStart(con);
14371437
break;

src/app/service/service_worker/gm_api/gm_api.ts

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@ import LoggerCore from "@App/app/logger/core";
22
import Logger from "@App/app/logger/logger";
33
import { ScriptDAO } from "@App/app/repo/scripts";
44
import { type IGetSender, type Group, GetSenderType } from "@Packages/message/server";
5-
import type { ExtMessageSender, MessageSend, TMessageCommAction } from "@Packages/message/types";
5+
import type { ExtMessageSender, MessageConnect, MessageSend, TMessageCommAction } from "@Packages/message/types";
66
import { connect, sendMessage } from "@Packages/message/client";
77
import type { IMessageQueue } from "@Packages/message/message_queue";
88
import { type ValueService } from "@App/app/service/service_worker/value";
99
import type { ConfirmParam } from "../permission_verify";
1010
import PermissionVerify, { PermissionVerifyApiGet } from "../permission_verify";
1111
import { cacheInstance } from "@App/app/cache";
1212
import { type RuntimeService } from "../runtime";
13-
import { getIcon, isFirefox, getCurrentTab, openInCurrentTab, cleanFileName, makeBlobURL } from "@App/pkg/utils/utils";
13+
import { getIcon, isFirefox, getCurrentTab, openInCurrentTab, cleanFileName, makeBlobURL, Deferred } from "@App/pkg/utils/utils";
1414
import { deferred } from "@App/pkg/utils/utils";
1515
import { type SystemConfig } from "@App/pkg/config/config";
1616
import i18next, { i18nName } from "@App/locales/locales";
@@ -1316,31 +1316,34 @@ export default class GMApi {
13161316
if (!sender.isType(GetSenderType.CONNECT)) {
13171317
throw new Error("GM_download ERROR: sender is not MessageConnect");
13181318
}
1319-
const msgConn = sender.getConnect();
1319+
let msgConn: MessageConnect | undefined | null = sender.getConnect();
13201320
if (!msgConn) {
13211321
throw new Error("GM_download ERROR: msgConn is undefined");
13221322
}
13231323
let isConnDisconnected = false;
1324-
const d = deferred<boolean>();
1324+
let d: Deferred<boolean> | null = deferred<boolean>();
13251325
let done: boolean = false;
13261326
const onDisconnected = () => {
13271327
if (isConnDisconnected) return;
13281328
isConnDisconnected = true;
1329-
d.resolve(done);
1329+
d!.resolve(done);
1330+
msgConn = null; // release for GC
1331+
d = null; // release for GC
13301332
};
13311333
msgConn.onDisconnect(onDisconnected);
1332-
msgConn.onMessage((data) => {
1333-
if (data.action === "done") {
1334+
msgConn.onMessage((msg) => {
1335+
if (msg.action === "done") {
13341336
done = true;
1335-
msgConn.disconnect();
1337+
msgConn?.disconnect();
13361338
onDisconnected(); // in case .disconnect() not working
13371339
}
13381340
});
13391341
stackAsyncTask(`${lockKey}`, async () => {
1340-
msgConn.sendMessage({
1342+
if (isConnDisconnected) return;
1343+
msgConn!.sendMessage({
13411344
action: "start",
13421345
});
1343-
return d.promise;
1346+
return d!.promise;
13441347
});
13451348
}
13461349

0 commit comments

Comments
 (0)