Skip to content

Commit 0de44bf

Browse files
committed
🎨 优化窗口打开逻辑
1 parent 3ed018a commit 0de44bf

6 files changed

Lines changed: 21 additions & 11 deletions

File tree

packages/message/server.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ export class Server {
9292
})
9393
.catch((e: Error) => {
9494
con.sendMessage({ code: -1, message: e.message || e.toString() });
95+
this.logger.error("connectHandle error", Logger.E(e));
9596
});
9697
return true;
9798
} else {
@@ -118,13 +119,15 @@ export class Server {
118119
})
119120
.catch((e: Error) => {
120121
sendResponse({ code: -1, message: e.message || e.toString() });
122+
this.logger.error("messageHandle error", Logger.E(e));
121123
});
122124
return true;
123125
} else {
124126
sendResponse({ code: 0, data: ret });
125127
}
126128
} catch (e: any) {
127129
sendResponse({ code: -1, message: e.message || e.toString() });
130+
this.logger.error("messageHandle error", Logger.E(e));
128131
}
129132
} else {
130133
sendResponse({ code: -1, message: "no such api " + action });

src/app/logger/logger.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ export default class Logger {
9696
return { error: e };
9797
}
9898
if (e instanceof Error) {
99+
console.error(e);
99100
return { error: e.message };
100101
}
101102
if (typeof e === "object") {

src/app/service/service_worker/gm_api.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -311,8 +311,9 @@ export default class GMApi {
311311
}
312312

313313
@PermissionVerify.API()
314-
CAT_userConfig(request: Request): void {
315-
openInCurrentTab(`/src/options.html#/?userConfig=${request.uuid}`);
314+
CAT_userConfig(request: Request, sender: GetSender): void {
315+
const { tabId } = sender.getExtMessageSender();
316+
openInCurrentTab(`/src/options.html#/?userConfig=${request.uuid}`, tabId === -1 ? undefined : tabId);
316317
}
317318

318319
@PermissionVerify.API({

src/app/service/service_worker/permission_verify.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export default class PermissionVerify {
151151
return;
152152
}
153153
try {
154-
const ret = await this.confirm(data.request, data.confirm);
154+
const ret = await this.confirm(data.request, data.confirm, data.sender);
155155
data.resolve(ret);
156156
} catch (e) {
157157
data.reject(e);
@@ -170,7 +170,7 @@ export default class PermissionVerify {
170170
});
171171
}
172172

173-
async confirm(request: Request, confirm: boolean | ConfirmParam): Promise<boolean> {
173+
async confirm(request: Request, confirm: boolean | ConfirmParam, sender: GetSender): Promise<boolean> {
174174
if (typeof confirm === "boolean") {
175175
return confirm;
176176
}
@@ -195,7 +195,7 @@ export default class PermissionVerify {
195195
throw new Error("permission denied");
196196
}
197197
// 没有权限,则弹出页面让用户进行确认
198-
const userConfirm = await this.confirmWindow(request.script, confirm);
198+
const userConfirm = await this.confirmWindow(request.script, confirm, sender);
199199
// 成功存入数据库
200200
const model: Permission = {
201201
uuid: request.uuid,
@@ -251,7 +251,7 @@ export default class PermissionVerify {
251251
> = new Map();
252252

253253
// 弹出窗口让用户进行确认
254-
async confirmWindow(script: Script, confirm: ConfirmParam): Promise<UserConfirm> {
254+
async confirmWindow(script: Script, confirm: ConfirmParam, sender: GetSender): Promise<UserConfirm> {
255255
return new Promise((resolve, reject) => {
256256
const uuid = uuidv4();
257257
// 超时处理
@@ -270,7 +270,8 @@ export default class PermissionVerify {
270270
reject,
271271
});
272272
// 打开窗口
273-
openInCurrentTab(`src/confirm.html?uuid=${uuid}`);
273+
const { tabId } = sender.getExtMessageSender();
274+
openInCurrentTab(`src/confirm.html?uuid=${uuid}`, tabId === -1 ? undefined : tabId);
274275
});
275276
}
276277

src/app/service/service_worker/runtime.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -476,6 +476,7 @@ export class RuntimeService {
476476
}),
477477
// 加载resource
478478
resource.getScriptResources(script, false).then((resource) => {
479+
script.resource = resource;
479480
for (const name of Object.keys(resource)) {
480481
const res = script.resource[name];
481482
// 删除base64以节省资源
@@ -484,7 +485,6 @@ export class RuntimeService {
484485
res.base64 = undefined;
485486
}
486487
}
487-
script.resource = resource;
488488
}),
489489
// 加载code相关的信息
490490
scriptDAO.scriptCodeDAO.get(script.uuid).then((code) => {

src/pkg/utils/utils.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,13 @@ export async function getCurrentTab() {
8484
return tab;
8585
}
8686

87-
// 在当前页后打开一个新页面
88-
export async function openInCurrentTab(url: string) {
89-
const tab = await getCurrentTab();
87+
export async function getTab(tabId: number) {
88+
return await chrome.tabs.get(tabId).catch(() => undefined);
89+
}
90+
91+
// 在当前页后打开一个新页面,如果指定tabId则在该tab后打开
92+
export async function openInCurrentTab(url: string, tabId?: number) {
93+
const tab = await (tabId ? getTab(tabId) : getCurrentTab());
9094
const createProperties: chrome.tabs.CreateProperties = { url };
9195
if (tab) {
9296
// 添加 openerTabId 有可能出现 Error "Tab opener must be in the same window as the updated tab."

0 commit comments

Comments
 (0)